From 5c2235c67eedd8b6dfe1e9e9da39ad637666d533 Mon Sep 17 00:00:00 2001 From: sascha Date: Wed, 17 Sep 2025 16:59:57 +0200 Subject: [PATCH] isvesting flag for withdrawstakes --- .../CunaFinanceBsc.sol/CunaFinanceBsc.json | 9 +++++++-- contracts/CunaFinanceBsc.sol | 17 +++++++---------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/artifacts/contracts/CunaFinanceBsc.sol/CunaFinanceBsc.json b/artifacts/contracts/CunaFinanceBsc.sol/CunaFinanceBsc.json index 3091730..a7a68ac 100644 --- a/artifacts/contracts/CunaFinanceBsc.sol/CunaFinanceBsc.json +++ b/artifacts/contracts/CunaFinanceBsc.sol/CunaFinanceBsc.json @@ -602,6 +602,11 @@ "internalType": "address", "name": "token", "type": "address" + }, + { + "internalType": "bool", + "name": "isVesting", + "type": "bool" } ], "name": "createWithdrawStakeForUser", @@ -2161,8 +2166,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615f7a80620000e66000396000f3fe608060405234801561001057600080fd5b50600436106103635760003560e01c8062159da614610368578063013745181461038e578063022914a7146103c4578063025f4f8a146103f75780630519da321461040c578063092c7610146104155780630a84096a146104355780630a910a6d146104485780630c7d63861461045157806313baee5b14610459578063173825d9146104795780631764303d1461048c5780631aefa2d11461049f5780631eb9e53e146104b25780632ded58aa146104c55780632e46fed8146104ce5780633ba8396e146104f75780633c92f98d1461051a5780633f35e7221461053c57806343a32f891461054f57806343c7c011146105ca578063441a4175146105dd5780634a61f1e5146105fe57806351e624721461061e57806351f6cf2f14610631578063549e61d3146106525780635811622714610665578063592d1dd11461067857806361d1080b1461069857806362cd6a09146106a057806367a74ddc146106b75780636ef569a5146106ca5780637065cb48146106d357806374d1c8e3146106e657806375060a0b146106f95780637a0c6dc0146107195780637bc221ac146107395780637e6d99261461074c57806380ca0ecf146107755780638129fc1c1461078857806382b756811461079057806384e8520a146107a3578063853e0df2146107c35780638851ec0f146107d65780638939d787146107e95780638f82818f146107f25780639437e32e14610812578063953d16bf1461082557806396fd111a146108385780639cb6f556146108585780639f3a676c1461086b578063a0d46758146108b7578063aaf4b04d146108d7578063ac97b417146108ea578063b6c3dc4c146108fd578063b92a349f1461091d578063bc0bc6ba14610930578063bd84477d14610950578063bed9757e146109b8578063c2676603146109d9578063c32d3ae2146109e1578063c6b61e4c14610a14578063c7b530b014610a84578063cc573a9114610aa4578063ce13d09014610ae0578063ce3432c314610af3578063cfcf331914610b13578063d532bdfe14610b26578063da1b436414610b39578063e88f8e6614610b59578063eacdc5ff14610b6c578063eb44e0a314610b75578063ef5d9ae814610b88578063f2bb563014610ba8578063fe2f50d014610bbb578063ffecf51614610bc4575b600080fd5b61037b6103763660046154d8565b610bd7565b6040519081526020015b60405180910390f35b6103b761039c3660046154d8565b6004602052600090815260409020546001600160a01b031681565b60405161038591906154fa565b6103e76103d23660046154d8565b60006020819052908152604090205460ff1681565b6040519015158152602001610385565b61040a61040536600461550e565b610c71565b005b61037b60075481565b61037b6104233660046154d8565b60066020526000908152604090205481565b61037b610443366004615554565b610e2e565b61037b60125481565b61040a610f66565b61037b6104673660046154d8565b600c6020526000908152604090205481565b61040a6104873660046154d8565b611123565b61040a61049a3660046155c2565b611214565b61040a6104ad366004615603565b611452565b61037b6104c03660046154d8565b611486565b61037b60115481565b61037b6104dc3660046154d8565b6001600160a01b03166000908152601c602052604090205490565b6103e76105053660046154d8565b60016020526000908152604090205460ff1681565b61052d6105283660046155c2565b6114ca565b60405161038593929190615657565b61040a61054a366004615554565b6116bb565b61059b61055d366004615554565b60146020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610385949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61040a6105d83660046154d8565b611730565b6105f06105eb366004615603565b611a9e565b60405161038592919061568d565b61037b61060c3660046154d8565b60186020526000908152604090205481565b61040a61062c366004615603565b611ad6565b61064461063f366004615554565b611b0a565b6040516103859291906156a6565b61040a6106603660046156b4565b611b46565b61040a61067336600461571f565b611ec1565b61037b6106863660046154d8565b60056020526000908152604090205481565b601b5461037b565b6106a861212b565b6040516103859392919061576d565b61040a6106c536600461580f565b612352565b61037b60165481565b61040a6106e13660046154d8565b6123af565b61040a6106f4366004615842565b612481565b61037b6107073660046154d8565b600a6020526000908152604090205481565b61072c6107273660046154d8565b612664565b60405161038591906158ad565b61037b6107473660046154d8565b61274b565b61037b61075a3660046154d8565b6001600160a01b031660009081526017602052604090205490565b61037b610783366004615554565b61291f565b61040a612a2b565b61040a61079e366004615603565b612c54565b61037b6107b13660046154d8565b600d6020526000908152604090205481565b61040a6107d1366004615603565b612ce6565b61040a6107e436600461595b565b612d64565b61037b60135481565b61037b6108003660046154d8565b60176020526000908152604090205481565b61040a610820366004615987565b612ef0565b61040a610833366004615603565b612f37565b61084b61084636600461571f565b613224565b6040516103859190615a19565b61040a610866366004615603565b6133c3565b61087e610879366004615603565b613652565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610385565b6108ca6108c5366004615554565b6136a5565b6040516103859190615a67565b61040a6108e5366004615603565b613709565b61040a6108f8366004615603565b61378f565b61091061090b366004615554565b613b81565b6040516103859190615aa1565b61040a61092b366004615aaf565b613c93565b61094361093e366004615603565b613e34565b6040516103859190615ae2565b61096361095e366004615554565b613ed8565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610385565b6109cb6109c6366004615554565b613f56565b604051610385929190615af0565b6103e761037b565b6109f46109ef3660046154d8565b6140fc565b604080519485526020850193909352918301526060820152608001610385565b610a57610a22366004615603565b600b60205260009081526040902080546001820154600283015460038401546004850154600590950154939492939192909186565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610385565b610a97610a923660046154d8565b614150565b6040516103859190615b15565b610ab7610ab2366004615554565b6141e5565b604080519485526020850193909352918301526001600160a01b03166060820152608001610385565b61040a610aee366004615603565b614234565b610b06610b013660046154d8565b614268565b6040516103859190615b57565b610b06610b2136600461571f565b614528565b61040a610b343660046155c2565b6146ae565b61037b610b473660046154d8565b600e6020526000908152604090205481565b61052d610b673660046154d8565b6148e7565b61037b60105481565b61040a610b83366004615554565b614abf565b61037b610b963660046154d8565b601c6020526000908152604090205481565b61040a610bb636600461571f565b61500f565b61037b60155481565b61040a610bd23660046154d8565b6150c9565b600080610be383611486565b6001600160a01b0384166000908152600e6020526040902054909150805b601054811015610c69578215610c57576000818152600b602052604081206004015461271090610c319086615be7565b610c3b9190615bfe565b9050610c478186615c20565b9450610c538185615c33565b9350505b80610c6181615c46565b915050610c01565b505050919050565b3360009081526001602052604090205460ff16610ca95760405162461bcd60e51b8152600401610ca090615c5f565b60405180910390fd5b6001600160a01b038416610cf65760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642075736572206164647265737360601b6044820152606401610ca0565b60008311610d165760405162461bcd60e51b8152600401610ca090615c87565b6001600160a01b038116610d3c5760405162461bcd60e51b8152600401610ca090615caf565b60088054906000610d4c83615c46565b90915550506001600160a01b038481166000908152600f602090815260408083208151608081018352600854815280840189815281840189815288881660608401818152855460018082018855968a52888a209551600490910290950194855592519484019490945551600283015551600390910180546001600160a01b0319169190961617909455928252600a90529081208054859290610def908490615c20565b90915550506008546040516001600160a01b03861691600080516020615f2583398151915291610e209187916156a6565b60405180910390a250505050565b6001600160a01b0382166000908152600260205260408120805482919084908110610e5b57610e5b615cde565b906000526020600020906009020190506000816006015442610e7d9190615c33565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260036020526040902054811015610f59576001600160a01b0383166000908152600360205260408120805483908110610edc57610edc615cde565b6000918252602082206002909102018054600182015460088a015492945090929091606490610f0d90600a90615be7565b610f179190615bfe565b9050828810610f4457612710610f2d8383615be7565b610f379190615bfe565b610f419087615c20565b95505b5050505080610f5290615c46565b9050610e92565b5093505050505b92915050565b610f6e615145565b6000610f7933610bd7565b905060008111610f9b5760405162461bcd60e51b8152600401610ca090615cf4565b336000908152600c602052604081208054839290610fba908490615c33565b925050819055508060116000828254610fd39190615c33565b9091555050601054336000908152600e6020908152604080832093909355601c90529081208054839290611008908490615c20565b90915550506008805490600061101d83615c46565b9091555050336000908152600f602090815260409182902082516080810184526008548152918201849052600754909282019061105a9042615c20565b8152600080516020615ec5833981519152602091820181905283546001808201865560009586528386208551600490930201918255848401519082015560408401516002820155606090930151600390930180546001600160a01b0319166001600160a01b0390941693909317909255908252600a9052600080516020615e6583398151915280548392906110f0908490615c20565b90915550506040518181523390600080516020615e858339815191529060200160405180910390a25061112161517b565b565b3360009081526020819052604090205460ff166111525760405162461bcd60e51b8152600401610ca090615c5f565b6001600160a01b03811660009081526020819052604090205460ff166111a65760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610ca0565b336001600160a01b038216036111f35760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb329039b2b63360711b6044820152606401610ca0565b6001600160a01b03166000908152602081905260409020805460ff19169055565b61121c615145565b6000805b828110156113cb57600084848381811061123c5761123c615cde565b3360009081526002602090815260409091205491029290920135925050811061126557506113b9565b33600090815260026020526040812080548390811061128657611286615cde565b9060005260206000209060090201905060006112a23384610e2e565b905081600401548110156112b8575050506113b9565b60008260040154826112ca9190615c33565b9050806000036112dd57505050506113b9565b808360040160008282546112f19190615c20565b9091555061130190508187615c20565b336000908152600f6020526040908190208151608081019092529197508061132c87620f4240615c20565b8152602001838152602001600754426113459190615c20565b8152600080516020615ec5833981519152602091820152825460018082018555600094855293829020835160049092020190815590820151928101929092556040810151600283015560600151600390910180546001600160a01b0319166001600160a01b03909216919091179055505050505b806113c381615c46565b915050611220565b50801561144557600080516020615ec58339815191526000908152600a602052600080516020615e65833981519152805483929061140a908490615c20565b909155505060405181815233907f4e69fdc49495bcab2b4375781457ba16653a90eb4ffb6588351bdc39071433e29060200160405180910390a25b5061144e61517b565b5050565b3360009081526020819052604090205460ff166114815760405162461bcd60e51b8152600401610ca090615c5f565b601655565b6001600160a01b0381166000908152600c602090815260408083205460189092528220548082116114b85760006114c2565b6114c28183615c33565b949350505050565b606080600083806001600160401b038111156114e8576114e8615d1e565b604051908082528060200260200182016040528015611511578160200160208202803683370190505b509350806001600160401b0381111561152c5761152c615d1e565b604051908082528060200260200182016040528015611555578160200160208202803683370190505b50925060005b818110156116b257600087878381811061157757611577615cde565b905060200201602081019061158c91906154d8565b6001600160a01b03811660009081526006602052604090205487519192509081908890859081106115bf576115bf615cde565b6020908102919091018101919091526001600160a01b03808416600090815260049283905260408082205490516302c68be360e31b815291939216916316345f189161160d918791016154fa565b602060405180830381865afa15801561162a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164e9190615d34565b90506000670de0b6b3a76400006116658484615be7565b61166f9190615bfe565b90508088868151811061168457611684615cde565b60209081029190910101526116998188615c20565b96505050505080806116aa90615c46565b91505061155b565b50509250925092565b3360009081526020819052604090205460ff166116ea5760405162461bcd60e51b8152600401610ca090615c5f565b6116fe6001600160a01b038316338361518c565b6040518181526001600160a01b038316903390600080516020615f058339815191529060200160405180910390a35050565b611738615145565b6000805b336000908152600260205260409020548110156118435733600090815260026020526040812080548390811061177457611774615cde565b6000918252602090912060099091020160078101549091506001600160a01b0385811691161480156117b257506007810154600160a01b900460ff16155b156118305760006117c3338461291f565b9050816003015481111561182e5760008260030154826117e39190615c33565b90506117ef8186615c20565b9450808360030160008282546118059190615c20565b9091555050825460038401541061182c5760078301805460ff60a01b1916600160a01b1790555b505b505b508061183b81615c46565b91505061173c565b50600081116118645760405162461bcd60e51b8152600401610ca090615cf4565b3360009081526005602052604090205415611971576001600160a01b0380831660009081526004602081905260408083205490516302c68be360e31b81529293670de0b6b3a764000093869392909116916316345f18916118c7918991016154fa565b602060405180830381865afa1580156118e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119089190615d34565b6119129190615be7565b61191c9190615bfe565b33600090815260056020526040902054909150811061194a573360009081526005602052604081205561196f565b3360009081526005602052604081208054839290611969908490615c33565b90915550505b505b6001600160a01b03821660009081526006602052604081208054839290611999908490615c33565b9091555050336000908152600f6020526040808220815160808101909252600980549193839291906119ca83615c46565b919050558152602001838152602001600754426119e79190615c20565b81526001600160a01b0385811660209283018190528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b03191691909316179091558352600a905281208054839290611a62908490615c20565b90915550506040513390600080516020615ea583398151915290611a8a9084906000906156a6565b60405180910390a250611a9b61517b565b50565b60198181548110611aae57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b3360009081526020819052604090205460ff16611b055760405162461bcd60e51b8152600401610ca090615c5f565b601555565b60036020528160005260406000208181548110611b2657600080fd5b600091825260209091206002909102018054600190910154909250905082565b3360009081526001602052604090205460ff16611b755760405162461bcd60e51b8152600401610ca090615c5f565b828114611bbc5760405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606401610ca0565b82611bf85760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610ca0565b6000805b84811015611ea2576000868683818110611c1857611c18615cde565b9050602002016020810190611c2d91906154d8565b6001600160a01b031603611c535760405162461bcd60e51b8152600401610ca090615d4d565b6000848483818110611c6757611c67615cde565b9050602002013511611c8b5760405162461bcd60e51b8152600401610ca090615c87565b838382818110611c9d57611c9d615cde565b90506020020135600c6000888885818110611cba57611cba615cde565b9050602002016020810190611ccf91906154d8565b6001600160a01b03168152602081019190915260400160002054611cf39084615c33565b611cfd9190615c20565b9150600d6000878784818110611d1557611d15615cde565b9050602002016020810190611d2a91906154d8565b6001600160a01b03166001600160a01b0316815260200190815260200160002054600003611db157838382818110611d6457611d64615cde565b90506020020135600d6000888885818110611d8157611d81615cde565b9050602002016020810190611d9691906154d8565b6001600160a01b031681526020810191909152604001600020555b838382818110611dc357611dc3615cde565b90506020020135600c6000888885818110611de057611de0615cde565b9050602002016020810190611df591906154d8565b6001600160a01b03168152602081019190915260400160002055858582818110611e2157611e21615cde565b9050602002016020810190611e3691906154d8565b6001600160a01b03167fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839858584818110611e7257611e72615cde565b90506020020135604051611e8891815260200190565b60405180910390a280611e9a81615c46565b915050611bfc565b508060116000828254611eb59190615c20565b90915550505050505050565b611ec9615145565b60008211611f095760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610ca0565b60008111611f295760405162461bcd60e51b8152600401610ca090615d76565b601554821015611f715760405162461bcd60e51b815260206004820152601360248201527256616c75652062656c6f77206d696e696d756d60681b6044820152606401610ca0565b6000611f7c33611486565b905080831115611f9e5760405162461bcd60e51b8152600401610ca090615da2565b60088054906000611fae83615c46565b90915550506008543360009081526018602052604081208054869290611fd5908490615c20565b909155505060408051608081018252858152602080820186815233838501818152426060860190815260008381526014865287812089825286528781209651875593516001808801919091559151600280880180546001600160a01b039384166001600160a01b03199182161790915592516003909801979097558751808901909852928752938601878152601980548084018255948190529651939095027f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969581018054949093169390941692909217905591517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96969091015590546120da9190615c33565b336000818152601a6020908152604080832086845290915290819020929092559051600080516020615ee58339815191529061211990869085906156a6565b60405180910390a2505061144e61517b565b60195460609081908190806001600160401b0381111561214d5761214d615d1e565b604051908082528060200260200182016040528015612176578160200160208202803683370190505b509350806001600160401b0381111561219157612191615d1e565b6040519080825280602002602001820160405280156121ba578160200160208202803683370190505b509250806001600160401b038111156121d5576121d5615d1e565b60405190808252806020026020018201604052801561220e57816020015b6121fb6153cd565b8152602001906001900390816121f35790505b50915060005b8181101561234b5760006019828154811061223157612231615cde565b60009182526020918290206040805180820190915260029092020180546001600160a01b031680835260019091015492820192909252875190925087908490811061227e5761227e615cde565b60200260200101906001600160a01b031690816001600160a01b03168152505080602001518583815181106122b5576122b5615cde565b60209081029190910181019190915281516001600160a01b039081166000908152601483526040808220858501518352845290819020815160808101835281548152600182015494810194909452600281015490921690830152600301546060820152845185908490811061232c5761232c615cde565b602002602001018190525050808061234390615c46565b915050612214565b5050909192565b3360009081526020819052604090205460ff166123815760405162461bcd60e51b8152600401610ca090615c5f565b6001600160a01b03918216600090815260046020526040902080546001600160a01b03191691909216179055565b3360009081526020819052604090205460ff166123de5760405162461bcd60e51b8152600401610ca090615c5f565b6001600160a01b0381166124045760405162461bcd60e51b8152600401610ca090615d4d565b6001600160a01b03811660009081526020819052604090205460ff161561245d5760405162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9037bbb732b960991b6044820152606401610ca0565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b3360009081526001602052604090205460ff166124b05760405162461bcd60e51b8152600401610ca090615c5f565b60026000896001600160a01b03166001600160a01b031681526020019081526020016000206040518061014001604052808981526020018881526020018781526020016000815260200160008152602001848152602001838152602001866001600160a01b03168152602001600015158152602001858152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160070160146101000a81548160ff0219169083151502179055506101208201518160080155505082600560008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546126289190615c20565b90915550506001600160a01b03841660009081526006602052604081208054899290612655908490615c20565b90915550505050505050505050565b6001600160a01b0381166000908152600260209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561274057600084815260209081902060408051610140810182526009860290920180548352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460c084015260078101546001600160a01b03811660e0850152600160a01b900460ff16151561010084015260080154610120830152908352909201910161269c565b505050509050919050565b6001600160a01b038116600090815260026020526040812054815b81811015612918576001600160a01b038416600090815260026020526040812080548390811061279857612798615cde565b600091825260209182902060408051610140810182526009909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260078201546001600160a01b03811660e083015260ff600160a01b909104161515610100820181905260089092015461012082015291506129055760e0810180516001600160a01b03908116600090815260046020819052604080832054945190516302c68be360e31b81529294909316926316345f189261287992016154fa565b602060405180830381865afa158015612896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ba9190615d34565b90506000826060015183600001516128d29190615c33565b90506000670de0b6b3a76400006128e98385615be7565b6128f39190615bfe565b90506128ff8188615c20565b96505050505b508061291081615c46565b915050612766565b5050919050565b6001600160a01b038216600090815260026020526040812080548291908490811061294c5761294c615cde565b90600052602060002090600902019050600081600601544261296e9190615c33565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260036020526040902054811015610f59576001600160a01b03831660009081526003602052604081208054839081106129cd576129cd615cde565b600091825260209091206002909102018054600182015491925090818710612a1757875461271090612a00908390615be7565b612a0a9190615bfe565b612a149086615c20565b94505b50505080612a2490615c46565b9050612983565b6000612a356151e9565b805490915060ff600160401b82041615906001600160401b0316600081158015612a5c5750825b90506000826001600160401b03166001148015612a785750303b155b905081158015612a86575080155b15612aa45760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315612acd57845460ff60401b1916600160401b1785555b612ad5615212565b3360009081526020818152604082208054600160ff1991821681179092557f4cfa3c6903140891ecff713e237b1f1746362568dfb5e8e9bc37719e4f37e0c580548216831790557f3e1f9e6abae6b647fdc3c5896ef1871ceb3c98e9e72852da3f17d161a860f76c80548216831790557f3517cbb3edfcef55b3b32be7021bc73ef070f4a8bad0d4b389b96924cf17b7418054821683179055738a9281ecece9b599c2f42d829c3d0d8e74b7083e84527f968a1791ad31618c63b086103baa804af57c3ca0efa33a191010fbb7741579fc80549091169091179055600c905269021e19e0c9bab24000007f649cbac87391465cfe24c65b052f0edf3b8486f136e0b91262d76d1f34d7826b8190556011805491929091612bf6908490615c20565b90915550506201fa4060075560646013558315612c4d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b3360009081526020819052604090205460ff16612c835760405162461bcd60e51b8152600401610ca090615c5f565b60008111612ce15760405162461bcd60e51b815260206004820152602560248201527f4d61782070657263656e74616765206d75737420626520677265617465722074604482015264068616e20360dc1b6064820152608401610ca0565b601355565b3360009081526020819052604090205460ff16612d155760405162461bcd60e51b8152600401610ca090615c5f565b612d2e600080516020615ec5833981519152338361518c565b604051818152600080516020615ec5833981519152903390600080516020615f058339815191529060200160405180910390a350565b3360009081526020819052604090205460ff16612d935760405162461bcd60e51b8152600401610ca090615c5f565b60105460009015612dde576000600b60006001601054612db39190615c33565b81526020019081526020016000209050612dda846011548360010154846002015487615222565b9150505b601354811115612e295760405162461bcd60e51b81526020600482015260166024820152750aadcd8dec6d640e0cae4c6cadce8c2ceca40d0d2ced60531b6044820152606401610ca0565b6040805160c08101825285815260208082018681526011548385019081526060808501888152608086018881524260a08801908152601080546000908152600b89528a90209851895595516001890155935160028801559051600387015551600486015590516005909401939093555483518781529182018590529281018590527feadbedb993dfca23e4c79bf4fa5fe531c2e0e926258fabb8445e8bc5c472780f910160405180910390a260108054906000612ee583615c46565b919050555050505050565b3360009081526001602052604090205460ff16612f1f5760405162461bcd60e51b8152600401610ca090615c5f565b612f2f8686868686864242612481565b505050505050565b33600090815260146020908152604080832084845290915290208054612f6f5760405162461bcd60e51b8152600401610ca090615dd2565b60028101546001600160a01b03163314612f9b5760405162461bcd60e51b8152600401610ca090615dfd565b805460165460009061271090612fb19084615be7565b612fbb9190615bfe565b33600090815260186020526040812080549293508492909190612fdf908490615c33565b9091555050801561302857336000908152600c602052604081208054839290613009908490615c33565b9250508190555080601160008282546130229190615c33565b90915550505b801561307257336001600160a01b03167f4725a4d4de9bff212d0885095e27515072f73f427df55e52f37f241321ef88f982866040516130699291906156a6565b60405180910390a25b336000818152601460209081526040808320888452825280832083815560018082018590556002820180546001600160a01b03191690556003909101849055938352601a825280832088845290915281205460195490926130d291615c33565b9050808214613193576000601982815481106130f0576130f0615cde565b60009182526020918290206040805180820190915260029092020180546001600160a01b0316825260010154918101919091526019805491925082918590811061313c5761313c615cde565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b03938416178155938101516001909401939093558351168152601a8252604080822093830151825292909152208290555b60198054806131a4576131a4615e25565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001018290559190925533808352601a825260408084208a855283528084209390935591518881527f73d12dec3eb3b445b6c9feb2fd559ba7c852c525bc1e59d8f7ff760c55df041d910160405180910390a2505050505050565b6060818311156132665760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610ca0565b60105482106132ad5760405162461bcd60e51b8152602060048201526013602482015272115b9908195c1bd8da081b9bdd08199bdd5b99606a1b6044820152606401610ca0565b60006132b98484615c33565b6132c4906001615c20565b90506000816001600160401b038111156132e0576132e0615d1e565b60405190808252806020026020018201604052801561331957816020015b6133066153fe565b8152602001906001900390816132fe5790505b50905060005b828110156133ba57600b60006133358389615c20565b81526020019081526020016000206040518060c0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152505082828151811061339c5761339c615cde565b602002602001018190525080806133b290615c46565b91505061331f565b50949350505050565b6133cb615145565b600081116133eb5760405162461bcd60e51b8152600401610ca090615c87565b6000601254116134345760405162461bcd60e51b81526020600482015260146024820152734275796f7574206e6f7420617661696c61626c6560601b6044820152606401610ca0565b600061343f33611486565b9050808211156134615760405162461bcd60e51b8152600401610ca090615da2565b612710613470826109c4615be7565b61347a9190615bfe565b8210156134ba5760405162461bcd60e51b815260206004820152600e60248201526d416d6f756e7420746f6f206c6f7760901b6044820152606401610ca0565b6000612710601254846134cd9190615be7565b6134d79190615bfe565b336000908152600c60205260408120805492935085929091906134fb908490615c33565b9250508190555082601160008282546135149190615c33565b9091555050336000908152601c602052604081208054839290613538908490615c20565b90915550506008805490600061354d83615c46565b9091555050336000908152600f602090815260409182902082516080810184526008548152918201849052600754909282019061358a9042615c20565b8152600080516020615ec5833981519152602091820181905283546001808201865560009586528386208551600490930201918255848401519082015560408401516002820155606090930151600390930180546001600160a01b0319166001600160a01b0390941693909317909255908252600a9052600080516020615e658339815191528054839290613620908490615c20565b90915550506040518181523390600080516020615e858339815191529060200160405180910390a25050611a9b61517b565b601b818154811061366257600080fd5b6000918252602090912060069091020180546001820154600283015460038401546004850154600590950154939550919390926001600160a01b03918216911686565b6136ad6153cd565b506001600160a01b03918216600090815260146020908152604080832093835292815290829020825160808101845281548152600182015492810192909252600281015490931691810191909152600390910154606082015290565b3360009081526020819052604090205460ff166137385760405162461bcd60e51b8152600401610ca090615c5f565b61271081111561378a5760405162461bcd60e51b815260206004820152601d60248201527f50657263656e746167652063616e6e6f742065786365656420313030250000006044820152606401610ca0565b601255565b613797615145565b3360009081526002602052604090205481106137ed5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610ca0565b33600090815260026020526040812080548390811061380e5761380e615cde565b906000526020600020906009020190508060070160149054906101000a900460ff16156138705760405162461bcd60e51b815260206004820152601060248201526f56657374696e6720636f6d706c65746560801b6044820152606401610ca0565b600061387c338461291f565b905081600301548110156138c95760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610ca0565b60008260030154826138db9190615c33565b9050600081116138fd5760405162461bcd60e51b8152600401610ca090615cf4565b808360030160008282546139119190615c20565b909155505082546003840154106139385760078301805460ff60a01b1916600160a01b1790555b3360009081526005602052604090205415613a495760078301546001600160a01b0390811660008181526004602081905260408083205490516302c68be360e31b81529294670de0b6b3a764000094879492909116926316345f189261399f9291016154fa565b602060405180830381865afa1580156139bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e09190615d34565b6139ea9190615be7565b6139f49190615bfe565b336000908152600560205260409020549091508110613a225733600090815260056020526040812055613a47565b3360009081526005602052604081208054839290613a41908490615c33565b90915550505b505b60078301546001600160a01b031660009081526006602052604081208054839290613a75908490615c33565b9091555050336000908152600f602052604080822081516080810190925260098054919383929190613aa683615c46565b91905055815260200183815260200160075442613ac39190615c20565b81526007860180546001600160a01b039081166020938401528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b0319169183169190911790559054168352600a905281208054839290613b46908490615c20565b90915550506040513390600080516020615ea583398151915290613b6e9084906000906156a6565b60405180910390a2505050611a9b61517b565b613bb5604051806080016040528060008152602001600081526020016000815260200160006001600160a01b031681525090565b6001600160a01b0383166000908152600f60205260408120905b8154811015613c7a5783828281548110613beb57613beb615cde565b90600052602060002090600402016000015403613c6857818181548110613c1457613c14615cde565b6000918252602091829020604080516080810182526004909302909101805483526001810154938301939093526002830154908201526003909101546001600160a01b031660608201529250610f60915050565b80613c7281615c46565b915050613bcf565b5060405162461bcd60e51b8152600401610ca090615e3b565b3360009081526020819052604090205460ff16613cc25760405162461bcd60e51b8152600401610ca090615c5f565b6001600160a01b038316613ce85760405162461bcd60e51b8152600401610ca090615caf565b600081118015613cfa57506127108111155b613d3b5760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b6044820152606401610ca0565b6001600160a01b0383166000908152600360205260408120613d5c91615434565b6000825b612710821015613df95782612710613d788285615c20565b1115613d8d57613d8a83612710615c33565b90505b6001600160a01b0386166000908152600360209081526040808320815180830190925285825281830185815281546001818101845592865293909420915160029093029091019182559151910155613de58184615c20565b9250613df18583615c20565b915050613d60565b6040516001600160a01b038616907fde4b6ccc38b84f88129403b65a309f9b1c41d4c316bc2118d7614e449b9d4c4590600090a25050505050565b613e3c6153fe565b6010548210613e7f5760405162461bcd60e51b815260206004820152600f60248201526e115c1bd8da081b9bdd08199bdd5b99608a1b6044820152606401610ca0565b506000908152600b6020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b60026020528160005260406000208181548110613ef457600080fd5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007880154600890980154969950949750929591949093916001600160a01b03811691600160a01b90910460ff16908a565b6001600160a01b038216600090815260026020526040812080546060928392909185908110613f8757613f87615cde565b600091825260208083206007600990930201918201546001600160a01b03168084526003909152604083205491935091816001600160401b03811115613fcf57613fcf615d1e565b604051908082528060200260200182016040528015613ff8578160200160208202803683370190505b5090506000826001600160401b0381111561401557614015615d1e565b60405190808252806020026020018201604052801561403e578160200160208202803683370190505b50905060005b838110156140eb576001600160a01b038516600090815260036020526040812080548390811061407657614076615cde565b906000526020600020906002020190508060000154876006015461409a9190615c20565b8483815181106140ac576140ac615cde565b60200260200101818152505080600101548383815181106140cf576140cf615cde565b6020908102919091010152506140e481615c46565b9050614044565b5090955093505050505b9250929050565b600080600080600061410d86610bd7565b9050600061411a87611486565b6001600160a01b03979097166000908152600c6020908152604080832054600d9092529091205490989297965094509092505050565b6001600160a01b0381166000908152600f60209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561274057600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b031660608301529083529092019101614188565b600f602052816000526040600020818154811061420157600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526020819052604090205460ff166142635760405162461bcd60e51b8152600401610ca090615c5f565b600755565b60606001600160a01b0382166142905760405162461bcd60e51b8152600401610ca090615d4d565b6000805b601b5481101561434057836001600160a01b0316601b82815481106142bb576142bb615cde565b60009182526020909120600460069092020101546001600160a01b0316148061431b5750836001600160a01b0316601b82815481106142fc576142fc615cde565b60009182526020909120600560069092020101546001600160a01b0316145b1561432e578161432a81615c46565b9250505b8061433881615c46565b915050614294565b508060000361438257604080516000808252602082019092529061437a565b614367615455565b81526020019060019003908161435f5790505b509392505050565b6000816001600160401b0381111561439c5761439c615d1e565b6040519080825280602002602001820160405280156143d557816020015b6143c2615455565b8152602001906001900390816143ba5790505b5090506000805b601b5481101561451e57856001600160a01b0316601b828154811061440357614403615cde565b60009182526020909120600460069092020101546001600160a01b031614806144635750856001600160a01b0316601b828154811061444457614444615cde565b60009182526020909120600560069092020101546001600160a01b0316145b1561450c57601b818154811061447b5761447b615cde565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a082015283518490849081106144f2576144f2615cde565b6020026020010181905250818061450890615c46565b9250505b8061451681615c46565b9150506143dc565b5090949350505050565b601b5460609083106145785760405162461bcd60e51b8152602060048201526019602482015278537461727420696e646578206f7574206f6620626f756e647360381b6044820152606401610ca0565b60006145848385615c20565b601b549091508111156145965750601b545b60006145a28583615c33565b6001600160401b038111156145b9576145b9615d1e565b6040519080825280602002602001820160405280156145f257816020015b6145df615455565b8152602001906001900390816145d75790505b509050845b828110156133ba57601b818154811061461257614612615cde565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152826146808884615c33565b8151811061469057614690615cde565b602002602001018190525080806146a690615c46565b9150506145f7565b6146b6615145565b336000908152600f6020526040902080546147095760405162461bcd60e51b81526020600482015260136024820152724e6f207374616b657320617661696c61626c6560681b6044820152606401610ca0565b8161474e5760405162461bcd60e51b8152602060048201526015602482015274139bc81cdd185ad94812511cc81c1c9bdd9a591959605a1b6044820152606401610ca0565b60005b828110156148dd57600084848381811061476d5761476d615cde565b9050602002013590506000805b84548110156148aa57600085828154811061479757614797615cde565b906000526020600020906004020190508381600001541480156147be575060008160010154115b156148975780600201544210156148065760405162461bcd60e51b815260206004820152600c60248201526b14dd185ad9481b1bd8dad95960a21b6044820152606401610ca0565b60018101805460038301546000928390556001600160a01b0316808352600a60205260408320805492939192849290614840908490615c33565b9091555061485a90506001600160a01b038216338461518c565b336001600160a01b0316600080516020615f2583398151915283886040516148839291906156a6565b60405180910390a2600194505050506148aa565b50806148a281615c46565b91505061477a565b50806148c85760405162461bcd60e51b8152600401610ca090615e3b565b505080806148d590615c46565b915050614751565b505061144e61517b565b6060806000806148f685611486565b6001600160a01b0386166000908152600e602052604081205460105492935091614921908390615c33565b905080600003614952575050604080516000808252602082018181528284019093529095509093509150614ab89050565b806001600160401b0381111561496a5761496a615d1e565b604051908082528060200260200182016040528015614993578160200160208202803683370190505b509550806001600160401b038111156149ae576149ae615d1e565b6040519080825280602002602001820160405280156149d7578160200160208202803683370190505b50945060005b81811015614ab35760006149f18285615c20565b905080888381518110614a0657614a06615cde565b60209081029190910101528415614a7f576000818152600b602052604081206004015461271090614a379088615be7565b614a419190615bfe565b905080888481518110614a5657614a56615cde565b6020908102919091010152614a6b8188615c20565b9650614a778187615c33565b955050614aa0565b6000878381518110614a9357614a93615cde565b6020026020010181815250505b5080614aab81615c46565b9150506149dd565b505050505b9193909250565b614ac7615145565b6001600160a01b038216600090815260146020908152604080832084845290915290208054614b085760405162461bcd60e51b8152600401610ca090615dd2565b336001600160a01b03841603614b595760405162461bcd60e51b815260206004820152601660248201527543616e6e6f7420627579206f776e206c697374696e6760501b6044820152606401610ca0565b8054600182015460038301546000828411614b75576000614b7f565b614b7f8385615c33565b9050600084614b9083612710615be7565b614b9a9190615bfe565b90506000612710614bab8380615be7565b614bb59190615bfe565b90506000612710614bc68389615be7565b614bd09190615bfe565b90506000614bde8289615c33565b9050614bfa600080516020615ec5833981519152338d8a6152bb565b6001600160a01b038b166000908152600c6020526040812080548a9290614c22908490615c33565b9091555050336000908152600c602052604081208054839290614c46908490615c20565b90915550506001600160a01b038b16600090815260186020526040812080548a9290614c73908490615c33565b925050819055508160116000828254614c8c9190615c33565b90915550506001600160a01b038b1660009081526017602052604081208054899290614cb9908490615c20565b92505081905550601b6040518060c001604052808881526020014281526020018a81526020018981526020018d6001600160a01b03168152602001336001600160a01b031681525090806001815401808255809150506001900390600052602060002090600602016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050601460008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060008082016000905560018201600090556002820160006101000a8154906001600160a01b030219169055600382016000905550506000601a60008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002054905060006001601980549050614e689190615c33565b9050808214614f2957600060198281548110614e8657614e86615cde565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260198054919250829185908110614ed257614ed2615cde565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b03938416178155938101516001909401939093558351168152601a8252604080822093830151825292909152208290555b6019805480614f3a57614f3a615e25565b6001900381819060005260206000209060020201600080820160006101000a8154906001600160a01b030219169055600182016000905550509055601a60008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060009055336001600160a01b03168d6001600160a01b03167f7bb39d095b04a9986ed34adf14d74c33294d0a9e807f02bf634d532507422eba8b8f604051614ff49291906156a6565b60405180910390a3505050505050505050505061144e61517b565b336000908152601460209081526040808320858452909152902080546150475760405162461bcd60e51b8152600401610ca090615dd2565b60028101546001600160a01b031633146150735760405162461bcd60e51b8152600401610ca090615dfd565b600082116150935760405162461bcd60e51b8152600401610ca090615d76565b600181018290556040513390600080516020615ee5833981519152906150bc90859087906156a6565b60405180910390a2505050565b3360009081526020819052604090205460ff166150f85760405162461bcd60e51b8152600401610ca090615c5f565b6001600160a01b03811661511e5760405162461bcd60e51b8152600401610ca090615d4d565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600061514f6152fa565b80549091506001190161517557604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006151856152fa565b6001905550565b6151e483846001600160a01b031663a9059cbb85856040516024016151b292919061568d565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061531e565b505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610f60565b61521a615386565b6111216153ab565b600082158061522f575084155b1561523c575060006152b2565b60008561524b88612710615be7565b6152559190615bfe565b905060008461526687612710615be7565b6152709190615bfe565b9050808211615284576000925050506152b2565b60006152908284615c33565b905060006127106152a18784615be7565b6152ab9190615bfe565b9450505050505b95945050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526152f49186918216906323b872dd906084016151b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600080602060008451602086016000885af180615341576040513d6000823e3d81fd5b50506000513d91508115615359578060011415615366565b6001600160a01b0384163b155b156152f45783604051635274afe760e01b8152600401610ca091906154fa565b61538e6153b3565b61112157604051631afcd79f60e31b815260040160405180910390fd5b61517b615386565b60006153bd6151e9565b54600160401b900460ff16919050565b6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5080546000825560020290600052602060002090810190611a9b919061549d565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b5b808211156154b8576000808255600182015560020161549e565b5090565b80356001600160a01b03811681146154d357600080fd5b919050565b6000602082840312156154ea57600080fd5b6154f3826154bc565b9392505050565b6001600160a01b0391909116815260200190565b6000806000806080858703121561552457600080fd5b61552d856154bc565b93506020850135925060408501359150615549606086016154bc565b905092959194509250565b6000806040838503121561556757600080fd5b615570836154bc565b946020939093013593505050565b60008083601f84011261559057600080fd5b5081356001600160401b038111156155a757600080fd5b6020830191508360208260051b85010111156140f557600080fd5b600080602083850312156155d557600080fd5b82356001600160401b038111156155eb57600080fd5b6155f78582860161557e565b90969095509350505050565b60006020828403121561561557600080fd5b5035919050565b600081518084526020808501945080840160005b8381101561564c57815187529582019590820190600101615630565b509495945050505050565b60608152600061566a606083018661561c565b828103602084015261567c818661561c565b915050826040830152949350505050565b6001600160a01b03929092168252602082015260400190565b918252602082015260400190565b600080600080604085870312156156ca57600080fd5b84356001600160401b03808211156156e157600080fd5b6156ed8883890161557e565b9096509450602087013591508082111561570657600080fd5b506157138782880161557e565b95989497509550505050565b6000806040838503121561573257600080fd5b50508035926020909101359150565b80518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b60608082528451908201819052600090608090818401906020808901855b838110156157b05781516001600160a01b03168552938201939082019060010161578b565b5050858303818701526157c3838961561c565b868103604088015287518082528289019450908201925060005b81811015615800576157f0848651615741565b93820193928501926001016157dd565b50919998505050505050505050565b6000806040838503121561582257600080fd5b61582b836154bc565b9150615839602084016154bc565b90509250929050565b600080600080600080600080610100898b03121561585f57600080fd5b615868896154bc565b975060208901359650604089013595506060890135945061588b60808a016154bc565b979a969950949793969560a0850135955060c08501359460e001359350915050565b602080825282518282018190526000919060409081850190868401855b8281101561594e5781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0808201516001600160a01b03169086015261010080820151151590860152610120908101519085015261014090930192908501906001016158ca565b5091979650505050505050565b60008060006060848603121561597057600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c087890312156159a057600080fd5b6159a9876154bc565b95506020870135945060408701359350606087013592506159cc608088016154bc565b915060a087013590509295509295509295565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a08301525050565b6020808252825182820181905260009190848201906040850190845b81811015615a5b57615a488385516159df565b9284019260c09290920191600101615a35565b50909695505050505050565b60808101610f608284615741565b8051825260208082015190830152604080820151908301526060908101516001600160a01b0316910152565b60808101610f608284615a75565b600080600060608486031215615ac457600080fd5b615acd846154bc565b95602085013595506040909401359392505050565b60c08101610f6082846159df565b604081526000615b03604083018561561c565b82810360208401526152b2818561561c565b6020808252825182820181905260009190848201906040850190845b81811015615a5b57615b44838551615a75565b9284019260809290920191600101615b31565b602080825282518282018190526000919060409081850190868401855b8281101561594e5781518051855286810151878601528581015186860152606080820151908601526080808201516001600160a01b039081169187019190915260a091820151169085015260c09093019290850190600101615b74565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610f6057610f60615bd1565b600082615c1b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610f6057610f60615bd1565b81810381811115610f6057610f60615bd1565b600060018201615c5857615c58615bd1565b5060010190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6020808252600e908201526d125b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b602080825260159082015274496e76616c696420746f6b656e206164647265737360581b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f4e6f7468696e6720746f20636c61696d60801b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615d4657600080fd5b5051919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b602080825260129082015271496e76616c69642073616c6520707269636560701b604082015260600190565b602080825260169082015275496e73756666696369656e74206e6574207374616b6560501b604082015260600190565b602080825260119082015270131a5cdd1a5b99c81b9bdd08199bdd5b99607a1b604082015260600190565b6020808252600e908201526d2737ba103a34329039b2b63632b960911b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b6020808252600f908201526e14dd185ad9481b9bdd08199bdd5b99608a1b60408201526060019056feb0775d57c3eeb070f58d410e36e9ff396813a5d76997d9a91bdf10f0798296f0a65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b5172100000000000000000000000055d398326f99059ff775485246999027b31979558e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031ca92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafefa264697066735822122052a38369afdf48e350bece318a3cbff34059932d6dce398dc1f50c1fac30096164736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103635760003560e01c8062159da614610368578063013745181461038e578063022914a7146103c4578063025f4f8a146103f75780630519da321461040c578063092c7610146104155780630a84096a146104355780630a910a6d146104485780630c7d63861461045157806313baee5b14610459578063173825d9146104795780631764303d1461048c5780631aefa2d11461049f5780631eb9e53e146104b25780632ded58aa146104c55780632e46fed8146104ce5780633ba8396e146104f75780633c92f98d1461051a5780633f35e7221461053c57806343a32f891461054f57806343c7c011146105ca578063441a4175146105dd5780634a61f1e5146105fe57806351e624721461061e57806351f6cf2f14610631578063549e61d3146106525780635811622714610665578063592d1dd11461067857806361d1080b1461069857806362cd6a09146106a057806367a74ddc146106b75780636ef569a5146106ca5780637065cb48146106d357806374d1c8e3146106e657806375060a0b146106f95780637a0c6dc0146107195780637bc221ac146107395780637e6d99261461074c57806380ca0ecf146107755780638129fc1c1461078857806382b756811461079057806384e8520a146107a3578063853e0df2146107c35780638851ec0f146107d65780638939d787146107e95780638f82818f146107f25780639437e32e14610812578063953d16bf1461082557806396fd111a146108385780639cb6f556146108585780639f3a676c1461086b578063a0d46758146108b7578063aaf4b04d146108d7578063ac97b417146108ea578063b6c3dc4c146108fd578063b92a349f1461091d578063bc0bc6ba14610930578063bd84477d14610950578063bed9757e146109b8578063c2676603146109d9578063c32d3ae2146109e1578063c6b61e4c14610a14578063c7b530b014610a84578063cc573a9114610aa4578063ce13d09014610ae0578063ce3432c314610af3578063cfcf331914610b13578063d532bdfe14610b26578063da1b436414610b39578063e88f8e6614610b59578063eacdc5ff14610b6c578063eb44e0a314610b75578063ef5d9ae814610b88578063f2bb563014610ba8578063fe2f50d014610bbb578063ffecf51614610bc4575b600080fd5b61037b6103763660046154d8565b610bd7565b6040519081526020015b60405180910390f35b6103b761039c3660046154d8565b6004602052600090815260409020546001600160a01b031681565b60405161038591906154fa565b6103e76103d23660046154d8565b60006020819052908152604090205460ff1681565b6040519015158152602001610385565b61040a61040536600461550e565b610c71565b005b61037b60075481565b61037b6104233660046154d8565b60066020526000908152604090205481565b61037b610443366004615554565b610e2e565b61037b60125481565b61040a610f66565b61037b6104673660046154d8565b600c6020526000908152604090205481565b61040a6104873660046154d8565b611123565b61040a61049a3660046155c2565b611214565b61040a6104ad366004615603565b611452565b61037b6104c03660046154d8565b611486565b61037b60115481565b61037b6104dc3660046154d8565b6001600160a01b03166000908152601c602052604090205490565b6103e76105053660046154d8565b60016020526000908152604090205460ff1681565b61052d6105283660046155c2565b6114ca565b60405161038593929190615657565b61040a61054a366004615554565b6116bb565b61059b61055d366004615554565b60146020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610385949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61040a6105d83660046154d8565b611730565b6105f06105eb366004615603565b611a9e565b60405161038592919061568d565b61037b61060c3660046154d8565b60186020526000908152604090205481565b61040a61062c366004615603565b611ad6565b61064461063f366004615554565b611b0a565b6040516103859291906156a6565b61040a6106603660046156b4565b611b46565b61040a61067336600461571f565b611ec1565b61037b6106863660046154d8565b60056020526000908152604090205481565b601b5461037b565b6106a861212b565b6040516103859392919061576d565b61040a6106c536600461580f565b612352565b61037b60165481565b61040a6106e13660046154d8565b6123af565b61040a6106f4366004615842565b612481565b61037b6107073660046154d8565b600a6020526000908152604090205481565b61072c6107273660046154d8565b612664565b60405161038591906158ad565b61037b6107473660046154d8565b61274b565b61037b61075a3660046154d8565b6001600160a01b031660009081526017602052604090205490565b61037b610783366004615554565b61291f565b61040a612a2b565b61040a61079e366004615603565b612c54565b61037b6107b13660046154d8565b600d6020526000908152604090205481565b61040a6107d1366004615603565b612ce6565b61040a6107e436600461595b565b612d64565b61037b60135481565b61037b6108003660046154d8565b60176020526000908152604090205481565b61040a610820366004615987565b612ef0565b61040a610833366004615603565b612f37565b61084b61084636600461571f565b613224565b6040516103859190615a19565b61040a610866366004615603565b6133c3565b61087e610879366004615603565b613652565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610385565b6108ca6108c5366004615554565b6136a5565b6040516103859190615a67565b61040a6108e5366004615603565b613709565b61040a6108f8366004615603565b61378f565b61091061090b366004615554565b613b81565b6040516103859190615aa1565b61040a61092b366004615aaf565b613c93565b61094361093e366004615603565b613e34565b6040516103859190615ae2565b61096361095e366004615554565b613ed8565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610385565b6109cb6109c6366004615554565b613f56565b604051610385929190615af0565b6103e761037b565b6109f46109ef3660046154d8565b6140fc565b604080519485526020850193909352918301526060820152608001610385565b610a57610a22366004615603565b600b60205260009081526040902080546001820154600283015460038401546004850154600590950154939492939192909186565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610385565b610a97610a923660046154d8565b614150565b6040516103859190615b15565b610ab7610ab2366004615554565b6141e5565b604080519485526020850193909352918301526001600160a01b03166060820152608001610385565b61040a610aee366004615603565b614234565b610b06610b013660046154d8565b614268565b6040516103859190615b57565b610b06610b2136600461571f565b614528565b61040a610b343660046155c2565b6146ae565b61037b610b473660046154d8565b600e6020526000908152604090205481565b61052d610b673660046154d8565b6148e7565b61037b60105481565b61040a610b83366004615554565b614abf565b61037b610b963660046154d8565b601c6020526000908152604090205481565b61040a610bb636600461571f565b61500f565b61037b60155481565b61040a610bd23660046154d8565b6150c9565b600080610be383611486565b6001600160a01b0384166000908152600e6020526040902054909150805b601054811015610c69578215610c57576000818152600b602052604081206004015461271090610c319086615be7565b610c3b9190615bfe565b9050610c478186615c20565b9450610c538185615c33565b9350505b80610c6181615c46565b915050610c01565b505050919050565b3360009081526001602052604090205460ff16610ca95760405162461bcd60e51b8152600401610ca090615c5f565b60405180910390fd5b6001600160a01b038416610cf65760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642075736572206164647265737360601b6044820152606401610ca0565b60008311610d165760405162461bcd60e51b8152600401610ca090615c87565b6001600160a01b038116610d3c5760405162461bcd60e51b8152600401610ca090615caf565b60088054906000610d4c83615c46565b90915550506001600160a01b038481166000908152600f602090815260408083208151608081018352600854815280840189815281840189815288881660608401818152855460018082018855968a52888a209551600490910290950194855592519484019490945551600283015551600390910180546001600160a01b0319169190961617909455928252600a90529081208054859290610def908490615c20565b90915550506008546040516001600160a01b03861691600080516020615f2583398151915291610e209187916156a6565b60405180910390a250505050565b6001600160a01b0382166000908152600260205260408120805482919084908110610e5b57610e5b615cde565b906000526020600020906009020190506000816006015442610e7d9190615c33565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260036020526040902054811015610f59576001600160a01b0383166000908152600360205260408120805483908110610edc57610edc615cde565b6000918252602082206002909102018054600182015460088a015492945090929091606490610f0d90600a90615be7565b610f179190615bfe565b9050828810610f4457612710610f2d8383615be7565b610f379190615bfe565b610f419087615c20565b95505b5050505080610f5290615c46565b9050610e92565b5093505050505b92915050565b610f6e615145565b6000610f7933610bd7565b905060008111610f9b5760405162461bcd60e51b8152600401610ca090615cf4565b336000908152600c602052604081208054839290610fba908490615c33565b925050819055508060116000828254610fd39190615c33565b9091555050601054336000908152600e6020908152604080832093909355601c90529081208054839290611008908490615c20565b90915550506008805490600061101d83615c46565b9091555050336000908152600f602090815260409182902082516080810184526008548152918201849052600754909282019061105a9042615c20565b8152600080516020615ec5833981519152602091820181905283546001808201865560009586528386208551600490930201918255848401519082015560408401516002820155606090930151600390930180546001600160a01b0319166001600160a01b0390941693909317909255908252600a9052600080516020615e6583398151915280548392906110f0908490615c20565b90915550506040518181523390600080516020615e858339815191529060200160405180910390a25061112161517b565b565b3360009081526020819052604090205460ff166111525760405162461bcd60e51b8152600401610ca090615c5f565b6001600160a01b03811660009081526020819052604090205460ff166111a65760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610ca0565b336001600160a01b038216036111f35760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb329039b2b63360711b6044820152606401610ca0565b6001600160a01b03166000908152602081905260409020805460ff19169055565b61121c615145565b6000805b828110156113cb57600084848381811061123c5761123c615cde565b3360009081526002602090815260409091205491029290920135925050811061126557506113b9565b33600090815260026020526040812080548390811061128657611286615cde565b9060005260206000209060090201905060006112a23384610e2e565b905081600401548110156112b8575050506113b9565b60008260040154826112ca9190615c33565b9050806000036112dd57505050506113b9565b808360040160008282546112f19190615c20565b9091555061130190508187615c20565b336000908152600f6020526040908190208151608081019092529197508061132c87620f4240615c20565b8152602001838152602001600754426113459190615c20565b8152600080516020615ec5833981519152602091820152825460018082018555600094855293829020835160049092020190815590820151928101929092556040810151600283015560600151600390910180546001600160a01b0319166001600160a01b03909216919091179055505050505b806113c381615c46565b915050611220565b50801561144557600080516020615ec58339815191526000908152600a602052600080516020615e65833981519152805483929061140a908490615c20565b909155505060405181815233907f4e69fdc49495bcab2b4375781457ba16653a90eb4ffb6588351bdc39071433e29060200160405180910390a25b5061144e61517b565b5050565b3360009081526020819052604090205460ff166114815760405162461bcd60e51b8152600401610ca090615c5f565b601655565b6001600160a01b0381166000908152600c602090815260408083205460189092528220548082116114b85760006114c2565b6114c28183615c33565b949350505050565b606080600083806001600160401b038111156114e8576114e8615d1e565b604051908082528060200260200182016040528015611511578160200160208202803683370190505b509350806001600160401b0381111561152c5761152c615d1e565b604051908082528060200260200182016040528015611555578160200160208202803683370190505b50925060005b818110156116b257600087878381811061157757611577615cde565b905060200201602081019061158c91906154d8565b6001600160a01b03811660009081526006602052604090205487519192509081908890859081106115bf576115bf615cde565b6020908102919091018101919091526001600160a01b03808416600090815260049283905260408082205490516302c68be360e31b815291939216916316345f189161160d918791016154fa565b602060405180830381865afa15801561162a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164e9190615d34565b90506000670de0b6b3a76400006116658484615be7565b61166f9190615bfe565b90508088868151811061168457611684615cde565b60209081029190910101526116998188615c20565b96505050505080806116aa90615c46565b91505061155b565b50509250925092565b3360009081526020819052604090205460ff166116ea5760405162461bcd60e51b8152600401610ca090615c5f565b6116fe6001600160a01b038316338361518c565b6040518181526001600160a01b038316903390600080516020615f058339815191529060200160405180910390a35050565b611738615145565b6000805b336000908152600260205260409020548110156118435733600090815260026020526040812080548390811061177457611774615cde565b6000918252602090912060099091020160078101549091506001600160a01b0385811691161480156117b257506007810154600160a01b900460ff16155b156118305760006117c3338461291f565b9050816003015481111561182e5760008260030154826117e39190615c33565b90506117ef8186615c20565b9450808360030160008282546118059190615c20565b9091555050825460038401541061182c5760078301805460ff60a01b1916600160a01b1790555b505b505b508061183b81615c46565b91505061173c565b50600081116118645760405162461bcd60e51b8152600401610ca090615cf4565b3360009081526005602052604090205415611971576001600160a01b0380831660009081526004602081905260408083205490516302c68be360e31b81529293670de0b6b3a764000093869392909116916316345f18916118c7918991016154fa565b602060405180830381865afa1580156118e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119089190615d34565b6119129190615be7565b61191c9190615bfe565b33600090815260056020526040902054909150811061194a573360009081526005602052604081205561196f565b3360009081526005602052604081208054839290611969908490615c33565b90915550505b505b6001600160a01b03821660009081526006602052604081208054839290611999908490615c33565b9091555050336000908152600f6020526040808220815160808101909252600980549193839291906119ca83615c46565b919050558152602001838152602001600754426119e79190615c20565b81526001600160a01b0385811660209283018190528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b03191691909316179091558352600a905281208054839290611a62908490615c20565b90915550506040513390600080516020615ea583398151915290611a8a9084906000906156a6565b60405180910390a250611a9b61517b565b50565b60198181548110611aae57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b3360009081526020819052604090205460ff16611b055760405162461bcd60e51b8152600401610ca090615c5f565b601555565b60036020528160005260406000208181548110611b2657600080fd5b600091825260209091206002909102018054600190910154909250905082565b3360009081526001602052604090205460ff16611b755760405162461bcd60e51b8152600401610ca090615c5f565b828114611bbc5760405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606401610ca0565b82611bf85760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610ca0565b6000805b84811015611ea2576000868683818110611c1857611c18615cde565b9050602002016020810190611c2d91906154d8565b6001600160a01b031603611c535760405162461bcd60e51b8152600401610ca090615d4d565b6000848483818110611c6757611c67615cde565b9050602002013511611c8b5760405162461bcd60e51b8152600401610ca090615c87565b838382818110611c9d57611c9d615cde565b90506020020135600c6000888885818110611cba57611cba615cde565b9050602002016020810190611ccf91906154d8565b6001600160a01b03168152602081019190915260400160002054611cf39084615c33565b611cfd9190615c20565b9150600d6000878784818110611d1557611d15615cde565b9050602002016020810190611d2a91906154d8565b6001600160a01b03166001600160a01b0316815260200190815260200160002054600003611db157838382818110611d6457611d64615cde565b90506020020135600d6000888885818110611d8157611d81615cde565b9050602002016020810190611d9691906154d8565b6001600160a01b031681526020810191909152604001600020555b838382818110611dc357611dc3615cde565b90506020020135600c6000888885818110611de057611de0615cde565b9050602002016020810190611df591906154d8565b6001600160a01b03168152602081019190915260400160002055858582818110611e2157611e21615cde565b9050602002016020810190611e3691906154d8565b6001600160a01b03167fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839858584818110611e7257611e72615cde565b90506020020135604051611e8891815260200190565b60405180910390a280611e9a81615c46565b915050611bfc565b508060116000828254611eb59190615c20565b90915550505050505050565b611ec9615145565b60008211611f095760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610ca0565b60008111611f295760405162461bcd60e51b8152600401610ca090615d76565b601554821015611f715760405162461bcd60e51b815260206004820152601360248201527256616c75652062656c6f77206d696e696d756d60681b6044820152606401610ca0565b6000611f7c33611486565b905080831115611f9e5760405162461bcd60e51b8152600401610ca090615da2565b60088054906000611fae83615c46565b90915550506008543360009081526018602052604081208054869290611fd5908490615c20565b909155505060408051608081018252858152602080820186815233838501818152426060860190815260008381526014865287812089825286528781209651875593516001808801919091559151600280880180546001600160a01b039384166001600160a01b03199182161790915592516003909801979097558751808901909852928752938601878152601980548084018255948190529651939095027f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969581018054949093169390941692909217905591517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96969091015590546120da9190615c33565b336000818152601a6020908152604080832086845290915290819020929092559051600080516020615ee58339815191529061211990869085906156a6565b60405180910390a2505061144e61517b565b60195460609081908190806001600160401b0381111561214d5761214d615d1e565b604051908082528060200260200182016040528015612176578160200160208202803683370190505b509350806001600160401b0381111561219157612191615d1e565b6040519080825280602002602001820160405280156121ba578160200160208202803683370190505b509250806001600160401b038111156121d5576121d5615d1e565b60405190808252806020026020018201604052801561220e57816020015b6121fb6153cd565b8152602001906001900390816121f35790505b50915060005b8181101561234b5760006019828154811061223157612231615cde565b60009182526020918290206040805180820190915260029092020180546001600160a01b031680835260019091015492820192909252875190925087908490811061227e5761227e615cde565b60200260200101906001600160a01b031690816001600160a01b03168152505080602001518583815181106122b5576122b5615cde565b60209081029190910181019190915281516001600160a01b039081166000908152601483526040808220858501518352845290819020815160808101835281548152600182015494810194909452600281015490921690830152600301546060820152845185908490811061232c5761232c615cde565b602002602001018190525050808061234390615c46565b915050612214565b5050909192565b3360009081526020819052604090205460ff166123815760405162461bcd60e51b8152600401610ca090615c5f565b6001600160a01b03918216600090815260046020526040902080546001600160a01b03191691909216179055565b3360009081526020819052604090205460ff166123de5760405162461bcd60e51b8152600401610ca090615c5f565b6001600160a01b0381166124045760405162461bcd60e51b8152600401610ca090615d4d565b6001600160a01b03811660009081526020819052604090205460ff161561245d5760405162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9037bbb732b960991b6044820152606401610ca0565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b3360009081526001602052604090205460ff166124b05760405162461bcd60e51b8152600401610ca090615c5f565b60026000896001600160a01b03166001600160a01b031681526020019081526020016000206040518061014001604052808981526020018881526020018781526020016000815260200160008152602001848152602001838152602001866001600160a01b03168152602001600015158152602001858152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160070160146101000a81548160ff0219169083151502179055506101208201518160080155505082600560008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546126289190615c20565b90915550506001600160a01b03841660009081526006602052604081208054899290612655908490615c20565b90915550505050505050505050565b6001600160a01b0381166000908152600260209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561274057600084815260209081902060408051610140810182526009860290920180548352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460c084015260078101546001600160a01b03811660e0850152600160a01b900460ff16151561010084015260080154610120830152908352909201910161269c565b505050509050919050565b6001600160a01b038116600090815260026020526040812054815b81811015612918576001600160a01b038416600090815260026020526040812080548390811061279857612798615cde565b600091825260209182902060408051610140810182526009909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260078201546001600160a01b03811660e083015260ff600160a01b909104161515610100820181905260089092015461012082015291506129055760e0810180516001600160a01b03908116600090815260046020819052604080832054945190516302c68be360e31b81529294909316926316345f189261287992016154fa565b602060405180830381865afa158015612896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ba9190615d34565b90506000826060015183600001516128d29190615c33565b90506000670de0b6b3a76400006128e98385615be7565b6128f39190615bfe565b90506128ff8188615c20565b96505050505b508061291081615c46565b915050612766565b5050919050565b6001600160a01b038216600090815260026020526040812080548291908490811061294c5761294c615cde565b90600052602060002090600902019050600081600601544261296e9190615c33565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260036020526040902054811015610f59576001600160a01b03831660009081526003602052604081208054839081106129cd576129cd615cde565b600091825260209091206002909102018054600182015491925090818710612a1757875461271090612a00908390615be7565b612a0a9190615bfe565b612a149086615c20565b94505b50505080612a2490615c46565b9050612983565b6000612a356151e9565b805490915060ff600160401b82041615906001600160401b0316600081158015612a5c5750825b90506000826001600160401b03166001148015612a785750303b155b905081158015612a86575080155b15612aa45760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315612acd57845460ff60401b1916600160401b1785555b612ad5615212565b3360009081526020818152604082208054600160ff1991821681179092557f4cfa3c6903140891ecff713e237b1f1746362568dfb5e8e9bc37719e4f37e0c580548216831790557f3e1f9e6abae6b647fdc3c5896ef1871ceb3c98e9e72852da3f17d161a860f76c80548216831790557f3517cbb3edfcef55b3b32be7021bc73ef070f4a8bad0d4b389b96924cf17b7418054821683179055738a9281ecece9b599c2f42d829c3d0d8e74b7083e84527f968a1791ad31618c63b086103baa804af57c3ca0efa33a191010fbb7741579fc80549091169091179055600c905269021e19e0c9bab24000007f649cbac87391465cfe24c65b052f0edf3b8486f136e0b91262d76d1f34d7826b8190556011805491929091612bf6908490615c20565b90915550506201fa4060075560646013558315612c4d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b3360009081526020819052604090205460ff16612c835760405162461bcd60e51b8152600401610ca090615c5f565b60008111612ce15760405162461bcd60e51b815260206004820152602560248201527f4d61782070657263656e74616765206d75737420626520677265617465722074604482015264068616e20360dc1b6064820152608401610ca0565b601355565b3360009081526020819052604090205460ff16612d155760405162461bcd60e51b8152600401610ca090615c5f565b612d2e600080516020615ec5833981519152338361518c565b604051818152600080516020615ec5833981519152903390600080516020615f058339815191529060200160405180910390a350565b3360009081526020819052604090205460ff16612d935760405162461bcd60e51b8152600401610ca090615c5f565b60105460009015612dde576000600b60006001601054612db39190615c33565b81526020019081526020016000209050612dda846011548360010154846002015487615222565b9150505b601354811115612e295760405162461bcd60e51b81526020600482015260166024820152750aadcd8dec6d640e0cae4c6cadce8c2ceca40d0d2ced60531b6044820152606401610ca0565b6040805160c08101825285815260208082018681526011548385019081526060808501888152608086018881524260a08801908152601080546000908152600b89528a90209851895595516001890155935160028801559051600387015551600486015590516005909401939093555483518781529182018590529281018590527feadbedb993dfca23e4c79bf4fa5fe531c2e0e926258fabb8445e8bc5c472780f910160405180910390a260108054906000612ee583615c46565b919050555050505050565b3360009081526001602052604090205460ff16612f1f5760405162461bcd60e51b8152600401610ca090615c5f565b612f2f8686868686864242612481565b505050505050565b33600090815260146020908152604080832084845290915290208054612f6f5760405162461bcd60e51b8152600401610ca090615dd2565b60028101546001600160a01b03163314612f9b5760405162461bcd60e51b8152600401610ca090615dfd565b805460165460009061271090612fb19084615be7565b612fbb9190615bfe565b33600090815260186020526040812080549293508492909190612fdf908490615c33565b9091555050801561302857336000908152600c602052604081208054839290613009908490615c33565b9250508190555080601160008282546130229190615c33565b90915550505b801561307257336001600160a01b03167f4725a4d4de9bff212d0885095e27515072f73f427df55e52f37f241321ef88f982866040516130699291906156a6565b60405180910390a25b336000818152601460209081526040808320888452825280832083815560018082018590556002820180546001600160a01b03191690556003909101849055938352601a825280832088845290915281205460195490926130d291615c33565b9050808214613193576000601982815481106130f0576130f0615cde565b60009182526020918290206040805180820190915260029092020180546001600160a01b0316825260010154918101919091526019805491925082918590811061313c5761313c615cde565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b03938416178155938101516001909401939093558351168152601a8252604080822093830151825292909152208290555b60198054806131a4576131a4615e25565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001018290559190925533808352601a825260408084208a855283528084209390935591518881527f73d12dec3eb3b445b6c9feb2fd559ba7c852c525bc1e59d8f7ff760c55df041d910160405180910390a2505050505050565b6060818311156132665760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610ca0565b60105482106132ad5760405162461bcd60e51b8152602060048201526013602482015272115b9908195c1bd8da081b9bdd08199bdd5b99606a1b6044820152606401610ca0565b60006132b98484615c33565b6132c4906001615c20565b90506000816001600160401b038111156132e0576132e0615d1e565b60405190808252806020026020018201604052801561331957816020015b6133066153fe565b8152602001906001900390816132fe5790505b50905060005b828110156133ba57600b60006133358389615c20565b81526020019081526020016000206040518060c0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152505082828151811061339c5761339c615cde565b602002602001018190525080806133b290615c46565b91505061331f565b50949350505050565b6133cb615145565b600081116133eb5760405162461bcd60e51b8152600401610ca090615c87565b6000601254116134345760405162461bcd60e51b81526020600482015260146024820152734275796f7574206e6f7420617661696c61626c6560601b6044820152606401610ca0565b600061343f33611486565b9050808211156134615760405162461bcd60e51b8152600401610ca090615da2565b612710613470826109c4615be7565b61347a9190615bfe565b8210156134ba5760405162461bcd60e51b815260206004820152600e60248201526d416d6f756e7420746f6f206c6f7760901b6044820152606401610ca0565b6000612710601254846134cd9190615be7565b6134d79190615bfe565b336000908152600c60205260408120805492935085929091906134fb908490615c33565b9250508190555082601160008282546135149190615c33565b9091555050336000908152601c602052604081208054839290613538908490615c20565b90915550506008805490600061354d83615c46565b9091555050336000908152600f602090815260409182902082516080810184526008548152918201849052600754909282019061358a9042615c20565b8152600080516020615ec5833981519152602091820181905283546001808201865560009586528386208551600490930201918255848401519082015560408401516002820155606090930151600390930180546001600160a01b0319166001600160a01b0390941693909317909255908252600a9052600080516020615e658339815191528054839290613620908490615c20565b90915550506040518181523390600080516020615e858339815191529060200160405180910390a25050611a9b61517b565b601b818154811061366257600080fd5b6000918252602090912060069091020180546001820154600283015460038401546004850154600590950154939550919390926001600160a01b03918216911686565b6136ad6153cd565b506001600160a01b03918216600090815260146020908152604080832093835292815290829020825160808101845281548152600182015492810192909252600281015490931691810191909152600390910154606082015290565b3360009081526020819052604090205460ff166137385760405162461bcd60e51b8152600401610ca090615c5f565b61271081111561378a5760405162461bcd60e51b815260206004820152601d60248201527f50657263656e746167652063616e6e6f742065786365656420313030250000006044820152606401610ca0565b601255565b613797615145565b3360009081526002602052604090205481106137ed5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610ca0565b33600090815260026020526040812080548390811061380e5761380e615cde565b906000526020600020906009020190508060070160149054906101000a900460ff16156138705760405162461bcd60e51b815260206004820152601060248201526f56657374696e6720636f6d706c65746560801b6044820152606401610ca0565b600061387c338461291f565b905081600301548110156138c95760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610ca0565b60008260030154826138db9190615c33565b9050600081116138fd5760405162461bcd60e51b8152600401610ca090615cf4565b808360030160008282546139119190615c20565b909155505082546003840154106139385760078301805460ff60a01b1916600160a01b1790555b3360009081526005602052604090205415613a495760078301546001600160a01b0390811660008181526004602081905260408083205490516302c68be360e31b81529294670de0b6b3a764000094879492909116926316345f189261399f9291016154fa565b602060405180830381865afa1580156139bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e09190615d34565b6139ea9190615be7565b6139f49190615bfe565b336000908152600560205260409020549091508110613a225733600090815260056020526040812055613a47565b3360009081526005602052604081208054839290613a41908490615c33565b90915550505b505b60078301546001600160a01b031660009081526006602052604081208054839290613a75908490615c33565b9091555050336000908152600f602052604080822081516080810190925260098054919383929190613aa683615c46565b91905055815260200183815260200160075442613ac39190615c20565b81526007860180546001600160a01b039081166020938401528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b0319169183169190911790559054168352600a905281208054839290613b46908490615c20565b90915550506040513390600080516020615ea583398151915290613b6e9084906000906156a6565b60405180910390a2505050611a9b61517b565b613bb5604051806080016040528060008152602001600081526020016000815260200160006001600160a01b031681525090565b6001600160a01b0383166000908152600f60205260408120905b8154811015613c7a5783828281548110613beb57613beb615cde565b90600052602060002090600402016000015403613c6857818181548110613c1457613c14615cde565b6000918252602091829020604080516080810182526004909302909101805483526001810154938301939093526002830154908201526003909101546001600160a01b031660608201529250610f60915050565b80613c7281615c46565b915050613bcf565b5060405162461bcd60e51b8152600401610ca090615e3b565b3360009081526020819052604090205460ff16613cc25760405162461bcd60e51b8152600401610ca090615c5f565b6001600160a01b038316613ce85760405162461bcd60e51b8152600401610ca090615caf565b600081118015613cfa57506127108111155b613d3b5760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b6044820152606401610ca0565b6001600160a01b0383166000908152600360205260408120613d5c91615434565b6000825b612710821015613df95782612710613d788285615c20565b1115613d8d57613d8a83612710615c33565b90505b6001600160a01b0386166000908152600360209081526040808320815180830190925285825281830185815281546001818101845592865293909420915160029093029091019182559151910155613de58184615c20565b9250613df18583615c20565b915050613d60565b6040516001600160a01b038616907fde4b6ccc38b84f88129403b65a309f9b1c41d4c316bc2118d7614e449b9d4c4590600090a25050505050565b613e3c6153fe565b6010548210613e7f5760405162461bcd60e51b815260206004820152600f60248201526e115c1bd8da081b9bdd08199bdd5b99608a1b6044820152606401610ca0565b506000908152600b6020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b60026020528160005260406000208181548110613ef457600080fd5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007880154600890980154969950949750929591949093916001600160a01b03811691600160a01b90910460ff16908a565b6001600160a01b038216600090815260026020526040812080546060928392909185908110613f8757613f87615cde565b600091825260208083206007600990930201918201546001600160a01b03168084526003909152604083205491935091816001600160401b03811115613fcf57613fcf615d1e565b604051908082528060200260200182016040528015613ff8578160200160208202803683370190505b5090506000826001600160401b0381111561401557614015615d1e565b60405190808252806020026020018201604052801561403e578160200160208202803683370190505b50905060005b838110156140eb576001600160a01b038516600090815260036020526040812080548390811061407657614076615cde565b906000526020600020906002020190508060000154876006015461409a9190615c20565b8483815181106140ac576140ac615cde565b60200260200101818152505080600101548383815181106140cf576140cf615cde565b6020908102919091010152506140e481615c46565b9050614044565b5090955093505050505b9250929050565b600080600080600061410d86610bd7565b9050600061411a87611486565b6001600160a01b03979097166000908152600c6020908152604080832054600d9092529091205490989297965094509092505050565b6001600160a01b0381166000908152600f60209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561274057600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b031660608301529083529092019101614188565b600f602052816000526040600020818154811061420157600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526020819052604090205460ff166142635760405162461bcd60e51b8152600401610ca090615c5f565b600755565b60606001600160a01b0382166142905760405162461bcd60e51b8152600401610ca090615d4d565b6000805b601b5481101561434057836001600160a01b0316601b82815481106142bb576142bb615cde565b60009182526020909120600460069092020101546001600160a01b0316148061431b5750836001600160a01b0316601b82815481106142fc576142fc615cde565b60009182526020909120600560069092020101546001600160a01b0316145b1561432e578161432a81615c46565b9250505b8061433881615c46565b915050614294565b508060000361438257604080516000808252602082019092529061437a565b614367615455565b81526020019060019003908161435f5790505b509392505050565b6000816001600160401b0381111561439c5761439c615d1e565b6040519080825280602002602001820160405280156143d557816020015b6143c2615455565b8152602001906001900390816143ba5790505b5090506000805b601b5481101561451e57856001600160a01b0316601b828154811061440357614403615cde565b60009182526020909120600460069092020101546001600160a01b031614806144635750856001600160a01b0316601b828154811061444457614444615cde565b60009182526020909120600560069092020101546001600160a01b0316145b1561450c57601b818154811061447b5761447b615cde565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a082015283518490849081106144f2576144f2615cde565b6020026020010181905250818061450890615c46565b9250505b8061451681615c46565b9150506143dc565b5090949350505050565b601b5460609083106145785760405162461bcd60e51b8152602060048201526019602482015278537461727420696e646578206f7574206f6620626f756e647360381b6044820152606401610ca0565b60006145848385615c20565b601b549091508111156145965750601b545b60006145a28583615c33565b6001600160401b038111156145b9576145b9615d1e565b6040519080825280602002602001820160405280156145f257816020015b6145df615455565b8152602001906001900390816145d75790505b509050845b828110156133ba57601b818154811061461257614612615cde565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152826146808884615c33565b8151811061469057614690615cde565b602002602001018190525080806146a690615c46565b9150506145f7565b6146b6615145565b336000908152600f6020526040902080546147095760405162461bcd60e51b81526020600482015260136024820152724e6f207374616b657320617661696c61626c6560681b6044820152606401610ca0565b8161474e5760405162461bcd60e51b8152602060048201526015602482015274139bc81cdd185ad94812511cc81c1c9bdd9a591959605a1b6044820152606401610ca0565b60005b828110156148dd57600084848381811061476d5761476d615cde565b9050602002013590506000805b84548110156148aa57600085828154811061479757614797615cde565b906000526020600020906004020190508381600001541480156147be575060008160010154115b156148975780600201544210156148065760405162461bcd60e51b815260206004820152600c60248201526b14dd185ad9481b1bd8dad95960a21b6044820152606401610ca0565b60018101805460038301546000928390556001600160a01b0316808352600a60205260408320805492939192849290614840908490615c33565b9091555061485a90506001600160a01b038216338461518c565b336001600160a01b0316600080516020615f2583398151915283886040516148839291906156a6565b60405180910390a2600194505050506148aa565b50806148a281615c46565b91505061477a565b50806148c85760405162461bcd60e51b8152600401610ca090615e3b565b505080806148d590615c46565b915050614751565b505061144e61517b565b6060806000806148f685611486565b6001600160a01b0386166000908152600e602052604081205460105492935091614921908390615c33565b905080600003614952575050604080516000808252602082018181528284019093529095509093509150614ab89050565b806001600160401b0381111561496a5761496a615d1e565b604051908082528060200260200182016040528015614993578160200160208202803683370190505b509550806001600160401b038111156149ae576149ae615d1e565b6040519080825280602002602001820160405280156149d7578160200160208202803683370190505b50945060005b81811015614ab35760006149f18285615c20565b905080888381518110614a0657614a06615cde565b60209081029190910101528415614a7f576000818152600b602052604081206004015461271090614a379088615be7565b614a419190615bfe565b905080888481518110614a5657614a56615cde565b6020908102919091010152614a6b8188615c20565b9650614a778187615c33565b955050614aa0565b6000878381518110614a9357614a93615cde565b6020026020010181815250505b5080614aab81615c46565b9150506149dd565b505050505b9193909250565b614ac7615145565b6001600160a01b038216600090815260146020908152604080832084845290915290208054614b085760405162461bcd60e51b8152600401610ca090615dd2565b336001600160a01b03841603614b595760405162461bcd60e51b815260206004820152601660248201527543616e6e6f7420627579206f776e206c697374696e6760501b6044820152606401610ca0565b8054600182015460038301546000828411614b75576000614b7f565b614b7f8385615c33565b9050600084614b9083612710615be7565b614b9a9190615bfe565b90506000612710614bab8380615be7565b614bb59190615bfe565b90506000612710614bc68389615be7565b614bd09190615bfe565b90506000614bde8289615c33565b9050614bfa600080516020615ec5833981519152338d8a6152bb565b6001600160a01b038b166000908152600c6020526040812080548a9290614c22908490615c33565b9091555050336000908152600c602052604081208054839290614c46908490615c20565b90915550506001600160a01b038b16600090815260186020526040812080548a9290614c73908490615c33565b925050819055508160116000828254614c8c9190615c33565b90915550506001600160a01b038b1660009081526017602052604081208054899290614cb9908490615c20565b92505081905550601b6040518060c001604052808881526020014281526020018a81526020018981526020018d6001600160a01b03168152602001336001600160a01b031681525090806001815401808255809150506001900390600052602060002090600602016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050601460008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060008082016000905560018201600090556002820160006101000a8154906001600160a01b030219169055600382016000905550506000601a60008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002054905060006001601980549050614e689190615c33565b9050808214614f2957600060198281548110614e8657614e86615cde565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260198054919250829185908110614ed257614ed2615cde565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b03938416178155938101516001909401939093558351168152601a8252604080822093830151825292909152208290555b6019805480614f3a57614f3a615e25565b6001900381819060005260206000209060020201600080820160006101000a8154906001600160a01b030219169055600182016000905550509055601a60008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060009055336001600160a01b03168d6001600160a01b03167f7bb39d095b04a9986ed34adf14d74c33294d0a9e807f02bf634d532507422eba8b8f604051614ff49291906156a6565b60405180910390a3505050505050505050505061144e61517b565b336000908152601460209081526040808320858452909152902080546150475760405162461bcd60e51b8152600401610ca090615dd2565b60028101546001600160a01b031633146150735760405162461bcd60e51b8152600401610ca090615dfd565b600082116150935760405162461bcd60e51b8152600401610ca090615d76565b600181018290556040513390600080516020615ee5833981519152906150bc90859087906156a6565b60405180910390a2505050565b3360009081526020819052604090205460ff166150f85760405162461bcd60e51b8152600401610ca090615c5f565b6001600160a01b03811661511e5760405162461bcd60e51b8152600401610ca090615d4d565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600061514f6152fa565b80549091506001190161517557604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006151856152fa565b6001905550565b6151e483846001600160a01b031663a9059cbb85856040516024016151b292919061568d565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061531e565b505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610f60565b61521a615386565b6111216153ab565b600082158061522f575084155b1561523c575060006152b2565b60008561524b88612710615be7565b6152559190615bfe565b905060008461526687612710615be7565b6152709190615bfe565b9050808211615284576000925050506152b2565b60006152908284615c33565b905060006127106152a18784615be7565b6152ab9190615bfe565b9450505050505b95945050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526152f49186918216906323b872dd906084016151b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600080602060008451602086016000885af180615341576040513d6000823e3d81fd5b50506000513d91508115615359578060011415615366565b6001600160a01b0384163b155b156152f45783604051635274afe760e01b8152600401610ca091906154fa565b61538e6153b3565b61112157604051631afcd79f60e31b815260040160405180910390fd5b61517b615386565b60006153bd6151e9565b54600160401b900460ff16919050565b6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5080546000825560020290600052602060002090810190611a9b919061549d565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b5b808211156154b8576000808255600182015560020161549e565b5090565b80356001600160a01b03811681146154d357600080fd5b919050565b6000602082840312156154ea57600080fd5b6154f3826154bc565b9392505050565b6001600160a01b0391909116815260200190565b6000806000806080858703121561552457600080fd5b61552d856154bc565b93506020850135925060408501359150615549606086016154bc565b905092959194509250565b6000806040838503121561556757600080fd5b615570836154bc565b946020939093013593505050565b60008083601f84011261559057600080fd5b5081356001600160401b038111156155a757600080fd5b6020830191508360208260051b85010111156140f557600080fd5b600080602083850312156155d557600080fd5b82356001600160401b038111156155eb57600080fd5b6155f78582860161557e565b90969095509350505050565b60006020828403121561561557600080fd5b5035919050565b600081518084526020808501945080840160005b8381101561564c57815187529582019590820190600101615630565b509495945050505050565b60608152600061566a606083018661561c565b828103602084015261567c818661561c565b915050826040830152949350505050565b6001600160a01b03929092168252602082015260400190565b918252602082015260400190565b600080600080604085870312156156ca57600080fd5b84356001600160401b03808211156156e157600080fd5b6156ed8883890161557e565b9096509450602087013591508082111561570657600080fd5b506157138782880161557e565b95989497509550505050565b6000806040838503121561573257600080fd5b50508035926020909101359150565b80518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b60608082528451908201819052600090608090818401906020808901855b838110156157b05781516001600160a01b03168552938201939082019060010161578b565b5050858303818701526157c3838961561c565b868103604088015287518082528289019450908201925060005b81811015615800576157f0848651615741565b93820193928501926001016157dd565b50919998505050505050505050565b6000806040838503121561582257600080fd5b61582b836154bc565b9150615839602084016154bc565b90509250929050565b600080600080600080600080610100898b03121561585f57600080fd5b615868896154bc565b975060208901359650604089013595506060890135945061588b60808a016154bc565b979a969950949793969560a0850135955060c08501359460e001359350915050565b602080825282518282018190526000919060409081850190868401855b8281101561594e5781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0808201516001600160a01b03169086015261010080820151151590860152610120908101519085015261014090930192908501906001016158ca565b5091979650505050505050565b60008060006060848603121561597057600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c087890312156159a057600080fd5b6159a9876154bc565b95506020870135945060408701359350606087013592506159cc608088016154bc565b915060a087013590509295509295509295565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a08301525050565b6020808252825182820181905260009190848201906040850190845b81811015615a5b57615a488385516159df565b9284019260c09290920191600101615a35565b50909695505050505050565b60808101610f608284615741565b8051825260208082015190830152604080820151908301526060908101516001600160a01b0316910152565b60808101610f608284615a75565b600080600060608486031215615ac457600080fd5b615acd846154bc565b95602085013595506040909401359392505050565b60c08101610f6082846159df565b604081526000615b03604083018561561c565b82810360208401526152b2818561561c565b6020808252825182820181905260009190848201906040850190845b81811015615a5b57615b44838551615a75565b9284019260809290920191600101615b31565b602080825282518282018190526000919060409081850190868401855b8281101561594e5781518051855286810151878601528581015186860152606080820151908601526080808201516001600160a01b039081169187019190915260a091820151169085015260c09093019290850190600101615b74565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610f6057610f60615bd1565b600082615c1b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610f6057610f60615bd1565b81810381811115610f6057610f60615bd1565b600060018201615c5857615c58615bd1565b5060010190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6020808252600e908201526d125b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b602080825260159082015274496e76616c696420746f6b656e206164647265737360581b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f4e6f7468696e6720746f20636c61696d60801b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615d4657600080fd5b5051919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b602080825260129082015271496e76616c69642073616c6520707269636560701b604082015260600190565b602080825260169082015275496e73756666696369656e74206e6574207374616b6560501b604082015260600190565b602080825260119082015270131a5cdd1a5b99c81b9bdd08199bdd5b99607a1b604082015260600190565b6020808252600e908201526d2737ba103a34329039b2b63632b960911b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b6020808252600f908201526e14dd185ad9481b9bdd08199bdd5b99608a1b60408201526060019056feb0775d57c3eeb070f58d410e36e9ff396813a5d76997d9a91bdf10f0798296f0a65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b5172100000000000000000000000055d398326f99059ff775485246999027b31979558e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031ca92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafefa264697066735822122052a38369afdf48e350bece318a3cbff34059932d6dce398dc1f50c1fac30096164736f6c63430008140033", + "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615f9980620000e66000396000f3fe608060405234801561001057600080fd5b50600436106103635760003560e01c8062159da614610368578063013745181461038e578063022914a7146103c45780630519da32146103f7578063092c7610146104005780630a84096a146104205780630a910a6d146104335780630c7d63861461043c57806313baee5b14610446578063173825d9146104665780631764303d146104795780631aefa2d11461048c5780631eb9e53e1461049f5780632ded58aa146104b25780632e46fed8146104bb5780633ba8396e146104e45780633c92f98d146105075780633f35e7221461052957806343a32f891461053c57806343c7c011146105b7578063441a4175146105ca5780634a61f1e5146105eb57806351e624721461060b57806351f6cf2f1461061e578063549e61d31461063f5780635811622714610652578063592d1dd11461066557806361d1080b1461068557806362cd6a091461068d57806367a74ddc146106a45780636ef569a5146106b75780637065cb48146106c057806374d1c8e3146106d357806375060a0b146106e65780637a0c6dc0146107065780637bc221ac146107265780637e6d99261461073957806380ca0ecf146107625780638129fc1c1461077557806382b756811461077d57806384e8520a14610790578063853e0df2146107b05780638851ec0f146107c35780638939d787146107d65780638f82818f146107df5780639437e32e146107ff578063953d16bf1461081257806396fd111a146108255780639cb6f556146108455780639f3a676c14610858578063a0d46758146108a4578063aaf4b04d146108c4578063ac97b417146108d7578063b6c3dc4c146108ea578063b92a349f1461090a578063bc0bc6ba1461091d578063bd84477d1461093d578063bed9757e146109a5578063c2676603146109c6578063c32d3ae2146109ce578063c6b61e4c14610a01578063c7b530b014610a71578063cc573a9114610a91578063ce13d09014610acd578063ce3432c314610ae0578063cfcf331914610b00578063d532bdfe14610b13578063da1b436414610b26578063e88f8e6614610b46578063eacdc5ff14610b59578063eb44e0a314610b62578063ef5d9ae814610b75578063f2bb563014610b95578063fe2f50d014610ba8578063fee6018c14610bb1578063ffecf51614610bc4575b600080fd5b61037b6103763660046154dd565b610bd7565b6040519081526020015b60405180910390f35b6103b761039c3660046154dd565b6004602052600090815260409020546001600160a01b031681565b60405161038591906154ff565b6103e76103d23660046154dd565b60006020819052908152604090205460ff1681565b6040519015158152602001610385565b61037b60075481565b61037b61040e3660046154dd565b60066020526000908152604090205481565b61037b61042e366004615513565b610c71565b61037b60125481565b610444610da9565b005b61037b6104543660046154dd565b600c6020526000908152604090205481565b6104446104743660046154dd565b610f6f565b610444610487366004615581565b611060565b61044461049a3660046155c2565b61129e565b61037b6104ad3660046154dd565b6112d2565b61037b60115481565b61037b6104c93660046154dd565b6001600160a01b03166000908152601c602052604090205490565b6103e76104f23660046154dd565b60016020526000908152604090205460ff1681565b61051a610515366004615581565b611316565b60405161038593929190615616565b610444610537366004615513565b611507565b61058861054a366004615513565b60146020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610385949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b6104446105c53660046154dd565b61157c565b6105dd6105d83660046155c2565b6118ea565b60405161038592919061564c565b61037b6105f93660046154dd565b60186020526000908152604090205481565b6104446106193660046155c2565b611922565b61063161062c366004615513565b611956565b604051610385929190615665565b61044461064d366004615673565b611992565b6104446106603660046156de565b611cff565b61037b6106733660046154dd565b60056020526000908152604090205481565b601b5461037b565b610695611f69565b6040516103859392919061572c565b6104446106b23660046157ce565b612190565b61037b60165481565b6104446106ce3660046154dd565b6121ed565b6104446106e1366004615801565b6122bf565b61037b6106f43660046154dd565b600a6020526000908152604090205481565b6107196107143660046154dd565b6124a2565b604051610385919061586c565b61037b6107343660046154dd565b612589565b61037b6107473660046154dd565b6001600160a01b031660009081526017602052604090205490565b61037b610770366004615513565b61275d565b610444612869565b61044461078b3660046155c2565b612a91565b61037b61079e3660046154dd565b600d6020526000908152604090205481565b6104446107be3660046155c2565b612b23565b6104446107d136600461591a565b612ba1565b61037b60135481565b61037b6107ed3660046154dd565b60176020526000908152604090205481565b61044461080d366004615946565b612d2d565b6104446108203660046155c2565b612d74565b6108386108333660046156de565b613062565b60405161038591906159d8565b6104446108533660046155c2565b613201565b61086b6108663660046155c2565b613490565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610385565b6108b76108b2366004615513565b6134e3565b6040516103859190615a26565b6104446108d23660046155c2565b613547565b6104446108e53660046155c2565b6135cd565b6108fd6108f8366004615513565b6139bf565b6040516103859190615a60565b610444610918366004615a6e565b613ad1565b61093061092b3660046155c2565b613c72565b6040516103859190615aa1565b61095061094b366004615513565b613d16565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610385565b6109b86109b3366004615513565b613d94565b604051610385929190615aaf565b6103e761037b565b6109e16109dc3660046154dd565b613f3a565b604080519485526020850193909352918301526060820152608001610385565b610a44610a0f3660046155c2565b600b60205260009081526040902080546001820154600283015460038401546004850154600590950154939492939192909186565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610385565b610a84610a7f3660046154dd565b613f8e565b6040516103859190615ad4565b610aa4610a9f366004615513565b614023565b604080519485526020850193909352918301526001600160a01b03166060820152608001610385565b610444610adb3660046155c2565b614072565b610af3610aee3660046154dd565b6140a6565b6040516103859190615b16565b610af3610b0e3660046156de565b614366565b610444610b21366004615581565b6144ec565b61037b610b343660046154dd565b600e6020526000908152604090205481565b61051a610b543660046154dd565b614725565b61037b60105481565b610444610b70366004615513565b6148fd565b61037b610b833660046154dd565b601c6020526000908152604090205481565b610444610ba33660046156de565b614e4d565b61037b60155481565b610444610bbf366004615b90565b614f07565b610444610bd23660046154dd565b6150ce565b600080610be3836112d2565b6001600160a01b0384166000908152600e6020526040902054909150805b601054811015610c69578215610c57576000818152600b602052604081206004015461271090610c319086615c06565b610c3b9190615c1d565b9050610c478186615c3f565b9450610c538185615c52565b9350505b80610c6181615c65565b915050610c01565b505050919050565b6001600160a01b0382166000908152600260205260408120805482919084908110610c9e57610c9e615c7e565b906000526020600020906009020190506000816006015442610cc09190615c52565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260036020526040902054811015610d9c576001600160a01b0383166000908152600360205260408120805483908110610d1f57610d1f615c7e565b6000918252602082206002909102018054600182015460088a015492945090929091606490610d5090600a90615c06565b610d5a9190615c1d565b9050828810610d8757612710610d708383615c06565b610d7a9190615c1d565b610d849087615c3f565b95505b5050505080610d9590615c65565b9050610cd5565b5093505050505b92915050565b610db161514a565b6000610dbc33610bd7565b905060008111610de75760405162461bcd60e51b8152600401610dde90615c94565b60405180910390fd5b336000908152600c602052604081208054839290610e06908490615c52565b925050819055508060116000828254610e1f9190615c52565b9091555050601054336000908152600e6020908152604080832093909355601c90529081208054839290610e54908490615c3f565b909155505060088054906000610e6983615c65565b9091555050336000908152600f6020908152604091829020825160808101845260085481529182018490526007549092820190610ea69042615c3f565b8152600080516020615ee4833981519152602091820181905283546001808201865560009586528386208551600490930201918255848401519082015560408401516002820155606090930151600390930180546001600160a01b0319166001600160a01b0390941693909317909255908252600a9052600080516020615e848339815191528054839290610f3c908490615c3f565b90915550506040518181523390600080516020615ea48339815191529060200160405180910390a250610f6d615180565b565b3360009081526020819052604090205460ff16610f9e5760405162461bcd60e51b8152600401610dde90615cbe565b6001600160a01b03811660009081526020819052604090205460ff16610ff25760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610dde565b336001600160a01b0382160361103f5760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb329039b2b63360711b6044820152606401610dde565b6001600160a01b03166000908152602081905260409020805460ff19169055565b61106861514a565b6000805b8281101561121757600084848381811061108857611088615c7e565b336000908152600260209081526040909120549102929092013592505081106110b15750611205565b3360009081526002602052604081208054839081106110d2576110d2615c7e565b9060005260206000209060090201905060006110ee3384610c71565b9050816004015481101561110457505050611205565b60008260040154826111169190615c52565b9050806000036111295750505050611205565b8083600401600082825461113d9190615c3f565b9091555061114d90508187615c3f565b336000908152600f6020526040908190208151608081019092529197508061117887620f4240615c3f565b8152602001838152602001600754426111919190615c3f565b8152600080516020615ee4833981519152602091820152825460018082018555600094855293829020835160049092020190815590820151928101929092556040810151600283015560600151600390910180546001600160a01b0319166001600160a01b03909216919091179055505050505b8061120f81615c65565b91505061106c565b50801561129157600080516020615ee48339815191526000908152600a602052600080516020615e848339815191528054839290611256908490615c3f565b909155505060405181815233907f4e69fdc49495bcab2b4375781457ba16653a90eb4ffb6588351bdc39071433e29060200160405180910390a25b5061129a615180565b5050565b3360009081526020819052604090205460ff166112cd5760405162461bcd60e51b8152600401610dde90615cbe565b601655565b6001600160a01b0381166000908152600c6020908152604080832054601890925282205480821161130457600061130e565b61130e8183615c52565b949350505050565b606080600083806001600160401b0381111561133457611334615ce6565b60405190808252806020026020018201604052801561135d578160200160208202803683370190505b509350806001600160401b0381111561137857611378615ce6565b6040519080825280602002602001820160405280156113a1578160200160208202803683370190505b50925060005b818110156114fe5760008787838181106113c3576113c3615c7e565b90506020020160208101906113d891906154dd565b6001600160a01b038116600090815260066020526040902054875191925090819088908590811061140b5761140b615c7e565b6020908102919091018101919091526001600160a01b03808416600090815260049283905260408082205490516302c68be360e31b815291939216916316345f1891611459918791016154ff565b602060405180830381865afa158015611476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149a9190615cfc565b90506000670de0b6b3a76400006114b18484615c06565b6114bb9190615c1d565b9050808886815181106114d0576114d0615c7e565b60209081029190910101526114e58188615c3f565b96505050505080806114f690615c65565b9150506113a7565b50509250925092565b3360009081526020819052604090205460ff166115365760405162461bcd60e51b8152600401610dde90615cbe565b61154a6001600160a01b0383163383615191565b6040518181526001600160a01b038316903390600080516020615f248339815191529060200160405180910390a35050565b61158461514a565b6000805b3360009081526002602052604090205481101561168f573360009081526002602052604081208054839081106115c0576115c0615c7e565b6000918252602090912060099091020160078101549091506001600160a01b0385811691161480156115fe57506007810154600160a01b900460ff16155b1561167c57600061160f338461275d565b9050816003015481111561167a57600082600301548261162f9190615c52565b905061163b8186615c3f565b9450808360030160008282546116519190615c3f565b909155505082546003840154106116785760078301805460ff60a01b1916600160a01b1790555b505b505b508061168781615c65565b915050611588565b50600081116116b05760405162461bcd60e51b8152600401610dde90615c94565b33600090815260056020526040902054156117bd576001600160a01b0380831660009081526004602081905260408083205490516302c68be360e31b81529293670de0b6b3a764000093869392909116916316345f1891611713918991016154ff565b602060405180830381865afa158015611730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117549190615cfc565b61175e9190615c06565b6117689190615c1d565b33600090815260056020526040902054909150811061179657336000908152600560205260408120556117bb565b33600090815260056020526040812080548392906117b5908490615c52565b90915550505b505b6001600160a01b038216600090815260066020526040812080548392906117e5908490615c52565b9091555050336000908152600f60205260408082208151608081019092526009805491938392919061181683615c65565b919050558152602001838152602001600754426118339190615c3f565b81526001600160a01b0385811660209283018190528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b03191691909316179091558352600a9052812080548392906118ae908490615c3f565b90915550506040513390600080516020615ec4833981519152906118d6908490600090615665565b60405180910390a2506118e7615180565b50565b601981815481106118fa57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b3360009081526020819052604090205460ff166119515760405162461bcd60e51b8152600401610dde90615cbe565b601555565b6003602052816000526040600020818154811061197257600080fd5b600091825260209091206002909102018054600190910154909250905082565b3360009081526001602052604090205460ff166119c15760405162461bcd60e51b8152600401610dde90615cbe565b828114611a085760405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606401610dde565b82611a445760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610dde565b60005b83811015611cf8576000858583818110611a6357611a63615c7e565b9050602002016020810190611a7891906154dd565b6001600160a01b031603611a9e5760405162461bcd60e51b8152600401610dde90615d15565b6000838383818110611ab257611ab2615c7e565b9050602002013511611ad65760405162461bcd60e51b8152600401610dde90615d3e565b828282818110611ae857611ae8615c7e565b90506020020135600c6000878785818110611b0557611b05615c7e565b9050602002016020810190611b1a91906154dd565b6001600160a01b03166001600160a01b0316815260200190815260200160002054601154611b489190615c52565b611b529190615c3f565b601155600d6000868684818110611b6b57611b6b615c7e565b9050602002016020810190611b8091906154dd565b6001600160a01b03166001600160a01b0316815260200190815260200160002054600003611c0757828282818110611bba57611bba615c7e565b90506020020135600d6000878785818110611bd757611bd7615c7e565b9050602002016020810190611bec91906154dd565b6001600160a01b031681526020810191909152604001600020555b828282818110611c1957611c19615c7e565b90506020020135600c6000878785818110611c3657611c36615c7e565b9050602002016020810190611c4b91906154dd565b6001600160a01b03168152602081019190915260400160002055848482818110611c7757611c77615c7e565b9050602002016020810190611c8c91906154dd565b6001600160a01b03167fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839848484818110611cc857611cc8615c7e565b90506020020135604051611cde91815260200190565b60405180910390a280611cf081615c65565b915050611a47565b5050505050565b611d0761514a565b60008211611d475760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610dde565b60008111611d675760405162461bcd60e51b8152600401610dde90615d66565b601554821015611daf5760405162461bcd60e51b815260206004820152601360248201527256616c75652062656c6f77206d696e696d756d60681b6044820152606401610dde565b6000611dba336112d2565b905080831115611ddc5760405162461bcd60e51b8152600401610dde90615d92565b60088054906000611dec83615c65565b90915550506008543360009081526018602052604081208054869290611e13908490615c3f565b909155505060408051608081018252858152602080820186815233838501818152426060860190815260008381526014865287812089825286528781209651875593516001808801919091559151600280880180546001600160a01b039384166001600160a01b03199182161790915592516003909801979097558751808901909852928752938601878152601980548084018255948190529651939095027f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969581018054949093169390941692909217905591517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9696909101559054611f189190615c52565b336000818152601a6020908152604080832086845290915290819020929092559051600080516020615f0483398151915290611f579086908590615665565b60405180910390a2505061129a615180565b60195460609081908190806001600160401b03811115611f8b57611f8b615ce6565b604051908082528060200260200182016040528015611fb4578160200160208202803683370190505b509350806001600160401b03811115611fcf57611fcf615ce6565b604051908082528060200260200182016040528015611ff8578160200160208202803683370190505b509250806001600160401b0381111561201357612013615ce6565b60405190808252806020026020018201604052801561204c57816020015b6120396153d2565b8152602001906001900390816120315790505b50915060005b818110156121895760006019828154811061206f5761206f615c7e565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549282019290925287519092508790849081106120bc576120bc615c7e565b60200260200101906001600160a01b031690816001600160a01b03168152505080602001518583815181106120f3576120f3615c7e565b60209081029190910181019190915281516001600160a01b039081166000908152601483526040808220858501518352845290819020815160808101835281548152600182015494810194909452600281015490921690830152600301546060820152845185908490811061216a5761216a615c7e565b602002602001018190525050808061218190615c65565b915050612052565b5050909192565b3360009081526020819052604090205460ff166121bf5760405162461bcd60e51b8152600401610dde90615cbe565b6001600160a01b03918216600090815260046020526040902080546001600160a01b03191691909216179055565b3360009081526020819052604090205460ff1661221c5760405162461bcd60e51b8152600401610dde90615cbe565b6001600160a01b0381166122425760405162461bcd60e51b8152600401610dde90615d15565b6001600160a01b03811660009081526020819052604090205460ff161561229b5760405162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9037bbb732b960991b6044820152606401610dde565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b3360009081526001602052604090205460ff166122ee5760405162461bcd60e51b8152600401610dde90615cbe565b60026000896001600160a01b03166001600160a01b031681526020019081526020016000206040518061014001604052808981526020018881526020018781526020016000815260200160008152602001848152602001838152602001866001600160a01b03168152602001600015158152602001858152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160070160146101000a81548160ff0219169083151502179055506101208201518160080155505082600560008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546124669190615c3f565b90915550506001600160a01b03841660009081526006602052604081208054899290612493908490615c3f565b90915550505050505050505050565b6001600160a01b0381166000908152600260209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561257e57600084815260209081902060408051610140810182526009860290920180548352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460c084015260078101546001600160a01b03811660e0850152600160a01b900460ff1615156101008401526008015461012083015290835290920191016124da565b505050509050919050565b6001600160a01b038116600090815260026020526040812054815b81811015612756576001600160a01b03841660009081526002602052604081208054839081106125d6576125d6615c7e565b600091825260209182902060408051610140810182526009909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260078201546001600160a01b03811660e083015260ff600160a01b909104161515610100820181905260089092015461012082015291506127435760e0810180516001600160a01b03908116600090815260046020819052604080832054945190516302c68be360e31b81529294909316926316345f18926126b792016154ff565b602060405180830381865afa1580156126d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f89190615cfc565b90506000826060015183600001516127109190615c52565b90506000670de0b6b3a76400006127278385615c06565b6127319190615c1d565b905061273d8188615c3f565b96505050505b508061274e81615c65565b9150506125a4565b5050919050565b6001600160a01b038216600090815260026020526040812080548291908490811061278a5761278a615c7e565b9060005260206000209060090201905060008160060154426127ac9190615c52565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260036020526040902054811015610d9c576001600160a01b038316600090815260036020526040812080548390811061280b5761280b615c7e565b6000918252602090912060029091020180546001820154919250908187106128555787546127109061283e908390615c06565b6128489190615c1d565b6128529086615c3f565b94505b5050508061286290615c65565b90506127c1565b60006128736151ee565b805490915060ff600160401b82041615906001600160401b031660008115801561289a5750825b90506000826001600160401b031660011480156128b65750303b155b9050811580156128c4575080155b156128e25760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561290b57845460ff60401b1916600160401b1785555b612913615217565b3360009081526020818152604082208054600160ff1991821681179092557f4cfa3c6903140891ecff713e237b1f1746362568dfb5e8e9bc37719e4f37e0c580548216831790557f3e1f9e6abae6b647fdc3c5896ef1871ceb3c98e9e72852da3f17d161a860f76c80548216831790557f3517cbb3edfcef55b3b32be7021bc73ef070f4a8bad0d4b389b96924cf17b7418054821683179055738a9281ecece9b599c2f42d829c3d0d8e74b7083e84527f968a1791ad31618c63b086103baa804af57c3ca0efa33a191010fbb7741579fc80549091169091179055600c905269021e19e0c9bab24000007f649cbac87391465cfe24c65b052f0edf3b8486f136e0b91262d76d1f34d7826b8190556011805491929091612a34908490615c3f565b90915550506201fa4060075560646013558315611cf857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b3360009081526020819052604090205460ff16612ac05760405162461bcd60e51b8152600401610dde90615cbe565b60008111612b1e5760405162461bcd60e51b815260206004820152602560248201527f4d61782070657263656e74616765206d75737420626520677265617465722074604482015264068616e20360dc1b6064820152608401610dde565b601355565b3360009081526020819052604090205460ff16612b525760405162461bcd60e51b8152600401610dde90615cbe565b612b6b600080516020615ee48339815191523383615191565b604051818152600080516020615ee4833981519152903390600080516020615f248339815191529060200160405180910390a350565b3360009081526020819052604090205460ff16612bd05760405162461bcd60e51b8152600401610dde90615cbe565b60105460009015612c1b576000600b60006001601054612bf09190615c52565b81526020019081526020016000209050612c17846011548360010154846002015487615227565b9150505b601354811115612c665760405162461bcd60e51b81526020600482015260166024820152750aadcd8dec6d640e0cae4c6cadce8c2ceca40d0d2ced60531b6044820152606401610dde565b6040805160c08101825285815260208082018681526011548385019081526060808501888152608086018881524260a08801908152601080546000908152600b89528a90209851895595516001890155935160028801559051600387015551600486015590516005909401939093555483518781529182018590529281018590527feadbedb993dfca23e4c79bf4fa5fe531c2e0e926258fabb8445e8bc5c472780f910160405180910390a260108054906000612d2283615c65565b919050555050505050565b3360009081526001602052604090205460ff16612d5c5760405162461bcd60e51b8152600401610dde90615cbe565b612d6c86868686868642426122bf565b505050505050565b33600090815260146020908152604080832084845290915290208054612dac5760405162461bcd60e51b8152600401610dde90615dc2565b60028101546001600160a01b03163314612dd85760405162461bcd60e51b8152600401610dde90615ded565b805460165460009061271090612dee9084615c06565b612df89190615c1d565b33600090815260186020526040812080549293508492909190612e1c908490615c52565b90915550508015612e6557336000908152600c602052604081208054839290612e46908490615c52565b925050819055508060116000828254612e5f9190615c52565b90915550505b8015612eaf57336001600160a01b03167f4725a4d4de9bff212d0885095e27515072f73f427df55e52f37f241321ef88f98286604051612ea6929190615665565b60405180910390a25b336000818152601460209081526040808320888452825280832083815560018082018590556002820180546001600160a01b03191690556003909101849055938352601a82528083208884529091528120546019549092612f0f91615c52565b9050808214612fd057600060198281548110612f2d57612f2d615c7e565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260198054919250829185908110612f7957612f79615c7e565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b03938416178155938101516001909401939093558351168152601a8252604080822093830151825292909152208290555b6019805480612fe157612fe1615e15565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001018290559190925533808352601a825260408084208a855283528084209390935591518881527f73d12dec3eb3b445b6c9feb2fd559ba7c852c525bc1e59d8f7ff760c55df041d91015b60405180910390a2505050505050565b6060818311156130a45760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610dde565b60105482106130eb5760405162461bcd60e51b8152602060048201526013602482015272115b9908195c1bd8da081b9bdd08199bdd5b99606a1b6044820152606401610dde565b60006130f78484615c52565b613102906001615c3f565b90506000816001600160401b0381111561311e5761311e615ce6565b60405190808252806020026020018201604052801561315757816020015b613144615403565b81526020019060019003908161313c5790505b50905060005b828110156131f857600b60006131738389615c3f565b81526020019081526020016000206040518060c001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815250508282815181106131da576131da615c7e565b602002602001018190525080806131f090615c65565b91505061315d565b50949350505050565b61320961514a565b600081116132295760405162461bcd60e51b8152600401610dde90615d3e565b6000601254116132725760405162461bcd60e51b81526020600482015260146024820152734275796f7574206e6f7420617661696c61626c6560601b6044820152606401610dde565b600061327d336112d2565b90508082111561329f5760405162461bcd60e51b8152600401610dde90615d92565b6127106132ae826109c4615c06565b6132b89190615c1d565b8210156132f85760405162461bcd60e51b815260206004820152600e60248201526d416d6f756e7420746f6f206c6f7760901b6044820152606401610dde565b60006127106012548461330b9190615c06565b6133159190615c1d565b336000908152600c6020526040812080549293508592909190613339908490615c52565b9250508190555082601160008282546133529190615c52565b9091555050336000908152601c602052604081208054839290613376908490615c3f565b90915550506008805490600061338b83615c65565b9091555050336000908152600f60209081526040918290208251608081018452600854815291820184905260075490928201906133c89042615c3f565b8152600080516020615ee4833981519152602091820181905283546001808201865560009586528386208551600490930201918255848401519082015560408401516002820155606090930151600390930180546001600160a01b0319166001600160a01b0390941693909317909255908252600a9052600080516020615e84833981519152805483929061345e908490615c3f565b90915550506040518181523390600080516020615ea48339815191529060200160405180910390a250506118e7615180565b601b81815481106134a057600080fd5b6000918252602090912060069091020180546001820154600283015460038401546004850154600590950154939550919390926001600160a01b03918216911686565b6134eb6153d2565b506001600160a01b03918216600090815260146020908152604080832093835292815290829020825160808101845281548152600182015492810192909252600281015490931691810191909152600390910154606082015290565b3360009081526020819052604090205460ff166135765760405162461bcd60e51b8152600401610dde90615cbe565b6127108111156135c85760405162461bcd60e51b815260206004820152601d60248201527f50657263656e746167652063616e6e6f742065786365656420313030250000006044820152606401610dde565b601255565b6135d561514a565b33600090815260026020526040902054811061362b5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610dde565b33600090815260026020526040812080548390811061364c5761364c615c7e565b906000526020600020906009020190508060070160149054906101000a900460ff16156136ae5760405162461bcd60e51b815260206004820152601060248201526f56657374696e6720636f6d706c65746560801b6044820152606401610dde565b60006136ba338461275d565b905081600301548110156137075760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610dde565b60008260030154826137199190615c52565b90506000811161373b5760405162461bcd60e51b8152600401610dde90615c94565b8083600301600082825461374f9190615c3f565b909155505082546003840154106137765760078301805460ff60a01b1916600160a01b1790555b33600090815260056020526040902054156138875760078301546001600160a01b0390811660008181526004602081905260408083205490516302c68be360e31b81529294670de0b6b3a764000094879492909116926316345f18926137dd9291016154ff565b602060405180830381865afa1580156137fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381e9190615cfc565b6138289190615c06565b6138329190615c1d565b3360009081526005602052604090205490915081106138605733600090815260056020526040812055613885565b336000908152600560205260408120805483929061387f908490615c52565b90915550505b505b60078301546001600160a01b0316600090815260066020526040812080548392906138b3908490615c52565b9091555050336000908152600f6020526040808220815160808101909252600980549193839291906138e483615c65565b919050558152602001838152602001600754426139019190615c3f565b81526007860180546001600160a01b039081166020938401528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b0319169183169190911790559054168352600a905281208054839290613984908490615c3f565b90915550506040513390600080516020615ec4833981519152906139ac908490600090615665565b60405180910390a25050506118e7615180565b6139f3604051806080016040528060008152602001600081526020016000815260200160006001600160a01b031681525090565b6001600160a01b0383166000908152600f60205260408120905b8154811015613ab85783828281548110613a2957613a29615c7e565b90600052602060002090600402016000015403613aa657818181548110613a5257613a52615c7e565b6000918252602091829020604080516080810182526004909302909101805483526001810154938301939093526002830154908201526003909101546001600160a01b031660608201529250610da3915050565b80613ab081615c65565b915050613a0d565b5060405162461bcd60e51b8152600401610dde90615e2b565b3360009081526020819052604090205460ff16613b005760405162461bcd60e51b8152600401610dde90615cbe565b6001600160a01b038316613b265760405162461bcd60e51b8152600401610dde90615e54565b600081118015613b3857506127108111155b613b795760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b6044820152606401610dde565b6001600160a01b0383166000908152600360205260408120613b9a91615439565b6000825b612710821015613c375782612710613bb68285615c3f565b1115613bcb57613bc883612710615c52565b90505b6001600160a01b0386166000908152600360209081526040808320815180830190925285825281830185815281546001818101845592865293909420915160029093029091019182559151910155613c238184615c3f565b9250613c2f8583615c3f565b915050613b9e565b6040516001600160a01b038616907fde4b6ccc38b84f88129403b65a309f9b1c41d4c316bc2118d7614e449b9d4c4590600090a25050505050565b613c7a615403565b6010548210613cbd5760405162461bcd60e51b815260206004820152600f60248201526e115c1bd8da081b9bdd08199bdd5b99608a1b6044820152606401610dde565b506000908152600b6020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b60026020528160005260406000208181548110613d3257600080fd5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007880154600890980154969950949750929591949093916001600160a01b03811691600160a01b90910460ff16908a565b6001600160a01b038216600090815260026020526040812080546060928392909185908110613dc557613dc5615c7e565b600091825260208083206007600990930201918201546001600160a01b03168084526003909152604083205491935091816001600160401b03811115613e0d57613e0d615ce6565b604051908082528060200260200182016040528015613e36578160200160208202803683370190505b5090506000826001600160401b03811115613e5357613e53615ce6565b604051908082528060200260200182016040528015613e7c578160200160208202803683370190505b50905060005b83811015613f29576001600160a01b0385166000908152600360205260408120805483908110613eb457613eb4615c7e565b9060005260206000209060020201905080600001548760060154613ed89190615c3f565b848381518110613eea57613eea615c7e565b6020026020010181815250508060010154838381518110613f0d57613f0d615c7e565b602090810291909101015250613f2281615c65565b9050613e82565b5090955093505050505b9250929050565b6000806000806000613f4b86610bd7565b90506000613f58876112d2565b6001600160a01b03979097166000908152600c6020908152604080832054600d9092529091205490989297965094509092505050565b6001600160a01b0381166000908152600f60209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561257e57600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b031660608301529083529092019101613fc6565b600f602052816000526040600020818154811061403f57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526020819052604090205460ff166140a15760405162461bcd60e51b8152600401610dde90615cbe565b600755565b60606001600160a01b0382166140ce5760405162461bcd60e51b8152600401610dde90615d15565b6000805b601b5481101561417e57836001600160a01b0316601b82815481106140f9576140f9615c7e565b60009182526020909120600460069092020101546001600160a01b031614806141595750836001600160a01b0316601b828154811061413a5761413a615c7e565b60009182526020909120600560069092020101546001600160a01b0316145b1561416c578161416881615c65565b9250505b8061417681615c65565b9150506140d2565b50806000036141c05760408051600080825260208201909252906141b8565b6141a561545a565b81526020019060019003908161419d5790505b509392505050565b6000816001600160401b038111156141da576141da615ce6565b60405190808252806020026020018201604052801561421357816020015b61420061545a565b8152602001906001900390816141f85790505b5090506000805b601b5481101561435c57856001600160a01b0316601b828154811061424157614241615c7e565b60009182526020909120600460069092020101546001600160a01b031614806142a15750856001600160a01b0316601b828154811061428257614282615c7e565b60009182526020909120600560069092020101546001600160a01b0316145b1561434a57601b81815481106142b9576142b9615c7e565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152835184908490811061433057614330615c7e565b6020026020010181905250818061434690615c65565b9250505b8061435481615c65565b91505061421a565b5090949350505050565b601b5460609083106143b65760405162461bcd60e51b8152602060048201526019602482015278537461727420696e646578206f7574206f6620626f756e647360381b6044820152606401610dde565b60006143c28385615c3f565b601b549091508111156143d45750601b545b60006143e08583615c52565b6001600160401b038111156143f7576143f7615ce6565b60405190808252806020026020018201604052801561443057816020015b61441d61545a565b8152602001906001900390816144155790505b509050845b828110156131f857601b818154811061445057614450615c7e565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152826144be8884615c52565b815181106144ce576144ce615c7e565b602002602001018190525080806144e490615c65565b915050614435565b6144f461514a565b336000908152600f6020526040902080546145475760405162461bcd60e51b81526020600482015260136024820152724e6f207374616b657320617661696c61626c6560681b6044820152606401610dde565b8161458c5760405162461bcd60e51b8152602060048201526015602482015274139bc81cdd185ad94812511cc81c1c9bdd9a591959605a1b6044820152606401610dde565b60005b8281101561471b5760008484838181106145ab576145ab615c7e565b9050602002013590506000805b84548110156146e85760008582815481106145d5576145d5615c7e565b906000526020600020906004020190508381600001541480156145fc575060008160010154115b156146d55780600201544210156146445760405162461bcd60e51b815260206004820152600c60248201526b14dd185ad9481b1bd8dad95960a21b6044820152606401610dde565b60018101805460038301546000928390556001600160a01b0316808352600a6020526040832080549293919284929061467e908490615c52565b9091555061469890506001600160a01b0382163384615191565b336001600160a01b0316600080516020615f4483398151915283886040516146c1929190615665565b60405180910390a2600194505050506146e8565b50806146e081615c65565b9150506145b8565b50806147065760405162461bcd60e51b8152600401610dde90615e2b565b5050808061471390615c65565b91505061458f565b505061129a615180565b606080600080614734856112d2565b6001600160a01b0386166000908152600e60205260408120546010549293509161475f908390615c52565b9050806000036147905750506040805160008082526020820181815282840190935290955090935091506148f69050565b806001600160401b038111156147a8576147a8615ce6565b6040519080825280602002602001820160405280156147d1578160200160208202803683370190505b509550806001600160401b038111156147ec576147ec615ce6565b604051908082528060200260200182016040528015614815578160200160208202803683370190505b50945060005b818110156148f157600061482f8285615c3f565b90508088838151811061484457614844615c7e565b602090810291909101015284156148bd576000818152600b6020526040812060040154612710906148759088615c06565b61487f9190615c1d565b90508088848151811061489457614894615c7e565b60209081029190910101526148a98188615c3f565b96506148b58187615c52565b9550506148de565b60008783815181106148d1576148d1615c7e565b6020026020010181815250505b50806148e981615c65565b91505061481b565b505050505b9193909250565b61490561514a565b6001600160a01b0382166000908152601460209081526040808320848452909152902080546149465760405162461bcd60e51b8152600401610dde90615dc2565b336001600160a01b038416036149975760405162461bcd60e51b815260206004820152601660248201527543616e6e6f7420627579206f776e206c697374696e6760501b6044820152606401610dde565b80546001820154600383015460008284116149b35760006149bd565b6149bd8385615c52565b90506000846149ce83612710615c06565b6149d89190615c1d565b905060006127106149e98380615c06565b6149f39190615c1d565b90506000612710614a048389615c06565b614a0e9190615c1d565b90506000614a1c8289615c52565b9050614a38600080516020615ee4833981519152338d8a6152c0565b6001600160a01b038b166000908152600c6020526040812080548a9290614a60908490615c52565b9091555050336000908152600c602052604081208054839290614a84908490615c3f565b90915550506001600160a01b038b16600090815260186020526040812080548a9290614ab1908490615c52565b925050819055508160116000828254614aca9190615c52565b90915550506001600160a01b038b1660009081526017602052604081208054899290614af7908490615c3f565b92505081905550601b6040518060c001604052808881526020014281526020018a81526020018981526020018d6001600160a01b03168152602001336001600160a01b031681525090806001815401808255809150506001900390600052602060002090600602016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050601460008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060008082016000905560018201600090556002820160006101000a8154906001600160a01b030219169055600382016000905550506000601a60008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002054905060006001601980549050614ca69190615c52565b9050808214614d6757600060198281548110614cc457614cc4615c7e565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260198054919250829185908110614d1057614d10615c7e565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b03938416178155938101516001909401939093558351168152601a8252604080822093830151825292909152208290555b6019805480614d7857614d78615e15565b6001900381819060005260206000209060020201600080820160006101000a8154906001600160a01b030219169055600182016000905550509055601a60008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060009055336001600160a01b03168d6001600160a01b03167f7bb39d095b04a9986ed34adf14d74c33294d0a9e807f02bf634d532507422eba8b8f604051614e32929190615665565b60405180910390a3505050505050505050505061129a615180565b33600090815260146020908152604080832085845290915290208054614e855760405162461bcd60e51b8152600401610dde90615dc2565b60028101546001600160a01b03163314614eb15760405162461bcd60e51b8152600401610dde90615ded565b60008211614ed15760405162461bcd60e51b8152600401610dde90615d66565b600181018290556040513390600080516020615f0483398151915290614efa9085908790615665565b60405180910390a2505050565b3360009081526001602052604090205460ff16614f365760405162461bcd60e51b8152600401610dde90615cbe565b6001600160a01b038516614f835760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642075736572206164647265737360601b6044820152606401610dde565b60008411614fa35760405162461bcd60e51b8152600401610dde90615d3e565b6001600160a01b038216614fc95760405162461bcd60e51b8152600401610dde90615e54565b60088054906000614fd983615c65565b9190505550600081614fed57600854614ffd565b600854614ffd90620f4240615c3f565b6001600160a01b038781166000908152600f6020908152604080832081516080810183528681528084018c81528184018c81528b881660608401818152855460018082018855968a52888a209551600490910290950194855592519484019490945551600283015551600390910180546001600160a01b0319169190961617909455928252600a90529081208054929350879290919061509e908490615c3f565b92505081905550856001600160a01b0316600080516020615f448339815191528683604051613052929190615665565b3360009081526020819052604090205460ff166150fd5760405162461bcd60e51b8152600401610dde90615cbe565b6001600160a01b0381166151235760405162461bcd60e51b8152600401610dde90615d15565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60006151546152ff565b80549091506001190161517a57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600061518a6152ff565b6001905550565b6151e983846001600160a01b031663a9059cbb85856040516024016151b792919061564c565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050615323565b505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610da3565b61521f61538b565b610f6d6153b0565b6000821580615234575084155b15615241575060006152b7565b60008561525088612710615c06565b61525a9190615c1d565b905060008461526b87612710615c06565b6152759190615c1d565b9050808211615289576000925050506152b7565b60006152958284615c52565b905060006127106152a68784615c06565b6152b09190615c1d565b9450505050505b95945050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526152f99186918216906323b872dd906084016151b7565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600080602060008451602086016000885af180615346576040513d6000823e3d81fd5b50506000513d9150811561535e57806001141561536b565b6001600160a01b0384163b155b156152f95783604051635274afe760e01b8152600401610dde91906154ff565b6153936153b8565b610f6d57604051631afcd79f60e31b815260040160405180910390fd5b61518061538b565b60006153c26151ee565b54600160401b900460ff16919050565b6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b50805460008255600202906000526020600020908101906118e791906154a2565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b5b808211156154bd57600080825560018201556002016154a3565b5090565b80356001600160a01b03811681146154d857600080fd5b919050565b6000602082840312156154ef57600080fd5b6154f8826154c1565b9392505050565b6001600160a01b0391909116815260200190565b6000806040838503121561552657600080fd5b61552f836154c1565b946020939093013593505050565b60008083601f84011261554f57600080fd5b5081356001600160401b0381111561556657600080fd5b6020830191508360208260051b8501011115613f3357600080fd5b6000806020838503121561559457600080fd5b82356001600160401b038111156155aa57600080fd5b6155b68582860161553d565b90969095509350505050565b6000602082840312156155d457600080fd5b5035919050565b600081518084526020808501945080840160005b8381101561560b578151875295820195908201906001016155ef565b509495945050505050565b60608152600061562960608301866155db565b828103602084015261563b81866155db565b915050826040830152949350505050565b6001600160a01b03929092168252602082015260400190565b918252602082015260400190565b6000806000806040858703121561568957600080fd5b84356001600160401b03808211156156a057600080fd5b6156ac8883890161553d565b909650945060208701359150808211156156c557600080fd5b506156d28782880161553d565b95989497509550505050565b600080604083850312156156f157600080fd5b50508035926020909101359150565b80518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b60608082528451908201819052600090608090818401906020808901855b8381101561576f5781516001600160a01b03168552938201939082019060010161574a565b50508583038187015261578283896155db565b868103604088015287518082528289019450908201925060005b818110156157bf576157af848651615700565b938201939285019260010161579c565b50919998505050505050505050565b600080604083850312156157e157600080fd5b6157ea836154c1565b91506157f8602084016154c1565b90509250929050565b600080600080600080600080610100898b03121561581e57600080fd5b615827896154c1565b975060208901359650604089013595506060890135945061584a60808a016154c1565b979a969950949793969560a0850135955060c08501359460e001359350915050565b602080825282518282018190526000919060409081850190868401855b8281101561590d5781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0808201516001600160a01b0316908601526101008082015115159086015261012090810151908501526101409093019290850190600101615889565b5091979650505050505050565b60008060006060848603121561592f57600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c0878903121561595f57600080fd5b615968876154c1565b955060208701359450604087013593506060870135925061598b608088016154c1565b915060a087013590509295509295509295565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a08301525050565b6020808252825182820181905260009190848201906040850190845b81811015615a1a57615a0783855161599e565b9284019260c092909201916001016159f4565b50909695505050505050565b60808101610da38284615700565b8051825260208082015190830152604080820151908301526060908101516001600160a01b0316910152565b60808101610da38284615a34565b600080600060608486031215615a8357600080fd5b615a8c846154c1565b95602085013595506040909401359392505050565b60c08101610da3828461599e565b604081526000615ac260408301856155db565b82810360208401526152b781856155db565b6020808252825182820181905260009190848201906040850190845b81811015615a1a57615b03838551615a34565b9284019260809290920191600101615af0565b602080825282518282018190526000919060409081850190868401855b8281101561590d5781518051855286810151878601528581015186860152606080820151908601526080808201516001600160a01b039081169187019190915260a091820151169085015260c09093019290850190600101615b33565b600080600080600060a08688031215615ba857600080fd5b615bb1866154c1565b94506020860135935060408601359250615bcd606087016154c1565b915060808601358015158114615be257600080fd5b809150509295509295909350565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610da357610da3615bf0565b600082615c3a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610da357610da3615bf0565b81810381811115610da357610da3615bf0565b600060018201615c7757615c77615bf0565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f4e6f7468696e6720746f20636c61696d60801b604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615d0e57600080fd5b5051919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6020808252600e908201526d125b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b602080825260129082015271496e76616c69642073616c6520707269636560701b604082015260600190565b602080825260169082015275496e73756666696369656e74206e6574207374616b6560501b604082015260600190565b602080825260119082015270131a5cdd1a5b99c81b9bdd08199bdd5b99607a1b604082015260600190565b6020808252600e908201526d2737ba103a34329039b2b63632b960911b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b6020808252600f908201526e14dd185ad9481b9bdd08199bdd5b99608a1b604082015260600190565b602080825260159082015274496e76616c696420746f6b656e206164647265737360581b60408201526060019056feb0775d57c3eeb070f58d410e36e9ff396813a5d76997d9a91bdf10f0798296f0a65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b5172100000000000000000000000055d398326f99059ff775485246999027b31979558e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031ca92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafefa2646970667358221220177c9cab7ff5cc7c149e43107ff7091d9e87d7d06ac7b55b2192218b9ba6af4a64736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103635760003560e01c8062159da614610368578063013745181461038e578063022914a7146103c45780630519da32146103f7578063092c7610146104005780630a84096a146104205780630a910a6d146104335780630c7d63861461043c57806313baee5b14610446578063173825d9146104665780631764303d146104795780631aefa2d11461048c5780631eb9e53e1461049f5780632ded58aa146104b25780632e46fed8146104bb5780633ba8396e146104e45780633c92f98d146105075780633f35e7221461052957806343a32f891461053c57806343c7c011146105b7578063441a4175146105ca5780634a61f1e5146105eb57806351e624721461060b57806351f6cf2f1461061e578063549e61d31461063f5780635811622714610652578063592d1dd11461066557806361d1080b1461068557806362cd6a091461068d57806367a74ddc146106a45780636ef569a5146106b75780637065cb48146106c057806374d1c8e3146106d357806375060a0b146106e65780637a0c6dc0146107065780637bc221ac146107265780637e6d99261461073957806380ca0ecf146107625780638129fc1c1461077557806382b756811461077d57806384e8520a14610790578063853e0df2146107b05780638851ec0f146107c35780638939d787146107d65780638f82818f146107df5780639437e32e146107ff578063953d16bf1461081257806396fd111a146108255780639cb6f556146108455780639f3a676c14610858578063a0d46758146108a4578063aaf4b04d146108c4578063ac97b417146108d7578063b6c3dc4c146108ea578063b92a349f1461090a578063bc0bc6ba1461091d578063bd84477d1461093d578063bed9757e146109a5578063c2676603146109c6578063c32d3ae2146109ce578063c6b61e4c14610a01578063c7b530b014610a71578063cc573a9114610a91578063ce13d09014610acd578063ce3432c314610ae0578063cfcf331914610b00578063d532bdfe14610b13578063da1b436414610b26578063e88f8e6614610b46578063eacdc5ff14610b59578063eb44e0a314610b62578063ef5d9ae814610b75578063f2bb563014610b95578063fe2f50d014610ba8578063fee6018c14610bb1578063ffecf51614610bc4575b600080fd5b61037b6103763660046154dd565b610bd7565b6040519081526020015b60405180910390f35b6103b761039c3660046154dd565b6004602052600090815260409020546001600160a01b031681565b60405161038591906154ff565b6103e76103d23660046154dd565b60006020819052908152604090205460ff1681565b6040519015158152602001610385565b61037b60075481565b61037b61040e3660046154dd565b60066020526000908152604090205481565b61037b61042e366004615513565b610c71565b61037b60125481565b610444610da9565b005b61037b6104543660046154dd565b600c6020526000908152604090205481565b6104446104743660046154dd565b610f6f565b610444610487366004615581565b611060565b61044461049a3660046155c2565b61129e565b61037b6104ad3660046154dd565b6112d2565b61037b60115481565b61037b6104c93660046154dd565b6001600160a01b03166000908152601c602052604090205490565b6103e76104f23660046154dd565b60016020526000908152604090205460ff1681565b61051a610515366004615581565b611316565b60405161038593929190615616565b610444610537366004615513565b611507565b61058861054a366004615513565b60146020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610385949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b6104446105c53660046154dd565b61157c565b6105dd6105d83660046155c2565b6118ea565b60405161038592919061564c565b61037b6105f93660046154dd565b60186020526000908152604090205481565b6104446106193660046155c2565b611922565b61063161062c366004615513565b611956565b604051610385929190615665565b61044461064d366004615673565b611992565b6104446106603660046156de565b611cff565b61037b6106733660046154dd565b60056020526000908152604090205481565b601b5461037b565b610695611f69565b6040516103859392919061572c565b6104446106b23660046157ce565b612190565b61037b60165481565b6104446106ce3660046154dd565b6121ed565b6104446106e1366004615801565b6122bf565b61037b6106f43660046154dd565b600a6020526000908152604090205481565b6107196107143660046154dd565b6124a2565b604051610385919061586c565b61037b6107343660046154dd565b612589565b61037b6107473660046154dd565b6001600160a01b031660009081526017602052604090205490565b61037b610770366004615513565b61275d565b610444612869565b61044461078b3660046155c2565b612a91565b61037b61079e3660046154dd565b600d6020526000908152604090205481565b6104446107be3660046155c2565b612b23565b6104446107d136600461591a565b612ba1565b61037b60135481565b61037b6107ed3660046154dd565b60176020526000908152604090205481565b61044461080d366004615946565b612d2d565b6104446108203660046155c2565b612d74565b6108386108333660046156de565b613062565b60405161038591906159d8565b6104446108533660046155c2565b613201565b61086b6108663660046155c2565b613490565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610385565b6108b76108b2366004615513565b6134e3565b6040516103859190615a26565b6104446108d23660046155c2565b613547565b6104446108e53660046155c2565b6135cd565b6108fd6108f8366004615513565b6139bf565b6040516103859190615a60565b610444610918366004615a6e565b613ad1565b61093061092b3660046155c2565b613c72565b6040516103859190615aa1565b61095061094b366004615513565b613d16565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610385565b6109b86109b3366004615513565b613d94565b604051610385929190615aaf565b6103e761037b565b6109e16109dc3660046154dd565b613f3a565b604080519485526020850193909352918301526060820152608001610385565b610a44610a0f3660046155c2565b600b60205260009081526040902080546001820154600283015460038401546004850154600590950154939492939192909186565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610385565b610a84610a7f3660046154dd565b613f8e565b6040516103859190615ad4565b610aa4610a9f366004615513565b614023565b604080519485526020850193909352918301526001600160a01b03166060820152608001610385565b610444610adb3660046155c2565b614072565b610af3610aee3660046154dd565b6140a6565b6040516103859190615b16565b610af3610b0e3660046156de565b614366565b610444610b21366004615581565b6144ec565b61037b610b343660046154dd565b600e6020526000908152604090205481565b61051a610b543660046154dd565b614725565b61037b60105481565b610444610b70366004615513565b6148fd565b61037b610b833660046154dd565b601c6020526000908152604090205481565b610444610ba33660046156de565b614e4d565b61037b60155481565b610444610bbf366004615b90565b614f07565b610444610bd23660046154dd565b6150ce565b600080610be3836112d2565b6001600160a01b0384166000908152600e6020526040902054909150805b601054811015610c69578215610c57576000818152600b602052604081206004015461271090610c319086615c06565b610c3b9190615c1d565b9050610c478186615c3f565b9450610c538185615c52565b9350505b80610c6181615c65565b915050610c01565b505050919050565b6001600160a01b0382166000908152600260205260408120805482919084908110610c9e57610c9e615c7e565b906000526020600020906009020190506000816006015442610cc09190615c52565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260036020526040902054811015610d9c576001600160a01b0383166000908152600360205260408120805483908110610d1f57610d1f615c7e565b6000918252602082206002909102018054600182015460088a015492945090929091606490610d5090600a90615c06565b610d5a9190615c1d565b9050828810610d8757612710610d708383615c06565b610d7a9190615c1d565b610d849087615c3f565b95505b5050505080610d9590615c65565b9050610cd5565b5093505050505b92915050565b610db161514a565b6000610dbc33610bd7565b905060008111610de75760405162461bcd60e51b8152600401610dde90615c94565b60405180910390fd5b336000908152600c602052604081208054839290610e06908490615c52565b925050819055508060116000828254610e1f9190615c52565b9091555050601054336000908152600e6020908152604080832093909355601c90529081208054839290610e54908490615c3f565b909155505060088054906000610e6983615c65565b9091555050336000908152600f6020908152604091829020825160808101845260085481529182018490526007549092820190610ea69042615c3f565b8152600080516020615ee4833981519152602091820181905283546001808201865560009586528386208551600490930201918255848401519082015560408401516002820155606090930151600390930180546001600160a01b0319166001600160a01b0390941693909317909255908252600a9052600080516020615e848339815191528054839290610f3c908490615c3f565b90915550506040518181523390600080516020615ea48339815191529060200160405180910390a250610f6d615180565b565b3360009081526020819052604090205460ff16610f9e5760405162461bcd60e51b8152600401610dde90615cbe565b6001600160a01b03811660009081526020819052604090205460ff16610ff25760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610dde565b336001600160a01b0382160361103f5760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb329039b2b63360711b6044820152606401610dde565b6001600160a01b03166000908152602081905260409020805460ff19169055565b61106861514a565b6000805b8281101561121757600084848381811061108857611088615c7e565b336000908152600260209081526040909120549102929092013592505081106110b15750611205565b3360009081526002602052604081208054839081106110d2576110d2615c7e565b9060005260206000209060090201905060006110ee3384610c71565b9050816004015481101561110457505050611205565b60008260040154826111169190615c52565b9050806000036111295750505050611205565b8083600401600082825461113d9190615c3f565b9091555061114d90508187615c3f565b336000908152600f6020526040908190208151608081019092529197508061117887620f4240615c3f565b8152602001838152602001600754426111919190615c3f565b8152600080516020615ee4833981519152602091820152825460018082018555600094855293829020835160049092020190815590820151928101929092556040810151600283015560600151600390910180546001600160a01b0319166001600160a01b03909216919091179055505050505b8061120f81615c65565b91505061106c565b50801561129157600080516020615ee48339815191526000908152600a602052600080516020615e848339815191528054839290611256908490615c3f565b909155505060405181815233907f4e69fdc49495bcab2b4375781457ba16653a90eb4ffb6588351bdc39071433e29060200160405180910390a25b5061129a615180565b5050565b3360009081526020819052604090205460ff166112cd5760405162461bcd60e51b8152600401610dde90615cbe565b601655565b6001600160a01b0381166000908152600c6020908152604080832054601890925282205480821161130457600061130e565b61130e8183615c52565b949350505050565b606080600083806001600160401b0381111561133457611334615ce6565b60405190808252806020026020018201604052801561135d578160200160208202803683370190505b509350806001600160401b0381111561137857611378615ce6565b6040519080825280602002602001820160405280156113a1578160200160208202803683370190505b50925060005b818110156114fe5760008787838181106113c3576113c3615c7e565b90506020020160208101906113d891906154dd565b6001600160a01b038116600090815260066020526040902054875191925090819088908590811061140b5761140b615c7e565b6020908102919091018101919091526001600160a01b03808416600090815260049283905260408082205490516302c68be360e31b815291939216916316345f1891611459918791016154ff565b602060405180830381865afa158015611476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149a9190615cfc565b90506000670de0b6b3a76400006114b18484615c06565b6114bb9190615c1d565b9050808886815181106114d0576114d0615c7e565b60209081029190910101526114e58188615c3f565b96505050505080806114f690615c65565b9150506113a7565b50509250925092565b3360009081526020819052604090205460ff166115365760405162461bcd60e51b8152600401610dde90615cbe565b61154a6001600160a01b0383163383615191565b6040518181526001600160a01b038316903390600080516020615f248339815191529060200160405180910390a35050565b61158461514a565b6000805b3360009081526002602052604090205481101561168f573360009081526002602052604081208054839081106115c0576115c0615c7e565b6000918252602090912060099091020160078101549091506001600160a01b0385811691161480156115fe57506007810154600160a01b900460ff16155b1561167c57600061160f338461275d565b9050816003015481111561167a57600082600301548261162f9190615c52565b905061163b8186615c3f565b9450808360030160008282546116519190615c3f565b909155505082546003840154106116785760078301805460ff60a01b1916600160a01b1790555b505b505b508061168781615c65565b915050611588565b50600081116116b05760405162461bcd60e51b8152600401610dde90615c94565b33600090815260056020526040902054156117bd576001600160a01b0380831660009081526004602081905260408083205490516302c68be360e31b81529293670de0b6b3a764000093869392909116916316345f1891611713918991016154ff565b602060405180830381865afa158015611730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117549190615cfc565b61175e9190615c06565b6117689190615c1d565b33600090815260056020526040902054909150811061179657336000908152600560205260408120556117bb565b33600090815260056020526040812080548392906117b5908490615c52565b90915550505b505b6001600160a01b038216600090815260066020526040812080548392906117e5908490615c52565b9091555050336000908152600f60205260408082208151608081019092526009805491938392919061181683615c65565b919050558152602001838152602001600754426118339190615c3f565b81526001600160a01b0385811660209283018190528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b03191691909316179091558352600a9052812080548392906118ae908490615c3f565b90915550506040513390600080516020615ec4833981519152906118d6908490600090615665565b60405180910390a2506118e7615180565b50565b601981815481106118fa57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b3360009081526020819052604090205460ff166119515760405162461bcd60e51b8152600401610dde90615cbe565b601555565b6003602052816000526040600020818154811061197257600080fd5b600091825260209091206002909102018054600190910154909250905082565b3360009081526001602052604090205460ff166119c15760405162461bcd60e51b8152600401610dde90615cbe565b828114611a085760405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606401610dde565b82611a445760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610dde565b60005b83811015611cf8576000858583818110611a6357611a63615c7e565b9050602002016020810190611a7891906154dd565b6001600160a01b031603611a9e5760405162461bcd60e51b8152600401610dde90615d15565b6000838383818110611ab257611ab2615c7e565b9050602002013511611ad65760405162461bcd60e51b8152600401610dde90615d3e565b828282818110611ae857611ae8615c7e565b90506020020135600c6000878785818110611b0557611b05615c7e565b9050602002016020810190611b1a91906154dd565b6001600160a01b03166001600160a01b0316815260200190815260200160002054601154611b489190615c52565b611b529190615c3f565b601155600d6000868684818110611b6b57611b6b615c7e565b9050602002016020810190611b8091906154dd565b6001600160a01b03166001600160a01b0316815260200190815260200160002054600003611c0757828282818110611bba57611bba615c7e565b90506020020135600d6000878785818110611bd757611bd7615c7e565b9050602002016020810190611bec91906154dd565b6001600160a01b031681526020810191909152604001600020555b828282818110611c1957611c19615c7e565b90506020020135600c6000878785818110611c3657611c36615c7e565b9050602002016020810190611c4b91906154dd565b6001600160a01b03168152602081019190915260400160002055848482818110611c7757611c77615c7e565b9050602002016020810190611c8c91906154dd565b6001600160a01b03167fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839848484818110611cc857611cc8615c7e565b90506020020135604051611cde91815260200190565b60405180910390a280611cf081615c65565b915050611a47565b5050505050565b611d0761514a565b60008211611d475760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610dde565b60008111611d675760405162461bcd60e51b8152600401610dde90615d66565b601554821015611daf5760405162461bcd60e51b815260206004820152601360248201527256616c75652062656c6f77206d696e696d756d60681b6044820152606401610dde565b6000611dba336112d2565b905080831115611ddc5760405162461bcd60e51b8152600401610dde90615d92565b60088054906000611dec83615c65565b90915550506008543360009081526018602052604081208054869290611e13908490615c3f565b909155505060408051608081018252858152602080820186815233838501818152426060860190815260008381526014865287812089825286528781209651875593516001808801919091559151600280880180546001600160a01b039384166001600160a01b03199182161790915592516003909801979097558751808901909852928752938601878152601980548084018255948190529651939095027f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969581018054949093169390941692909217905591517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9696909101559054611f189190615c52565b336000818152601a6020908152604080832086845290915290819020929092559051600080516020615f0483398151915290611f579086908590615665565b60405180910390a2505061129a615180565b60195460609081908190806001600160401b03811115611f8b57611f8b615ce6565b604051908082528060200260200182016040528015611fb4578160200160208202803683370190505b509350806001600160401b03811115611fcf57611fcf615ce6565b604051908082528060200260200182016040528015611ff8578160200160208202803683370190505b509250806001600160401b0381111561201357612013615ce6565b60405190808252806020026020018201604052801561204c57816020015b6120396153d2565b8152602001906001900390816120315790505b50915060005b818110156121895760006019828154811061206f5761206f615c7e565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168083526001909101549282019290925287519092508790849081106120bc576120bc615c7e565b60200260200101906001600160a01b031690816001600160a01b03168152505080602001518583815181106120f3576120f3615c7e565b60209081029190910181019190915281516001600160a01b039081166000908152601483526040808220858501518352845290819020815160808101835281548152600182015494810194909452600281015490921690830152600301546060820152845185908490811061216a5761216a615c7e565b602002602001018190525050808061218190615c65565b915050612052565b5050909192565b3360009081526020819052604090205460ff166121bf5760405162461bcd60e51b8152600401610dde90615cbe565b6001600160a01b03918216600090815260046020526040902080546001600160a01b03191691909216179055565b3360009081526020819052604090205460ff1661221c5760405162461bcd60e51b8152600401610dde90615cbe565b6001600160a01b0381166122425760405162461bcd60e51b8152600401610dde90615d15565b6001600160a01b03811660009081526020819052604090205460ff161561229b5760405162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9037bbb732b960991b6044820152606401610dde565b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b3360009081526001602052604090205460ff166122ee5760405162461bcd60e51b8152600401610dde90615cbe565b60026000896001600160a01b03166001600160a01b031681526020019081526020016000206040518061014001604052808981526020018881526020018781526020016000815260200160008152602001848152602001838152602001866001600160a01b03168152602001600015158152602001858152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160070160146101000a81548160ff0219169083151502179055506101208201518160080155505082600560008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546124669190615c3f565b90915550506001600160a01b03841660009081526006602052604081208054899290612493908490615c3f565b90915550505050505050505050565b6001600160a01b0381166000908152600260209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561257e57600084815260209081902060408051610140810182526009860290920180548352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460c084015260078101546001600160a01b03811660e0850152600160a01b900460ff1615156101008401526008015461012083015290835290920191016124da565b505050509050919050565b6001600160a01b038116600090815260026020526040812054815b81811015612756576001600160a01b03841660009081526002602052604081208054839081106125d6576125d6615c7e565b600091825260209182902060408051610140810182526009909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260078201546001600160a01b03811660e083015260ff600160a01b909104161515610100820181905260089092015461012082015291506127435760e0810180516001600160a01b03908116600090815260046020819052604080832054945190516302c68be360e31b81529294909316926316345f18926126b792016154ff565b602060405180830381865afa1580156126d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f89190615cfc565b90506000826060015183600001516127109190615c52565b90506000670de0b6b3a76400006127278385615c06565b6127319190615c1d565b905061273d8188615c3f565b96505050505b508061274e81615c65565b9150506125a4565b5050919050565b6001600160a01b038216600090815260026020526040812080548291908490811061278a5761278a615c7e565b9060005260206000209060090201905060008160060154426127ac9190615c52565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260036020526040902054811015610d9c576001600160a01b038316600090815260036020526040812080548390811061280b5761280b615c7e565b6000918252602090912060029091020180546001820154919250908187106128555787546127109061283e908390615c06565b6128489190615c1d565b6128529086615c3f565b94505b5050508061286290615c65565b90506127c1565b60006128736151ee565b805490915060ff600160401b82041615906001600160401b031660008115801561289a5750825b90506000826001600160401b031660011480156128b65750303b155b9050811580156128c4575080155b156128e25760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561290b57845460ff60401b1916600160401b1785555b612913615217565b3360009081526020818152604082208054600160ff1991821681179092557f4cfa3c6903140891ecff713e237b1f1746362568dfb5e8e9bc37719e4f37e0c580548216831790557f3e1f9e6abae6b647fdc3c5896ef1871ceb3c98e9e72852da3f17d161a860f76c80548216831790557f3517cbb3edfcef55b3b32be7021bc73ef070f4a8bad0d4b389b96924cf17b7418054821683179055738a9281ecece9b599c2f42d829c3d0d8e74b7083e84527f968a1791ad31618c63b086103baa804af57c3ca0efa33a191010fbb7741579fc80549091169091179055600c905269021e19e0c9bab24000007f649cbac87391465cfe24c65b052f0edf3b8486f136e0b91262d76d1f34d7826b8190556011805491929091612a34908490615c3f565b90915550506201fa4060075560646013558315611cf857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b3360009081526020819052604090205460ff16612ac05760405162461bcd60e51b8152600401610dde90615cbe565b60008111612b1e5760405162461bcd60e51b815260206004820152602560248201527f4d61782070657263656e74616765206d75737420626520677265617465722074604482015264068616e20360dc1b6064820152608401610dde565b601355565b3360009081526020819052604090205460ff16612b525760405162461bcd60e51b8152600401610dde90615cbe565b612b6b600080516020615ee48339815191523383615191565b604051818152600080516020615ee4833981519152903390600080516020615f248339815191529060200160405180910390a350565b3360009081526020819052604090205460ff16612bd05760405162461bcd60e51b8152600401610dde90615cbe565b60105460009015612c1b576000600b60006001601054612bf09190615c52565b81526020019081526020016000209050612c17846011548360010154846002015487615227565b9150505b601354811115612c665760405162461bcd60e51b81526020600482015260166024820152750aadcd8dec6d640e0cae4c6cadce8c2ceca40d0d2ced60531b6044820152606401610dde565b6040805160c08101825285815260208082018681526011548385019081526060808501888152608086018881524260a08801908152601080546000908152600b89528a90209851895595516001890155935160028801559051600387015551600486015590516005909401939093555483518781529182018590529281018590527feadbedb993dfca23e4c79bf4fa5fe531c2e0e926258fabb8445e8bc5c472780f910160405180910390a260108054906000612d2283615c65565b919050555050505050565b3360009081526001602052604090205460ff16612d5c5760405162461bcd60e51b8152600401610dde90615cbe565b612d6c86868686868642426122bf565b505050505050565b33600090815260146020908152604080832084845290915290208054612dac5760405162461bcd60e51b8152600401610dde90615dc2565b60028101546001600160a01b03163314612dd85760405162461bcd60e51b8152600401610dde90615ded565b805460165460009061271090612dee9084615c06565b612df89190615c1d565b33600090815260186020526040812080549293508492909190612e1c908490615c52565b90915550508015612e6557336000908152600c602052604081208054839290612e46908490615c52565b925050819055508060116000828254612e5f9190615c52565b90915550505b8015612eaf57336001600160a01b03167f4725a4d4de9bff212d0885095e27515072f73f427df55e52f37f241321ef88f98286604051612ea6929190615665565b60405180910390a25b336000818152601460209081526040808320888452825280832083815560018082018590556002820180546001600160a01b03191690556003909101849055938352601a82528083208884529091528120546019549092612f0f91615c52565b9050808214612fd057600060198281548110612f2d57612f2d615c7e565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260198054919250829185908110612f7957612f79615c7e565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b03938416178155938101516001909401939093558351168152601a8252604080822093830151825292909152208290555b6019805480612fe157612fe1615e15565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001018290559190925533808352601a825260408084208a855283528084209390935591518881527f73d12dec3eb3b445b6c9feb2fd559ba7c852c525bc1e59d8f7ff760c55df041d91015b60405180910390a2505050505050565b6060818311156130a45760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610dde565b60105482106130eb5760405162461bcd60e51b8152602060048201526013602482015272115b9908195c1bd8da081b9bdd08199bdd5b99606a1b6044820152606401610dde565b60006130f78484615c52565b613102906001615c3f565b90506000816001600160401b0381111561311e5761311e615ce6565b60405190808252806020026020018201604052801561315757816020015b613144615403565b81526020019060019003908161313c5790505b50905060005b828110156131f857600b60006131738389615c3f565b81526020019081526020016000206040518060c001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815250508282815181106131da576131da615c7e565b602002602001018190525080806131f090615c65565b91505061315d565b50949350505050565b61320961514a565b600081116132295760405162461bcd60e51b8152600401610dde90615d3e565b6000601254116132725760405162461bcd60e51b81526020600482015260146024820152734275796f7574206e6f7420617661696c61626c6560601b6044820152606401610dde565b600061327d336112d2565b90508082111561329f5760405162461bcd60e51b8152600401610dde90615d92565b6127106132ae826109c4615c06565b6132b89190615c1d565b8210156132f85760405162461bcd60e51b815260206004820152600e60248201526d416d6f756e7420746f6f206c6f7760901b6044820152606401610dde565b60006127106012548461330b9190615c06565b6133159190615c1d565b336000908152600c6020526040812080549293508592909190613339908490615c52565b9250508190555082601160008282546133529190615c52565b9091555050336000908152601c602052604081208054839290613376908490615c3f565b90915550506008805490600061338b83615c65565b9091555050336000908152600f60209081526040918290208251608081018452600854815291820184905260075490928201906133c89042615c3f565b8152600080516020615ee4833981519152602091820181905283546001808201865560009586528386208551600490930201918255848401519082015560408401516002820155606090930151600390930180546001600160a01b0319166001600160a01b0390941693909317909255908252600a9052600080516020615e84833981519152805483929061345e908490615c3f565b90915550506040518181523390600080516020615ea48339815191529060200160405180910390a250506118e7615180565b601b81815481106134a057600080fd5b6000918252602090912060069091020180546001820154600283015460038401546004850154600590950154939550919390926001600160a01b03918216911686565b6134eb6153d2565b506001600160a01b03918216600090815260146020908152604080832093835292815290829020825160808101845281548152600182015492810192909252600281015490931691810191909152600390910154606082015290565b3360009081526020819052604090205460ff166135765760405162461bcd60e51b8152600401610dde90615cbe565b6127108111156135c85760405162461bcd60e51b815260206004820152601d60248201527f50657263656e746167652063616e6e6f742065786365656420313030250000006044820152606401610dde565b601255565b6135d561514a565b33600090815260026020526040902054811061362b5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610dde565b33600090815260026020526040812080548390811061364c5761364c615c7e565b906000526020600020906009020190508060070160149054906101000a900460ff16156136ae5760405162461bcd60e51b815260206004820152601060248201526f56657374696e6720636f6d706c65746560801b6044820152606401610dde565b60006136ba338461275d565b905081600301548110156137075760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610dde565b60008260030154826137199190615c52565b90506000811161373b5760405162461bcd60e51b8152600401610dde90615c94565b8083600301600082825461374f9190615c3f565b909155505082546003840154106137765760078301805460ff60a01b1916600160a01b1790555b33600090815260056020526040902054156138875760078301546001600160a01b0390811660008181526004602081905260408083205490516302c68be360e31b81529294670de0b6b3a764000094879492909116926316345f18926137dd9291016154ff565b602060405180830381865afa1580156137fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381e9190615cfc565b6138289190615c06565b6138329190615c1d565b3360009081526005602052604090205490915081106138605733600090815260056020526040812055613885565b336000908152600560205260408120805483929061387f908490615c52565b90915550505b505b60078301546001600160a01b0316600090815260066020526040812080548392906138b3908490615c52565b9091555050336000908152600f6020526040808220815160808101909252600980549193839291906138e483615c65565b919050558152602001838152602001600754426139019190615c3f565b81526007860180546001600160a01b039081166020938401528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b0319169183169190911790559054168352600a905281208054839290613984908490615c3f565b90915550506040513390600080516020615ec4833981519152906139ac908490600090615665565b60405180910390a25050506118e7615180565b6139f3604051806080016040528060008152602001600081526020016000815260200160006001600160a01b031681525090565b6001600160a01b0383166000908152600f60205260408120905b8154811015613ab85783828281548110613a2957613a29615c7e565b90600052602060002090600402016000015403613aa657818181548110613a5257613a52615c7e565b6000918252602091829020604080516080810182526004909302909101805483526001810154938301939093526002830154908201526003909101546001600160a01b031660608201529250610da3915050565b80613ab081615c65565b915050613a0d565b5060405162461bcd60e51b8152600401610dde90615e2b565b3360009081526020819052604090205460ff16613b005760405162461bcd60e51b8152600401610dde90615cbe565b6001600160a01b038316613b265760405162461bcd60e51b8152600401610dde90615e54565b600081118015613b3857506127108111155b613b795760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b6044820152606401610dde565b6001600160a01b0383166000908152600360205260408120613b9a91615439565b6000825b612710821015613c375782612710613bb68285615c3f565b1115613bcb57613bc883612710615c52565b90505b6001600160a01b0386166000908152600360209081526040808320815180830190925285825281830185815281546001818101845592865293909420915160029093029091019182559151910155613c238184615c3f565b9250613c2f8583615c3f565b915050613b9e565b6040516001600160a01b038616907fde4b6ccc38b84f88129403b65a309f9b1c41d4c316bc2118d7614e449b9d4c4590600090a25050505050565b613c7a615403565b6010548210613cbd5760405162461bcd60e51b815260206004820152600f60248201526e115c1bd8da081b9bdd08199bdd5b99608a1b6044820152606401610dde565b506000908152600b6020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b60026020528160005260406000208181548110613d3257600080fd5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007880154600890980154969950949750929591949093916001600160a01b03811691600160a01b90910460ff16908a565b6001600160a01b038216600090815260026020526040812080546060928392909185908110613dc557613dc5615c7e565b600091825260208083206007600990930201918201546001600160a01b03168084526003909152604083205491935091816001600160401b03811115613e0d57613e0d615ce6565b604051908082528060200260200182016040528015613e36578160200160208202803683370190505b5090506000826001600160401b03811115613e5357613e53615ce6565b604051908082528060200260200182016040528015613e7c578160200160208202803683370190505b50905060005b83811015613f29576001600160a01b0385166000908152600360205260408120805483908110613eb457613eb4615c7e565b9060005260206000209060020201905080600001548760060154613ed89190615c3f565b848381518110613eea57613eea615c7e565b6020026020010181815250508060010154838381518110613f0d57613f0d615c7e565b602090810291909101015250613f2281615c65565b9050613e82565b5090955093505050505b9250929050565b6000806000806000613f4b86610bd7565b90506000613f58876112d2565b6001600160a01b03979097166000908152600c6020908152604080832054600d9092529091205490989297965094509092505050565b6001600160a01b0381166000908152600f60209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561257e57600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b031660608301529083529092019101613fc6565b600f602052816000526040600020818154811061403f57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526020819052604090205460ff166140a15760405162461bcd60e51b8152600401610dde90615cbe565b600755565b60606001600160a01b0382166140ce5760405162461bcd60e51b8152600401610dde90615d15565b6000805b601b5481101561417e57836001600160a01b0316601b82815481106140f9576140f9615c7e565b60009182526020909120600460069092020101546001600160a01b031614806141595750836001600160a01b0316601b828154811061413a5761413a615c7e565b60009182526020909120600560069092020101546001600160a01b0316145b1561416c578161416881615c65565b9250505b8061417681615c65565b9150506140d2565b50806000036141c05760408051600080825260208201909252906141b8565b6141a561545a565b81526020019060019003908161419d5790505b509392505050565b6000816001600160401b038111156141da576141da615ce6565b60405190808252806020026020018201604052801561421357816020015b61420061545a565b8152602001906001900390816141f85790505b5090506000805b601b5481101561435c57856001600160a01b0316601b828154811061424157614241615c7e565b60009182526020909120600460069092020101546001600160a01b031614806142a15750856001600160a01b0316601b828154811061428257614282615c7e565b60009182526020909120600560069092020101546001600160a01b0316145b1561434a57601b81815481106142b9576142b9615c7e565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152835184908490811061433057614330615c7e565b6020026020010181905250818061434690615c65565b9250505b8061435481615c65565b91505061421a565b5090949350505050565b601b5460609083106143b65760405162461bcd60e51b8152602060048201526019602482015278537461727420696e646578206f7574206f6620626f756e647360381b6044820152606401610dde565b60006143c28385615c3f565b601b549091508111156143d45750601b545b60006143e08583615c52565b6001600160401b038111156143f7576143f7615ce6565b60405190808252806020026020018201604052801561443057816020015b61441d61545a565b8152602001906001900390816144155790505b509050845b828110156131f857601b818154811061445057614450615c7e565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152826144be8884615c52565b815181106144ce576144ce615c7e565b602002602001018190525080806144e490615c65565b915050614435565b6144f461514a565b336000908152600f6020526040902080546145475760405162461bcd60e51b81526020600482015260136024820152724e6f207374616b657320617661696c61626c6560681b6044820152606401610dde565b8161458c5760405162461bcd60e51b8152602060048201526015602482015274139bc81cdd185ad94812511cc81c1c9bdd9a591959605a1b6044820152606401610dde565b60005b8281101561471b5760008484838181106145ab576145ab615c7e565b9050602002013590506000805b84548110156146e85760008582815481106145d5576145d5615c7e565b906000526020600020906004020190508381600001541480156145fc575060008160010154115b156146d55780600201544210156146445760405162461bcd60e51b815260206004820152600c60248201526b14dd185ad9481b1bd8dad95960a21b6044820152606401610dde565b60018101805460038301546000928390556001600160a01b0316808352600a6020526040832080549293919284929061467e908490615c52565b9091555061469890506001600160a01b0382163384615191565b336001600160a01b0316600080516020615f4483398151915283886040516146c1929190615665565b60405180910390a2600194505050506146e8565b50806146e081615c65565b9150506145b8565b50806147065760405162461bcd60e51b8152600401610dde90615e2b565b5050808061471390615c65565b91505061458f565b505061129a615180565b606080600080614734856112d2565b6001600160a01b0386166000908152600e60205260408120546010549293509161475f908390615c52565b9050806000036147905750506040805160008082526020820181815282840190935290955090935091506148f69050565b806001600160401b038111156147a8576147a8615ce6565b6040519080825280602002602001820160405280156147d1578160200160208202803683370190505b509550806001600160401b038111156147ec576147ec615ce6565b604051908082528060200260200182016040528015614815578160200160208202803683370190505b50945060005b818110156148f157600061482f8285615c3f565b90508088838151811061484457614844615c7e565b602090810291909101015284156148bd576000818152600b6020526040812060040154612710906148759088615c06565b61487f9190615c1d565b90508088848151811061489457614894615c7e565b60209081029190910101526148a98188615c3f565b96506148b58187615c52565b9550506148de565b60008783815181106148d1576148d1615c7e565b6020026020010181815250505b50806148e981615c65565b91505061481b565b505050505b9193909250565b61490561514a565b6001600160a01b0382166000908152601460209081526040808320848452909152902080546149465760405162461bcd60e51b8152600401610dde90615dc2565b336001600160a01b038416036149975760405162461bcd60e51b815260206004820152601660248201527543616e6e6f7420627579206f776e206c697374696e6760501b6044820152606401610dde565b80546001820154600383015460008284116149b35760006149bd565b6149bd8385615c52565b90506000846149ce83612710615c06565b6149d89190615c1d565b905060006127106149e98380615c06565b6149f39190615c1d565b90506000612710614a048389615c06565b614a0e9190615c1d565b90506000614a1c8289615c52565b9050614a38600080516020615ee4833981519152338d8a6152c0565b6001600160a01b038b166000908152600c6020526040812080548a9290614a60908490615c52565b9091555050336000908152600c602052604081208054839290614a84908490615c3f565b90915550506001600160a01b038b16600090815260186020526040812080548a9290614ab1908490615c52565b925050819055508160116000828254614aca9190615c52565b90915550506001600160a01b038b1660009081526017602052604081208054899290614af7908490615c3f565b92505081905550601b6040518060c001604052808881526020014281526020018a81526020018981526020018d6001600160a01b03168152602001336001600160a01b031681525090806001815401808255809150506001900390600052602060002090600602016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050601460008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060008082016000905560018201600090556002820160006101000a8154906001600160a01b030219169055600382016000905550506000601a60008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002054905060006001601980549050614ca69190615c52565b9050808214614d6757600060198281548110614cc457614cc4615c7e565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260198054919250829185908110614d1057614d10615c7e565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b03938416178155938101516001909401939093558351168152601a8252604080822093830151825292909152208290555b6019805480614d7857614d78615e15565b6001900381819060005260206000209060020201600080820160006101000a8154906001600160a01b030219169055600182016000905550509055601a60008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060009055336001600160a01b03168d6001600160a01b03167f7bb39d095b04a9986ed34adf14d74c33294d0a9e807f02bf634d532507422eba8b8f604051614e32929190615665565b60405180910390a3505050505050505050505061129a615180565b33600090815260146020908152604080832085845290915290208054614e855760405162461bcd60e51b8152600401610dde90615dc2565b60028101546001600160a01b03163314614eb15760405162461bcd60e51b8152600401610dde90615ded565b60008211614ed15760405162461bcd60e51b8152600401610dde90615d66565b600181018290556040513390600080516020615f0483398151915290614efa9085908790615665565b60405180910390a2505050565b3360009081526001602052604090205460ff16614f365760405162461bcd60e51b8152600401610dde90615cbe565b6001600160a01b038516614f835760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642075736572206164647265737360601b6044820152606401610dde565b60008411614fa35760405162461bcd60e51b8152600401610dde90615d3e565b6001600160a01b038216614fc95760405162461bcd60e51b8152600401610dde90615e54565b60088054906000614fd983615c65565b9190505550600081614fed57600854614ffd565b600854614ffd90620f4240615c3f565b6001600160a01b038781166000908152600f6020908152604080832081516080810183528681528084018c81528184018c81528b881660608401818152855460018082018855968a52888a209551600490910290950194855592519484019490945551600283015551600390910180546001600160a01b0319169190961617909455928252600a90529081208054929350879290919061509e908490615c3f565b92505081905550856001600160a01b0316600080516020615f448339815191528683604051613052929190615665565b3360009081526020819052604090205460ff166150fd5760405162461bcd60e51b8152600401610dde90615cbe565b6001600160a01b0381166151235760405162461bcd60e51b8152600401610dde90615d15565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60006151546152ff565b80549091506001190161517a57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600061518a6152ff565b6001905550565b6151e983846001600160a01b031663a9059cbb85856040516024016151b792919061564c565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050615323565b505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610da3565b61521f61538b565b610f6d6153b0565b6000821580615234575084155b15615241575060006152b7565b60008561525088612710615c06565b61525a9190615c1d565b905060008461526b87612710615c06565b6152759190615c1d565b9050808211615289576000925050506152b7565b60006152958284615c52565b905060006127106152a68784615c06565b6152b09190615c1d565b9450505050505b95945050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526152f99186918216906323b872dd906084016151b7565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600080602060008451602086016000885af180615346576040513d6000823e3d81fd5b50506000513d9150811561535e57806001141561536b565b6001600160a01b0384163b155b156152f95783604051635274afe760e01b8152600401610dde91906154ff565b6153936153b8565b610f6d57604051631afcd79f60e31b815260040160405180910390fd5b61518061538b565b60006153c26151ee565b54600160401b900460ff16919050565b6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b50805460008255600202906000526020600020908101906118e791906154a2565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b5b808211156154bd57600080825560018201556002016154a3565b5090565b80356001600160a01b03811681146154d857600080fd5b919050565b6000602082840312156154ef57600080fd5b6154f8826154c1565b9392505050565b6001600160a01b0391909116815260200190565b6000806040838503121561552657600080fd5b61552f836154c1565b946020939093013593505050565b60008083601f84011261554f57600080fd5b5081356001600160401b0381111561556657600080fd5b6020830191508360208260051b8501011115613f3357600080fd5b6000806020838503121561559457600080fd5b82356001600160401b038111156155aa57600080fd5b6155b68582860161553d565b90969095509350505050565b6000602082840312156155d457600080fd5b5035919050565b600081518084526020808501945080840160005b8381101561560b578151875295820195908201906001016155ef565b509495945050505050565b60608152600061562960608301866155db565b828103602084015261563b81866155db565b915050826040830152949350505050565b6001600160a01b03929092168252602082015260400190565b918252602082015260400190565b6000806000806040858703121561568957600080fd5b84356001600160401b03808211156156a057600080fd5b6156ac8883890161553d565b909650945060208701359150808211156156c557600080fd5b506156d28782880161553d565b95989497509550505050565b600080604083850312156156f157600080fd5b50508035926020909101359150565b80518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b60608082528451908201819052600090608090818401906020808901855b8381101561576f5781516001600160a01b03168552938201939082019060010161574a565b50508583038187015261578283896155db565b868103604088015287518082528289019450908201925060005b818110156157bf576157af848651615700565b938201939285019260010161579c565b50919998505050505050505050565b600080604083850312156157e157600080fd5b6157ea836154c1565b91506157f8602084016154c1565b90509250929050565b600080600080600080600080610100898b03121561581e57600080fd5b615827896154c1565b975060208901359650604089013595506060890135945061584a60808a016154c1565b979a969950949793969560a0850135955060c08501359460e001359350915050565b602080825282518282018190526000919060409081850190868401855b8281101561590d5781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0808201516001600160a01b0316908601526101008082015115159086015261012090810151908501526101409093019290850190600101615889565b5091979650505050505050565b60008060006060848603121561592f57600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c0878903121561595f57600080fd5b615968876154c1565b955060208701359450604087013593506060870135925061598b608088016154c1565b915060a087013590509295509295509295565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a08301525050565b6020808252825182820181905260009190848201906040850190845b81811015615a1a57615a0783855161599e565b9284019260c092909201916001016159f4565b50909695505050505050565b60808101610da38284615700565b8051825260208082015190830152604080820151908301526060908101516001600160a01b0316910152565b60808101610da38284615a34565b600080600060608486031215615a8357600080fd5b615a8c846154c1565b95602085013595506040909401359392505050565b60c08101610da3828461599e565b604081526000615ac260408301856155db565b82810360208401526152b781856155db565b6020808252825182820181905260009190848201906040850190845b81811015615a1a57615b03838551615a34565b9284019260809290920191600101615af0565b602080825282518282018190526000919060409081850190868401855b8281101561590d5781518051855286810151878601528581015186860152606080820151908601526080808201516001600160a01b039081169187019190915260a091820151169085015260c09093019290850190600101615b33565b600080600080600060a08688031215615ba857600080fd5b615bb1866154c1565b94506020860135935060408601359250615bcd606087016154c1565b915060808601358015158114615be257600080fd5b809150509295509295909350565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610da357610da3615bf0565b600082615c3a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610da357610da3615bf0565b81810381811115610da357610da3615bf0565b600060018201615c7757615c77615bf0565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f4e6f7468696e6720746f20636c61696d60801b604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615d0e57600080fd5b5051919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6020808252600e908201526d125b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b602080825260129082015271496e76616c69642073616c6520707269636560701b604082015260600190565b602080825260169082015275496e73756666696369656e74206e6574207374616b6560501b604082015260600190565b602080825260119082015270131a5cdd1a5b99c81b9bdd08199bdd5b99607a1b604082015260600190565b6020808252600e908201526d2737ba103a34329039b2b63632b960911b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b6020808252600f908201526e14dd185ad9481b9bdd08199bdd5b99608a1b604082015260600190565b602080825260159082015274496e76616c696420746f6b656e206164647265737360581b60408201526060019056feb0775d57c3eeb070f58d410e36e9ff396813a5d76997d9a91bdf10f0798296f0a65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b5172100000000000000000000000055d398326f99059ff775485246999027b31979558e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031ca92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafefa2646970667358221220177c9cab7ff5cc7c149e43107ff7091d9e87d7d06ac7b55b2192218b9ba6af4a64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/CunaFinanceBsc.sol b/contracts/CunaFinanceBsc.sol index d7d904c..f0a6cf1 100644 --- a/contracts/CunaFinanceBsc.sol +++ b/contracts/CunaFinanceBsc.sol @@ -512,17 +512,19 @@ contract CunaFinanceBsc is Initializable, ReentrancyGuardUpgradeable { /// @param amount The amount for the withdraw stake /// @param unlockTime The unlock timestamp for the withdraw stake /// @param token The token address for the withdraw stake - function createWithdrawStakeForUser(address user, uint256 amount, uint256 unlockTime, address token) external onlyBot { + /// @param isVesting Whether this is a vesting-related stake (adds 1e6 to stakeId) + function createWithdrawStakeForUser(address user, uint256 amount, uint256 unlockTime, address token, bool isVesting) external onlyBot { require(user != address(0), "Invalid user address"); require(amount > 0, "Invalid amount"); require(token != address(0), "Invalid token address"); // Generate unique stakeId stakeIdCounter++; + uint256 finalStakeId = isVesting ? stakeIdCounter + 1e6 : stakeIdCounter; // Create the withdraw stake withdrawStakes[user].push(WithdrawStake({ - stakeId: stakeIdCounter, + stakeId: finalStakeId, amount: amount, unlockTime: unlockTime, token: token @@ -531,7 +533,7 @@ contract CunaFinanceBsc is Initializable, ReentrancyGuardUpgradeable { // Increment withdraw liabilities for this token withdrawLiabilities[token] += amount; - emit StakeWithdrawn(user, amount, stakeIdCounter); + emit StakeWithdrawn(user, amount, finalStakeId); } /// @notice Batch create stakes for multiple users (efficient for migration) @@ -542,14 +544,12 @@ contract CunaFinanceBsc is Initializable, ReentrancyGuardUpgradeable { require(users.length == amounts.length, "Array length mismatch"); require(users.length > 0, "Empty arrays"); - uint256 totalAdded = 0; - for (uint256 i = 0; i < users.length; i++) { require(users[i] != address(0), "Invalid address"); require(amounts[i] > 0, "Invalid amount"); - // Update accounting - totalAdded = totalAdded - userBigStake[users[i]] + amounts[i]; + // Update totalBigStakes directly (subtract old, add new) + totalBigStakes = totalBigStakes - userBigStake[users[i]] + amounts[i]; // Set original stake only if this is the first time (never changes after) if (userOriginalStake[users[i]] == 0) { @@ -561,9 +561,6 @@ contract CunaFinanceBsc is Initializable, ReentrancyGuardUpgradeable { emit StakeCreated(users[i], amounts[i]); } - - // Update total stakes - totalBigStakes += totalAdded; } // Additional View Functions