0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610221578063a9059cbb14610229578063d505accf1461023c578063dd62ed3e1461024f575f80fd5b806370a082311461018c578063753894f3146101b45780637ecebe00146101f357806384b0196e14610206575f80fd5b80631a50c853116100ce5780631a50c8531461014757806323b872dd1461015c578063313ce5671461016f5780633644e51514610184575f80fd5b806306fdde03146100f4578063095ea7b31461011257806318160ddd14610135575b5f80fd5b6100fc610287565b6040516101099190610f56565b60405180910390f35b610125610120366004610f83565b610317565b6040519015158152602001610109565b6002545b604051908152602001610109565b61015a610155366004610fab565b610330565b005b61012561016a366004610fc2565b6103f1565b60035460405160ff9091168152602001610109565b610139610416565b61013961019a366004610ffb565b6001600160a01b03165f9081526020819052604090205490565b6101db7f0000000000000000000000009b99cca871be05119b2012fd4474731dd653febe81565b6040516001600160a01b039091168152602001610109565b610139610201366004610ffb565b610424565b61020e610441565b6040516101099796959493929190611014565b6100fc610483565b610125610237366004610f83565b610492565b61015a61024a3660046110a8565b61049f565b61013961025d366004611115565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606004805461029690611146565b80601f01602080910402602001604051908101604052809291908181526020018280546102c290611146565b801561030d5780601f106102e45761010080835404028352916020019161030d565b820191905f5260205f20905b8154815290600101906020018083116102f057829003601f168201915b5050505050905090565b5f336103248185856105d5565b60019150505b92915050565b5f81116103775760405162461bcd60e51b815260206004820152601060248201526f0616d6f756e74206d75737420677420360841b60448201526064015b60405180910390fd5b6103ae6001600160a01b037f0000000000000000000000009b99cca871be05119b2012fd4474731dd653febe163361dead846105e7565b6103b9303383610647565b60405181815233907f078254c58cf2d358e22654408bbb36a5ec378ef9d8817f8ab81d0b0e0461eb619060200160405180910390a250565b5f336103fe8582856106a4565b610409858585610647565b60019150505b9392505050565b5f61041f610719565b905090565b6001600160a01b0381165f9081526008602052604081205461032a565b5f6060805f805f6060610452610842565b61045a61086f565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60606005805461029690611146565b5f33610324818585610647565b834211156104c35760405163313c898160e11b81526004810185905260240161036e565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861050e8c6001600160a01b03165f90815260086020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6105688261089c565b90505f610577828787876108c8565b9050896001600160a01b0316816001600160a01b0316146105be576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161036e565b6105c98a8a8a6105d5565b50505050505050505050565b6105e283838360016108f4565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526106419085906109c6565b50505050565b6001600160a01b03831661067057604051634b637e8f60e11b81525f600482015260240161036e565b6001600160a01b0382166106995760405163ec442f0560e01b81525f600482015260240161036e565b6105e2838383610a27565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610641578181101561070b57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161036e565b61064184848484035f6108f4565b5f306001600160a01b037f0000000000000000000000001fac00ccee478eced6a120a50ed2ab28ee7fe32b1614801561077157507f000000000000000000000000000000000000000000000000000000000000000146145b1561079b57507f50a3a9a8964412fc656c33550d13d74f292f728ad31bf8f4f7e31fc8691c415090565b61041f604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527fcbefa581d8b7286dab73c95ccda2ecdd8e180f4404585dc4c2b112d596092d37918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b606061041f7f426974756e6520414920506c6174666f726d20546f6b656e00000000000000186006610b4d565b606061041f7f31000000000000000000000000000000000000000000000000000000000000016007610b4d565b5f61032a6108a8610719565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108d888888888610bf6565b9250925092506108e88282610cbe565b50909695505050505050565b6001600160a01b03841661091d5760405163e602df0560e01b81525f600482015260240161036e565b6001600160a01b03831661094657604051634a1406b160e11b81525f600482015260240161036e565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561064157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109b891815260200190565b60405180910390a350505050565b5f6109da6001600160a01b03841683610d7a565b905080515f141580156109fe5750808060200190518101906109fc919061117e565b155b156105e257604051635274afe760e01b81526001600160a01b038416600482015260240161036e565b6001600160a01b038316610a51578060025f828254610a46919061119d565b90915550610ac19050565b6001600160a01b0383165f9081526020819052604090205481811015610aa35760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161036e565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610add57600280548290039055610afb565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b4091815260200190565b60405180910390a3505050565b606060ff8314610b6757610b6083610d87565b905061032a565b818054610b7390611146565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9f90611146565b8015610bea5780601f10610bc157610100808354040283529160200191610bea565b820191905f5260205f20905b815481529060010190602001808311610bcd57829003601f168201915b5050505050905061032a565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610c2f57505f91506003905082610cb4565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c80573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610cab57505f925060019150829050610cb4565b92505f91508190505b9450945094915050565b5f826003811115610cd157610cd16111bc565b03610cda575050565b6001826003811115610cee57610cee6111bc565b03610d0c5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610d2057610d206111bc565b03610d415760405163fce698f760e01b81526004810182905260240161036e565b6003826003811115610d5557610d556111bc565b03610d76576040516335e2f38360e21b81526004810182905260240161036e565b5050565b606061040f83835f610dc4565b60605f610d9383610e5d565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b606081471015610de95760405163cd78605960e01b815230600482015260240161036e565b5f80856001600160a01b03168486604051610e0491906111d0565b5f6040518083038185875af1925050503d805f8114610e3e576040519150601f19603f3d011682016040523d82523d5f602084013e610e43565b606091505b5091509150610e53868383610e84565b9695505050505050565b5f60ff8216601f81111561032a57604051632cd44ac360e21b815260040160405180910390fd5b606082610e9957610e9482610ee0565b61040f565b8151158015610eb057506001600160a01b0384163b155b15610ed957604051639996b31560e01b81526001600160a01b038516600482015260240161036e565b508061040f565b805115610ef05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b83811015610f23578181015183820152602001610f0b565b50505f910152565b5f8151808452610f42816020860160208601610f09565b601f01601f19169290920160200192915050565b602081525f61040f6020830184610f2b565b80356001600160a01b0381168114610f7e575f80fd5b919050565b5f8060408385031215610f94575f80fd5b610f9d83610f68565b946020939093013593505050565b5f60208284031215610fbb575f80fd5b5035919050565b5f805f60608486031215610fd4575f80fd5b610fdd84610f68565b9250610feb60208501610f68565b9150604084013590509250925092565b5f6020828403121561100b575f80fd5b61040f82610f68565b60ff60f81b881681525f602060e08184015261103360e084018a610f2b565b8381036040850152611045818a610f2b565b606085018990526001600160a01b038816608086015260a0850187905284810360c086015285518082528387019250908301905f5b818110156110965783518352928401929184019160010161107a565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a0312156110be575f80fd5b6110c788610f68565b96506110d560208901610f68565b95506040880135945060608801359350608088013560ff811681146110f8575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215611126575f80fd5b61112f83610f68565b915061113d60208401610f68565b90509250929050565b600181811c9082168061115a57607f821691505b60208210810361117857634e487b7160e01b5f52602260045260245ffd5b50919050565b5f6020828403121561118e575f80fd5b8151801515811461040f575f80fd5b8082018082111561032a57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f82516111e1818460208701610f09565b919091019291505056fea2646970667358221220adc571df8e93a80f96e835668504531758401dd113c63ff5d67117b347f4077664736f6c63430008140033
0x61018060405234801562000011575f80fd5b506040516200196138038062001961833981016040819052620000349162000469565b6040805180820190915260018152603160f81b60208201528490819081868660046200006184826200059d565b5060056200007083826200059d565b506003805460ff191660ff9290921691909117905550620000959050826006620001be565b61012052620000a6816007620001be565b61014052815160208084019190912060e052815190820120610100524660a0526200013360e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b038516620001995760405162461bcd60e51b815260206004820152601a60248201527f746f6b656e2063616e206e6f74206265207a65726f206164647200000000000060448201526064015b60405180910390fd5b6001600160a01b03851661016052620001b33082620001f6565b5050505050620006dd565b5f602083511015620001dd57620001d58362000232565b9050620001f0565b81620001ea84826200059d565b5060ff90505b92915050565b6001600160a01b038216620002215760405163ec442f0560e01b81525f600482015260240162000190565b6200022e5f838362000274565b5050565b5f80829050601f815111156200025f578260405163305a27a960e01b815260040162000190919062000665565b80516200026c8262000699565b179392505050565b6001600160a01b038316620002a2578060025f828254620002969190620006bd565b90915550620003149050565b6001600160a01b0383165f9081526020819052604090205481811015620002f65760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000190565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216620003325760028054829003905562000350565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200039691815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f5b83811015620003d3578181015183820152602001620003b9565b50505f910152565b5f82601f830112620003eb575f80fd5b81516001600160401b0380821115620004085762000408620003a3565b604051601f8301601f19908116603f01168101908282118183101715620004335762000433620003a3565b816040528381528660208588010111156200044c575f80fd5b6200045f846020830160208901620003b7565b9695505050505050565b5f805f805f60a086880312156200047e575f80fd5b85516001600160a01b038116811462000495575f80fd5b60208701519095506001600160401b0380821115620004b2575f80fd5b620004c089838a01620003db565b95506040880151915080821115620004d6575f80fd5b50620004e588828901620003db565b935050606086015160ff81168114620004fc575f80fd5b80925050608086015190509295509295909350565b600181811c908216806200052657607f821691505b6020821081036200054557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000598575f81815260208120601f850160051c81016020861015620005735750805b601f850160051c820191505b8181101562000594578281556001016200057f565b5050505b505050565b81516001600160401b03811115620005b957620005b9620003a3565b620005d181620005ca845462000511565b846200054b565b602080601f83116001811462000607575f8415620005ef5750858301515b5f19600386901b1c1916600185901b17855562000594565b5f85815260208120601f198616915b82811015620006375788860151825594840194600190910190840162000616565b50858210156200065557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b602081525f825180602084015262000685816040850160208701620003b7565b601f01601f19169190910160400192915050565b8051602080830151919081101562000545575f1960209190910360031b1b16919050565b80820180821115620001f057634e487b7160e01b5f52601160045260245ffd5b60805160a05160c05160e05161010051610120516101405161016051611221620007405f395f81816101b9015261038401525f61087601525f61084901525f6107f201525f6107ca01525f61072501525f61074f01525f61077901526112215ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610221578063a9059cbb14610229578063d505accf1461023c578063dd62ed3e1461024f575f80fd5b806370a082311461018c578063753894f3146101b45780637ecebe00146101f357806384b0196e14610206575f80fd5b80631a50c853116100ce5780631a50c8531461014757806323b872dd1461015c578063313ce5671461016f5780633644e51514610184575f80fd5b806306fdde03146100f4578063095ea7b31461011257806318160ddd14610135575b5f80fd5b6100fc610287565b6040516101099190610f56565b60405180910390f35b610125610120366004610f83565b610317565b6040519015158152602001610109565b6002545b604051908152602001610109565b61015a610155366004610fab565b610330565b005b61012561016a366004610fc2565b6103f1565b60035460405160ff9091168152602001610109565b610139610416565b61013961019a366004610ffb565b6001600160a01b03165f9081526020819052604090205490565b6101db7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610109565b610139610201366004610ffb565b610424565b61020e610441565b6040516101099796959493929190611014565b6100fc610483565b610125610237366004610f83565b610492565b61015a61024a3660046110a8565b61049f565b61013961025d366004611115565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606004805461029690611146565b80601f01602080910402602001604051908101604052809291908181526020018280546102c290611146565b801561030d5780601f106102e45761010080835404028352916020019161030d565b820191905f5260205f20905b8154815290600101906020018083116102f057829003601f168201915b5050505050905090565b5f336103248185856105d5565b60019150505b92915050565b5f81116103775760405162461bcd60e51b815260206004820152601060248201526f0616d6f756e74206d75737420677420360841b60448201526064015b60405180910390fd5b6103ae6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163361dead846105e7565b6103b9303383610647565b60405181815233907f078254c58cf2d358e22654408bbb36a5ec378ef9d8817f8ab81d0b0e0461eb619060200160405180910390a250565b5f336103fe8582856106a4565b610409858585610647565b60019150505b9392505050565b5f61041f610719565b905090565b6001600160a01b0381165f9081526008602052604081205461032a565b5f6060805f805f6060610452610842565b61045a61086f565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60606005805461029690611146565b5f33610324818585610647565b834211156104c35760405163313c898160e11b81526004810185905260240161036e565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861050e8c6001600160a01b03165f90815260086020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6105688261089c565b90505f610577828787876108c8565b9050896001600160a01b0316816001600160a01b0316146105be576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161036e565b6105c98a8a8a6105d5565b50505050505050505050565b6105e283838360016108f4565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526106419085906109c6565b50505050565b6001600160a01b03831661067057604051634b637e8f60e11b81525f600482015260240161036e565b6001600160a01b0382166106995760405163ec442f0560e01b81525f600482015260240161036e565b6105e2838383610a27565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610641578181101561070b57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161036e565b61064184848484035f6108f4565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561077157507f000000000000000000000000000000000000000000000000000000000000000046145b1561079b57507f000000000000000000000000000000000000000000000000000000000000000090565b61041f604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b606061041f7f00000000000000000000000000000000000000000000000000000000000000006006610b4d565b606061041f7f00000000000000000000000000000000000000000000000000000000000000006007610b4d565b5f61032a6108a8610719565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108d888888888610bf6565b9250925092506108e88282610cbe565b50909695505050505050565b6001600160a01b03841661091d5760405163e602df0560e01b81525f600482015260240161036e565b6001600160a01b03831661094657604051634a1406b160e11b81525f600482015260240161036e565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561064157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109b891815260200190565b60405180910390a350505050565b5f6109da6001600160a01b03841683610d7a565b905080515f141580156109fe5750808060200190518101906109fc919061117e565b155b156105e257604051635274afe760e01b81526001600160a01b038416600482015260240161036e565b6001600160a01b038316610a51578060025f828254610a46919061119d565b90915550610ac19050565b6001600160a01b0383165f9081526020819052604090205481811015610aa35760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161036e565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610add57600280548290039055610afb565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b4091815260200190565b60405180910390a3505050565b606060ff8314610b6757610b6083610d87565b905061032a565b818054610b7390611146565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9f90611146565b8015610bea5780601f10610bc157610100808354040283529160200191610bea565b820191905f5260205f20905b815481529060010190602001808311610bcd57829003601f168201915b5050505050905061032a565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610c2f57505f91506003905082610cb4565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c80573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610cab57505f925060019150829050610cb4565b92505f91508190505b9450945094915050565b5f826003811115610cd157610cd16111bc565b03610cda575050565b6001826003811115610cee57610cee6111bc565b03610d0c5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610d2057610d206111bc565b03610d415760405163fce698f760e01b81526004810182905260240161036e565b6003826003811115610d5557610d556111bc565b03610d76576040516335e2f38360e21b81526004810182905260240161036e565b5050565b606061040f83835f610dc4565b60605f610d9383610e5d565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b606081471015610de95760405163cd78605960e01b815230600482015260240161036e565b5f80856001600160a01b03168486604051610e0491906111d0565b5f6040518083038185875af1925050503d805f8114610e3e576040519150601f19603f3d011682016040523d82523d5f602084013e610e43565b606091505b5091509150610e53868383610e84565b9695505050505050565b5f60ff8216601f81111561032a57604051632cd44ac360e21b815260040160405180910390fd5b606082610e9957610e9482610ee0565b61040f565b8151158015610eb057506001600160a01b0384163b155b15610ed957604051639996b31560e01b81526001600160a01b038516600482015260240161036e565b508061040f565b805115610ef05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b83811015610f23578181015183820152602001610f0b565b50505f910152565b5f8151808452610f42816020860160208601610f09565b601f01601f19169290920160200192915050565b602081525f61040f6020830184610f2b565b80356001600160a01b0381168114610f7e575f80fd5b919050565b5f8060408385031215610f94575f80fd5b610f9d83610f68565b946020939093013593505050565b5f60208284031215610fbb575f80fd5b5035919050565b5f805f60608486031215610fd4575f80fd5b610fdd84610f68565b9250610feb60208501610f68565b9150604084013590509250925092565b5f6020828403121561100b575f80fd5b61040f82610f68565b60ff60f81b881681525f602060e08184015261103360e084018a610f2b565b8381036040850152611045818a610f2b565b606085018990526001600160a01b038816608086015260a0850187905284810360c086015285518082528387019250908301905f5b818110156110965783518352928401929184019160010161107a565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a0312156110be575f80fd5b6110c788610f68565b96506110d560208901610f68565b95506040880135945060608801359350608088013560ff811681146110f8575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215611126575f80fd5b61112f83610f68565b915061113d60208401610f68565b90509250929050565b600181811c9082168061115a57607f821691505b60208210810361117857634e487b7160e01b5f52602260045260245ffd5b50919050565b5f6020828403121561118e575f80fd5b8151801515811461040f575f80fd5b8082018082111561032a57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f82516111e1818460208701610f09565b919091019291505056fea2646970667358221220adc571df8e93a80f96e835668504531758401dd113c63ff5d67117b347f4077664736f6c634300081400330000000000000000000000009b99cca871be05119b2012fd4474731dd653febe00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000052b7d2dcc80cd2e40000000000000000000000000000000000000000000000000000000000000000000018426974756e6520414920506c6174666f726d20546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000454554e4500000000000000000000000000000000000000000000000000000000