6101606040523480156200001257600080fd5b506040518060400160405280600481526020017f5641474d00000000000000000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5641474d000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5641474d000000000000000000000000000000000000000000000000000000008152508160039081620000fd91906200084b565b5080600490816200010f91906200084b565b50505062000128600583620001e860201b90919060201c565b610120818152505062000146600682620001e860201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001856200024060201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050620001e2336c7e37be2022ce7201da276400006200029d60201b60201c565b62000c36565b60006020835110156200020e5762000206836200032a60201b60201c565b90506200023a565b8262000220836200039760201b60201c565b60000190816200023191906200084b565b5060ff60001b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e05161010051463060405160200162000282959493929190620009a3565b60405160208183030381529060405280519060200120905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620003125760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000309919062000a00565b60405180910390fd5b6200032660008383620003a160201b60201c565b5050565b600080829050601f815111156200037a57826040517f305a27a900000000000000000000000000000000000000000000000000000000815260040162000371919062000aac565b60405180910390fd5b805181620003889062000b02565b60001c1760001b915050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620003f7578060026000828254620003ea919062000ba1565b92505081905550620004cd565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000486578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200047d9392919062000bdc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000518578060026000828254039250508190555062000565565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005c4919062000c19565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200065357607f821691505b6020821081036200066957620006686200060b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006d37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000694565b620006df868362000694565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200072c620007266200072084620006f7565b62000701565b620006f7565b9050919050565b6000819050919050565b62000748836200070b565b62000760620007578262000733565b848454620006a1565b825550505050565b600090565b6200077762000768565b620007848184846200073d565b505050565b5b81811015620007ac57620007a06000826200076d565b6001810190506200078a565b5050565b601f821115620007fb57620007c5816200066f565b620007d08462000684565b81016020851015620007e0578190505b620007f8620007ef8562000684565b83018262000789565b50505b505050565b600082821c905092915050565b6000620008206000198460080262000800565b1980831691505092915050565b60006200083b83836200080d565b9150826002028217905092915050565b6200085682620005d1565b67ffffffffffffffff811115620008725762000871620005dc565b5b6200087e82546200063a565b6200088b828285620007b0565b600060209050601f831160018114620008c35760008415620008ae578287015190505b620008ba85826200082d565b8655506200092a565b601f198416620008d3866200066f565b60005b82811015620008fd57848901518255600182019150602085019450602081019050620008d6565b868310156200091d578489015162000919601f8916826200080d565b8355505b6001600288020188555050505b505050505050565b6000819050919050565b620009478162000932565b82525050565b6200095881620006f7565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200098b826200095e565b9050919050565b6200099d816200097e565b82525050565b600060a082019050620009ba60008301886200093c565b620009c960208301876200093c565b620009d860408301866200093c565b620009e760608301856200094d565b620009f6608083018462000992565b9695505050505050565b600060208201905062000a17600083018462000992565b92915050565b600082825260208201905092915050565b60005b8381101562000a4e57808201518184015260208101905062000a31565b60008484015250505050565b6000601f19601f8301169050919050565b600062000a7882620005d1565b62000a84818562000a1d565b935062000a9681856020860162000a2e565b62000aa18162000a5a565b840191505092915050565b6000602082019050818103600083015262000ac8818462000a6b565b905092915050565b600081519050919050565b6000819050602082019050919050565b600062000af9825162000932565b80915050919050565b600062000b0f8262000ad0565b8262000b1b8462000adb565b905062000b288162000aeb565b9250602082101562000b6b5762000b667fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080262000694565b831692505b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bae82620006f7565b915062000bbb83620006f7565b925082820190508082111562000bd65762000bd562000b72565b5b92915050565b600060608201905062000bf3600083018662000992565b62000c0260208301856200094d565b62000c1160408301846200094d565b949350505050565b600060208201905062000c3060008301846200094d565b92915050565b60805160a05160c05160e051610100516101205161014051611c1762000c916000396000610a3e01526000610a0301526000610f5301526000610f32015260006108fe015260006109540152600061097d0152611c176000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b4114610230578063a9059cbb1461024e578063d505accf1461027e578063dd62ed3e1461029a576100cf565b806370a08231146101ac5780637ecebe00146101dc57806384b0196e1461020c576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce567146101705780633644e5151461018e575b600080fd5b6100dc6102ca565b6040516100e99190611440565b60405180910390f35b61010c600480360381019061010791906114fb565b61035c565b6040516101199190611556565b60405180910390f35b61012a61037f565b6040516101379190611580565b60405180910390f35b61015a6004803603810190610155919061159b565b610389565b6040516101679190611556565b60405180910390f35b6101786103b8565b604051610185919061160a565b60405180910390f35b6101966103c1565b6040516101a3919061163e565b60405180910390f35b6101c660048036038101906101c19190611659565b6103d0565b6040516101d39190611580565b60405180910390f35b6101f660048036038101906101f19190611659565b610418565b6040516102039190611580565b60405180910390f35b61021461042a565b604051610227979695949392919061178e565b60405180910390f35b6102386104d4565b6040516102459190611440565b60405180910390f35b610268600480360381019061026391906114fb565b610566565b6040516102759190611556565b60405180910390f35b6102986004803603810190610293919061186a565b610589565b005b6102b460048036038101906102af919061190c565b6106d1565b6040516102c19190611580565b60405180910390f35b6060600380546102d99061197b565b80601f01602080910402602001604051908101604052809291908181526020018280546103059061197b565b80156103525780601f1061032757610100808354040283529160200191610352565b820191906000526020600020905b81548152906001019060200180831161033557829003601f168201915b5050505050905090565b600080610367610758565b9050610374818585610760565b600191505092915050565b6000600254905090565b600080610394610758565b90506103a1858285610772565b6103ac858585610806565b60019150509392505050565b60006012905090565b60006103cb6108fa565b905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610423826109b1565b9050919050565b60006060806000806000606061043e6109fa565b610446610a35565b46306000801b600067ffffffffffffffff811115610467576104666119ac565b5b6040519080825280602002602001820160405280156104955781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b6060600480546104e39061197b565b80601f016020809104026020016040519081016040528092919081815260200182805461050f9061197b565b801561055c5780601f106105315761010080835404028352916020019161055c565b820191906000526020600020905b81548152906001019060200180831161053f57829003601f168201915b5050505050905090565b600080610571610758565b905061057e818585610806565b600191505092915050565b834211156105ce57836040517f627913020000000000000000000000000000000000000000000000000000000081526004016105c59190611580565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105fd8c610a70565b89604051602001610613969594939291906119db565b604051602081830303815290604052805190602001209050600061063682610ac7565b9050600061064682878787610ae1565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106ba57808a6040517f4b800e460000000000000000000000000000000000000000000000000000000081526004016106b1929190611a3c565b60405180910390fd5b6106c58a8a8a610760565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b61076d8383836001610b11565b505050565b600061077e84846106d1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461080057818110156107f0578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016107e793929190611a65565b60405180910390fd5b6107ff84848484036000610b11565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108785760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161086f9190611a9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108ea5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016108e19190611a9c565b60405180910390fd5b6108f5838383610ce8565b505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561097657507f000000000000000000000000000000000000000000000000000000000000000046145b156109a3577f000000000000000000000000000000000000000000000000000000000000000090506109ae565b6109ab610f0d565b90505b90565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060610a3060057f0000000000000000000000000000000000000000000000000000000000000000610fa390919063ffffffff16565b905090565b6060610a6b60067f0000000000000000000000000000000000000000000000000000000000000000610fa390919063ffffffff16565b905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050559050919050565b6000610ada610ad46108fa565b83611053565b9050919050565b600080600080610af388888888611094565b925092509250610b038282611188565b829350505050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b835760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610b7a9190611a9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bf55760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610bec9190611a9c565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610ce2578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610cd99190611580565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d3a578060026000828254610d2e9190611ae6565b92505081905550610e0d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610dc6578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610dbd93929190611a65565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e565780600260008282540392505081905550610ea3565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f009190611580565b60405180910390a3505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001610f88959493929190611b1a565b60405160208183030381529060405280519060200120905090565b606060ff60001b8314610fc057610fb9836112ec565b905061104d565b818054610fcc9061197b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff89061197b565b80156110455780601f1061101a57610100808354040283529160200191611045565b820191906000526020600020905b81548152906001019060200180831161102857829003601f168201915b505050505090505b92915050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c11156110d457600060038592509250925061117e565b6000600188888888604051600081526020016040526040516110f99493929190611b6d565b6020604051602081039080840390855afa15801561111b573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361116f57600060016000801b9350935093505061117e565b8060008060001b935093509350505b9450945094915050565b6000600381111561119c5761119b611bb2565b5b8260038111156111af576111ae611bb2565b5b03156112e857600160038111156111c9576111c8611bb2565b5b8260038111156111dc576111db611bb2565b5b03611213576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561122757611226611bb2565b5b82600381111561123a57611239611bb2565b5b0361127f578060001c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016112769190611580565b60405180910390fd5b60038081111561129257611291611bb2565b5b8260038111156112a5576112a4611bb2565b5b036112e757806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016112de919061163e565b60405180910390fd5b5b5050565b606060006112f983611360565b90506000602067ffffffffffffffff811115611318576113176119ac565b5b6040519080825280601f01601f19166020018201604052801561134a5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b60008060ff8360001c169050601f8111156113a7576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113ea5780820151818401526020810190506113cf565b60008484015250505050565b6000601f19601f8301169050919050565b6000611412826113b0565b61141c81856113bb565b935061142c8185602086016113cc565b611435816113f6565b840191505092915050565b6000602082019050818103600083015261145a8184611407565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061149282611467565b9050919050565b6114a281611487565b81146114ad57600080fd5b50565b6000813590506114bf81611499565b92915050565b6000819050919050565b6114d8816114c5565b81146114e357600080fd5b50565b6000813590506114f5816114cf565b92915050565b6000806040838503121561151257611511611462565b5b6000611520858286016114b0565b9250506020611531858286016114e6565b9150509250929050565b60008115159050919050565b6115508161153b565b82525050565b600060208201905061156b6000830184611547565b92915050565b61157a816114c5565b82525050565b60006020820190506115956000830184611571565b92915050565b6000806000606084860312156115b4576115b3611462565b5b60006115c2868287016114b0565b93505060206115d3868287016114b0565b92505060406115e4868287016114e6565b9150509250925092565b600060ff82169050919050565b611604816115ee565b82525050565b600060208201905061161f60008301846115fb565b92915050565b6000819050919050565b61163881611625565b82525050565b6000602082019050611653600083018461162f565b92915050565b60006020828403121561166f5761166e611462565b5b600061167d848285016114b0565b91505092915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6116bb81611686565b82525050565b6116ca81611487565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611705816114c5565b82525050565b600061171783836116fc565b60208301905092915050565b6000602082019050919050565b600061173b826116d0565b61174581856116db565b9350611750836116ec565b8060005b83811015611781578151611768888261170b565b975061177383611723565b925050600181019050611754565b5085935050505092915050565b600060e0820190506117a3600083018a6116b2565b81810360208301526117b58189611407565b905081810360408301526117c98188611407565b90506117d86060830187611571565b6117e560808301866116c1565b6117f260a083018561162f565b81810360c08301526118048184611730565b905098975050505050505050565b61181b816115ee565b811461182657600080fd5b50565b60008135905061183881611812565b92915050565b61184781611625565b811461185257600080fd5b50565b6000813590506118648161183e565b92915050565b600080600080600080600060e0888a03121561188957611888611462565b5b60006118978a828b016114b0565b97505060206118a88a828b016114b0565b96505060406118b98a828b016114e6565b95505060606118ca8a828b016114e6565b94505060806118db8a828b01611829565b93505060a06118ec8a828b01611855565b92505060c06118fd8a828b01611855565b91505092959891949750929550565b6000806040838503121561192357611922611462565b5b6000611931858286016114b0565b9250506020611942858286016114b0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061199357607f821691505b6020821081036119a6576119a561194c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060c0820190506119f0600083018961162f565b6119fd60208301886116c1565b611a0a60408301876116c1565b611a176060830186611571565b611a246080830185611571565b611a3160a0830184611571565b979650505050505050565b6000604082019050611a5160008301856116c1565b611a5e60208301846116c1565b9392505050565b6000606082019050611a7a60008301866116c1565b611a876020830185611571565b611a946040830184611571565b949350505050565b6000602082019050611ab160008301846116c1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611af1826114c5565b9150611afc836114c5565b9250828201905080821115611b1457611b13611ab7565b5b92915050565b600060a082019050611b2f600083018861162f565b611b3c602083018761162f565b611b49604083018661162f565b611b566060830185611571565b611b6360808301846116c1565b9695505050505050565b6000608082019050611b82600083018761162f565b611b8f60208301866115fb565b611b9c604083018561162f565b611ba9606083018461162f565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220541ad4cc6f48fae406616cf6132b55803f1280f0f1df97041346e0fb30a80be864736f6c63430008160033