60806040526064600d55600e80546001600160a01b0319169055692a5a058fc295ed0000006011553480156200003457600080fd5b506040518060400160405280601881526020017f426c61636b726f636b54726164696e6743757272656e637900000000000000008152506040518060400160405280600381526020016242544360e81b815250818181600590816200009a91906200045f565b506006620000a982826200045f565b50620000bb91506000905033620001d8565b620000e77f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620001d8565b620001137f5fde63b561377d1441afa201ff619faac2ff8fed70a7fbdbe7a5cb07768c0b7533620001d8565b5062000121905033620001e8565b670de0b6b3a76400006008556011546200013b906200023a565b600c819055601154601255600960006200015d6007546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601154604051620001ca91815260200190565b60405180910390a362000574565b620001e4828262000268565b5050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60085460009062000262906200025b8469d3c21bcecceda100000062000293565b90620002a8565b92915050565b620002748282620002b6565b60008281526001602052604090206200028e908262000356565b505050565b6000620002a182846200052b565b9392505050565b6000620002a1828462000551565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620001e4576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620003123390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620002a1836001600160a01b0384166000818152600183016020526040812054620003b05750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000262565b50600062000262565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003e457607f821691505b6020821081036200040557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028e576000816000526020600020601f850160051c81016020861015620004365750805b601f850160051c820191505b81811015620004575782815560010162000442565b505050505050565b81516001600160401b038111156200047b576200047b620003b9565b62000493816200048c8454620003cf565b846200040b565b602080601f831160018114620004cb5760008415620004b25750858301515b600019600386901b1c1916600185901b17855562000457565b600085815260208120601f198616915b82811015620004fc57888601518255948401946001909101908401620004db565b50858210156200051b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176200026257634e487b7160e01b600052601160045260246000fd5b6000826200056f57634e487b7160e01b600052601260045260246000fd5b500490565b61261280620005846000396000f3fe608060405234801561001057600080fd5b50600436106102f15760003560e01c806370a082311161019d57806397d63f93116100e9578063ca15c873116100a2578063d547741f1161007c578063d547741f146106bc578063dd62ed3e146106cf578063ec342ad014610708578063f2fde38b1461071757600080fd5b8063ca15c87314610681578063d505accf14610694578063d5391393146106a757600080fd5b806397d63f931461062e578063a217fddf14610637578063a457c2d71461063f578063a9059cbb14610652578063ac3cdc0014610665578063ad381a001461066e57600080fd5b806383eb70e511610156578063917505f411610130578063917505f4146105ed57806391c01c2b1461060057806391d148541461061357806395d89b411461062657600080fd5b806383eb70e5146105a25780638da5cb5b146105c95780639010d07c146105da57600080fd5b806370a082311461052e578063715018a61461054157806379cc6790146105495780637af548c11461055c5780637ecebe001461056f5780637f51bb1f1461058f57600080fd5b80632f2ff15d1161025c57806336568abe1161021557806340c10f19116101ef57806340c10f19146104e457806342966c68146104f757806361d027b31461050a57806364dd48f51461051d57600080fd5b806336568abe1461049557806339509351146104a85780633af9e669146104bb57600080fd5b80632f2ff15d1461041d5780632f34d2821461043057806330adf81f14610443578063313ce5671461046a578063336d2692146104795780633644e5151461048c57600080fd5b806318160ddd116102ae57806318160ddd1461037a5780631f7701db1461038257806320606b70146103ad57806323b872dd146103d4578063240f4e53146103e7578063248a9ca3146103fa57600080fd5b806301ffc9a7146102f657806306b993fd1461031e57806306fdde0314610335578063095ea7b31461034a5780630d64f1b61461035d57806311d3e6c414610372575b600080fd5b610309610304366004612149565b61072a565b60405190151581526020015b60405180910390f35b61032760085481565b604051908152602001610315565b61033d610755565b6040516103159190612197565b6103096103583660046121df565b6107e7565b61037061036b3660046121df565b610841565b005b61032761088c565b601254610327565b600b54610395906001600160a01b031681565b6040516001600160a01b039091168152602001610315565b6103277f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103096103e236600461220b565b61089b565b6103276103f536600461224c565b6109cf565b61032761040836600461224c565b60009081526020819052604090206001015490565b61037061042b366004612265565b6109da565b61037061043e366004612295565b610a04565b6103277f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60405160128152602001610315565b6103096104873660046121df565b610a2e565b610327600f5481565b6103706104a3366004612265565b610af0565b6103096104b63660046121df565b610b6a565b6103276104c9366004612295565b6001600160a01b031660009081526009602052604090205490565b6103096104f23660046121df565b610bdd565b61037061050536600461224c565b610c26565b600e54610395906001600160a01b031681565b61032769d3c21bcecceda100000081565b61032761053c366004612295565b610c32565b610370610c54565b6103706105573660046121df565b610c68565b61032761056a3660046122b2565b610c7d565b61032761057d366004612295565b60106020526000908152604090205481565b61037061059d366004612295565b610e99565b6103277f5fde63b561377d1441afa201ff619faac2ff8fed70a7fbdbe7a5cb07768c0b7581565b6007546001600160a01b0316610395565b6103956105e83660046122f0565b610ec3565b6103096105fb3660046121df565b610edb565b61037061060e36600461224c565b610f1b565b610309610621366004612265565b610f36565b61033d610f5f565b610327600c5481565b610327600081565b61030961064d3660046121df565b610f6e565b6103096106603660046121df565b611036565b610327600d5481565b61032761067c36600461224c565b611107565b61032761068f36600461224c565b611112565b6103706106a2366004612312565b611129565b61032760008051602061257d83398151915281565b6103706106ca366004612265565b6113a8565b6103276106dd366004612389565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b610327670de0b6b3a764000081565b610370610725366004612295565b6113cd565b60006001600160e01b03198216635a05180f60e01b148061074f575061074f82611443565b92915050565b606060058054610764906123b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610790906123b7565b80156107dd5780601f106107b2576101008083540402835291602001916107dd565b820191906000526020600020905b8154815290600101906020018083116107c057829003601f168201915b5050505050905090565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290916000805160206125bd833981519152906108309086815260200190565b60405180910390a350600192915050565b61085960008051602061257d83398151915233610f36565b61087e5760405162461bcd60e51b8152600401610875906123f1565b60405180910390fd5b6108888282611478565b5050565b600061089661150a565b905090565b6000826001600160a01b0381166108b157600080fd5b306001600160a01b038216036108c657600080fd5b6001600160a01b0385166000908152600a602090815260408083203384529091529020546108f4908461151c565b6001600160a01b0386166000908152600a6020908152604080832033845290915281209190915561092484611528565b6001600160a01b03871660009081526009602052604090205490915061094a908261151c565b6001600160a01b0380881660009081526009602052604080822093909355908716815220546109799082611546565b6001600160a01b03808716600081815260096020526040908190209390935591519088169060008051602061259d833981519152906109bb9088815260200190565b60405180910390a350600195945050505050565b600061074f82611552565b6000828152602081905260409020600101546109f581611577565b6109ff8383611581565b505050565b610a0c6115a3565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000826001600160a01b038116610a4457600080fd5b306001600160a01b03821603610a5957600080fd5b33600090815260096020526040902054610a73908461151c565b33600090815260096020526040808220929092556001600160a01b03861681522054610a9f9084611546565b6001600160a01b0385166000818152600960205260409020919091553360008051602061259d833981519152610ad486611552565b6040519081526020015b60405180910390a35060019392505050565b6001600160a01b0381163314610b605760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610875565b61088882826115fd565b336000908152600a602090815260408083206001600160a01b0386168452909152812054610b989083611546565b336000818152600a602090815260408083206001600160a01b038916808552908352928190208590555193845290926000805160206125bd8339815191529101610830565b6000610bf760008051602061257d83398151915233610f36565b610c135760405162461bcd60e51b8152600401610875906123f1565b610c1d838361161f565b50600192915050565b610c2f81611754565b50565b6001600160a01b03811660009081526009602052604081205461074f90611552565b610c5c6115a3565b610c666000611813565b565b610c73823383611865565b61088882826118f1565b6000610ca97f5fde63b561377d1441afa201ff619faac2ff8fed70a7fbdbe7a5cb07768c0b7533610f36565b610cee5760405162461bcd60e51b81526020600482015260166024820152754d7573742068617665207265626173657220726f6c6560501b6044820152606401610875565b82600003610d45576008546040805186815260208101839052908101919091527fc6642d24d84e7f3d36ca39f5cce10e75639d9b158d5193aa350e2f900653e4c0906060015b60405180910390a150601254610e92565b60085482610d7d57610d75670de0b6b3a7640000610d6f610d66828861151c565b60085490611a13565b90611a1f565b600855610dc1565b6000610d98670de0b6b3a7640000610d6f610d668289611546565b9050610da261150a565b811015610db3576008819055610dbf565b610dbb61150a565b6008555b505b610dcc600c54611552565b601255600b546001600160a01b031615610e4957600b60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610e3057600080fd5b505af1158015610e44573d6000803e3d6000fd5b505050505b600854604080518781526020810184905280820192909252517fc6642d24d84e7f3d36ca39f5cce10e75639d9b158d5193aa350e2f900653e4c09181900360600190a150506012545b9392505050565b610ea16115a3565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152600160205260408120610e929083611a2b565b6000610ef560008051602061257d83398151915233610f36565b610f115760405162461bcd60e51b8152600401610875906123f1565b610c1d8383611a37565b610f236115a3565b6064811115610f3157600080fd5b600d55565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b606060068054610764906123b7565b336000908152600a602090815260408083206001600160a01b0386168452909152812054808310610fc257336000908152600a602090815260408083206001600160a01b0388168452909152812055610ff1565b610fcc818461151c565b336000908152600a602090815260408083206001600160a01b03891684529091529020555b336000818152600a602090815260408083206001600160a01b038916808552908352928190205490519081529192916000805160206125bd8339815191529101610ade565b6000826001600160a01b03811661104c57600080fd5b306001600160a01b0382160361106157600080fd5b600061106c84611528565b33600090815260096020526040902054909150611089908261151c565b33600090815260096020526040808220929092556001600160a01b038716815220546110b59082611546565b6001600160a01b03861660008181526009602052604090819020929092559051339060008051602061259d833981519152906110f49088815260200190565b60405180910390a3506001949350505050565b600061074f82611528565b600081815260016020526040812061074f90611b63565b8342111561116e5760405162461bcd60e51b8152602060048201526012602482015271189d18cbdc195c9b5a5d0b595e1c1a5c995960721b6044820152606401610875565b600f546001600160a01b038816600090815260106020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876111c183612436565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161123a92919061190160f01b81526002810192909252602282015260420190565b60408051601f19818403018152919052805160209091012090506001600160a01b0388166112a25760405162461bcd60e51b815260206004820152601560248201527406274632f696e76616c69642d616464726573732d3605c1b6044820152606401610875565b60408051600081526020810180835283905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa1580156112f5573d6000803e3d6000fd5b505050602060405103516001600160a01b0316886001600160a01b0316146113545760405162461bcd60e51b8152602060048201526012602482015271189d18cbda5b9d985b1a590b5c195c9b5a5d60721b6044820152606401610875565b6001600160a01b038881166000818152600a60209081526040808320948c16808452948252918290208a905590518981526000805160206125bd833981519152910160405180910390a35050505050505050565b6000828152602081905260409020600101546113c381611577565b6109ff83836115fd565b6113d56115a3565b6001600160a01b03811661143a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610875565b610c2f81611813565b60006001600160e01b03198216637965db0b60e01b148061074f57506301ffc9a760e01b6001600160e01b031983161461074f565b61149060008051602061257d83398151915233610f36565b6114ac5760405162461bcd60e51b8152600401610875906123f1565b60006114b760125490565b6114c290606461244f565b600d546114d784670de0b6b3a764000061244f565b6114e1919061244f565b6114eb9190612466565b90506114f7838361161f565b6115046000826000611b6d565b50505050565b6000600c546000196108969190612466565b6000610e928284612488565b60085460009061074f90610d6f8469d3c21bcecceda1000000611a13565b6000610e92828461249b565b600061074f69d3c21bcecceda1000000610d6f60085485611a1390919063ffffffff16565b610c2f8133611bb9565b61158b8282611c12565b60008281526001602052604090206109ff9082611c96565b6007546001600160a01b03163314610c665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610875565b6116078282611cab565b60008281526001602052604090206109ff9082611d10565b60125461162c9082611546565b601255600061163a82611528565b600c5490915061164a9082611546565b600c5561165561150a565b60085411156116a65760405162461bcd60e51b815260206004820152601a60248201527f6d6178207363616c696e6720666163746f7220746f6f206c6f770000000000006044820152606401610875565b6001600160a01b0383166000908152600960205260409020546116c99082611546565b6001600160a01b0384166000818152600960209081526040918290209390935580519182529181018490527f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885910160405180910390a16040518281526001600160a01b0384169060009060008051602061259d833981519152906020015b60405180910390a3505050565b601254611761908261151c565b601255600061176f82611528565b600c5490915061177f908261151c565b600c553360009081526009602052604090205461179c908261151c565b336000818152600960209081526040918290209390935580519182529181018490527fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5910160405180910390a1604051828152600090339060008051602061259d8339815191529060200160405180910390a35050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038381166000908152600a6020908152604080832093861683529290522054600019811461150457818110156118e45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610875565b6115048484848403611d25565b6001600160a01b0382166119515760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610875565b6001600160a01b038216600090815260026020526040902054818110156119c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610875565b6001600160a01b038316600081815260026020908152604080832086860390556004805487900390555185815291929160008051602061259d833981519152910160405180910390a3505050565b6000610e92828461244f565b6000610e928284612466565b6000610e928383611e2f565b600c54611a449082611546565b600c556000611a5282611552565b601254909150611a629082611546565b601255611a6d61150a565b6008541115611abe5760405162461bcd60e51b815260206004820152601a60248201527f6d6178207363616c696e6720666163746f7220746f6f206c6f770000000000006044820152606401610875565b6001600160a01b038316600090815260096020526040902054611ae19083611546565b6001600160a01b0384166000818152600960209081526040918290209390935580519182529181018390527f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885910160405180910390a16040518181526001600160a01b0384169060009060008051602061259d83398151915290602001611747565b600061074f825490565b600082600003610d45576008546040805186815260208101839052908101919091527fc6642d24d84e7f3d36ca39f5cce10e75639d9b158d5193aa350e2f900653e4c090606001610d34565b611bc38282610f36565b61088857611bd081611e59565b611bdb836020611e6b565b604051602001611bec9291906124ae565b60408051601f198184030181529082905262461bcd60e51b825261087591600401612197565b611c1c8282610f36565b610888576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055611c523390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610e92836001600160a01b038416612007565b611cb58282610f36565b15610888576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610e92836001600160a01b038416612056565b6001600160a01b038316611d875760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610875565b6001600160a01b038216611de85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610875565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481526000805160206125bd8339815191529101611747565b6000826000018281548110611e4657611e46612523565b9060005260206000200154905092915050565b606061074f6001600160a01b03831660145b60606000611e7a83600261244f565b611e8590600261249b565b67ffffffffffffffff811115611e9d57611e9d612539565b6040519080825280601f01601f191660200182016040528015611ec7576020820181803683370190505b509050600360fc1b81600081518110611ee257611ee2612523565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611f1157611f11612523565b60200101906001600160f81b031916908160001a9053506000611f3584600261244f565b611f4090600161249b565b90505b6001811115611fb8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611f7457611f74612523565b1a60f81b828281518110611f8a57611f8a612523565b60200101906001600160f81b031916908160001a90535060049490941c93611fb18161254f565b9050611f43565b508315610e925760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610875565b600081815260018301602052604081205461204e5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561074f565b50600061074f565b6000818152600183016020526040812054801561213f57600061207a600183612488565b855490915060009061208e90600190612488565b90508181146120f35760008660000182815481106120ae576120ae612523565b90600052602060002001549050808760000184815481106120d1576120d1612523565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061210457612104612566565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061074f565b600091505061074f565b60006020828403121561215b57600080fd5b81356001600160e01b031981168114610e9257600080fd5b60005b8381101561218e578181015183820152602001612176565b50506000910152565b60208152600082518060208401526121b6816040850160208701612173565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610c2f57600080fd5b600080604083850312156121f257600080fd5b82356121fd816121ca565b946020939093013593505050565b60008060006060848603121561222057600080fd5b833561222b816121ca565b9250602084013561223b816121ca565b929592945050506040919091013590565b60006020828403121561225e57600080fd5b5035919050565b6000806040838503121561227857600080fd5b82359150602083013561228a816121ca565b809150509250929050565b6000602082840312156122a757600080fd5b8135610e92816121ca565b6000806000606084860312156122c757600080fd5b8335925060208401359150604084013580151581146122e557600080fd5b809150509250925092565b6000806040838503121561230357600080fd5b50508035926020909101359150565b600080600080600080600060e0888a03121561232d57600080fd5b8735612338816121ca565b96506020880135612348816121ca565b95506040880135945060608801359350608088013560ff8116811461236c57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561239c57600080fd5b82356123a7816121ca565b9150602083013561228a816121ca565b600181811c908216806123cb57607f821691505b6020821081036123eb57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601590820152744d7573742068617665206d696e74657220726f6c6560581b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820161244857612448612420565b5060010190565b808202811582820484141761074f5761074f612420565b60008261248357634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561074f5761074f612420565b8082018082111561074f5761074f612420565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516124e6816017850160208801612173565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612517816028840160208801612173565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60008161255e5761255e612420565b506000190190565b634e487b7160e01b600052603160045260246000fdfe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a26469706673582212201ba70062873b6a23c8cabeb6f17e1d0de2b3a548dea44c48640c363f3706b49764736f6c63430008170033