6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326009600a620005f1565b620000439064174876e800620006b2565b6003556107d060035460016200005a9190620006b2565b62000066919062000585565b6004556101f460035460016200007d9190620006b2565b62000089919062000585565b600555606460035460026200009f9190620006b2565b620000ab919062000585565b6006556000600e556102bc600f5560c86010556000601155600e54601054601154600f54620000db91906200056a565b620000e791906200056a565b620000f391906200056a565b6012556000601355612710601455601580546001600160a01b031990811673499b3de9bb31da83c9170c8c4ec5fe359b8d10ea179091556016805482167332968429e3595f0d4811cec5ce73dd6fdd40958217905560198054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055601c805461ffff199081166001179091556024805490911690556002602555602680546201010062ffffff19909116179055600354620001ab906103e89062000585565b602755612710600354620001c0919062000585565b602855348015620001d057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601954601880546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200026a57600080fd5b505afa1580156200027f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a5919062000538565b6001600160a01b031663c9c65396601860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030257600080fd5b505afa15801562000317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033d919062000538565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200038557600080fd5b505af11580156200039a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c0919062000538565b602080546001600160a01b0319166001600160a01b039290921691821781556000918252601a905260408120805460ff1916600117905560001990600890620004116000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601980548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c8652848320805483168217905582548416835284832080548316821790559554831682528382208054821687179055855483168252838220805490911690951790945560035484548216855260078452828520819055601780546001600160a01b0319163317905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620006ea565b6000602082840312156200054b57600080fd5b81516001600160a01b03811681146200056357600080fd5b9392505050565b60008219821115620005805762000580620006d4565b500190565b600082620005a357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620005e9578160001904821115620005cd57620005cd620006d4565b80851615620005db57918102915b93841c9390800290620005ad565b509250929050565b60006200056360ff8416836000826200060d57506001620006ac565b816200061c57506000620006ac565b8160018114620006355760028114620006405762000660565b6001915050620006ac565b60ff841115620006545762000654620006d4565b50506001821b620006ac565b5060208310610133831016604e8410600b841016171562000685575081810a620006ac565b620006918383620005a8565b8060001904821115620006a857620006a8620006d4565b0290505b92915050565b6000816000190483118215151615620006cf57620006cf620006d4565b500290565b634e487b7160e01b600052601160045260246000fd5b61430f80620006fa6000396000f3fe60806040526004361061037a5760003560e01c80636ddd1713116101d1578063bfa21d6a11610102578063dd62ed3e116100a0578063f84ba65d1161006f578063f84ba65d14610a4b578063f8821a6214610a6b578063f887ea4014610a81578063fabb0b4f14610aa157600080fd5b8063dd62ed3e146109a5578063e96fada2146109eb578063f1f3bca314610a0b578063f2fde38b14610a2b57600080fd5b8063ca4b208b116100dc578063ca4b208b14610925578063d1b8df2214610945578063d686014214610965578063d7c010321461098557600080fd5b8063bfa21d6a146108b8578063c1adf7bc146108d8578063c287184e1461090557600080fd5b806395d89b411161016f578063a9059cbb11610149578063a9059cbb1461084d578063abe57e701461086d578063bafe446b1461088d578063bf56b371146108a257600080fd5b806395d89b41146107e95780639b02c40214610817578063a8aa1b311461082d57600080fd5b8063715018a6116101ab578063715018a61461076457806386f6c3c114610779578063893d20e8146107995780638da5cb5b146107cb57600080fd5b80636ddd1713146106e25780636f4ce4281461070157806370a082311461072e57600080fd5b8063421dd7c7116102ab5780635804f1e41161024957806361e08e721161022357806361e08e721461067757806363a803e11461068d578063658d4b7f146106a257806367243482146106c257600080fd5b80635804f1e41461062c578063584f969a1461064257806360bba03d1461065757600080fd5b8063507139351161028557806350713935146105ac57806354a1dfc9146105cc57806356a227f2146105ec578063571ac8b01461060c57600080fd5b8063421dd7c71461054a57806346d7edaa1461055f578063492a937b1461058c57600080fd5b8063234e949411610318578063313ce567116102f2578063313ce567146104ce57806331a0a3b3146104ea57806333f3d6281461050a57806334848b9a1461052a57600080fd5b8063234e94941461048457806323b872dd146104995780632b112e49146104b957600080fd5b8063095ea7b311610354578063095ea7b31461040a5780631031e36e1461043a57806313b4a7f41461044f57806318160ddd1461046f57600080fd5b80630445b6671461038657806306fdde03146103af578063095db78f146103e857600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c60275481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b506040805180820190915260078152662237b3b2a6b0b760c91b60208201525b6040516103a69190613dda565b3480156103f457600080fd5b50610408610403366004613a7e565b610ab7565b005b34801561041657600080fd5b5061042a6104253660046139e6565b610c73565b60405190151581526020016103a6565b34801561044657600080fd5b50610408610ce0565b34801561045b57600080fd5b5061040861046a3660046138f3565b610d45565b34801561047b57600080fd5b5060035461039c565b34801561049057600080fd5b5061039c610f03565b3480156104a557600080fd5b5061042a6104b4366004613977565b610f23565b3480156104c557600080fd5b5061039c610fb8565b3480156104da57600080fd5b50604051600981526020016103a6565b3480156104f657600080fd5b506104086105053660046138b9565b610ff9565b34801561051657600080fd5b5061042a6105253660046139e6565b611311565b34801561053657600080fd5b50610408610545366004613bc8565b6113d5565b34801561055657600080fd5b50610408611476565b34801561056b57600080fd5b5061039c61057a3660046138b9565b601b6020526000908152604090205481565b34801561059857600080fd5b506104086105a73660046139b8565b6114cb565b3480156105b857600080fd5b506104086105c7366004613bc8565b611674565b3480156105d857600080fd5b506104086105e7366004613b04565b6117fe565b3480156105f857600080fd5b50610408610607366004613b81565b611987565b34801561061857600080fd5b5061042a6106273660046138b9565b611a17565b34801561063857600080fd5b5061039c60225481565b34801561064e57600080fd5b50610408611a25565b34801561066357600080fd5b506104086106723660046139b8565b611a7a565b34801561068357600080fd5b5061039c60255481565b34801561069957600080fd5b5061039c611acf565b3480156106ae57600080fd5b506104086106bd3660046139b8565b611aea565b3480156106ce57600080fd5b506104086106dd366004613a12565b611bb9565b3480156106ee57600080fd5b5060265461042a90610100900460ff1681565b34801561070d57600080fd5b5061039c61071c3660046138b9565b60096020526000908152604090205481565b34801561073a57600080fd5b5061039c6107493660046138b9565b6001600160a01b031660009081526007602052604090205490565b34801561077057600080fd5b50610408611d20565b34801561078557600080fd5b50610408610794366004613c22565b611d94565b3480156107a557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103a6565b3480156107d757600080fd5b506000546001600160a01b03166107b3565b3480156107f557600080fd5b506040805180820190915260058152642223a6a0a760d91b60208201526103db565b34801561082357600080fd5b5061039c601e5481565b34801561083957600080fd5b506020546107b3906001600160a01b031681565b34801561085957600080fd5b5061042a6108683660046139e6565b611f50565b34801561087957600080fd5b50610408610888366004613ba6565b611f5d565b34801561089957600080fd5b5061039c612073565b3480156108ae57600080fd5b5061039c60215481565b3480156108c457600080fd5b506015546107b3906001600160a01b031681565b3480156108e457600080fd5b5061039c6108f33660046138b9565b600a6020526000908152604090205481565b34801561091157600080fd5b50610408610920366004613b68565b61208e565b34801561093157600080fd5b506017546107b3906001600160a01b031681565b34801561095157600080fd5b506104086109603660046139e6565b612151565b34801561097157600080fd5b50610408610980366004613b4a565b612314565b34801561099157600080fd5b506104086109a036600461392c565b6123a5565b3480156109b157600080fd5b5061039c6109c03660046138f3565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156109f757600080fd5b506016546107b3906001600160a01b031681565b348015610a1757600080fd5b5061039c610a26366004613aca565b61253d565b348015610a3757600080fd5b50610408610a463660046138b9565b61258a565b348015610a5757600080fd5b50610408610a663660046139b8565b612674565b348015610a7757600080fd5b5061039c60285481565b348015610a8d57600080fd5b506018546107b3906001600160a01b031681565b348015610aad57600080fd5b5061039c60235481565b336000908152602a602052604090205460ff1680610adf57506000546001600160a01b031633145b610b045760405162461bcd60e51b8152600401610afb90613ec4565b60405180910390fd5b8015610b1957601c5460ff16610b1957600080fd5b60005b82811015610c6d578115610ba857601e8054906000610b3a83614236565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610b7357610b73614267565b9050602002016020810190610b8891906138b9565b436002604051610b9b9493929190613d7a565b60405180910390a1610c08565b601b6000858584818110610bbe57610bbe614267565b9050602002016020810190610bd391906138b9565b6001600160a01b0316815260208101919091526040016000205415610c0857601e8054906000610c028361421f565b91905055505b81610c14576000610c16565b435b601b6000868685818110610c2c57610c2c614267565b9050602002016020810190610c4191906138b9565b6001600160a01b0316815260208101919091526040016000205580610c6581614236565b915050610b1c565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cce9086815260200190565b60405180910390a35060015b92915050565b336000908152602a602052604090205460ff1680610d0857506000546001600160a01b031633145b610d245760405162461bcd60e51b8152600401610afb90613ec4565b602454610100900460ff1615610d3957600080fd5b6024805460ff19169055565b6000546001600160a01b03163314610d6f5760405162461bcd60e51b8152600401610afb90613f32565b6001600160a01b038281166000818152600d602090815260408083208054600160ff1991821681179092559587168085528285208054881683179055858552600c845282852080548816831790558085528285208054881683179055948452600b83528184208054871682179055938352918290208054909416909217909255815160e081018352601060a082019081526f0283932b9b0b632902937baba32b91d160851b60c083015292516000805160206142ba833981519152939192839260608401928392610e649291610e5f91610e4b918c9101613d2e565b604051602081830303815290604052612764565b61297d565b8152602001600181525081526020016040518060400160405280610ebf604051806040016040528060118152602001700283932b9b0b6329020b2323932b9b99d1607d1b815250610e5f88604051602001610e4b9190613d2e565b81526001602091820152908252604080516060810182526000818301818152825281840152929091019190915251610ef79190613fe5565b60405180910390a15050565b6000610f116009600a614112565b600554610f1e91906140ad565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610fa3576001600160a01b0384166000908152600860209081526040808320338452909152902054610f7e9083906141dc565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610fae8484846129a9565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610fec91614095565b600354610f1e91906141dc565b6000546001600160a01b031633146110235760405162461bcd60e51b8152600401610afb90613f32565b601880546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b15801561107757600080fd5b505afa15801561108b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110af91906138d6565b6001600160a01b031663c9c65396601860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561110b57600080fd5b505afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114391906138d6565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b15801561118a57600080fd5b505af115801561119e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c291906138d6565b602080546001600160a01b0319166001600160a01b0392831690811782556000908152601a82526040808220805460ff1990811660019081179092559486168352600c80855292829020805490951617909355825160e08101845260a081019182526b02732bb902937baba32b91d160a51b60c082015292516000805160206142ba833981519152939283926060840192839261126a9291610e5f91610e4b918b9101613d2e565b815260016020918201529082526040805160808101825260148183019081527302732bb902634b8bab4b234ba3c902830b4b91d160651b60608301528354925194840194919384936112ce93610e5f92610e4b926001600160a01b03169101613d2e565b815260016020918201529082526040805160608101825260008183018181528252818401529290910191909152516113069190613e4f565b60405180910390a150565b336000908152602a602052604081205460ff168061133957506000546001600160a01b031633145b6113555760405162461bcd60e51b8152600401610afb90613ec4565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b15801561139d57600080fd5b505af11580156113b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb19190613ae7565b336000908152602a602052604090205460ff16806113fd57506000546001600160a01b031633145b6114195760405162461bcd60e51b8152600401610afb90613ec4565b60245460ff1615801561142c5750600a83105b61143557600080fd5b60238390556024805460ff19166001179055436021556114558242614095565b601f556114646009600a614112565b61146e90826141bd565b601d55505050565b336000908152602a602052604090205460ff168061149e57506000546001600160a01b031633145b6114ba5760405162461bcd60e51b8152600401610afb90613ec4565b601c805461ffff1916610100179055565b6000546001600160a01b031633146114f55760405162461bcd60e51b8152600401610afb90613f32565b6020546001600160a01b038381169116141561155e5760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610afb565b6001600160a01b0382166000908152601a60205260409020805460ff19168215151790556000805160206142ba833981519152816115d1576040518060400160405280601781526020017f4c697175696469747920506f6f6c2044697361626c6564000000000000000000815250611601565b60405180604001604052806016815260200175131a5c5d5a591a5d1e48141bdbdb08115b98589b195960521b8152505b6040805160a08101909152806060810180611622610e4b8960c08601613d2e565b8152600160209182015290825260408051606080820183526000828401818152835282850181905285850192909252825190810183528083018281528152928301529182015251610ef7929190613ded565b6000546001600160a01b0316331461169e5760405162461bcd60e51b8152600401610afb90613f32565b6000831180156116ae5750600082115b80156116ba5750600081115b80156116c857506127108111155b6116d157600080fd5b80836003546116e091906141bd565b6116ea91906140ad565b60045560035481906116fd9084906141bd565b61170791906140ad565b6005556040805160e08101909152600e60a082019081526d4d61782042757920546f6b656e7360901b60c0830152606082019081526000805160206142ba833981519152919081906080820161175f6009600a614112565b60045461176c91906140ad565b9052815260408051608081018252600f9181019182526e4d61782053656c6c20546f6b656e7360881b606082015290815260209182019181016117b16009600a614112565b6005546117be91906140ad565b90528152604080516060810182526000818301818152825260208281019190915290920191909152516117f19190613f9e565b60405180910390a1505050565b6000546001600160a01b031633146118285760405162461bcd60e51b8152600401610afb90613f32565b6000821161183557600080fd5b6026805462ffff0019166101008615150262ff000019161762010000851515021790556003546118669083906140ad565b6027556118756009600a614112565b61187f90826141bd565b6028556040805160e08101909152600760a0820190815266115b98589b195960ca1b60c0830152606082019081526000805160206142ba8339815191529190819060808201886118d05760006118d3565b60015b60ff16815250815260200160405180604001604052806040518060400160405280600c81526020016b53776170204d6178696d756d60a01b8152508152602001602754815250815260200160405180604001604052806040518060400160405280600f81526020016e4175746f2d70726f63657373696e6760881b815250815260200187611962576000611965565b60015b60ff16905290526040516119799190613f67565b60405180910390a150505050565b336000908152602a602052604090205460ff16806119af57506000546001600160a01b031633145b6119cb5760405162461bcd60e51b8152600401610afb90613ec4565b476001600160a01b0382166108fc60646119e586856141bd565b6119ef91906140ad565b6040518115909202916000818181858888f19350505050158015610c6d573d6000803e3d6000fd5b6000610cda82600019610c73565b336000908152602a602052604090205460ff1680611a4d57506000546001600160a01b031633145b611a695760405162461bcd60e51b8152600401610afb90613ec4565b6024805461ffff1916610101179055565b6000546001600160a01b03163314611aa45760405162461bcd60e51b8152600401610afb90613f32565b6001600160a01b03919091166000908152602a60205260409020805460ff1916911515919091179055565b6000611add6009600a614112565b600654610f1e91906140ad565b6000546001600160a01b03163314611b145760405162461bcd60e51b8152600401610afb90613f32565b6001600160a01b0382166000908152600b60205260409020805460ff19168215151790556000805160206142ba83398151915281611b77576040518060400160405280600d81526020016c1199595cc8115b999bdc98d959609a1b815250611601565b604080518082018252600c81526b1199595cc814995b5bdd995960a21b6020820152815160a0810190925290806060810180611622610e4b8960c08601613d2e565b6000546001600160a01b03163314611be35760405162461bcd60e51b8152600401610afb90613f32565b8215801590611bf157508083145b611bfa57600080fd5b3360005b84811015611d1857601a6000878784818110611c1c57611c1c614267565b9050602002016020810190611c3191906138b9565b6001600160a01b0316815260208101919091526040016000205460ff16158015611ca05750600d6000878784818110611c6c57611c6c614267565b9050602002016020810190611c8191906138b9565b6001600160a01b0316815260208101919091526040016000205460ff16155b15611d0657611d0482878784818110611cbb57611cbb614267565b9050602002016020810190611cd091906138b9565b611cdc6009600a614112565b878786818110611cee57611cee614267565b90506020020135611cff91906141bd565b612eea565b505b80611d1081614236565b915050611bfe565b505050505050565b6000546001600160a01b03163314611d4a5760405162461bcd60e51b8152600401610afb90613f32565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611dbe5760405162461bcd60e51b8152600401610afb90613f32565b60118690556010859055600f849055600e8390558285611dde8689614095565b611de89190614095565b611df29190614095565b60125560138290556014819055611e0a6002826140ad565b60125410611e1757600080fd5b6000805160206142ba8339815191526040518060600160405280604051806040016040528060405180604001604052806011815260200170151bdd185b081199594814195c98d95b9d607a1b81525081526020016014546012546064611e7d91906141bd565b611e8791906140ad565b905281526040805160808101825260119181019182527013585c9ad95d1a5b99c814195c98d95b9d607a1b6060820152908152601454602092830192820190611ed18a60646141bd565b611edb91906140ad565b9052815260408051608081018252601191810191825270131a5c5d5a591a5d1e4814195c98d95b9d607a1b6060820152908152601454602092830192820190611f258b60646141bd565b611f2f91906140ad565b90529052604051611f409190613e96565b60405180910390a1505050505050565b6000610fb13384846129a9565b6000546001600160a01b03163314611f875760405162461bcd60e51b8152600401610afb90613f32565b600082118015611f975750600081115b8015611fa557506127108111155b611fae57600080fd5b8082600354611fbd91906141bd565b611fc791906140ad565b60069081556040805160e0810190915260a0810191825265546f6b656e7360d01b60c0820152606081019182526000805160206142ba833981519152918190608082016120166009600a614112565b60065461202391906140ad565b90528152604080516060808201835260008284018181528352602083810182905280860193909352835191820184528184018181528252918101919091529181019190915251610ef79190613e12565b60006120816009600a614112565b600454610f1e91906140ad565b6000546001600160a01b031633146120b85760405162461bcd60e51b8152600401610afb90613f32565b601e8111156120c657600080fd5b60258190556040805160e081018252600660a0820190815265426c6f636b7360d01b60c08301526060808301918252608083018590529082528251808201845260008185018181528252602082810182905280850192909252845192830185528285018181528352908201528183015290516000805160206142ba833981519152916113069161401c565b336000908152602a602052604090205460ff168061217957506000546001600160a01b031633145b6121955760405162461bcd60e51b8152600401610afb90613ec4565b600060646121a383476141bd565b6121ad91906140ad565b60408051600280825260608201835292935060009290916020830190803683375050601854604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561221757600080fd5b505afa15801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f91906138d6565b8160008151811061226257612262614267565b60200260200101906001600160a01b031690816001600160a01b031681525050838160018151811061229657612296614267565b6001600160a01b03928316602091820292909201015260185460405163b6f9de9560e01b815291169063b6f9de959084906122dc90600090869033904290600401613da5565b6000604051808303818588803b1580156122f557600080fd5b505af1158015612309573d6000803e3d6000fd5b505050505050505050565b336000908152602a602052604090205460ff168061233c57506000546001600160a01b031633145b6123585760405162461bcd60e51b8152600401610afb90613ec4565b601c54610100900460ff161561236d57600080fd5b601c805460ff191683151517905562015180811061238a57600080fd5b80601f600082825461239c9190614095565b90915550505050565b6000546001600160a01b031633146123cf5760405162461bcd60e51b8152600401610afb90613f32565b601580546001600160a01b038086166001600160a01b0319928316179092556016805485841690831617905560178054928416929091169190911790556040805160e081018252601460a082019081527302634b8bab4b234ba3c902932b1b2b4bb32b91d160651b60c083015291516000805160206142ba8339815191529282916060830191829161246e9190610e5f90610e4b908c90602001613d2e565b81526020016001815250815260200160405180604001604052806124cc60405180604001604052806014815260200173026b0b935b2ba34b733902932b1b2b4bb32b91d160651b815250610e5f89604051602001610e4b9190613d2e565b81526020016001815250815260200160405180604001604052806125246040518060400160405280600e81526020016d02232bb102932b1b2b4bb32b91d160951b815250610e5f88604051602001610e4b9190613d2e565b8152600160209091015290526040516117f19190613efb565b6000436023546021546125509190614095565b10612564576001601454610cda91906141dc565b811561257a57601354601254610cda9190614095565b601354601254610cda91906141dc565b6000546001600160a01b031633146125b45760405162461bcd60e51b8152600401610afb90613f32565b6001600160a01b0381166126195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610afb565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461269e5760405162461bcd60e51b8152600401610afb90613f32565b6001600160a01b0382166000908152600c60205260409020805460ff19168215151790556000805160206142ba83398151915281612711576040518060400160405280601a81526020017f5472616e73616374696f6e204c696d697420456e666f72636564000000000000815250611601565b604080518082018252601981527f5472616e73616374696f6e204c696d69742052656d6f766564000000000000006020820152815160a0810190925290806060810180611622610e4b8960c08601613d2e565b60408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015281516060919060009061279f9060026141bd565b6127aa906002614095565b67ffffffffffffffff8111156127c2576127c261427d565b6040519080825280601f01601f1916602001820160405280156127ec576020820181803683370190505b509050600360fc1b8160008151811061280757612807614267565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061283657612836614267565b60200101906001600160f81b031916908160001a90535060005b84518110156129755782600486838151811061286e5761286e614267565b016020015182516001600160f81b031990911690911c60f81c90811061289657612896614267565b01602001516001600160f81b031916826128b18360026141bd565b6128bc906002614095565b815181106128cc576128cc614267565b60200101906001600160f81b031916908160001a905350828582815181106128f6576128f6614267565b602091010151815160f89190911c600f1690811061291657612916614267565b01602001516001600160f81b031916826129318360026141bd565b61293c906003614095565b8151811061294c5761294c614267565b60200101906001600160f81b031916908160001a9053508061296d81614236565b915050612850565b509392505050565b60608282604051602001612992929190613d4b565b604051602081830303815290604052905092915050565b60006001600160a01b038416612a015760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d2030783000000000000000006044820152606401610afb565b6001600160a01b038316612a505760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b6044820152606401610afb565b60008211612a985760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610afb565b6001600160a01b038416600090815260076020526040902054821115612af75760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610afb565b602154158015612b1f57506001600160a01b0383166000908152601a602052604090205460ff165b15612ba8576001600160a01b0384166000908152600d602052604090205460ff16612b8c5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610afb565b612ba843602155426022556026805461ff001916610100179055565b60245460ff16612c35576001600160a01b0384166000908152600d602052604090205460ff1680612bf157506001600160a01b0383166000908152600d602052604090205460ff165b612c355760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b6044820152606401610afb565b60265460ff16158015612c4a575042601f5411155b15612c72576026805460ff191660011790556000602555600354600681905560048190556005555b612c7d848484612fa4565b6001600160a01b0383166000908152601a602052604090205460ff16158015612cb457506001546001600160a01b03848116911614155b15612ce3576001600160a01b0383166000908152600c602052604090205460ff16612ce357612ce383836132f9565b601c5460ff168015612cf6575042601f54115b15612dc0576001600160a01b0384166000908152601a602052604090205460ff168015612d2c5750326001600160a01b03841614155b8015612d4e57506001600160a01b0383166000908152601b6020526040902054155b15612dc0576001600160a01b0383166000908152601b60205260408120439055601e805491612d7c83614236565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051612db79493929190613d7a565b60405180910390a15b60295460ff1615612ddd57612dd6848484612eea565b9050610fb1565b6001600160a01b038416600090815260076020526040902054612e019083906141dc565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff1615612e365782612e40565b612e40848461337e565b9050612e4b846133fc565b15612e5f578215612e5f57612e5f83613478565b6001600160a01b038416600090815260076020526040902054612e83908290614095565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612ed79085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054612f0e9083906141dc565b6001600160a01b038086166000908152600760205260408082209390935590851681522054612f3e908390614095565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612f929086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600c602052604090205460ff1680612ff657506001600160a01b0383166000908152601a602052604090205460ff16612fee57600554612ff2565b6004545b8111155b6130365760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610afb565b6001600160a01b0383166000908152600c602052604090205460ff168061308257506025546001600160a01b0383166000908152600a6020526040902054439161307f91614095565b11155b6130ce5760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e0000006044820152606401610afb565b6001600160a01b0383166000908152601b6020526040902054156131b1576130f86009600a614112565b601d5461310591906141bd565b811115801561312a57506001600160a01b038316600090815260096020526040902054155b8015613137575042601f54115b6131955760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b6064820152608401610afb565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b0382166000908152601a602052604090205460ff16156131f05750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff166132f457601c5460ff168015613223575042601f54115b801561323d5750326000908152600a602052604090205443145b801561325f57506001600160a01b0382166000908152601b6020526040902054155b156132c0576001600160a01b0382166000908152601b602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea916132b79132918691600190613d7a565b60405180910390a15b6001600160a01b0382166000818152600a6020526040902043905532146132f457326000908152600a602052604090204390555b505050565b6006546001600160a01b0383166000908152600760205260409020548190613322908490614095565b11156132f45760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610afb565b6001600160a01b0382166000908152601a602052604081205460145460ff9091169082906133ab8361253d565b6133b590866141bd565b6133bf91906140ad565b306000908152600760205260408120805492935083929091906133e3908490614095565b909155506133f3905081856141dc565b95945050505050565b336000908152601a602052604081205460ff1615801561341f575060295460ff16155b80156134325750602654610100900460ff165b801561345657506001600160a01b0382166000908152601a602052604090205460ff165b8015610cda575060285430600090815260076020526040902054101592915050565b6029805460ff1916600117905560275460009082106134995760275461349b565b815b306000908152600760205260409020549091508111156134c75750306000908152600760205260409020545b60006012546002601054846134dc91906141bd565b6134e691906140ad565b6134f091906140ad565b90506134fc81836141dc565b6040805160028082526060820183529294506000929091602083019080368337019050509050308160008151811061353657613536614267565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561358a57600080fd5b505afa15801561359e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c291906138d6565b816001815181106135d5576135d5614267565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b81524792919091169063791ac9479061361f908790600090879030904290600401614059565b600060405180830381600087803b15801561363957600080fd5b505af115801561364d573d6000803e3d6000fd5b505050506000814761365f91906141dc565b90506000600260105461367291906140ad565b60125461367f91906141dc565b905060008160026010548561369491906141bd565b61369e91906140ad565b6136a891906140ad565b9050600082600f54856136bb91906141bd565b6136c591906140ad565b9050600083600e54866136d891906141bd565b6136e291906140ad565b90508115613726576016546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015613724573d6000803e3d6000fd5b505b8015613768576017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613766573d6000803e3d6000fd5b505b87156138165760185460155460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c4016060604051808303818588803b1580156137d957600080fd5b505af11580156137ed573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138129190613bf4565b5050505b60408051848152602081018490529081018290527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506029805460ff191690555050505050505050565b60008083601f84011261387f57600080fd5b50813567ffffffffffffffff81111561389757600080fd5b6020830191508360208260051b85010111156138b257600080fd5b9250929050565b6000602082840312156138cb57600080fd5b8135610fb181614293565b6000602082840312156138e857600080fd5b8151610fb181614293565b6000806040838503121561390657600080fd5b823561391181614293565b9150602083013561392181614293565b809150509250929050565b60008060006060848603121561394157600080fd5b833561394c81614293565b9250602084013561395c81614293565b9150604084013561396c81614293565b809150509250925092565b60008060006060848603121561398c57600080fd5b833561399781614293565b925060208401356139a781614293565b929592945050506040919091013590565b600080604083850312156139cb57600080fd5b82356139d681614293565b91506020830135613921816142ab565b600080604083850312156139f957600080fd5b8235613a0481614293565b946020939093013593505050565b60008060008060408587031215613a2857600080fd5b843567ffffffffffffffff80821115613a4057600080fd5b613a4c8883890161386d565b90965094506020870135915080821115613a6557600080fd5b50613a728782880161386d565b95989497509550505050565b600080600060408486031215613a9357600080fd5b833567ffffffffffffffff811115613aaa57600080fd5b613ab68682870161386d565b909450925050602084013561396c816142ab565b600060208284031215613adc57600080fd5b8135610fb1816142ab565b600060208284031215613af957600080fd5b8151610fb1816142ab565b60008060008060808587031215613b1a57600080fd5b8435613b25816142ab565b93506020850135613b35816142ab565b93969395505050506040820135916060013590565b60008060408385031215613b5d57600080fd5b8235613a04816142ab565b600060208284031215613b7a57600080fd5b5035919050565b60008060408385031215613b9457600080fd5b82359150602083013561392181614293565b60008060408385031215613bb957600080fd5b50508035926020909101359150565b600080600060608486031215613bdd57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215613c0957600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c08789031215613c3b57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600081518084526020808501945080840160005b83811015613c9e5781516001600160a01b031687529582019590820190600101613c79565b509495945050505050565b600082606081018360005b6003811015613cf7578383038752815160408151818652613cd782870182613d02565b602093840151968401969096525050968701969190910190600101613cb4565b509095945050505050565b60008151808452613d1a8160208601602086016141f3565b601f01601f19169290920160200192915050565b60609190911b6bffffffffffffffffffffffff1916815260140190565b60008351613d5d8184602088016141f3565b835190830190613d718183602088016141f3565b01949350505050565b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b848152608060208201526000613dbe6080830186613c65565b6001600160a01b03949094166040830152506060015292915050565b602081526000610fb16020830184613d02565b604081526000613e006040830185613d02565b82810360208401526133f38185613ca9565b6040815260136040820152724d6178696d756d2057616c6c65742053697a6560681b6060820152608060208201526000610fb16080830184613ca9565b60408152601760408201527f45786368616e676520526f7574657220557064617465640000000000000000006060820152608060208201526000610fb16080830184613ca9565b6040815260046040820152634665657360e01b6060820152608060208201526000610fb16080830184613ca9565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b60408152600d60408201526c4665652052656365697665727360981b6060820152608060208201526000610fb16080830184613ca9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60408152600d60408201526c537761702053657474696e677360981b6060820152608060208201526000610fb16080830184613ca9565b60408152601860408201527f4d6178696d756d205472616e73616374696f6e2053697a6500000000000000006060820152608060208201526000610fb16080830184613ca9565b60408152600d60408201526c050726573616c6520536574757609c1b6060820152608060208201526000610fb16080830184613ca9565b604081526013604082015272141d5c98da185cd94814985d1948131a5b5a5d606a1b6060820152608060208201526000610fb16080830184613ca9565b85815284602082015260a06040820152600061407860a0830186613c65565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156140a8576140a8614251565b500190565b6000826140ca57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561410a5781600019048211156140f0576140f0614251565b808516156140fd57918102915b93841c93908002906140d4565b509250929050565b6000610fb160ff84168360008261412b57506001610cda565b8161413857506000610cda565b816001811461414e576002811461415857614174565b6001915050610cda565b60ff84111561416957614169614251565b50506001821b610cda565b5060208310610133831016604e8410600b8410161715614197575081810a610cda565b6141a183836140cf565b80600019048211156141b5576141b5614251565b029392505050565b60008160001904831182151516156141d7576141d7614251565b500290565b6000828210156141ee576141ee614251565b500390565b60005b8381101561420e5781810151838201526020016141f6565b83811115610c6d5750506000910152565b60008161422e5761422e614251565b506000190190565b600060001982141561424a5761424a614251565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146142a857600080fd5b50565b80151581146142a857600080fdfe6e502a17c2522c4dc061bacfc992cb08b19348f65d5ffc44766e54a42cf15b96a2646970667358221220d00efcfcc1f55961ed9c19b08f1e20a50b83c99f0dc210de277a173f1c66b45b64736f6c63430008070033