0x60806040526040516107f33803806107f383398101604081905261002291610359565b805160005b818110156100c157828181518110610041576100416104c9565b6020026020010151600001516001600160a01b03163b600014156100af576100ad838281518110610074576100746104c9565b602002602001015160200151848381518110610092576100926104c9565b6020026020010151604001516100c960201b6100091760201c565b505b806100b9816104df565b915050610027565b505050610557565b606061011183836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564000081525061011860201b60201c565b9392505050565b6060610127848460008561012f565b949350505050565b6060824710156101955760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084015b60405180910390fd5b6001600160a01b0385163b6101ec5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161018c565b600080866001600160a01b031685876040516102089190610508565b60006040518083038185875af1925050503d8060008114610245576040519150601f19603f3d011682016040523d82523d6000602084013e61024a565b606091505b50909250905061025b828286610266565b979650505050505050565b60608315610275575081610111565b8251156102855782518084602001fd5b8160405162461bcd60e51b815260040161018c9190610524565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156102d7576102d761029f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156103055761030561029f565b604052919050565b80516001600160a01b038116811461032457600080fd5b919050565b60005b8381101561034457818101518382015260200161032c565b83811115610353576000848401525b50505050565b6000602080838503121561036c57600080fd5b82516001600160401b038082111561038357600080fd5b818501915085601f83011261039757600080fd5b8151818111156103a9576103a961029f565b8060051b6103b88582016102dd565b91825283810185019185810190898411156103d257600080fd5b86860192505b838310156104bc578251858111156103f05760008081fd5b86016060601f19828d0381018213156104095760008081fd5b6104116102b5565b61041c8b850161030d565b8152604061042b81860161030d565b828d01529284015192898411156104425760008081fd5b83850194508e603f86011261045957600093508384fd5b8b85015193508984111561046f5761046f61029f565b61047f8c84601f870116016102dd565b92508383528e818587010111156104965760008081fd5b6104a5848d8501838801610329565b8101919091528452505091860191908601906103d8565b9998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561050157634e487b7160e01b600052601160045260246000fd5b5060010190565b6000825161051a818460208701610329565b9190910192915050565b6020815260008251806020840152610543816040850160208701610329565b601f01601f19169190910160400192915050565b61028d806105666000396000f3fe6080604052600080fd5b606061004b83836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250610052565b9392505050565b60606100618484600085610069565b949350505050565b6060824710156100cf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084015b60405180910390fd5b6001600160a01b0385163b6101265760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100c6565b600080866001600160a01b031685876040516101429190610208565b60006040518083038185875af1925050503d806000811461017f576040519150601f19603f3d011682016040523d82523d6000602084013e610184565b606091505b509150915061019482828661019f565b979650505050505050565b606083156101ae57508161004b565b8251156101be5782518084602001fd5b8160405162461bcd60e51b81526004016100c69190610224565b60005b838110156101f35781810151838201526020016101db565b83811115610202576000848401525b50505050565b6000825161021a8184602087016101d8565b9190910192915050565b60208152600082518060208401526102438160408501602087016101d8565b601f01601f1916919091016040019291505056fea26469706673582212200b524eb8ceaafe6c603273ee859fddbc2d6f1b7860c3d853dcf6f129f9d9371364736f6c634300080c00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000b80000000000000000000000000fd4f0cf920d7d28f5d437331ed91bab4d3bae113000000000000000000000000622a8a2d2a579632493dd422645b0338e297826e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000aa4a7d6106909efe48dd82912f7a9b4d17318f75406aed58db3dc9c8de41cc860be60a060405234801561001057600080fd5b50604051610a64380380610a6483398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516109d361009160003960008181608601526103d001526109d36000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806311b804ab14610046578063572b6c0514610076578063ac9650d8146100c6575b600080fd5b6100596100543660046106a1565b6100e6565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b661008436600461076c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b604051901515815260200161006d565b6100d96100d4366004610787565b6101ab565b60405161006d9190610858565b6000806100f16102a1565b8360405160200161012092919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b60405160208183030381529060405280519060200120905061014285826102b0565b915061014c6102a1565b6040516001600160a01b038481168252918216918716907f9e0862c4ebff2150fbbfd3f8547483f55bdec0c34fd977d3fccaa55d6c4ce7849060200160405180910390a38351156101a3576101a1828561035e565b505b509392505050565b60608167ffffffffffffffff8111156101c6576101c661068b565b6040519080825280602002602001820160405280156101f957816020015b60608152602001906001900390816101e45790505b50905060005b82811015610299576102693085858481811061021d5761021d6108ba565b905060200281019061022f91906108d0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103a792505050565b82828151811061027b5761027b6108ba565b602002602001018190525080806102919061091e565b9150506101ff565b505b92915050565b60006102ab6103cc565b905090565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b03811661029b5760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064015b60405180910390fd5b60606103a083836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250610411565b9392505050565b60606103a0838360405180606001604052806027815260200161097760279139610428565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633141561040c575060131936013560601c90565b503390565b60606104208484600085610505565b949350505050565b60606001600160a01b0384163b6104905760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610355565b600080856001600160a01b0316856040516104ab9190610947565b600060405180830381855af49150503d80600081146104e6576040519150601f19603f3d011682016040523d82523d6000602084013e6104eb565b606091505b50915091506104fb828286610636565b9695505050505050565b6060824710156105665760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610355565b6001600160a01b0385163b6105bd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610355565b600080866001600160a01b031685876040516105d99190610947565b60006040518083038185875af1925050503d8060008114610616576040519150601f19603f3d011682016040523d82523d6000602084013e61061b565b606091505b509150915061062b828286610636565b979650505050505050565b606083156106455750816103a0565b8251156106555782518084602001fd5b8160405162461bcd60e51b81526004016103559190610963565b80356001600160a01b038116811461068657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156106b657600080fd5b6106bf8461066f565b9250602084013567ffffffffffffffff808211156106dc57600080fd5b818601915086601f8301126106f057600080fd5b8135818111156107025761070261068b565b604051601f8201601f19908116603f0116810190838211818310171561072a5761072a61068b565b8160405282815289602084870101111561074357600080fd5b826020860160208301376000602084830101528096505050505050604084013590509250925092565b60006020828403121561077e57600080fd5b6103a08261066f565b6000806020838503121561079a57600080fd5b823567ffffffffffffffff808211156107b257600080fd5b818501915085601f8301126107c657600080fd5b8135818111156107d557600080fd5b8660208260051b85010111156107ea57600080fd5b60209290920196919550909350505050565b60005b838110156108175781810151838201526020016107ff565b83811115610826576000848401525b50505050565b600081518084526108448160208601602086016107fc565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156108ad57603f1988860301845261089b85835161082c565b9450928501929085019060010161087f565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126108e757600080fd5b83018035915067ffffffffffffffff82111561090257600080fd5b60200191503681900382131561091757600080fd5b9250929050565b600060001982141561094057634e487b7160e01b600052601160045260246000fd5b5060010190565b600082516109598184602087016107fc565b9190910192915050565b6020815260006103a0602083018461082c56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a8e1061608e4d1190d43f356f821a8706a35aafa06964cf0e26cc6223baebdea64736f6c634300080c0033000000000000000000000000302bf09f50d1166e2ec6f05b559121b1583e2ba900000000000000000000000000000000000000000000000000000000000000000000000000000000302bf09f50d1166e2ec6f05b559121b1583e2ba9000000000000000000000000622a8a2d2a579632493dd422645b0338e297826e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000dee6ab7bb9f91f2baa929cea72005acccfc3027e845b7b2204b5405896ebcf617f261014060405234801561001157600080fd5b50604080518082018252600f81526e23a9a73b19102337b93bb0b93232b960891b602080830191825283518085019094526005845264302e302e3160d81b908401528151902060e08190527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc1991638118856101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6100fa8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c052610120525061010f92505050565b60805160a05160c05160e0516101005161012051610c7061015e600039600061057b015260006105ca015260006105a5015260006104fe01526000610528015260006105520152610c706000f3fe6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f8214610082578063bf5d3bdb146100a3575b600080fd5b34801561004557600080fd5b5061006f610054366004610909565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b610095610090366004610939565b6100d3565b604051610079929190610a34565b3480156100af57600080fd5b506100c36100be366004610939565b6102fb565b6040519015158152602001610079565b600060606100e28585856102fb565b61014e5760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61015d60808601356001610a57565b60008061016d6020890189610909565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101a79190610909565b6001600160a01b0316606088013560408901356101c760a08b018b610a7d565b6101d460208d018d610909565b6040516020016101e693929190610ac4565b60408051601f198184030181529082905261020091610aea565b600060405180830381858888f193505050503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b5091509150816102d25760448151101561029f5760405162461bcd60e51b815260206004820152601d60248201527f5472616e73616374696f6e2072657665727465642073696c656e746c790000006044820152606401610145565b600481019050808060200190518101906102b99190610b1c565b60405162461bcd60e51b81526004016101459190610bc9565b6102e1603f6060890135610bdc565b5a116102ef576102ef610bfe565b90969095509350505050565b60008061040e84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061040892507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e48915061036b905060208a018a610909565b61037b60408b0160208c01610909565b60408b013560608c013560808d013561039760a08f018f610a7d565b6040516103a5929190610c14565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e08101919091526101000160405160208183030381529060405280519060200120610479565b906104cd565b905060808501356000806104256020890189610909565b6001600160a01b03166001600160a01b0316815260200190815260200160002054148015610470575061045b6020860186610909565b6001600160a01b0316816001600160a01b0316145b95945050505050565b60006104c76104866104f1565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60008060006104dc8585610618565b915091506104e98161065e565b509392505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561054a57507f000000000000000000000000000000000000000000000000000000000000000046145b1561057457507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008082516041141561064f5760208301516040840151606085015160001a6106438782858561081c565b94509450505050610657565b506000905060025b9250929050565b600081600481111561067257610672610c24565b141561067b5750565b600181600481111561068f5761068f610c24565b14156106dd5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610145565b60028160048111156106f1576106f1610c24565b141561073f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610145565b600381600481111561075357610753610c24565b14156107ac5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610145565b60048160048111156107c0576107c0610c24565b14156108195760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610145565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156108535750600090506003610900565b8460ff16601b1415801561086b57508460ff16601c14155b1561087c5750600090506004610900565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156108d0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166108f957600060019250925050610900565b9150600090505b94509492505050565b60006020828403121561091b57600080fd5b81356001600160a01b038116811461093257600080fd5b9392505050565b60008060006040848603121561094e57600080fd5b833567ffffffffffffffff8082111561096657600080fd5b9085019060c0828803121561097a57600080fd5b9093506020850135908082111561099057600080fd5b818601915086601f8301126109a457600080fd5b8135818111156109b357600080fd5b8760208285010111156109c557600080fd5b6020830194508093505050509250925092565b60005b838110156109f35781810151838201526020016109db565b83811115610a02576000848401525b50505050565b60008151808452610a208160208601602086016109d8565b601f01601f19169290920160200192915050565b8215158152604060208201526000610a4f6040830184610a08565b949350505050565b60008219821115610a7857634e487b7160e01b600052601160045260246000fd5b500190565b6000808335601e19843603018112610a9457600080fd5b83018035915067ffffffffffffffff821115610aaf57600080fd5b60200191503681900382131561065757600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610afc8184602087016109d8565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610b2e57600080fd5b815167ffffffffffffffff80821115610b4657600080fd5b818401915084601f830112610b5a57600080fd5b815181811115610b6c57610b6c610b06565b604051601f8201601f19908116603f01168101908382118183101715610b9457610b94610b06565b81604052828152876020848701011115610bad57600080fd5b610bbe8360208301602088016109d8565b979650505050505050565b6020815260006109326020830184610a08565b600082610bf957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fdfea264697066735822122020e883c2c1f520876ac5e0646e730725ffcab01ff8d7c2a3c0684cfacb64528b64736f6c634300080c0033000000000000000000000000000000000000