0x6101206040523480156200001257600080fd5b50604051620014c6380380620014c683398101604081905262000035916200044a565b6001600055806001600160a01b0381166200008b576040516374aa36d960e11b815260206004820152601060248201526f7365727669636520726567697374727960801b60448201526064015b60405180910390fd5b604080518082018252601181527020aaaa27a6a0aa24a7a72fa127aa2fab1960791b60208201529051630851f3bd60e01b81526001600160a01b03831691630851f3bd91620000de919060040162000471565b602060405180830381865afa158015620000fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012291906200044a565b6001600160a01b0316608081905262000165576040516374aa36d960e11b8152602060048201526003602482015262189bdd60ea1b604482015260640162000082565b604080518082018252601381527f4f7065726174696f6e4578656375746f725f350000000000000000000000000060208201529051630851f3bd60e01b81526001600160a01b03831691630851f3bd91620001c4919060040162000471565b602060405180830381865afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020891906200044a565b6001600160a01b031660e08190526200025a576040516374aa36d960e11b815260206004820152601260248201527137b832b930ba34b7b71032bc32b1baba37b960711b604482015260640162000082565b6040805180820182526004808252630ae8aa8960e31b60208301529151630851f3bd60e01b81526001600160a01b03841692630851f3bd92620002a09290910162000471565b602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e491906200044a565b6001600160a01b031660c08190526200032a576040516374aa36d960e11b815260040162000082906020808252600490820152630eecae8d60e31b604082015260600190565b503060a052604080518082018252601281527114d4105492d7d3115391125391d7d413d3d360721b60208201529051630851f3bd60e01b81526000916001600160a01b03841691630851f3bd91620003859160040162000471565b602060405180830381865afa158015620003a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c991906200044a565b90506001600160a01b0381166200041d57604080518082018252601281527114d4105492d7d3115391125391d7d413d3d360721b602082015290516374aa36d960e11b815262000082919060040162000471565b6001600160a01b03166101005250620004c2565b6001600160a01b03811681146200044757600080fd5b50565b6000602082840312156200045d57600080fd5b81516200046a8162000431565b9392505050565b60006020808352835180602085015260005b81811015620004a15785810183015185820160400152820162000483565b506000604082860101526040601f19601f8301168501019250505092915050565b60805160a05160c05160e05161010051610fa46200052260003960008181610226015281816105a1015261075e0152600081816101c601526104cb015260006101650152600061019f01526000818160fb01526103250152610fa46000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80636cd4f21e116100815780638a041b9c1161005b5780638a041b9c146101e85780639fce93b51461020e578063a59a99731461022157600080fd5b80636cd4f21e146101875780637104ddb21461019a578063829c7510146101c157600080fd5b806311449b61116100b257806311449b61146101355780631f6a1eb91461014b5780633fc8cef31461016057600080fd5b80630b23e6f6146100ce57806310814c37146100f6575b600080fd5b6100e16100dc366004610af8565b610248565b60405190151581526020015b60405180910390f35b61011d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ed565b61013d603281565b6040519081526020016100ed565b61015e610159366004610b91565b61031b565b005b61011d7f000000000000000000000000000000000000000000000000000000000000000081565b6100e1610195366004610bfa565b610560565b61011d7f000000000000000000000000000000000000000000000000000000000000000081565b61011d7f000000000000000000000000000000000000000000000000000000000000000081565b6101fb6101f6366004610c37565b61066f565b60405161ffff90911681526020016100ed565b6100e161021c366004610bfa565b61071d565b61011d7f000000000000000000000000000000000000000000000000000000000000000081565b6000808280602001905181019061025f9190610c9e565b60208101516040805160028082526060820190925292935061271091909111916000918160200160208202803683370190505090506081816000815181106102a9576102a9610d3f565b602002602001019061ffff16908161ffff16815250506082816001815181106102d4576102d4610d3f565b61ffff909216602092830291909101820152835101516000906102f890839061081a565b9050861580156103055750805b801561030e5750825b9450505050505b92915050565b61032361086b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461038c576040517f8cf257e10000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6000818060200190518101906103a29190610c9e565b60408051600280825260608201835292935060009290916020830190803683370190505090506081816000815181106103dd576103dd610d3f565b602002602001019061ffff16908161ffff168152505060828160018151811061040857610408610d3f565b61ffff909216602092830291909101820152825101516104299082906108de565b604080516020601f8701819004810282018101909252858152610489917f5d10041b000000000000000000000000000000000000000000000000000000009190889088908190840183828082843760009201919091525061092292505050565b8151516040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690631cff79cd906104f7907f0000000000000000000000000000000000000000000000000000000000000000908a908a90600401610d7e565b6020604051808303816000875af1158015610516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053a9190610da1565b905061054e836000015160a00151826109bc565b50505061055b6001600055565b505050565b600080828060200190518101906105779190610c9e565b805151604051632fe4a15f60e21b81526001600160a01b03918216600482015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000169063bf92857c9060240160c060405180830381865afa1580156105e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060c9190610dba565b5050505091509150608161ffff1683600001516020015161ffff16036106435760008211801561063a575080155b95945050505050565b82516020015161ffff1660811901610667578115801561063a575015949350505050565b505050919050565b60008061067e83850185610e04565b6040517f0b23e6f60000000000000000000000000000000000000000000000000000000081529091503090630b23e6f6906106c29060009088908890600401610ea5565b602060405180830381865afa1580156106df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107039190610ec1565b610711576000915050610315565b51602001519392505050565b600080828060200190518101906107349190610c9e565b805151604051632fe4a15f60e21b81526001600160a01b03918216600482015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000169063bf92857c9060240160c060405180830381865afa1580156107a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c99190610dba565b505050509150915081600014806107de575080155b156107ee57506000949350505050565b6000826107fd83612710610ee5565b6108079190610f0a565b6020909401519093101595945050505050565b6000805b8351811015610861578261ffff1684828151811061083e5761083e610d3f565b602002602001015161ffff1603610859576001915050610315565b60010161081e565b5060009392505050565b6002600054036108d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610383565b6002600055565b6108e8828261081a565b61091e576040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6000818060200190518101906109389190610f2c565b90507fffffffff000000000000000000000000000000000000000000000000000000008082169084161461055b576040517f12ba286f0000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000082166004820152602401610383565b80821461091e576040517f1724c6d100000000000000000000000000000000000000000000000000000000815260048101839052602401610383565b8015158114610a0657600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a4257610a42610a09565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a4257610a42610a09565b600082601f830112610a7c57600080fd5b813567ffffffffffffffff80821115610a9757610a97610a09565b604051601f8301601f19908116603f01168101908282118183101715610abf57610abf610a09565b81604052838152866020858801011115610ad857600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215610b0b57600080fd5b8235610b16816109f8565b9150602083013567ffffffffffffffff811115610b3257600080fd5b610b3e85828601610a6b565b9150509250929050565b60008083601f840112610b5a57600080fd5b50813567ffffffffffffffff811115610b7257600080fd5b602083019150836020828501011115610b8a57600080fd5b9250929050565b600080600060408486031215610ba657600080fd5b833567ffffffffffffffff80821115610bbe57600080fd5b610bca87838801610b48565b90955093506020860135915080821115610be357600080fd5b50610bf086828701610a6b565b9150509250925092565b600060208284031215610c0c57600080fd5b813567ffffffffffffffff811115610c2357600080fd5b610c2f84828501610a6b565b949350505050565b60008060208385031215610c4a57600080fd5b823567ffffffffffffffff811115610c6157600080fd5b610c6d85828601610b48565b90969095509350505050565b6001600160a01b0381168114610a0657600080fd5b61ffff81168114610a0657600080fd5b600081830360e0811215610cb157600080fd5b610cb9610a1f565b60c0821215610cc757600080fd5b610ccf610a48565b91508351610cdc81610c79565b82526020840151610cec81610c8e565b6020830152604084810151908301526060840151610d0981610c79565b60608301526080840151610d1c81610c79565b608083015260a0848101519083015290815260c090920151602083015250919050565b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820152600061063a604083018486610d55565b600060208284031215610db357600080fd5b5051919050565b60008060008060008060c08789031215610dd357600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b600081830360e0811215610e1757600080fd5b610e1f610a1f565b60c0821215610e2d57600080fd5b610e35610a48565b91508335610e4281610c79565b82526020840135610e5281610c8e565b6020830152604084810135908301526060840135610e6f81610c79565b60608301526080840135610e8281610c79565b608083015260a0848101359083015290815260c090920135602083015250919050565b831515815260406020820152600061063a604083018486610d55565b600060208284031215610ed357600080fd5b8151610ede816109f8565b9392505050565b808202811582820484141761031557634e487b7160e01b600052601160045260246000fd5b600082610f2757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610f3e57600080fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610ede57600080fdfea26469706673582212203188386c0366091073d16fe2cde95f369457f60104d30faa71b059ab5a04a76f64736f6c634300081600330000000000000000000000005e81a7515f956ab642eb698821a449fe8fe7498e