0x60806040526004361061019c5760003560e01c8063715c8b8b116100ec578063bc197c811161008a578063da7a5ad011610064578063da7a5ad0146105dd578063e14806001461061e578063f23a6e6114610649578063f4b51044146106865761019c565b8063bc197c811461055b578063d4f00c2f14610598578063d547741f146105b45761019c565b80638e942c1d116100c65780638e942c1d146104a157806391d14854146104ca578063a0b1f5dd14610507578063a217fddf146105305761019c565b8063715c8b8b1461043d5780638456cb591461045957806384b0196e146104705761019c565b80632f2ff15d11610159578063431e117911610133578063431e1179146103595780634421c2261461039757806348cf144f146103d45780635c975abb146104125761019c565b80632f2ff15d146102f057806336568abe146103195780633f4ba83a146103425761019c565b806301ffc9a7146101a15780630902b315146101de5780630c97cc5d1461021b578063150b7a021461023757806322136c5014610274578063248a9ca3146102b3575b600080fd5b3480156101ad57600080fd5b506101c860048036038101906101c39190614276565b6106af565b6040516101d591906142be565b60405180910390f35b3480156101ea57600080fd5b506102056004803603810190610200919061430f565b6106d1565b60405161021291906142be565b60405180910390f35b61023560048036038101906102309190614471565b6106f1565b005b34801561024357600080fd5b5061025e600480360381019061025991906146d9565b61072e565b60405161026b919061476b565b60405180910390f35b34801561028057600080fd5b5061029b6004803603810190610296919061430f565b610742565b6040516102aa939291906147a4565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190614811565b6107ac565b6040516102e7919061484d565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190614868565b6107cc565b005b34801561032557600080fd5b50610340600480360381019061033b9190614868565b6107ee565b005b34801561034e57600080fd5b50610357610869565b005b34801561036557600080fd5b50610380600480360381019061037b91906148a8565b61089e565b60405161038e929190614908565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b99190614987565b61096b565b6040516103cb9190614b80565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f69190614bc2565b610aec565b604051610409929190614908565b60405180910390f35b34801561041e57600080fd5b50610427610bce565b60405161043491906142be565b60405180910390f35b61045760048036038101906104529190614c52565b610be4565b005b34801561046557600080fd5b5061046e610c10565b005b34801561047c57600080fd5b50610485610c45565b6040516104989796959493929190614e50565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c39190614ed4565b610cef565b005b3480156104d657600080fd5b506104f160048036038101906104ec9190614868565b610da7565b6040516104fe91906142be565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190614f01565b610e12565b005b34801561053c57600080fd5b506105456110c7565b604051610552919061484d565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d9190615024565b6110ce565b60405161058f919061476b565b60405180910390f35b6105b260048036038101906105ad9190614bc2565b6110e3565b005b3480156105c057600080fd5b506105db60048036038101906105d69190614868565b611492565b005b3480156105e957600080fd5b5061060460048036038101906105ff919061430f565b6114b4565b604051610615959493929190615102565b60405180910390f35b34801561062a57600080fd5b50610633611517565b6040516106409190615155565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190615170565b61153d565b60405161067d919061476b565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a891906148a8565b611552565b005b60006106ba82611b2a565b806106ca57506106c982611ba4565b5b9050919050565b60076020528060005260406000206000915054906101000a900460ff1681565b6106f9611c1e565b610701611c64565b61070c878383611552565b61071d876000013587878787611ca5565b610725612128565b50505050505050565b600063150b7a0260e01b9050949350505050565b60056020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b600060026000838152602001908152602001600020600101549050919050565b6107d5826107ac565b6107de81612131565b6107e88383612145565b50505050565b6107f6612237565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461085a576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610864828261223f565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61089381612131565b61089b612332565b50565b600080600061090a85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506108fc6108f789612394565b612437565b61245190919063ffffffff16565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614819250925050935093915050565b60608282905067ffffffffffffffff81111561098a576109896145ae565b5b6040519080825280602002602001820160405280156109c357816020015b6109b06141b3565b8152602001906001900390816109a85790505b50905060005b83839050811015610ae557600660008585848181106109eb576109ea615207565b5b9050602002013581526020019081526020016000206040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160149054906101000a900460ff166003811115610aa457610aa3614a1e565b5b6003811115610ab657610ab5614a1e565b5b81525050828281518110610acd57610acc615207565b5b602002602001018190525080806001019150506109c9565b5092915050565b6000806000610b5885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610b4a610b458961247d565b612437565b61245190919063ffffffff16565b90506005600088815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161481925092505094509492505050565b60008060009054906101000a900460ff16905090565b610bec611c1e565b610bf4611c64565b610c018585858585611ca5565b610c09612128565b5050505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c3a81612131565b610c426125ce565b50565b600060608060008060006060610c59612630565b610c6161266b565b46306000801b600067ffffffffffffffff811115610c8257610c816145ae565b5b604051908082528060200260200182016040528015610cb05781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b6000801b610cfc81612131565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d62576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610e1a611c1e565b600082829050905060008103610e5c576040517ff1364a7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166005600086815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3a576005600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040517f536dd9ef000000000000000000000000000000000000000000000000000000008152600401610f31929190615236565b60405180910390fd5b610f43846126a6565b610f8457836040517fb07bd440000000000000000000000000000000000000000000000000000000008152600401610f7b919061525f565b60405180910390fd5b60005b8181101561107e57600060066000868685818110610fa857610fa7615207565b5b90506020020135815260200190815260200160002090508060000154861461100d578581600001546040517fe866f37b00000000000000000000000000000000000000000000000000000000815260040161100492919061527a565b60405180910390fd5b600081600201549050600081111561106f576000826002018190555061106e8260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360010154838560030160149054906101000a900460ff166126d8565b5b50508080600101915050610f87565b50837febd9542f1e0e2e5ac3bdd32da20fa5c5f7a7b5d76d041602b2717c01384e818584846040516110b192919061530d565b60405180910390a2506110c2612128565b505050565b6000801b81565b600063bc197c8160e01b905095945050505050565b6110eb611c1e565b6110f3611c64565b6110ff8484848461280f565b6000838060a001906111119190615340565b905090506000810361114f576040517ff1364a7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838060c0019061115f9190615340565b9050811415806111805750838060e0019061117a9190615340565b90508114155b156111b7576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156113f3576000858060a001906111d49190615340565b838181106111e5576111e4615207565b5b9050602002013590506000868060c001906112009190615340565b8481811061121157611210615207565b5b9050602002013590506000878060e0019061122c9190615340565b8581811061123d5761123c615207565b5b9050602002013590506000810361128d5781816040517f92ffe02200000000000000000000000000000000000000000000000000000000815260040161128492919061527a565b60405180910390fd5b6007600084815260200190815260200160002060009054906101000a900460ff16156112f057826040517f994f3c6d0000000000000000000000000000000000000000000000000000000081526004016112e7919061525f565b60405180910390fd5b60016007600085815260200190815260200160002060006101000a81548160ff02191690831515021790555060006006600084815260200190815260200160002090508181600201541015611382578060020154826040517f65ac9d4300000000000000000000000000000000000000000000000000000000815260040161137992919061527a565b60405180910390fd5b8181600201600082825461139691906153d2565b925050819055506113e28160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260010154848460030160149054906101000a900460ff166126d8565b5050505080806001019150506111ba565b50600084604001351115611422576114218460600160208101906114179190614ed4565b8560400135612a38565b5b8360800160208101906114359190614ed4565b73ffffffffffffffffffffffffffffffffffffffff16857fb22135e35cb495e41ec31bf19293b4ac57c337bbc898e003cb8eecbf3f2b51748660405161147b9190615617565b60405180910390a35061148c612128565b50505050565b61149b826107ac565b6114a481612131565b6114ae838361223f565b50505050565b60066020528060005260406000206000915090508060000154908060010154908060020154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160149054906101000a900460ff16905085565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600063f23a6e6160e01b905095945050505050565b61155a611c64565b6000836000013503611598576040517f0afa7ee800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168360400160208101906115c39190614ed4565b73ffffffffffffffffffffffffffffffffffffffff1614806116235750600073ffffffffffffffffffffffffffffffffffffffff1683606001602081019061160b9190614ed4565b73ffffffffffffffffffffffffffffffffffffffff16145b1561165a576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006005600085600001358152602001908152602001600020905060008160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118645760008560200135141580156116eb575042856020013511155b15611733578460200135426040517fb214079400000000000000000000000000000000000000000000000000000000815260040161172a92919061527a565b60405180910390fd5b61173e858585612af5565b6040518060600160405280866020013581526020018660400160208101906117669190614ed4565b73ffffffffffffffffffffffffffffffffffffffff1681526020018660600160208101906117949190614ed4565b73ffffffffffffffffffffffffffffffffffffffff1681525060056000876000013581526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050611ae6565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118d65780336040517f536dd9ef0000000000000000000000000000000000000000000000000000000081526004016118cd929190615236565b60405180910390fd5b6000826000015490508560200135811015801561193057508560400160208101906119019190614ed4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b801561199d575085606001602081019061194a9190614ed4565b73ffffffffffffffffffffffffffffffffffffffff168360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156119d4576040517f73fa69fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8560400160208101906119e79190614ed4565b8360010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550856060016020810190611a3c9190614ed4565b8360020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008103611ac9576000866020013514611ac4576040517f9a5c64da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ae4565b8086602001351115611ae357856020013583600001819055505b5b505b7ff49f428abb4ef70c857a0f31aac19ec71a5463c0784f8f7c2eed139538f7cbc4856000013586604051611b1b9291906156ae565b60405180910390a15050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b9d5750611b9c82612b50565b5b9050919050565b60007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611c175750611c1682611b2a565b5b9050919050565b600260015403611c5a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b611c6c610bce565b15611ca3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b3373ffffffffffffffffffffffffffffffffffffffff166005600087815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d83576005600086815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040517f536dd9ef000000000000000000000000000000000000000000000000000000008152600401611d7a929190615236565b60405180910390fd5b611d8c85612bba565b611dcd57846040517f423b515f000000000000000000000000000000000000000000000000000000008152600401611dc4919061525f565b60405180910390fd5b60008484905090506000838390509050600082148015611ded5750600081145b15611e24576040517f1794b43e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600034905060008367ffffffffffffffff811115611e4557611e446145ae565b5b604051908082528060200260200182016040528015611e735781602001602082028036833780820191505090505b50905060005b84811015611f705736898983818110611e9557611e94615207565b5b905060a00201905060006003811115611eb157611eb0614a1e565b5b816080016020810190611ec491906156fc565b6003811115611ed657611ed5614a1e565b5b03611f34578060200135841015611f2a578381602001356040517f775c8a0e000000000000000000000000000000000000000000000000000000008152600401611f2192919061527a565b60405180910390fd5b8060200135840393505b611f3e8b82612bec565b8060400135838381518110611f5657611f55615207565b5b602002602001018181525050508080600101915050611e79565b5060008367ffffffffffffffff811115611f8d57611f8c6145ae565b5b604051908082528060200260200182016040528015611fc057816020015b6060815260200190600190039081611fab5790505b50905060005b8481101561209b57611ffc8b898984818110611fe557611fe4615207565b5b9050602002810190611ff79190615729565b612f49565b87878281811061200f5761200e615207565b5b90506020028101906120219190615729565b80600001906120309190615340565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505082828151811061208357612082615207565b5b60200260200101819052508080600101915050611fc6565b5060008311156120e257826040517fe8b016190000000000000000000000000000000000000000000000000000000081526004016120d9919061525f565b60405180910390fd5b897f0d37e701164106e522925e5c2d8daeca1343d63cfbc48a52c82750cd96a7d8808383604051612114929190615871565b60405180910390a250505050505050505050565b60018081905550565b6121428161213d612237565b6133fb565b50565b60006121518383610da7565b61222c5760016002600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506121c9612237565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050612231565b600090505b92915050565b600033905090565b600061224b8383610da7565b156123275760006002600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506122c4612237565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001905061232c565b600090505b92915050565b61233a61344c565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61237d612237565b60405161238a9190615155565b60405180910390a1565b60007f4259ebbc8005a7529634d69c77ce8af088b7d85f7f7f1d91f3274e8215daa212826000013583602001358460400160208101906123d49190614ed4565b8560600160208101906123e79190614ed4565b6040516020016123fb9594939291906158a8565b60405160208183030381529060405260405160200161241a9190615942565b604051602081830303815290604052805190602001209050919050565b600061244a61244461348c565b83613543565b9050919050565b6000806000806124618686613584565b92509250925061247182826135e0565b82935050505092915050565b60007f4ca6fa5ad7ffb95be65c74ed76c6a4c47aa77c61e11a9a2ca498a92b8b73a4848260000135836020013584604001358560600160208101906124c29190614ed4565b8660800160208101906124d59190614ed4565b878060a001906124e59190615340565b6040516020016124f69291906159c0565b60405160208183030381529060405280519060200120888060c0019061251c9190615340565b60405160200161252d9291906159c0565b60405160208183030381529060405280519060200120898060e001906125539190615340565b6040516020016125649291906159c0565b60405160208183030381529060405280519060200120604051602001612592999897969594939291906159d9565b6040516020818303038152906040526040516020016125b19190615942565b604051602081830303815290604052805190602001209050919050565b6125d6611c64565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612619612237565b6040516126269190615155565b60405180910390a1565b606061266660037f4e6966747949736c616e6452657761726400000000000000000000000000001161374490919063ffffffff16565b905090565b60606126a160047f310000000000000000000000000000000000000000000000000000000000000161374490919063ffffffff16565b905090565b6000806005600084815260200190815260200160002060000154905060008114806126d057508042115b915050919050565b600060038111156126ec576126eb614a1e565b5b8160038111156126ff576126fe614a1e565b5b036127135761270e3383612a38565b612809565b6001600381111561272757612726614a1e565b5b81600381111561273a57612739614a1e565b5b0361274f5761274a8433846137f4565b612808565b6002600381111561276357612762614a1e565b5b81600381111561277657612775614a1e565b5b0361278c5761278784303386613804565b612807565b60038081111561279f5761279e614a1e565b5b8160038111156127b2576127b1614a1e565b5b036127c9576127c484303386866138d5565b612806565b806040517f961dc00a0000000000000000000000000000000000000000000000000000000081526004016127fd9190615a66565b60405180910390fd5b5b5b5b50505050565b8260400135341461285d573483604001356040517f1dccdb9f00000000000000000000000000000000000000000000000000000000815260040161285492919061527a565b60405180910390fd5b8260800160208101906128709190614ed4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128f3578260800160208101906128b59190614ed4565b336040517f3ebd5fe50000000000000000000000000000000000000000000000000000000081526004016128ea929190615236565b60405180910390fd5b8260000135421015612942574283600001356040517f3c7bd1cb00000000000000000000000000000000000000000000000000000000815260040161293992919061527a565b60405180910390fd5b8260200135421115612991574283602001356040517f10ad23fe00000000000000000000000000000000000000000000000000000000815260040161298892919061527a565b60405180910390fd5b61299a84612bba565b6129db57836040517f423b515f0000000000000000000000000000000000000000000000000000000081526004016129d2919061525f565b60405180910390fd5b6000806129ea86868686610aec565b9150915081612a3057806040517fe74c68bb000000000000000000000000000000000000000000000000000000008152600401612a279190615155565b60405180910390fd5b505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612a5e90615aa7565b60006040518083038185875af1925050503d8060008114612a9b576040519150601f19603f3d011682016040523d82523d6000602084013e612aa0565b606091505b5050905080612af057600030846000856040517fab45420f000000000000000000000000000000000000000000000000000000008152600401612ae7959493929190615b01565b60405180910390fd5b505050565b600080612b0385858561089e565b9150915081612b4957806040517fe74c68bb000000000000000000000000000000000000000000000000000000008152600401612b409190615155565b60405180910390fd5b5050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080600560008481526020019081526020016000206000015490506000811480612be457508042105b915050919050565b600081602001351480612c46575060026003811115612c0e57612c0d614a1e565b5b816080016020810190612c2191906156fc565b6003811115612c3357612c32614a1e565b5b148015612c4557506001816020013514155b5b15612c9257806040013581602001356040517fb363ec0a000000000000000000000000000000000000000000000000000000008152600401612c8992919061527a565b60405180910390fd5b6000600660008360400135815260200190815260200160002090506000816000015403612d74578160000135816001018190555081602001358160020181905550828160000181905550816060016020810190612cef9190614ed4565b8160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816080016020810190612d4491906156fc565b8160030160146101000a81548160ff02191690836003811115612d6a57612d69614a1e565b5b0217905550612efc565b82816000015403612eb857816060016020810190612d929190614ed4565b73ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612df7575081600001358160010154145b8015612e495750816080016020810190612e1191906156fc565b6003811115612e2357612e22614a1e565b5b8160030160149054906101000a900460ff166003811115612e4757612e46614a1e565b5b145b15612e72578160200135816002016000828254612e669190615b54565b92505081905550612eb3565b81604001356040517f75f575a6000000000000000000000000000000000000000000000000000000008152600401612eaa919061525f565b60405180910390fd5b612efb565b8281600001546040517fe866f37b000000000000000000000000000000000000000000000000000000008152600401612ef292919061527a565b60405180910390fd5b5b60006003811115612f1057612f0f614a1e565b5b826080016020810190612f2391906156fc565b6003811115612f3557612f34614a1e565b5b14612f4457612f43826139a9565b5b505050565b6000818060000190612f5b9190615340565b9050905060008103612f99576040517f2d78d40300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80828060200190612faa9190615340565b9050141580612fca575080828060400190612fc59190615340565b905014155b15613001576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561333857600083806000019061301e9190615340565b8381811061302f5761302e615207565b5b905060200201359050600084806040019061304a9190615340565b8481811061305b5761305a615207565b5b905060200201359050600081036130ab5781816040517fb363ec0a0000000000000000000000000000000000000000000000000000000081526004016130a292919061527a565b60405180910390fd5b60006006600084815260200190815260200160002090506000816000015403613197578580602001906130de9190615340565b858181106130ef576130ee615207565b5b9050602002013581600101819055508181600201819055508681600001819055508560600160208101906131239190614ed4565b8160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060038160030160146101000a81548160ff0219169083600381111561318d5761318c614a1e565b5b0217905550613328565b868160000154036132e4578560600160208101906131b59190614ed4565b73ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561323d575085806020019061321e9190615340565b8581811061322f5761322e615207565b5b905060200201358160010154145b801561327d575060038081111561325757613256614a1e565b5b8160030160149054906101000a900460ff16600381111561327b5761327a614a1e565b5b145b156132a257818160020160008282546132969190615b54565b925050819055506132df565b826040517f75f575a60000000000000000000000000000000000000000000000000000000081526004016132d6919061525f565b60405180910390fd5b613327565b8681600001546040517fe866f37b00000000000000000000000000000000000000000000000000000000815260040161331e92919061527a565b60405180910390fd5b5b5050508080600101915050613004565b506133f682606001602081019061334f9190614ed4565b33308580602001906133619190615340565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508680604001906133b19190615340565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050613b30565b505050565b6134058282610da7565b6134485780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161343f929190615b88565b60405180910390fd5b5050565b613454610bce565b61348a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007f00000000000000000000000009dc5e9e842aec39348a35ed98661fdd33897fe473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561350857507f000000000000000000000000000000000000000000000000000000000000000146145b15613535577fdf03201aa8e6e134e4786be39d24867674685f74173ff66c21885b0a3440f7da9050613540565b61353d613c04565b90505b90565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b600080600060418451036135c95760008060006020870151925060408701519150606087015160001a90506135bb88828585613c9a565b9550955095505050506135d9565b60006002855160001b9250925092505b9250925092565b600060038111156135f4576135f3614a1e565b5b82600381111561360757613606614a1e565b5b0315613740576001600381111561362157613620614a1e565b5b82600381111561363457613633614a1e565b5b0361366b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561367f5761367e614a1e565b5b82600381111561369257613691614a1e565b5b036136d7578060001c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016136ce919061525f565b60405180910390fd5b6003808111156136ea576136e9614a1e565b5b8260038111156136fd576136fc614a1e565b5b0361373f57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401613736919061484d565b60405180910390fd5b5b5050565b606060ff60001b83146137615761375a83613d8e565b90506137ee565b81805461376d90615be0565b80601f016020809104026020016040519081016040528092919081815260200182805461379990615be0565b80156137e65780601f106137bb576101008083540402835291602001916137e6565b820191906000526020600020905b8154815290600101906020018083116137c957829003601f168201915b505050505090505b92915050565b6137ff838383613e02565b505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b0361386057836040517fec0164840000000000000000000000000000000000000000000000000000000081526004016138579190615155565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342842e0e8484846040518463ffffffff1660e01b815260040161389d93929190615c11565b600060405180830381600087803b1580156138b757600080fd5b505af11580156138cb573d6000803e3d6000fd5b5050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff163b0361393157846040517fec0164840000000000000000000000000000000000000000000000000000000081526004016139289190615155565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663f242432a858585856040518563ffffffff1660e01b81526004016139709493929190615c7c565b600060405180830381600087803b15801561398a57600080fd5b505af115801561399e573d6000803e3d6000fd5b505050505050505050565b600160038111156139bd576139bc614a1e565b5b8160800160208101906139d091906156fc565b60038111156139e2576139e1614a1e565b5b03613a0e57613a098160600160208101906139fd9190614ed4565b33308460200135613e81565b613b2d565b60026003811115613a2257613a21614a1e565b5b816080016020810190613a3591906156fc565b6003811115613a4757613a46614a1e565b5b03613a7357613a6e816060016020810190613a629190614ed4565b33308460000135613804565b613b2c565b600380811115613a8657613a85614a1e565b5b816080016020810190613a9991906156fc565b6003811115613aab57613aaa614a1e565b5b03613adc57613ad7816060016020810190613ac69190614ed4565b3330846000013585602001356138d5565b613b2b565b806080016020810190613aef91906156fc565b6040517f961dc00a000000000000000000000000000000000000000000000000000000008152600401613b229190615a66565b60405180910390fd5b5b5b50565b60008573ffffffffffffffffffffffffffffffffffffffff163b03613b8c57846040517fec016484000000000000000000000000000000000000000000000000000000008152600401613b839190615155565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16632eb2c2d6858585856040518563ffffffff1660e01b8152600401613bcb9493929190615cd4565b600060405180830381600087803b158015613be557600080fd5b505af1158015613bf9573d6000803e3d6000fd5b505050505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7fb89e98345ee4e45c753595f1d90c5a4c347cae901896fd51d8d0e3ed3326fa9c7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001613c7f959493929190615d3a565b60405160208183030381529060405280519060200120905090565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c1115613cda576000600385925092509250613d84565b600060018888888860405160008152602001604052604051613cff9493929190615da9565b6020604051602081039080840390855afa158015613d21573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613d7557600060016000801b93509350935050613d84565b8060008060001b935093509350505b9450945094915050565b60606000613d9b83613e93565b90506000602067ffffffffffffffff811115613dba57613db96145ae565b5b6040519080825280601f01601f191660200182016040528015613dec5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b613e7c838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401613e35929190615dee565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613ee3565b505050565b613e8d84848484613f7a565b50505050565b60008060ff8360001c169050601f811115613eda576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b6000613f0e828473ffffffffffffffffffffffffffffffffffffffff16613ffc90919063ffffffff16565b90506000815114158015613f33575080806020019051810190613f319190615e43565b155b15613f7557826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401613f6c9190615155565b60405180910390fd5b505050565b613ff6848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401613faf93929190615c11565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613ee3565b50505050565b606061400a83836000614012565b905092915050565b60608147101561405957306040517fcd7860590000000000000000000000000000000000000000000000000000000081526004016140509190615155565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516140829190615942565b60006040518083038185875af1925050503d80600081146140bf576040519150601f19603f3d011682016040523d82523d6000602084013e6140c4565b606091505b50915091506140d48683836140df565b925050509392505050565b6060826140f4576140ef8261416e565b614166565b6000825114801561411c575060008473ffffffffffffffffffffffffffffffffffffffff163b145b1561415e57836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016141559190615155565b60405180910390fd5b819050614167565b5b9392505050565b6000815111156141815780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060a00160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000600381111561420457614203614a1e565b5b81525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6142538161421e565b811461425e57600080fd5b50565b6000813590506142708161424a565b92915050565b60006020828403121561428c5761428b614214565b5b600061429a84828501614261565b91505092915050565b60008115159050919050565b6142b8816142a3565b82525050565b60006020820190506142d360008301846142af565b92915050565b6000819050919050565b6142ec816142d9565b81146142f757600080fd5b50565b600081359050614309816142e3565b92915050565b60006020828403121561432557614324614214565b5b6000614333848285016142fa565b91505092915050565b600080fd5b6000608082840312156143575761435661433c565b5b81905092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261438557614384614360565b5b8235905067ffffffffffffffff8111156143a2576143a1614365565b5b6020830191508360a08202830111156143be576143bd61436a565b5b9250929050565b60008083601f8401126143db576143da614360565b5b8235905067ffffffffffffffff8111156143f8576143f7614365565b5b6020830191508360208202830111156144145761441361436a565b5b9250929050565b60008083601f84011261443157614430614360565b5b8235905067ffffffffffffffff81111561444e5761444d614365565b5b60208301915083600182028301111561446a5761446961436a565b5b9250929050565b600080600080600080600060e0888a0312156144905761448f614214565b5b600061449e8a828b01614341565b975050608088013567ffffffffffffffff8111156144bf576144be614219565b5b6144cb8a828b0161436f565b965096505060a088013567ffffffffffffffff8111156144ee576144ed614219565b5b6144fa8a828b016143c5565b945094505060c088013567ffffffffffffffff81111561451d5761451c614219565b5b6145298a828b0161441b565b925092505092959891949750929550565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145658261453a565b9050919050565b6145758161455a565b811461458057600080fd5b50565b6000813590506145928161456c565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6145e68261459d565b810181811067ffffffffffffffff82111715614605576146046145ae565b5b80604052505050565b600061461861420a565b905061462482826145dd565b919050565b600067ffffffffffffffff821115614644576146436145ae565b5b61464d8261459d565b9050602081019050919050565b82818337600083830152505050565b600061467c61467784614629565b61460e565b90508281526020810184848401111561469857614697614598565b5b6146a384828561465a565b509392505050565b600082601f8301126146c0576146bf614360565b5b81356146d0848260208601614669565b91505092915050565b600080600080608085870312156146f3576146f2614214565b5b600061470187828801614583565b945050602061471287828801614583565b9350506040614723878288016142fa565b925050606085013567ffffffffffffffff81111561474457614743614219565b5b614750878288016146ab565b91505092959194509250565b6147658161421e565b82525050565b6000602082019050614780600083018461475c565b92915050565b61478f816142d9565b82525050565b61479e8161455a565b82525050565b60006060820190506147b96000830186614786565b6147c66020830185614795565b6147d36040830184614795565b949350505050565b6000819050919050565b6147ee816147db565b81146147f957600080fd5b50565b60008135905061480b816147e5565b92915050565b60006020828403121561482757614826614214565b5b6000614835848285016147fc565b91505092915050565b614847816147db565b82525050565b6000602082019050614862600083018461483e565b92915050565b6000806040838503121561487f5761487e614214565b5b600061488d858286016147fc565b925050602061489e85828601614583565b9150509250929050565b600080600060a084860312156148c1576148c0614214565b5b60006148cf86828701614341565b935050608084013567ffffffffffffffff8111156148f0576148ef614219565b5b6148fc8682870161441b565b92509250509250925092565b600060408201905061491d60008301856142af565b61492a6020830184614795565b9392505050565b60008083601f84011261494757614946614360565b5b8235905067ffffffffffffffff81111561496457614963614365565b5b6020830191508360208202830111156149805761497f61436a565b5b9250929050565b6000806020838503121561499e5761499d614214565b5b600083013567ffffffffffffffff8111156149bc576149bb614219565b5b6149c885828601614931565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a09816142d9565b82525050565b614a188161455a565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614a5e57614a5d614a1e565b5b50565b6000819050614a6f82614a4d565b919050565b6000614a7f82614a61565b9050919050565b614a8f81614a74565b82525050565b60a082016000820151614aab6000850182614a00565b506020820151614abe6020850182614a00565b506040820151614ad16040850182614a00565b506060820151614ae46060850182614a0f565b506080820151614af76080850182614a86565b50505050565b6000614b098383614a95565b60a08301905092915050565b6000602082019050919050565b6000614b2d826149d4565b614b3781856149df565b9350614b42836149f0565b8060005b83811015614b73578151614b5a8882614afd565b9750614b6583614b15565b925050600181019050614b46565b5085935050505092915050565b60006020820190508181036000830152614b9a8184614b22565b905092915050565b60006101008284031215614bb957614bb861433c565b5b81905092915050565b60008060008060608587031215614bdc57614bdb614214565b5b6000614bea878288016142fa565b945050602085013567ffffffffffffffff811115614c0b57614c0a614219565b5b614c1787828801614ba2565b935050604085013567ffffffffffffffff811115614c3857614c37614219565b5b614c448782880161441b565b925092505092959194509250565b600080600080600060608688031215614c6e57614c6d614214565b5b6000614c7c888289016142fa565b955050602086013567ffffffffffffffff811115614c9d57614c9c614219565b5b614ca98882890161436f565b9450945050604086013567ffffffffffffffff811115614ccc57614ccb614219565b5b614cd8888289016143c5565b92509250509295509295909350565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b614d1c81614ce7565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614d5c578082015181840152602081019050614d41565b60008484015250505050565b6000614d7382614d22565b614d7d8185614d2d565b9350614d8d818560208601614d3e565b614d968161459d565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000614dd98383614a00565b60208301905092915050565b6000602082019050919050565b6000614dfd82614da1565b614e078185614dac565b9350614e1283614dbd565b8060005b83811015614e43578151614e2a8882614dcd565b9750614e3583614de5565b925050600181019050614e16565b5085935050505092915050565b600060e082019050614e65600083018a614d13565b8181036020830152614e778189614d68565b90508181036040830152614e8b8188614d68565b9050614e9a6060830187614786565b614ea76080830186614795565b614eb460a083018561483e565b81810360c0830152614ec68184614df2565b905098975050505050505050565b600060208284031215614eea57614ee9614214565b5b6000614ef884828501614583565b91505092915050565b600080600060408486031215614f1a57614f19614214565b5b6000614f28868287016142fa565b935050602084013567ffffffffffffffff811115614f4957614f48614219565b5b614f5586828701614931565b92509250509250925092565b600067ffffffffffffffff821115614f7c57614f7b6145ae565b5b602082029050602081019050919050565b6000614fa0614f9b84614f61565b61460e565b90508083825260208201905060208402830185811115614fc357614fc261436a565b5b835b81811015614fec5780614fd888826142fa565b845260208401935050602081019050614fc5565b5050509392505050565b600082601f83011261500b5761500a614360565b5b813561501b848260208601614f8d565b91505092915050565b600080600080600060a086880312156150405761503f614214565b5b600061504e88828901614583565b955050602061505f88828901614583565b945050604086013567ffffffffffffffff8111156150805761507f614219565b5b61508c88828901614ff6565b935050606086013567ffffffffffffffff8111156150ad576150ac614219565b5b6150b988828901614ff6565b925050608086013567ffffffffffffffff8111156150da576150d9614219565b5b6150e6888289016146ab565b9150509295509295909350565b6150fc81614a74565b82525050565b600060a0820190506151176000830188614786565b6151246020830187614786565b6151316040830186614786565b61513e6060830185614795565b61514b60808301846150f3565b9695505050505050565b600060208201905061516a6000830184614795565b92915050565b600080600080600060a0868803121561518c5761518b614214565b5b600061519a88828901614583565b95505060206151ab88828901614583565b94505060406151bc888289016142fa565b93505060606151cd888289016142fa565b925050608086013567ffffffffffffffff8111156151ee576151ed614219565b5b6151fa888289016146ab565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408201905061524b6000830185614795565b6152586020830184614795565b9392505050565b60006020820190506152746000830184614786565b92915050565b600060408201905061528f6000830185614786565b61529c6020830184614786565b9392505050565b600080fd5b82818337505050565b60006152bd8385614dac565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156152f0576152ef6152a3565b5b6020830292506153018385846152a8565b82840190509392505050565b600060208201905081810360008301526153288184866152b1565b90509392505050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261535d5761535c615331565b5b80840192508235915067ffffffffffffffff82111561537f5761537e615336565b5b60208301925060208202360383131561539b5761539a61533b565b5b509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006153dd826142d9565b91506153e8836142d9565b9250828203905081811115615400576153ff6153a3565b5b92915050565b600061541560208401846142fa565b905092915050565b600061542c6020840184614583565b905092915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126154605761545f61543e565b5b83810192508235915060208301925067ffffffffffffffff82111561548857615487615434565b5b60208202360383131561549e5761549d615439565b5b509250929050565b600082825260208201905092915050565b60006154c383856154a6565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156154f6576154f56152a3565b5b6020830292506155078385846152a8565b82840190509392505050565b600061010083016155276000840184615406565b6155346000860182614a00565b506155426020840184615406565b61554f6020860182614a00565b5061555d6040840184615406565b61556a6040860182614a00565b50615578606084018461541d565b6155856060860182614a0f565b50615593608084018461541d565b6155a06080860182614a0f565b506155ae60a0840184615443565b85830360a08701526155c18382846154b7565b925050506155d260c0840184615443565b85830360c08701526155e58382846154b7565b925050506155f660e0840184615443565b85830360e08701526156098382846154b7565b925050508091505092915050565b600060208201905081810360008301526156318184615513565b905092915050565b6080820161564a6000830183615406565b6156576000850182614a00565b506156656020830183615406565b6156726020850182614a00565b50615680604083018361541d565b61568d6040850182614a0f565b5061569b606083018361541d565b6156a86060850182614a0f565b50505050565b600060a0820190506156c36000830185614786565b6156d06020830184615639565b9392505050565b600481106156e457600080fd5b50565b6000813590506156f6816156d7565b92915050565b60006020828403121561571257615711614214565b5b6000615720848285016156e7565b91505092915050565b60008235600160800383360303811261574557615744615331565b5b80830191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061578882614da1565b61579281856154a6565b935061579d83614dbd565b8060005b838110156157ce5781516157b58882614dcd565b97506157c083614de5565b9250506001810190506157a1565b5085935050505092915050565b60006157e7838361577d565b905092915050565b6000602082019050919050565b600061580782615751565b615811818561575c565b9350836020820285016158238561576d565b8060005b8581101561585f578484038952815161584085826157db565b945061584b836157ef565b925060208a01995050600181019050615827565b50829750879550505050505092915050565b6000604082019050818103600083015261588b8185614df2565b9050818103602083015261589f81846157fc565b90509392505050565b600060a0820190506158bd600083018861483e565b6158ca6020830187614786565b6158d76040830186614786565b6158e46060830185614795565b6158f16080830184614795565b9695505050505050565b600081519050919050565b600081905092915050565b600061591c826158fb565b6159268185615906565b9350615936818560208601614d3e565b80840191505092915050565b600061594e8284615911565b915081905092915050565b600081905092915050565b60006159708385615959565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156159a3576159a26152a3565b5b6020830292506159b48385846152a8565b82840190509392505050565b60006159cd828486615964565b91508190509392505050565b6000610120820190506159ef600083018c61483e565b6159fc602083018b614786565b615a09604083018a614786565b615a166060830189614786565b615a236080830188614795565b615a3060a0830187614795565b615a3d60c083018661483e565b615a4a60e083018561483e565b615a5861010083018461483e565b9a9950505050505050505050565b6000602082019050615a7b60008301846150f3565b92915050565b50565b6000615a91600083615906565b9150615a9c82615a81565b600082019050919050565b6000615ab282615a84565b9150819050919050565b6000819050919050565b6000819050919050565b6000615aeb615ae6615ae184615abc565b615ac6565b6142d9565b9050919050565b615afb81615ad0565b82525050565b600060a082019050615b166000830188614795565b615b236020830187614795565b615b306040830186614795565b615b3d6060830185615af2565b615b4a6080830184614786565b9695505050505050565b6000615b5f826142d9565b9150615b6a836142d9565b9250828201905080821115615b8257615b816153a3565b5b92915050565b6000604082019050615b9d6000830185614795565b615baa602083018461483e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680615bf857607f821691505b602082108103615c0b57615c0a615bb1565b5b50919050565b6000606082019050615c266000830186614795565b615c336020830185614795565b615c406040830184614786565b949350505050565b600082825260208201905092915050565b6000615c66600083615c48565b9150615c7182615a81565b600082019050919050565b600060a082019050615c916000830187614795565b615c9e6020830186614795565b615cab6040830185614786565b615cb86060830184614786565b8181036080830152615cc981615c59565b905095945050505050565b600060a082019050615ce96000830187614795565b615cf66020830186614795565b8181036040830152615d088185614df2565b90508181036060830152615d1c8184614df2565b90508181036080830152615d2f81615c59565b905095945050505050565b600060a082019050615d4f600083018861483e565b615d5c602083018761483e565b615d69604083018661483e565b615d766060830185614786565b615d836080830184614795565b9695505050505050565b600060ff82169050919050565b615da381615d8d565b82525050565b6000608082019050615dbe600083018761483e565b615dcb6020830186615d9a565b615dd8604083018561483e565b615de5606083018461483e565b95945050505050565b6000604082019050615e036000830185614795565b615e106020830184614786565b9392505050565b615e20816142a3565b8114615e2b57600080fd5b50565b600081519050615e3d81615e17565b92915050565b600060208284031215615e5957615e58614214565b5b6000615e6784828501615e2e565b9150509291505056fea264697066735822122010f7a8ffe94043efa6dfe703be43add2d5945529e0d855b67eb63ecd695569c764736f6c63430008180033
0x6101606040523480156200001257600080fd5b5060405162006a4c38038062006a4c8339818101604052810190620000389190620005b4565b6040518060400160405280601181526020017f4e6966747949736c616e645265776172640000000000000000000000000000008152506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525060008060006101000a81548160ff02191690831515021790555060018081905550620000db600383620002a760201b90919060201c565b6101208181525050620000f9600482620002a760201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a0818152505062000138620002ff60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620001dd5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000215576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200022a6000801b836200035c60201b60201c565b506200025d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a836200035c60201b60201c565b5080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000b4b565b6000602083511015620002cd57620002c5836200046060201b60201c565b9050620002f9565b82620002df83620004cd60201b60201c565b6000019081620002f0919062000875565b5060ff60001b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016200034195949392919062000999565b60405160208183030381529060405280519060200120905090565b6000620003708383620004d760201b60201c565b620004555760016002600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003f16200054260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506200045a565b600090505b92915050565b600080829050601f81511115620004b057826040517f305a27a9000000000000000000000000000000000000000000000000000000008152600401620004a7919062000a85565b60405180910390fd5b805181620004be9062000adb565b60001c1760001b915050919050565b6000819050919050565b60006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200057c826200054f565b9050919050565b6200058e816200056f565b81146200059a57600080fd5b50565b600081519050620005ae8162000583565b92915050565b60008060408385031215620005ce57620005cd6200054a565b5b6000620005de858286016200059d565b9250506020620005f1858286016200059d565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200067d57607f821691505b60208210810362000693576200069262000635565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006fd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006be565b620007098683620006be565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000756620007506200074a8462000721565b6200072b565b62000721565b9050919050565b6000819050919050565b620007728362000735565b6200078a62000781826200075d565b848454620006cb565b825550505050565b600090565b620007a162000792565b620007ae81848462000767565b505050565b5b81811015620007d657620007ca60008262000797565b600181019050620007b4565b5050565b601f8211156200082557620007ef8162000699565b620007fa84620006ae565b810160208510156200080a578190505b620008226200081985620006ae565b830182620007b3565b50505b505050565b600082821c905092915050565b60006200084a600019846008026200082a565b1980831691505092915050565b600062000865838362000837565b9150826002028217905092915050565b6200088082620005fb565b67ffffffffffffffff8111156200089c576200089b62000606565b5b620008a8825462000664565b620008b5828285620007da565b600060209050601f831160018114620008ed5760008415620008d8578287015190505b620008e4858262000857565b86555062000954565b601f198416620008fd8662000699565b60005b82811015620009275784890151825560018201915060208501945060208101905062000900565b8683101562000947578489015162000943601f89168262000837565b8355505b6001600288020188555050505b505050505050565b6000819050919050565b62000971816200095c565b82525050565b620009828162000721565b82525050565b62000993816200056f565b82525050565b600060a082019050620009b0600083018862000966565b620009bf602083018762000966565b620009ce604083018662000966565b620009dd606083018562000977565b620009ec608083018462000988565b9695505050505050565b600082825260208201905092915050565b60005b8381101562000a2757808201518184015260208101905062000a0a565b60008484015250505050565b6000601f19601f8301169050919050565b600062000a5182620005fb565b62000a5d8185620009f6565b935062000a6f81856020860162000a07565b62000a7a8162000a33565b840191505092915050565b6000602082019050818103600083015262000aa1818462000a44565b905092915050565b600081519050919050565b6000819050602082019050919050565b600062000ad282516200095c565b80915050919050565b600062000ae88262000aa9565b8262000af48462000ab4565b905062000b018162000ac4565b9250602082101562000b445762000b3f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802620006be565b831692505b5050919050565b60805160a05160c05160e051610100516101205161014051615ea662000ba660003960006126740152600061263901526000613c4a01526000613c2901526000613490015260006134e60152600061350f0152615ea66000f3fe60806040526004361061019c5760003560e01c8063715c8b8b116100ec578063bc197c811161008a578063da7a5ad011610064578063da7a5ad0146105dd578063e14806001461061e578063f23a6e6114610649578063f4b51044146106865761019c565b8063bc197c811461055b578063d4f00c2f14610598578063d547741f146105b45761019c565b80638e942c1d116100c65780638e942c1d146104a157806391d14854146104ca578063a0b1f5dd14610507578063a217fddf146105305761019c565b8063715c8b8b1461043d5780638456cb591461045957806384b0196e146104705761019c565b80632f2ff15d11610159578063431e117911610133578063431e1179146103595780634421c2261461039757806348cf144f146103d45780635c975abb146104125761019c565b80632f2ff15d146102f057806336568abe146103195780633f4ba83a146103425761019c565b806301ffc9a7146101a15780630902b315146101de5780630c97cc5d1461021b578063150b7a021461023757806322136c5014610274578063248a9ca3146102b3575b600080fd5b3480156101ad57600080fd5b506101c860048036038101906101c39190614276565b6106af565b6040516101d591906142be565b60405180910390f35b3480156101ea57600080fd5b506102056004803603810190610200919061430f565b6106d1565b60405161021291906142be565b60405180910390f35b61023560048036038101906102309190614471565b6106f1565b005b34801561024357600080fd5b5061025e600480360381019061025991906146d9565b61072e565b60405161026b919061476b565b60405180910390f35b34801561028057600080fd5b5061029b6004803603810190610296919061430f565b610742565b6040516102aa939291906147a4565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190614811565b6107ac565b6040516102e7919061484d565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190614868565b6107cc565b005b34801561032557600080fd5b50610340600480360381019061033b9190614868565b6107ee565b005b34801561034e57600080fd5b50610357610869565b005b34801561036557600080fd5b50610380600480360381019061037b91906148a8565b61089e565b60405161038e929190614908565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b99190614987565b61096b565b6040516103cb9190614b80565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f69190614bc2565b610aec565b604051610409929190614908565b60405180910390f35b34801561041e57600080fd5b50610427610bce565b60405161043491906142be565b60405180910390f35b61045760048036038101906104529190614c52565b610be4565b005b34801561046557600080fd5b5061046e610c10565b005b34801561047c57600080fd5b50610485610c45565b6040516104989796959493929190614e50565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c39190614ed4565b610cef565b005b3480156104d657600080fd5b506104f160048036038101906104ec9190614868565b610da7565b6040516104fe91906142be565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190614f01565b610e12565b005b34801561053c57600080fd5b506105456110c7565b604051610552919061484d565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d9190615024565b6110ce565b60405161058f919061476b565b60405180910390f35b6105b260048036038101906105ad9190614bc2565b6110e3565b005b3480156105c057600080fd5b506105db60048036038101906105d69190614868565b611492565b005b3480156105e957600080fd5b5061060460048036038101906105ff919061430f565b6114b4565b604051610615959493929190615102565b60405180910390f35b34801561062a57600080fd5b50610633611517565b6040516106409190615155565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190615170565b61153d565b60405161067d919061476b565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a891906148a8565b611552565b005b60006106ba82611b2a565b806106ca57506106c982611ba4565b5b9050919050565b60076020528060005260406000206000915054906101000a900460ff1681565b6106f9611c1e565b610701611c64565b61070c878383611552565b61071d876000013587878787611ca5565b610725612128565b50505050505050565b600063150b7a0260e01b9050949350505050565b60056020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b600060026000838152602001908152602001600020600101549050919050565b6107d5826107ac565b6107de81612131565b6107e88383612145565b50505050565b6107f6612237565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461085a576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610864828261223f565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61089381612131565b61089b612332565b50565b600080600061090a85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506108fc6108f789612394565b612437565b61245190919063ffffffff16565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614819250925050935093915050565b60608282905067ffffffffffffffff81111561098a576109896145ae565b5b6040519080825280602002602001820160405280156109c357816020015b6109b06141b3565b8152602001906001900390816109a85790505b50905060005b83839050811015610ae557600660008585848181106109eb576109ea615207565b5b9050602002013581526020019081526020016000206040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160149054906101000a900460ff166003811115610aa457610aa3614a1e565b5b6003811115610ab657610ab5614a1e565b5b81525050828281518110610acd57610acc615207565b5b602002602001018190525080806001019150506109c9565b5092915050565b6000806000610b5885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610b4a610b458961247d565b612437565b61245190919063ffffffff16565b90506005600088815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161481925092505094509492505050565b60008060009054906101000a900460ff16905090565b610bec611c1e565b610bf4611c64565b610c018585858585611ca5565b610c09612128565b5050505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c3a81612131565b610c426125ce565b50565b600060608060008060006060610c59612630565b610c6161266b565b46306000801b600067ffffffffffffffff811115610c8257610c816145ae565b5b604051908082528060200260200182016040528015610cb05781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b6000801b610cfc81612131565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d62576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610e1a611c1e565b600082829050905060008103610e5c576040517ff1364a7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166005600086815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3a576005600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040517f536dd9ef000000000000000000000000000000000000000000000000000000008152600401610f31929190615236565b60405180910390fd5b610f43846126a6565b610f8457836040517fb07bd440000000000000000000000000000000000000000000000000000000008152600401610f7b919061525f565b60405180910390fd5b60005b8181101561107e57600060066000868685818110610fa857610fa7615207565b5b90506020020135815260200190815260200160002090508060000154861461100d578581600001546040517fe866f37b00000000000000000000000000000000000000000000000000000000815260040161100492919061527a565b60405180910390fd5b600081600201549050600081111561106f576000826002018190555061106e8260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360010154838560030160149054906101000a900460ff166126d8565b5b50508080600101915050610f87565b50837febd9542f1e0e2e5ac3bdd32da20fa5c5f7a7b5d76d041602b2717c01384e818584846040516110b192919061530d565b60405180910390a2506110c2612128565b505050565b6000801b81565b600063bc197c8160e01b905095945050505050565b6110eb611c1e565b6110f3611c64565b6110ff8484848461280f565b6000838060a001906111119190615340565b905090506000810361114f576040517ff1364a7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838060c0019061115f9190615340565b9050811415806111805750838060e0019061117a9190615340565b90508114155b156111b7576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156113f3576000858060a001906111d49190615340565b838181106111e5576111e4615207565b5b9050602002013590506000868060c001906112009190615340565b8481811061121157611210615207565b5b9050602002013590506000878060e0019061122c9190615340565b8581811061123d5761123c615207565b5b9050602002013590506000810361128d5781816040517f92ffe02200000000000000000000000000000000000000000000000000000000815260040161128492919061527a565b60405180910390fd5b6007600084815260200190815260200160002060009054906101000a900460ff16156112f057826040517f994f3c6d0000000000000000000000000000000000000000000000000000000081526004016112e7919061525f565b60405180910390fd5b60016007600085815260200190815260200160002060006101000a81548160ff02191690831515021790555060006006600084815260200190815260200160002090508181600201541015611382578060020154826040517f65ac9d4300000000000000000000000000000000000000000000000000000000815260040161137992919061527a565b60405180910390fd5b8181600201600082825461139691906153d2565b925050819055506113e28160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260010154848460030160149054906101000a900460ff166126d8565b5050505080806001019150506111ba565b50600084604001351115611422576114218460600160208101906114179190614ed4565b8560400135612a38565b5b8360800160208101906114359190614ed4565b73ffffffffffffffffffffffffffffffffffffffff16857fb22135e35cb495e41ec31bf19293b4ac57c337bbc898e003cb8eecbf3f2b51748660405161147b9190615617565b60405180910390a35061148c612128565b50505050565b61149b826107ac565b6114a481612131565b6114ae838361223f565b50505050565b60066020528060005260406000206000915090508060000154908060010154908060020154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160149054906101000a900460ff16905085565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600063f23a6e6160e01b905095945050505050565b61155a611c64565b6000836000013503611598576040517f0afa7ee800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168360400160208101906115c39190614ed4565b73ffffffffffffffffffffffffffffffffffffffff1614806116235750600073ffffffffffffffffffffffffffffffffffffffff1683606001602081019061160b9190614ed4565b73ffffffffffffffffffffffffffffffffffffffff16145b1561165a576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006005600085600001358152602001908152602001600020905060008160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118645760008560200135141580156116eb575042856020013511155b15611733578460200135426040517fb214079400000000000000000000000000000000000000000000000000000000815260040161172a92919061527a565b60405180910390fd5b61173e858585612af5565b6040518060600160405280866020013581526020018660400160208101906117669190614ed4565b73ffffffffffffffffffffffffffffffffffffffff1681526020018660600160208101906117949190614ed4565b73ffffffffffffffffffffffffffffffffffffffff1681525060056000876000013581526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050611ae6565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118d65780336040517f536dd9ef0000000000000000000000000000000000000000000000000000000081526004016118cd929190615236565b60405180910390fd5b6000826000015490508560200135811015801561193057508560400160208101906119019190614ed4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b801561199d575085606001602081019061194a9190614ed4565b73ffffffffffffffffffffffffffffffffffffffff168360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156119d4576040517f73fa69fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8560400160208101906119e79190614ed4565b8360010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550856060016020810190611a3c9190614ed4565b8360020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008103611ac9576000866020013514611ac4576040517f9a5c64da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ae4565b8086602001351115611ae357856020013583600001819055505b5b505b7ff49f428abb4ef70c857a0f31aac19ec71a5463c0784f8f7c2eed139538f7cbc4856000013586604051611b1b9291906156ae565b60405180910390a15050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b9d5750611b9c82612b50565b5b9050919050565b60007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611c175750611c1682611b2a565b5b9050919050565b600260015403611c5a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b611c6c610bce565b15611ca3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b3373ffffffffffffffffffffffffffffffffffffffff166005600087815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d83576005600086815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040517f536dd9ef000000000000000000000000000000000000000000000000000000008152600401611d7a929190615236565b60405180910390fd5b611d8c85612bba565b611dcd57846040517f423b515f000000000000000000000000000000000000000000000000000000008152600401611dc4919061525f565b60405180910390fd5b60008484905090506000838390509050600082148015611ded5750600081145b15611e24576040517f1794b43e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600034905060008367ffffffffffffffff811115611e4557611e446145ae565b5b604051908082528060200260200182016040528015611e735781602001602082028036833780820191505090505b50905060005b84811015611f705736898983818110611e9557611e94615207565b5b905060a00201905060006003811115611eb157611eb0614a1e565b5b816080016020810190611ec491906156fc565b6003811115611ed657611ed5614a1e565b5b03611f34578060200135841015611f2a578381602001356040517f775c8a0e000000000000000000000000000000000000000000000000000000008152600401611f2192919061527a565b60405180910390fd5b8060200135840393505b611f3e8b82612bec565b8060400135838381518110611f5657611f55615207565b5b602002602001018181525050508080600101915050611e79565b5060008367ffffffffffffffff811115611f8d57611f8c6145ae565b5b604051908082528060200260200182016040528015611fc057816020015b6060815260200190600190039081611fab5790505b50905060005b8481101561209b57611ffc8b898984818110611fe557611fe4615207565b5b9050602002810190611ff79190615729565b612f49565b87878281811061200f5761200e615207565b5b90506020028101906120219190615729565b80600001906120309190615340565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505082828151811061208357612082615207565b5b60200260200101819052508080600101915050611fc6565b5060008311156120e257826040517fe8b016190000000000000000000000000000000000000000000000000000000081526004016120d9919061525f565b60405180910390fd5b897f0d37e701164106e522925e5c2d8daeca1343d63cfbc48a52c82750cd96a7d8808383604051612114929190615871565b60405180910390a250505050505050505050565b60018081905550565b6121428161213d612237565b6133fb565b50565b60006121518383610da7565b61222c5760016002600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506121c9612237565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050612231565b600090505b92915050565b600033905090565b600061224b8383610da7565b156123275760006002600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506122c4612237565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001905061232c565b600090505b92915050565b61233a61344c565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61237d612237565b60405161238a9190615155565b60405180910390a1565b60007f4259ebbc8005a7529634d69c77ce8af088b7d85f7f7f1d91f3274e8215daa212826000013583602001358460400160208101906123d49190614ed4565b8560600160208101906123e79190614ed4565b6040516020016123fb9594939291906158a8565b60405160208183030381529060405260405160200161241a9190615942565b604051602081830303815290604052805190602001209050919050565b600061244a61244461348c565b83613543565b9050919050565b6000806000806124618686613584565b92509250925061247182826135e0565b82935050505092915050565b60007f4ca6fa5ad7ffb95be65c74ed76c6a4c47aa77c61e11a9a2ca498a92b8b73a4848260000135836020013584604001358560600160208101906124c29190614ed4565b8660800160208101906124d59190614ed4565b878060a001906124e59190615340565b6040516020016124f69291906159c0565b60405160208183030381529060405280519060200120888060c0019061251c9190615340565b60405160200161252d9291906159c0565b60405160208183030381529060405280519060200120898060e001906125539190615340565b6040516020016125649291906159c0565b60405160208183030381529060405280519060200120604051602001612592999897969594939291906159d9565b6040516020818303038152906040526040516020016125b19190615942565b604051602081830303815290604052805190602001209050919050565b6125d6611c64565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612619612237565b6040516126269190615155565b60405180910390a1565b606061266660037f000000000000000000000000000000000000000000000000000000000000000061374490919063ffffffff16565b905090565b60606126a160047f000000000000000000000000000000000000000000000000000000000000000061374490919063ffffffff16565b905090565b6000806005600084815260200190815260200160002060000154905060008114806126d057508042115b915050919050565b600060038111156126ec576126eb614a1e565b5b8160038111156126ff576126fe614a1e565b5b036127135761270e3383612a38565b612809565b6001600381111561272757612726614a1e565b5b81600381111561273a57612739614a1e565b5b0361274f5761274a8433846137f4565b612808565b6002600381111561276357612762614a1e565b5b81600381111561277657612775614a1e565b5b0361278c5761278784303386613804565b612807565b60038081111561279f5761279e614a1e565b5b8160038111156127b2576127b1614a1e565b5b036127c9576127c484303386866138d5565b612806565b806040517f961dc00a0000000000000000000000000000000000000000000000000000000081526004016127fd9190615a66565b60405180910390fd5b5b5b5b50505050565b8260400135341461285d573483604001356040517f1dccdb9f00000000000000000000000000000000000000000000000000000000815260040161285492919061527a565b60405180910390fd5b8260800160208101906128709190614ed4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128f3578260800160208101906128b59190614ed4565b336040517f3ebd5fe50000000000000000000000000000000000000000000000000000000081526004016128ea929190615236565b60405180910390fd5b8260000135421015612942574283600001356040517f3c7bd1cb00000000000000000000000000000000000000000000000000000000815260040161293992919061527a565b60405180910390fd5b8260200135421115612991574283602001356040517f10ad23fe00000000000000000000000000000000000000000000000000000000815260040161298892919061527a565b60405180910390fd5b61299a84612bba565b6129db57836040517f423b515f0000000000000000000000000000000000000000000000000000000081526004016129d2919061525f565b60405180910390fd5b6000806129ea86868686610aec565b9150915081612a3057806040517fe74c68bb000000000000000000000000000000000000000000000000000000008152600401612a279190615155565b60405180910390fd5b505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612a5e90615aa7565b60006040518083038185875af1925050503d8060008114612a9b576040519150601f19603f3d011682016040523d82523d6000602084013e612aa0565b606091505b5050905080612af057600030846000856040517fab45420f000000000000000000000000000000000000000000000000000000008152600401612ae7959493929190615b01565b60405180910390fd5b505050565b600080612b0385858561089e565b9150915081612b4957806040517fe74c68bb000000000000000000000000000000000000000000000000000000008152600401612b409190615155565b60405180910390fd5b5050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080600560008481526020019081526020016000206000015490506000811480612be457508042105b915050919050565b600081602001351480612c46575060026003811115612c0e57612c0d614a1e565b5b816080016020810190612c2191906156fc565b6003811115612c3357612c32614a1e565b5b148015612c4557506001816020013514155b5b15612c9257806040013581602001356040517fb363ec0a000000000000000000000000000000000000000000000000000000008152600401612c8992919061527a565b60405180910390fd5b6000600660008360400135815260200190815260200160002090506000816000015403612d74578160000135816001018190555081602001358160020181905550828160000181905550816060016020810190612cef9190614ed4565b8160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816080016020810190612d4491906156fc565b8160030160146101000a81548160ff02191690836003811115612d6a57612d69614a1e565b5b0217905550612efc565b82816000015403612eb857816060016020810190612d929190614ed4565b73ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612df7575081600001358160010154145b8015612e495750816080016020810190612e1191906156fc565b6003811115612e2357612e22614a1e565b5b8160030160149054906101000a900460ff166003811115612e4757612e46614a1e565b5b145b15612e72578160200135816002016000828254612e669190615b54565b92505081905550612eb3565b81604001356040517f75f575a6000000000000000000000000000000000000000000000000000000008152600401612eaa919061525f565b60405180910390fd5b612efb565b8281600001546040517fe866f37b000000000000000000000000000000000000000000000000000000008152600401612ef292919061527a565b60405180910390fd5b5b60006003811115612f1057612f0f614a1e565b5b826080016020810190612f2391906156fc565b6003811115612f3557612f34614a1e565b5b14612f4457612f43826139a9565b5b505050565b6000818060000190612f5b9190615340565b9050905060008103612f99576040517f2d78d40300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80828060200190612faa9190615340565b9050141580612fca575080828060400190612fc59190615340565b905014155b15613001576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561333857600083806000019061301e9190615340565b8381811061302f5761302e615207565b5b905060200201359050600084806040019061304a9190615340565b8481811061305b5761305a615207565b5b905060200201359050600081036130ab5781816040517fb363ec0a0000000000000000000000000000000000000000000000000000000081526004016130a292919061527a565b60405180910390fd5b60006006600084815260200190815260200160002090506000816000015403613197578580602001906130de9190615340565b858181106130ef576130ee615207565b5b9050602002013581600101819055508181600201819055508681600001819055508560600160208101906131239190614ed4565b8160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060038160030160146101000a81548160ff0219169083600381111561318d5761318c614a1e565b5b0217905550613328565b868160000154036132e4578560600160208101906131b59190614ed4565b73ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561323d575085806020019061321e9190615340565b8581811061322f5761322e615207565b5b905060200201358160010154145b801561327d575060038081111561325757613256614a1e565b5b8160030160149054906101000a900460ff16600381111561327b5761327a614a1e565b5b145b156132a257818160020160008282546132969190615b54565b925050819055506132df565b826040517f75f575a60000000000000000000000000000000000000000000000000000000081526004016132d6919061525f565b60405180910390fd5b613327565b8681600001546040517fe866f37b00000000000000000000000000000000000000000000000000000000815260040161331e92919061527a565b60405180910390fd5b5b5050508080600101915050613004565b506133f682606001602081019061334f9190614ed4565b33308580602001906133619190615340565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508680604001906133b19190615340565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050613b30565b505050565b6134058282610da7565b6134485780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161343f929190615b88565b60405180910390fd5b5050565b613454610bce565b61348a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561350857507f000000000000000000000000000000000000000000000000000000000000000046145b15613535577f00000000000000000000000000000000000000000000000000000000000000009050613540565b61353d613c04565b90505b90565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b600080600060418451036135c95760008060006020870151925060408701519150606087015160001a90506135bb88828585613c9a565b9550955095505050506135d9565b60006002855160001b9250925092505b9250925092565b600060038111156135f4576135f3614a1e565b5b82600381111561360757613606614a1e565b5b0315613740576001600381111561362157613620614a1e565b5b82600381111561363457613633614a1e565b5b0361366b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561367f5761367e614a1e565b5b82600381111561369257613691614a1e565b5b036136d7578060001c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016136ce919061525f565b60405180910390fd5b6003808111156136ea576136e9614a1e565b5b8260038111156136fd576136fc614a1e565b5b0361373f57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401613736919061484d565b60405180910390fd5b5b5050565b606060ff60001b83146137615761375a83613d8e565b90506137ee565b81805461376d90615be0565b80601f016020809104026020016040519081016040528092919081815260200182805461379990615be0565b80156137e65780601f106137bb576101008083540402835291602001916137e6565b820191906000526020600020905b8154815290600101906020018083116137c957829003601f168201915b505050505090505b92915050565b6137ff838383613e02565b505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b0361386057836040517fec0164840000000000000000000000000000000000000000000000000000000081526004016138579190615155565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342842e0e8484846040518463ffffffff1660e01b815260040161389d93929190615c11565b600060405180830381600087803b1580156138b757600080fd5b505af11580156138cb573d6000803e3d6000fd5b5050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff163b0361393157846040517fec0164840000000000000000000000000000000000000000000000000000000081526004016139289190615155565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663f242432a858585856040518563ffffffff1660e01b81526004016139709493929190615c7c565b600060405180830381600087803b15801561398a57600080fd5b505af115801561399e573d6000803e3d6000fd5b505050505050505050565b600160038111156139bd576139bc614a1e565b5b8160800160208101906139d091906156fc565b60038111156139e2576139e1614a1e565b5b03613a0e57613a098160600160208101906139fd9190614ed4565b33308460200135613e81565b613b2d565b60026003811115613a2257613a21614a1e565b5b816080016020810190613a3591906156fc565b6003811115613a4757613a46614a1e565b5b03613a7357613a6e816060016020810190613a629190614ed4565b33308460000135613804565b613b2c565b600380811115613a8657613a85614a1e565b5b816080016020810190613a9991906156fc565b6003811115613aab57613aaa614a1e565b5b03613adc57613ad7816060016020810190613ac69190614ed4565b3330846000013585602001356138d5565b613b2b565b806080016020810190613aef91906156fc565b6040517f961dc00a000000000000000000000000000000000000000000000000000000008152600401613b229190615a66565b60405180910390fd5b5b5b50565b60008573ffffffffffffffffffffffffffffffffffffffff163b03613b8c57846040517fec016484000000000000000000000000000000000000000000000000000000008152600401613b839190615155565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16632eb2c2d6858585856040518563ffffffff1660e01b8152600401613bcb9493929190615cd4565b600060405180830381600087803b158015613be557600080fd5b505af1158015613bf9573d6000803e3d6000fd5b505050505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001613c7f959493929190615d3a565b60405160208183030381529060405280519060200120905090565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c1115613cda576000600385925092509250613d84565b600060018888888860405160008152602001604052604051613cff9493929190615da9565b6020604051602081039080840390855afa158015613d21573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613d7557600060016000801b93509350935050613d84565b8060008060001b935093509350505b9450945094915050565b60606000613d9b83613e93565b90506000602067ffffffffffffffff811115613dba57613db96145ae565b5b6040519080825280601f01601f191660200182016040528015613dec5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b613e7c838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401613e35929190615dee565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613ee3565b505050565b613e8d84848484613f7a565b50505050565b60008060ff8360001c169050601f811115613eda576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b6000613f0e828473ffffffffffffffffffffffffffffffffffffffff16613ffc90919063ffffffff16565b90506000815114158015613f33575080806020019051810190613f319190615e43565b155b15613f7557826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401613f6c9190615155565b60405180910390fd5b505050565b613ff6848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401613faf93929190615c11565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613ee3565b50505050565b606061400a83836000614012565b905092915050565b60608147101561405957306040517fcd7860590000000000000000000000000000000000000000000000000000000081526004016140509190615155565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516140829190615942565b60006040518083038185875af1925050503d80600081146140bf576040519150601f19603f3d011682016040523d82523d6000602084013e6140c4565b606091505b50915091506140d48683836140df565b925050509392505050565b6060826140f4576140ef8261416e565b614166565b6000825114801561411c575060008473ffffffffffffffffffffffffffffffffffffffff163b145b1561415e57836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016141559190615155565b60405180910390fd5b819050614167565b5b9392505050565b6000815111156141815780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060a00160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000600381111561420457614203614a1e565b5b81525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6142538161421e565b811461425e57600080fd5b50565b6000813590506142708161424a565b92915050565b60006020828403121561428c5761428b614214565b5b600061429a84828501614261565b91505092915050565b60008115159050919050565b6142b8816142a3565b82525050565b60006020820190506142d360008301846142af565b92915050565b6000819050919050565b6142ec816142d9565b81146142f757600080fd5b50565b600081359050614309816142e3565b92915050565b60006020828403121561432557614324614214565b5b6000614333848285016142fa565b91505092915050565b600080fd5b6000608082840312156143575761435661433c565b5b81905092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261438557614384614360565b5b8235905067ffffffffffffffff8111156143a2576143a1614365565b5b6020830191508360a08202830111156143be576143bd61436a565b5b9250929050565b60008083601f8401126143db576143da614360565b5b8235905067ffffffffffffffff8111156143f8576143f7614365565b5b6020830191508360208202830111156144145761441361436a565b5b9250929050565b60008083601f84011261443157614430614360565b5b8235905067ffffffffffffffff81111561444e5761444d614365565b5b60208301915083600182028301111561446a5761446961436a565b5b9250929050565b600080600080600080600060e0888a0312156144905761448f614214565b5b600061449e8a828b01614341565b975050608088013567ffffffffffffffff8111156144bf576144be614219565b5b6144cb8a828b0161436f565b965096505060a088013567ffffffffffffffff8111156144ee576144ed614219565b5b6144fa8a828b016143c5565b945094505060c088013567ffffffffffffffff81111561451d5761451c614219565b5b6145298a828b0161441b565b925092505092959891949750929550565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145658261453a565b9050919050565b6145758161455a565b811461458057600080fd5b50565b6000813590506145928161456c565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6145e68261459d565b810181811067ffffffffffffffff82111715614605576146046145ae565b5b80604052505050565b600061461861420a565b905061462482826145dd565b919050565b600067ffffffffffffffff821115614644576146436145ae565b5b61464d8261459d565b9050602081019050919050565b82818337600083830152505050565b600061467c61467784614629565b61460e565b90508281526020810184848401111561469857614697614598565b5b6146a384828561465a565b509392505050565b600082601f8301126146c0576146bf614360565b5b81356146d0848260208601614669565b91505092915050565b600080600080608085870312156146f3576146f2614214565b5b600061470187828801614583565b945050602061471287828801614583565b9350506040614723878288016142fa565b925050606085013567ffffffffffffffff81111561474457614743614219565b5b614750878288016146ab565b91505092959194509250565b6147658161421e565b82525050565b6000602082019050614780600083018461475c565b92915050565b61478f816142d9565b82525050565b61479e8161455a565b82525050565b60006060820190506147b96000830186614786565b6147c66020830185614795565b6147d36040830184614795565b949350505050565b6000819050919050565b6147ee816147db565b81146147f957600080fd5b50565b60008135905061480b816147e5565b92915050565b60006020828403121561482757614826614214565b5b6000614835848285016147fc565b91505092915050565b614847816147db565b82525050565b6000602082019050614862600083018461483e565b92915050565b6000806040838503121561487f5761487e614214565b5b600061488d858286016147fc565b925050602061489e85828601614583565b9150509250929050565b600080600060a084860312156148c1576148c0614214565b5b60006148cf86828701614341565b935050608084013567ffffffffffffffff8111156148f0576148ef614219565b5b6148fc8682870161441b565b92509250509250925092565b600060408201905061491d60008301856142af565b61492a6020830184614795565b9392505050565b60008083601f84011261494757614946614360565b5b8235905067ffffffffffffffff81111561496457614963614365565b5b6020830191508360208202830111156149805761497f61436a565b5b9250929050565b6000806020838503121561499e5761499d614214565b5b600083013567ffffffffffffffff8111156149bc576149bb614219565b5b6149c885828601614931565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a09816142d9565b82525050565b614a188161455a565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614a5e57614a5d614a1e565b5b50565b6000819050614a6f82614a4d565b919050565b6000614a7f82614a61565b9050919050565b614a8f81614a74565b82525050565b60a082016000820151614aab6000850182614a00565b506020820151614abe6020850182614a00565b506040820151614ad16040850182614a00565b506060820151614ae46060850182614a0f565b506080820151614af76080850182614a86565b50505050565b6000614b098383614a95565b60a08301905092915050565b6000602082019050919050565b6000614b2d826149d4565b614b3781856149df565b9350614b42836149f0565b8060005b83811015614b73578151614b5a8882614afd565b9750614b6583614b15565b925050600181019050614b46565b5085935050505092915050565b60006020820190508181036000830152614b9a8184614b22565b905092915050565b60006101008284031215614bb957614bb861433c565b5b81905092915050565b60008060008060608587031215614bdc57614bdb614214565b5b6000614bea878288016142fa565b945050602085013567ffffffffffffffff811115614c0b57614c0a614219565b5b614c1787828801614ba2565b935050604085013567ffffffffffffffff811115614c3857614c37614219565b5b614c448782880161441b565b925092505092959194509250565b600080600080600060608688031215614c6e57614c6d614214565b5b6000614c7c888289016142fa565b955050602086013567ffffffffffffffff811115614c9d57614c9c614219565b5b614ca98882890161436f565b9450945050604086013567ffffffffffffffff811115614ccc57614ccb614219565b5b614cd8888289016143c5565b92509250509295509295909350565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b614d1c81614ce7565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614d5c578082015181840152602081019050614d41565b60008484015250505050565b6000614d7382614d22565b614d7d8185614d2d565b9350614d8d818560208601614d3e565b614d968161459d565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000614dd98383614a00565b60208301905092915050565b6000602082019050919050565b6000614dfd82614da1565b614e078185614dac565b9350614e1283614dbd565b8060005b83811015614e43578151614e2a8882614dcd565b9750614e3583614de5565b925050600181019050614e16565b5085935050505092915050565b600060e082019050614e65600083018a614d13565b8181036020830152614e778189614d68565b90508181036040830152614e8b8188614d68565b9050614e9a6060830187614786565b614ea76080830186614795565b614eb460a083018561483e565b81810360c0830152614ec68184614df2565b905098975050505050505050565b600060208284031215614eea57614ee9614214565b5b6000614ef884828501614583565b91505092915050565b600080600060408486031215614f1a57614f19614214565b5b6000614f28868287016142fa565b935050602084013567ffffffffffffffff811115614f4957614f48614219565b5b614f5586828701614931565b92509250509250925092565b600067ffffffffffffffff821115614f7c57614f7b6145ae565b5b602082029050602081019050919050565b6000614fa0614f9b84614f61565b61460e565b90508083825260208201905060208402830185811115614fc357614fc261436a565b5b835b81811015614fec5780614fd888826142fa565b845260208401935050602081019050614fc5565b5050509392505050565b600082601f83011261500b5761500a614360565b5b813561501b848260208601614f8d565b91505092915050565b600080600080600060a086880312156150405761503f614214565b5b600061504e88828901614583565b955050602061505f88828901614583565b945050604086013567ffffffffffffffff8111156150805761507f614219565b5b61508c88828901614ff6565b935050606086013567ffffffffffffffff8111156150ad576150ac614219565b5b6150b988828901614ff6565b925050608086013567ffffffffffffffff8111156150da576150d9614219565b5b6150e6888289016146ab565b9150509295509295909350565b6150fc81614a74565b82525050565b600060a0820190506151176000830188614786565b6151246020830187614786565b6151316040830186614786565b61513e6060830185614795565b61514b60808301846150f3565b9695505050505050565b600060208201905061516a6000830184614795565b92915050565b600080600080600060a0868803121561518c5761518b614214565b5b600061519a88828901614583565b95505060206151ab88828901614583565b94505060406151bc888289016142fa565b93505060606151cd888289016142fa565b925050608086013567ffffffffffffffff8111156151ee576151ed614219565b5b6151fa888289016146ab565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408201905061524b6000830185614795565b6152586020830184614795565b9392505050565b60006020820190506152746000830184614786565b92915050565b600060408201905061528f6000830185614786565b61529c6020830184614786565b9392505050565b600080fd5b82818337505050565b60006152bd8385614dac565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156152f0576152ef6152a3565b5b6020830292506153018385846152a8565b82840190509392505050565b600060208201905081810360008301526153288184866152b1565b90509392505050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261535d5761535c615331565b5b80840192508235915067ffffffffffffffff82111561537f5761537e615336565b5b60208301925060208202360383131561539b5761539a61533b565b5b509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006153dd826142d9565b91506153e8836142d9565b9250828203905081811115615400576153ff6153a3565b5b92915050565b600061541560208401846142fa565b905092915050565b600061542c6020840184614583565b905092915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126154605761545f61543e565b5b83810192508235915060208301925067ffffffffffffffff82111561548857615487615434565b5b60208202360383131561549e5761549d615439565b5b509250929050565b600082825260208201905092915050565b60006154c383856154a6565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156154f6576154f56152a3565b5b6020830292506155078385846152a8565b82840190509392505050565b600061010083016155276000840184615406565b6155346000860182614a00565b506155426020840184615406565b61554f6020860182614a00565b5061555d6040840184615406565b61556a6040860182614a00565b50615578606084018461541d565b6155856060860182614a0f565b50615593608084018461541d565b6155a06080860182614a0f565b506155ae60a0840184615443565b85830360a08701526155c18382846154b7565b925050506155d260c0840184615443565b85830360c08701526155e58382846154b7565b925050506155f660e0840184615443565b85830360e08701526156098382846154b7565b925050508091505092915050565b600060208201905081810360008301526156318184615513565b905092915050565b6080820161564a6000830183615406565b6156576000850182614a00565b506156656020830183615406565b6156726020850182614a00565b50615680604083018361541d565b61568d6040850182614a0f565b5061569b606083018361541d565b6156a86060850182614a0f565b50505050565b600060a0820190506156c36000830185614786565b6156d06020830184615639565b9392505050565b600481106156e457600080fd5b50565b6000813590506156f6816156d7565b92915050565b60006020828403121561571257615711614214565b5b6000615720848285016156e7565b91505092915050565b60008235600160800383360303811261574557615744615331565b5b80830191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061578882614da1565b61579281856154a6565b935061579d83614dbd565b8060005b838110156157ce5781516157b58882614dcd565b97506157c083614de5565b9250506001810190506157a1565b5085935050505092915050565b60006157e7838361577d565b905092915050565b6000602082019050919050565b600061580782615751565b615811818561575c565b9350836020820285016158238561576d565b8060005b8581101561585f578484038952815161584085826157db565b945061584b836157ef565b925060208a01995050600181019050615827565b50829750879550505050505092915050565b6000604082019050818103600083015261588b8185614df2565b9050818103602083015261589f81846157fc565b90509392505050565b600060a0820190506158bd600083018861483e565b6158ca6020830187614786565b6158d76040830186614786565b6158e46060830185614795565b6158f16080830184614795565b9695505050505050565b600081519050919050565b600081905092915050565b600061591c826158fb565b6159268185615906565b9350615936818560208601614d3e565b80840191505092915050565b600061594e8284615911565b915081905092915050565b600081905092915050565b60006159708385615959565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156159a3576159a26152a3565b5b6020830292506159b48385846152a8565b82840190509392505050565b60006159cd828486615964565b91508190509392505050565b6000610120820190506159ef600083018c61483e565b6159fc602083018b614786565b615a09604083018a614786565b615a166060830189614786565b615a236080830188614795565b615a3060a0830187614795565b615a3d60c083018661483e565b615a4a60e083018561483e565b615a5861010083018461483e565b9a9950505050505050505050565b6000602082019050615a7b60008301846150f3565b92915050565b50565b6000615a91600083615906565b9150615a9c82615a81565b600082019050919050565b6000615ab282615a84565b9150819050919050565b6000819050919050565b6000819050919050565b6000615aeb615ae6615ae184615abc565b615ac6565b6142d9565b9050919050565b615afb81615ad0565b82525050565b600060a082019050615b166000830188614795565b615b236020830187614795565b615b306040830186614795565b615b3d6060830185615af2565b615b4a6080830184614786565b9695505050505050565b6000615b5f826142d9565b9150615b6a836142d9565b9250828201905080821115615b8257615b816153a3565b5b92915050565b6000604082019050615b9d6000830185614795565b615baa602083018461483e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680615bf857607f821691505b602082108103615c0b57615c0a615bb1565b5b50919050565b6000606082019050615c266000830186614795565b615c336020830185614795565b615c406040830184614786565b949350505050565b600082825260208201905092915050565b6000615c66600083615c48565b9150615c7182615a81565b600082019050919050565b600060a082019050615c916000830187614795565b615c9e6020830186614795565b615cab6040830185614786565b615cb86060830184614786565b8181036080830152615cc981615c59565b905095945050505050565b600060a082019050615ce96000830187614795565b615cf66020830186614795565b8181036040830152615d088185614df2565b90508181036060830152615d1c8184614df2565b90508181036080830152615d2f81615c59565b905095945050505050565b600060a082019050615d4f600083018861483e565b615d5c602083018761483e565b615d69604083018661483e565b615d766060830185614786565b615d836080830184614795565b9695505050505050565b600060ff82169050919050565b615da381615d8d565b82525050565b6000608082019050615dbe600083018761483e565b615dcb6020830186615d9a565b615dd8604083018561483e565b615de5606083018461483e565b95945050505050565b6000604082019050615e036000830185614795565b615e106020830184614786565b9392505050565b615e20816142a3565b8114615e2b57600080fd5b50565b600081519050615e3d81615e17565b92915050565b600060208284031215615e5957615e58614214565b5b6000615e6784828501615e2e565b9150509291505056fea264697066735822122010f7a8ffe94043efa6dfe703be43add2d5945529e0d855b67eb63ecd695569c764736f6c63430008180033000000000000000000000000586fbf5fadb63ba1e28f4987d7e6d6f1bfb9f490000000000000000000000000419198030036b62ffb0557d416cabe443fcfae13