608060405234801562000010575f80fd5b5060408051808201825260048082526310d3919560e21b6020808401829052845180860190955291845290830152905f6200004c838262000104565b5060016200005b828262000104565b505050620001cc565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200008d57607f821691505b602082108103620000ac57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620000ff575f81815260208120601f850160051c81016020861015620000da5750805b601f850160051c820191505b81811015620000fb57828155600101620000e6565b5050505b505050565b81516001600160401b0381111562000120576200012062000064565b620001388162000131845462000078565b84620000b2565b602080601f8311600181146200016e575f8415620001565750858301515b5f19600386901b1c1916600185901b178555620000fb565b5f85815260208120601f198616915b828110156200019e578886015182559484019460019091019084016200017d565b5085821015620001bc57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b6111e780620001da5f395ff3fe608060405234801561000f575f80fd5b50600436106100b8575f3560e01c806301ffc9a7146100bc57806306fdde03146100e4578063081812fc146100f9578063095ea7b31461012457806323b872dd1461013957806340c10f191461014c57806342842e0e1461015f5780636352211e1461017257806370a082311461018557806395d89b41146101a6578063a22cb465146101ae578063b88d4fde146101c1578063c87b56dd146101d4578063e985e9c5146101e7575b5f80fd5b6100cf6100ca366004610d2e565b6101fa565b60405190151581526020015b60405180910390f35b6100ec61024b565b6040516100db9190610d96565b61010c610107366004610da8565b6102da565b6040516001600160a01b0390911681526020016100db565b610137610132366004610dda565b6102ff565b005b610137610147366004610e02565b610418565b61013761015a366004610dda565b610449565b61013761016d366004610e02565b610457565b61010c610180366004610da8565b610471565b610198610193366004610e3b565b6104a4565b6040519081526020016100db565b6100ec610528565b6101376101bc366004610e54565b610537565b6101376101cf366004610ea1565b610542565b6100ec6101e2366004610da8565b61057a565b6100cf6101f5366004610f76565b6105f7565b5f6001600160e01b031982166380ac58cd60e01b148061022a57506001600160e01b03198216635b5e139f60e01b145b8061024557506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f805461025990610fa7565b80601f016020809104026020016040519081016040528092919081815260200182805461028590610fa7565b80156102d05780601f106102a7576101008083540402835291602001916102d0565b820191905f5260205f20905b8154815290600101906020018083116102b357829003601f168201915b5050505050905090565b5f6102e482610624565b505f908152600460205260409020546001600160a01b031690565b5f61030982610471565b9050806001600160a01b0316836001600160a01b03160361037b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610397575061039781336105f7565b6104095760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610372565b610413838361064c565b505050565b61042233826106b9565b61043e5760405162461bcd60e51b815260040161037290610fdf565b610413838383610717565b6104538282610879565b5050565b61041383838360405180602001604052805f815250610542565b5f8061047c83610985565b90506001600160a01b0381166102455760405162461bcd60e51b81526004016103729061102c565b5f6001600160a01b03821661050d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610372565b506001600160a01b03165f9081526003602052604090205490565b60606001805461025990610fa7565b61045333838361099f565b61054c33836106b9565b6105685760405162461bcd60e51b815260040161037290610fdf565b61057484848484610a68565b50505050565b606061058582610624565b5f6105a76040805180820190915260048152636869696960e01b602082015290565b90505f8151116105c55760405180602001604052805f8152506105f0565b806105cf84610a9b565b6040516020016105e092919061105e565b6040516020818303038152906040525b9392505050565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b61062d81610b2b565b6106495760405162461bcd60e51b81526004016103729061102c565b50565b5f81815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061068082610471565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f806106c483610471565b9050806001600160a01b0316846001600160a01b031614806106eb57506106eb81856105f7565b8061070f5750836001600160a01b0316610704846102da565b6001600160a01b0316145b949350505050565b826001600160a01b031661072a82610471565b6001600160a01b0316146107505760405162461bcd60e51b81526004016103729061108c565b6001600160a01b0382166107b25760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610372565b826001600160a01b03166107c582610471565b6001600160a01b0316146107eb5760405162461bcd60e51b81526004016103729061108c565b5f81815260046020908152604080832080546001600160a01b03199081169091556001600160a01b038781168086526003855283862080545f1901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166108cf5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610372565b6108d881610b2b565b156108f55760405162461bcd60e51b8152600401610372906110d1565b6108fe81610b2b565b1561091b5760405162461bcd60e51b8152600401610372906110d1565b6001600160a01b0382165f81815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f908152600260205260409020546001600160a01b031690565b816001600160a01b0316836001600160a01b0316036109fc5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610372565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a73848484610717565b610a7f84848484610b47565b6105745760405162461bcd60e51b815260040161037290611108565b60605f610aa783610c44565b60010190505f8167ffffffffffffffff811115610ac657610ac6610e8d565b6040519080825280601f01601f191660200182016040528015610af0576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610afa57509392505050565b5f80610b3683610985565b6001600160a01b0316141592915050565b5f6001600160a01b0384163b15610c3957604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b8a90339089908890889060040161115a565b6020604051808303815f875af1925050508015610bc4575060408051601f3d908101601f19168201909252610bc191810190611196565b60015b610c1f573d808015610bf1576040519150601f19603f3d011682016040523d82523d5f602084013e610bf6565b606091505b5080515f03610c175760405162461bcd60e51b815260040161037290611108565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061070f565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c825772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310610cac576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310610cca57662386f26fc10000830492506010015b6305f5e1008310610ce2576305f5e100830492506008015b6127108310610cf657612710830492506004015b60648310610d08576064830492506002015b600a83106102455760010192915050565b6001600160e01b031981168114610649575f80fd5b5f60208284031215610d3e575f80fd5b81356105f081610d19565b5f5b83811015610d63578181015183820152602001610d4b565b50505f910152565b5f8151808452610d82816020860160208601610d49565b601f01601f19169290920160200192915050565b602081525f6105f06020830184610d6b565b5f60208284031215610db8575f80fd5b5035919050565b80356001600160a01b0381168114610dd5575f80fd5b919050565b5f8060408385031215610deb575f80fd5b610df483610dbf565b946020939093013593505050565b5f805f60608486031215610e14575f80fd5b610e1d84610dbf565b9250610e2b60208501610dbf565b9150604084013590509250925092565b5f60208284031215610e4b575f80fd5b6105f082610dbf565b5f8060408385031215610e65575f80fd5b610e6e83610dbf565b915060208301358015158114610e82575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215610eb4575f80fd5b610ebd85610dbf565b9350610ecb60208601610dbf565b925060408501359150606085013567ffffffffffffffff80821115610eee575f80fd5b818701915087601f830112610f01575f80fd5b813581811115610f1357610f13610e8d565b604051601f8201601f19908116603f01168101908382118183101715610f3b57610f3b610e8d565b816040528281528a6020848701011115610f53575f80fd5b826020860160208301375f60208483010152809550505050505092959194509250565b5f8060408385031215610f87575f80fd5b610f9083610dbf565b9150610f9e60208401610dbf565b90509250929050565b600181811c90821680610fbb57607f821691505b602082108103610fd957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b5f835161106f818460208801610d49565b835190830190611083818360208801610d49565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061118c90830184610d6b565b9695505050505050565b5f602082840312156111a6575f80fd5b81516105f081610d1956fea2646970667358221220ce227074d7b4527c96d2c2087f43907ee4723b778a0afd3df4053c8f0797a70164736f6c63430008140033