6080604052600e805460ff191660011790553480156200001e57600080fd5b5060408051808201825260108082526f0a0e4cae6e640a8de40a0eac4d8d2e6d60831b6020808401829052845180860190955291845290830152906002620000678382620003e4565b506003620000768282620003e4565b505060016000555062000089336200012c565b7f63ffe6ff017d7840000000016952566b3d3b1bb6e76fd0c3eee14d39eeae3846600c55662386f26fc10000600d55620000c262000168565b620000e3738ab5496a45c92c36ec293d2681f1d3706eaff85d60016200018b565b6200010473979cea08c0a766b26b3c96c1fbb1d83498373e0160016200018b565b62000126736952566b3d3b1bb6e76fd0c3eee14d39eeae38466103e8620001d7565b620004b0565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b62000189733cc6cdda760b79bafa08df41ecfa224f810dceb66001620002dc565b565b638b78c6d88260601b17600052602060002081815417808255808460601b60601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a350505050565b6127106001600160601b03821611156200024b5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b038216620002a35760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640162000242565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600855565b6001600160a01b0390911690637d3e3dbe816200030c5782620003055750634420e4866200030c565b5063a0af29035b8060e01b60005250306004528160245260008060446000806daaeb6d7670e522a718067333cd4e5af15060006024525050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200036a57607f821691505b6020821081036200038b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003df57600081815260208120601f850160051c81016020861015620003ba5750805b601f850160051c820191505b81811015620003db57828155600101620003c6565b5050505b505050565b81516001600160401b038111156200040057620004006200033f565b620004188162000411845462000355565b8462000391565b602080601f831160018114620004505760008415620004375750858301515b600019600386901b1c1916600185901b178555620003db565b600085815260208120601f198616915b82811015620004815788860151825594840194600190910190840162000460565b5085821015620004a05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613c1e80620004c06000396000f3fe6080604052600436106104655760003560e01c80638462151c11610243578063c204642c11610143578063e086e5ec116100bb578063e985e9c51161008a578063f2fde38b1161006f578063f2fde38b14610c6b578063fb796e6c14610c7e578063fee81cf414610c9257600080fd5b8063e985e9c514610c0f578063f04e283e14610c5857600080fd5b8063e086e5ec14610bae578063e7a6020d14610bc3578063e85661fb14610be5578063e8a3d48514610bfa57600080fd5b8063d3dd5fe011610112578063d7533f02116100f7578063d7533f0214610b5b578063d89135cd14610b79578063dc33e68114610b8e57600080fd5b8063d3dd5fe014610b31578063d539139314610b4657600080fd5b8063c204642c14610aa0578063c23dc68f14610ac0578063c87b56dd14610aed578063ca09933114610b0d57600080fd5b806399a2557a116101d6578063a6f32d43116101a5578063b88d4fde1161018a578063b88d4fde14610a4d578063bcf1546614610a60578063bd09a10f14610a8057600080fd5b8063a6f32d4314610a1e578063aa1152ab14610a3357600080fd5b806399a2557a146109a1578063a22cb465146109c1578063a2309ff8146109e1578063a572fb8f146109fa57600080fd5b806391b7f5ed1161021257806391b7f5ed1461092c578063938e3d7b1461094c57806395d89b411461096c57806396e205fb1461098157600080fd5b80638462151c146108b05780638d859f3e146108dd5780638da5cb5b146108f357806390e89bb81461090c57600080fd5b8063326144a41161036957806354d1f13d116102e157806370a08231116102b05780637359e41f116102955780637359e41f1461085957806375794a3c1461088657806375b238fc1461089b57600080fd5b806370a0823114610831578063715018a61461085157600080fd5b806354d1f13d146107c75780635bbb2177146107cf5780636352211e146107fc5780636f38c3301461081c57600080fd5b806342842e0e11610338578063484b973c1161031d578063484b973c1461076a5780634a4ee7b11461077d578063514e62fc1461079057600080fd5b806342842e0e1461073757806342966c681461074a57600080fd5b8063326144a4146106c15780633370e34c146106fa5780633ab9d1391461070f57806340c10f191461072457600080fd5b80631bb534ba116103fc578063241d9651116103cb57806325692962116103b057806325692962146106495780632a55205a146106515780632de948071461069057600080fd5b8063241d9651146106095780632478d6391461062957600080fd5b80631bb534ba1461058c5780631c10893f146105ac5780631cd64df4146105bf57806323b872dd146105f657600080fd5b8063095ea7b311610438578063095ea7b31461051b57806313a661ed1461052e57806318160ddd1461055c578063183a4f6e1461057957600080fd5b806301ffc9a71461046a57806304634d8d1461049f57806306fdde03146104c1578063081812fc146104e3575b600080fd5b34801561047657600080fd5b5061048a610485366004613097565b610cc3565b60405190151581526020015b60405180910390f35b3480156104ab57600080fd5b506104bf6104ba3660046130d2565b610d23565b005b3480156104cd57600080fd5b506104d6610d4c565b6040516104969190613160565b3480156104ef57600080fd5b506105036104fe366004613173565b610dde565b6040516001600160a01b039091168152602001610496565b6104bf61052936600461318c565b610e32565b34801561053a57600080fd5b5061054e6105493660046131fd565b610e6f565b604051908152602001610496565b34801561056857600080fd5b50600154600054036000190161054e565b6104bf610587366004613173565b610ea2565b34801561059857600080fd5b50600c54610503906001600160a01b031681565b6104bf6105ba36600461318c565b610eaf565b3480156105cb57600080fd5b5061048a6105da36600461318c565b60609190911b638b78c6d8176000908152602090205481161490565b6104bf6106043660046132b6565b610ed4565b34801561061557600080fd5b506104bf6106243660046132f2565b610f1a565b34801561063557600080fd5b5061054e6106443660046132f2565b610ff3565b6104bf611021565b34801561065d57600080fd5b5061067161066c36600461330d565b611072565b604080516001600160a01b039093168352602083019190915201610496565b34801561069c57600080fd5b5061054e6106ab3660046132f2565b60601b638b78c6d8176000908152602090205490565b3480156106cd57600080fd5b50600c546106e590600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610496565b34801561070657600080fd5b506104d661112f565b34801561071b57600080fd5b506106e561113e565b61054e61073236600461318c565b61119d565b6104bf6107453660046132b6565b611373565b34801561075657600080fd5b506104bf610765366004613173565b6113b3565b61054e61077836600461318c565b6113be565b6104bf61078b36600461318c565b6114d3565b34801561079c57600080fd5b5061048a6107ab36600461318c565b60609190911b638b78c6d8176000908152602090205416151590565b6104bf6114f8565b3480156107db57600080fd5b506107ef6107ea366004613374565b611535565b60405161049691906133b6565b34801561080857600080fd5b50610503610817366004613173565b611581565b34801561082857600080fd5b5061054e60ff81565b34801561083d57600080fd5b5061054e61084c3660046132f2565b61158c565b6104bf6115eb565b34801561086557600080fd5b50610879610874366004613173565b611639565b6040516104969190613433565b34801561089257600080fd5b5060005461054e565b3480156108a757600080fd5b5061054e600181565b3480156108bc57600080fd5b506108d06108cb3660046132f2565b611681565b60405161049691906134a9565b3480156108e957600080fd5b5061054e600d5481565b3480156108ff57600080fd5b50638b78c6d81954610503565b34801561091857600080fd5b506104bf610927366004613374565b61170c565b34801561093857600080fd5b506104bf610947366004613173565b6118c3565b34801561095857600080fd5b506104bf610967366004613534565b6118ff565b34801561097857600080fd5b506104d6611971565b34801561098d57600080fd5b506104bf61099c36600461357d565b611980565b3480156109ad57600080fd5b506108d06109bc366004613598565b611a44565b3480156109cd57600080fd5b506104bf6109dc3660046135cb565b611b4d565b3480156109ed57600080fd5b506000546000190161054e565b348015610a0657600080fd5b50600c546106e590600160e01b900463ffffffff1681565b348015610a2a57600080fd5b5061048a611b85565b348015610a3f57600080fd5b50600e5461048a9060ff1681565b6104bf610a5b3660046135fc565b611ba8565b348015610a6c57600080fd5b506104bf610a7b366004613678565b611bf0565b348015610a8c57600080fd5b506104bf610a9b3660046136c8565b611c8b565b348015610aac57600080fd5b5061054e610abb3660046136fb565b611e42565b348015610acc57600080fd5b50610ae0610adb366004613173565b611fbd565b6040516104969190613747565b348015610af957600080fd5b506104d6610b08366004613173565b612015565b348015610b1957600080fd5b50600c546106e590600160c01b900463ffffffff1681565b348015610b3d57600080fd5b506104bf6120df565b348015610b5257600080fd5b5061054e600281565b348015610b6757600080fd5b506040516202a3008152602001610496565b348015610b8557600080fd5b5061054e61212a565b348015610b9a57600080fd5b5061054e610ba93660046132f2565b612135565b348015610bba57600080fd5b506104bf612160565b348015610bcf57600080fd5b50610bd86121c6565b604051610496919061378c565b348015610bf157600080fd5b506104bf6123ac565b348015610c0657600080fd5b506104d6612416565b348015610c1b57600080fd5b5061048a610c2a3660046138c4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6104bf610c663660046132f2565b612425565b6104bf610c793660046132f2565b6124a7565b348015610c8a57600080fd5b50600161048a565b348015610c9e57600080fd5b5061054e610cad3660046132f2565b60601b63389a75e1176000908152602090205490565b6000610cce8261250e565b80610d0257506001600160e01b031982167f2a55205a00000000000000000000000000000000000000000000000000000000145b80610d1d57506001600160e01b031982166301ffc9a760e01b145b92915050565b638b78c6d819543314610d3e576382b429006000526004601cfd5b610d48828261258e565b5050565b606060028054610d5b906138ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610d87906138ee565b8015610dd45780601f10610da957610100808354040283529160200191610dd4565b820191906000526020600020905b815481529060010190602001808311610db757829003601f168201915b5050505050905090565b6000610de9826126a8565b610e1657610e167fcf4700e4000000000000000000000000000000000000000000000000000000006126dd565b506000908152600660205260409020546001600160a01b031690565b81731e0049783f008a0085193e00003d00cd54003c716001600160a01b03821614610e6057610e60816126e7565b610e6a838361272b565b505050565b600060208201825160051b81015b808214610e9b57600160ff8351161b83179250602082019150610e7d565b5050919050565b610eac3382612737565b50565b638b78c6d819543314610eca576382b429006000526004601cfd5b610d488282612788565b826001600160a01b0381163314610f0957731e0049783f008a0085193e00003d00cd54003c713314610f0957610f09336126e7565b610f148484846127d4565b50505050565b6001638b78c6d83360601b176000528060206000205416610f5057638b78c6d819543314610f50576382b429006000526004601cfd5b6001600160a01b038216610f90576040517f3cbe62b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556040519081527f94c4ad53e91574d56aff9aef0726376e9154e071a602000edf9208f28d649be1906020015b60405180910390a15050565b6000610d1d826001600160a01b031660009081526005602052604090205460801c67ffffffffffffffff1690565b60006202a30067ffffffffffffffff164201905063389a75e13360601b1760005280602060002055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b60008281526009602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff169282019290925282916110f15750604080518082019091526008546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090611115906bffffffffffffffffffffffff168761393e565b61111f9190613955565b91519350909150505b9250929050565b6060600a8054610d5b906138ee565b600c54600090600160e01b900463ffffffff1642101561116c5750600c54600160c01b900463ffffffff1690565b600c5461119890600160a01b900463ffffffff1661118d6000546000190190565b808218908210021890565b905090565b60008160ff8111156111c25760405163428e7c1560e11b815260040160405180910390fd5b8260006111d26000546000190190565b905060006111de61113e565b63ffffffff16905080838301111561121a57604051634d5c803f60e01b815282820363ffffffff81166004830152906024015b60405180910390fd5b5050600084600d5461122c919061393e565b600e5490915060ff166112815760405162461bcd60e51b815260206004820152601a60248201527f4d696e74206973206e6f74206f70656e207269676874206e6f770000000000006044820152606401611211565b803410156112d15760405162461bcd60e51b815260206004820152600e60248201527f4e6f7420656e6f756768204554480000000000000000000000000000000000006044820152606401611211565b60005493506112e08686612976565b604080516001600160a01b0388168152602081018790529081018590527f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9060600160405180910390a18034111561136a57336108fc6113408334613977565b6040518115909202916000818181858888f19350505050158015611368573d6000803e3d6000fd5b505b50505092915050565b826001600160a01b03811633146113a857731e0049783f008a0085193e00003d00cd54003c7133146113a8576113a8336126e7565b610f14848484612a68565b610eac816001612a83565b60006002600117638b78c6d83360601b1760005280602060002054166113f957638b78c6d8195433146113f9576382b429006000526004601cfd5b8260ff81111561141c5760405163428e7c1560e11b815260040160405180910390fd5b83600061142c6000546000190190565b9050600061143861113e565b63ffffffff16905080838301111561146f57604051634d5c803f60e01b815282820363ffffffff8116600483015290602401611211565b505060005493506114808686612976565b604080516001600160a01b0388168152602081018790529081018590527f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9060600160405180910390a150505092915050565b638b78c6d8195433146114ee576382b429006000526004601cfd5b610d488282612737565b63389a75e13360601b176000526000602060002055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b60408051828152600583901b8082016020019092526060915b801561157957601f198082019186010135600061156a82611fbd565b848401602001525061154e9050565b509392505050565b6000610d1d82612bdd565b60006001600160a01b0382166115c5576115c57f8f4eb604000000000000000000000000000000000000000000000000000000006126dd565b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b638b78c6d819543314611606576382b429006000526004601cfd5b6000337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36000638b78c6d81955565b606060206040510160005b8082526001841660051b820191508360011c9350831561166657600101611644565b5060405191508060405260208201810360051c825250919050565b6060600061168e8361158c565b9050606060405190506001820160051b810160405281815260008060006116b3600190565b90505b8482146117015760006116c882612c56565b905060408101516116f8578051156116df57805193505b87841860601b6116f857600183019250818360051b8601525b506001016116b6565b509195945050505050565b8060008167ffffffffffffffff811115611728576117286131b6565b604051908082528060200260200182016040528015611751578160200160208202803683370190505b50905060005b82811461186f5760008585838181106117725761177261398a565b905060200201602081019061178791906132f2565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156117e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180a91906139a0565b90506118488686848181106118215761182161398a565b905060200201602081019061183691906132f2565b600c546001600160a01b031683612cd5565b8083838151811061185b5761185b61398a565b602090810291909101015250600101611757565b50600c546040517fcadee7ff7164fffa7c9c81726bbc520c1fb0bc36d7ac763997ea74aee0e387e4916118b5916001600160a01b039091169087908790869033906139f5565b60405180910390a150505050565b6001638b78c6d83360601b1760005280602060002054166118f957638b78c6d8195433146118f9576382b429006000526004601cfd5b50600d55565b6001638b78c6d83360601b17600052806020600020541661193557638b78c6d819543314611935576382b429006000526004601cfd5b600b6119418382613a8f565b507faf497693a87db12ca89131a31edbb3db4bb5702dfb284e8ae7427d185f09112d82604051610fe79190613160565b606060038054610d5b906138ee565b6001638b78c6d83360601b1760005280602060002054166119b657638b78c6d8195433146119b6576382b429006000526004601cfd5b6119be611b85565b156119dc576040516337149c8160e21b815260040160405180910390fd5b600c80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b63ffffffff8516908102919091179091556040519081527f4b178591e114f180ac4b2567fcb348dfc0e7a947cb59eebfb6c24582fe465da790602001610fe7565b6060818310611a7657611a767f32c1995a000000000000000000000000000000000000000000000000000000006126dd565b6001831015611a8457600192505b600054808310611a92578092505b60606000611a9f8761158c565b85871090810291508115611b41578187870311611abc5786860391505b60405192506001820160051b83016040526000611ad888611fbd565b905060008160400151611ae9575080515b60005b611af58a612c56565b92506040830151611b2457825115611b0c57825191505b8a821860601b611b2457600101600581901b86018a90525b60018a019950888a1480611b3757508481145b15611aec57855250505b50909695505050505050565b81731e0049783f008a0085193e00003d00cd54003c716001600160a01b03821614611b7b57611b7b816126e7565b610e6a8383612d19565b6000611b8f61113e565b63ffffffff16611ba26000546000190190565b14905090565b836001600160a01b0381163314611bdd57731e0049783f008a0085193e00003d00cd54003c713314611bdd57611bdd336126e7565b611be985858585612d85565b5050505050565b6001638b78c6d83360601b176000528060206000205416611c2657638b78c6d819543314611c26576382b429006000526004601cfd5b83600003611c4057600a611c3a8382613a8f565b50611c5a565b6000838152600f60205260409020611c588382613a8f565b505b7f0859ecd9c3ae7ffb7168a20aaf255f7d523f33efebc42af9a39a4b115a818ec083836040516118b5929190613b4f565b6001638b78c6d83360601b176000528060206000205416611cc157638b78c6d819543314611cc1576382b429006000526004601cfd5b611cc9611b85565b15611ce7576040516337149c8160e21b815260040160405180910390fd5b6000546000190163ffffffff811615611d6b57611d168463ffffffff168263ffffffff16808218908210021890565b9350611d348363ffffffff168263ffffffff16808218908210021890565b600c5490935063ffffffff600160c01b90910481169084161115611d6b5760405163553aca7560e01b815260040160405180910390fd5b8263ffffffff168463ffffffff161115611d985760405163553aca7560e01b815260040160405180910390fd5b600c80547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff87811682027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1692909217600160c01b878416810291909117938490556040805192850484168352930490911660208201527fd21e10698a154bc2595631a15acc6c58a107afa7bb521433d239132136af36a691016118b5565b60006001638b78c6d83360601b176000528060206000205416611e7a57638b78c6d819543314611e7a576382b429006000526004601cfd5b8260ff811115611e9d5760405163428e7c1560e11b815260040160405180910390fd5b611ea7848661393e565b600080546000190190611eb861113e565b63ffffffff169050808383011115611eef57604051634d5c803f60e01b815282820363ffffffff8116600483015290602401611211565b50506000869003611f2c576040517fe10344d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005493508560005b818114611f7457611f6c898983818110611f5157611f5161398a565b9050602002016020810190611f6691906132f2565b88612976565b600101611f35565b50507ffe9ac969bdc4dbb3461e515fb1f4b43a4bf6d21274b0c195082e75bcb586ead387878787604051611fab9493929190613b68565b60405180910390a15050509392505050565b604080516080810182526000808252602082018190529181018290526060810191909152600182106120105760005482101561201057611ffc82612c56565b9050806040015161201057610d1d82612dc0565b919050565b6000818152600f60205260409020805460609190612032906138ee565b15905061204c576000828152600f6020526040902061204f565b600a5b805461205a906138ee565b80601f0160208091040260200160405190810160405280929190818152602001828054612086906138ee565b80156120d35780601f106120a8576101008083540402835291602001916120d3565b820191906000526020600020905b8154815290600101906020018083116120b657829003601f168201915b50505050509050919050565b6001638b78c6d83360601b17600052806020600020541661211557638b78c6d819543314612115576382b429006000526004601cfd5b50600e805460ff19811660ff90911615179055565b600061119860015490565b6001600160a01b0381166000908152600560205260408082205467ffffffffffffffff911c16610d1d565b600c544790612178906001600160a01b031682612e38565b600c54604080516001600160a01b039092168252602082018390523382820152517f134d6e96840903022b8e4b57aa0644e9eb6ca6fe65a25205b0857fe918c2bcc69181900360600190a150565b61225b604051806101c001604052806060815260200160608152602001606081526020016060815260200160006001600160a01b03168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600015158152602001600081526020016000815260200160008152602001600081525090565b61226361112f565b8152600b8054612272906138ee565b80601f016020809104026020016040519081016040528092919081815260200182805461229e906138ee565b80156122eb5780601f106122c0576101008083540402835291602001916122eb565b820191906000526020600020905b8154815290600101906020018083116122ce57829003601f168201915b50505050508160200181905250612300610d4c565b604082015261230d611971565b6060820152600c546001600160a01b0316608082015261232b61113e565b63ffffffff90811660a0830152600c54600160c01b8104821660c0840152600160a01b8104821660e0840152600160e01b90041661010082015261236d611b85565b151561012082015260005461014082018190526000190161018082015261239261212a565b61016082015260015460005403600019016101a082015290565b6001638b78c6d83360601b1760005280602060002054166123e257638b78c6d8195433146123e2576382b429006000526004601cfd5b6123ea612e54565b6040517f566581e73731ea61c9f7b54d506938b9e1426a84254ad12c8b4fd538efac37f390600090a150565b6060600b8054610d5b906138ee565b638b78c6d819543314612440576382b429006000526004601cfd5b8060601b60601c905063389a75e18160601b176000526020600020805442111561247257636f5e88186000526004601cfd5b600081555080337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3638b78c6d81955565b638b78c6d8195433146124c2576382b429006000526004601cfd5b6001600160a01b0316806124de57637448fbae6000526004601cfd5b80337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3638b78c6d81955565b60006301ffc9a760e01b6001600160e01b03198316148061255857507f80ac58cd000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b80610d1d5750506001600160e01b0319167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b6127106bffffffffffffffffffffffff821611156126145760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c655072696365000000000000000000000000000000000000000000006064820152608401611211565b6001600160a01b03821661266a5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401611211565b604080518082019091526001600160a01b039092168083526bffffffffffffffffffffffff9091166020909201829052600160a01b90910217600855565b6000816001111580156126bc575060005482105b8015610d1d575050600090815260046020526040902054600160e01b161590565b8060005260046000fd5b69c617113400112233445560005230601a5280603a52600080604460166daaeb6d7670e522a718067333cd4e5afa612723573d6000803e3d6000fd5b6000603a5250565b610d4882826001612e75565b638b78c6d88260601b176000526020600020805482811681189050808255808460601b60601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a350505050565b638b78c6d88260601b17600052602060002081815417808255808460601b60601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a350505050565b60006127df82612bdd565b6001600160a01b03948516949091508116841461281f5761281f7fa1148100000000000000000000000000000000000000000000000000000000006126dd565b6000828152600660205260409020805461284b8187335b6001600160a01b039081169116811491141790565b61286d576128598633610c2a565b61286d5761286d632ce44b5f60e11b6126dd565b801561287857600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b8416900361290a576001840160008181526004602052604081205490036129085760005481146129085760008181526004602052604090208490555b505b6001600160a01b0385168481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a48060000361296d5761296d7fea553b34000000000000000000000000000000000000000000000000000000006126dd565b50505050505050565b60008054908290036129ab576129ab7fb562e8dd000000000000000000000000000000000000000000000000000000006126dd565b60008181526004602090815260408083206001600160a01b0387164260a01b6001881460e11b17811790915580845260059092528220805468010000000000000001860201905590819003612a2357612a237f2e076300000000000000000000000000000000000000000000000000000000006126dd565b818301825b808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4818160010191508103612a28575060005550505050565b610e6a83838360405180602001604052806000815250611ba8565b6000612a8e83612bdd565b905080600080612aac86600090815260066020526040902080549091565b915091508415612ae357612ac1818433612836565b612ae357612acf8333610c2a565b612ae357612ae3632ce44b5f60e11b6126dd565b8015612aee57600082555b6001600160a01b038316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b177c030000000000000000000000000000000000000000000000000000000017600087815260046020526040812091909155600160e11b85169003612b9557600186016000818152600460205260408120549003612b93576000548114612b935760008181526004602052604090208590555b505b60405186906000906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050600180548101905550505050565b600081600111612c46575060008181526004602052604081205490600160e01b82169003612c465780600003612010576000548210612c2657612c26636f96cda160e11b6126dd565b5b50600019016000818152600460205260409020548015612c2757919050565b612010636f96cda160e11b6126dd565b604080516080810182526000808252602082018190529181018290526060810191909152600082815260046020526040902054610d1d90604080516080810182526001600160a01b038316815260a083901c67ffffffffffffffff166020820152600160e01b831615159181019190915260e89190911c606082015290565b60405163a9059cbb6000528260205281604052602060006044601c6000885af13d156001600051141716612d11576390b8ec186000526004601cfd5b604052505050565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b612d90848484610ed4565b6001600160a01b0383163b15610f1457612dac84848484612f3e565b610f1457610f146368d2bf6b60e11b6126dd565b604080516080810182526000808252602082018190529181018290526060810191909152610d1d612df083612bdd565b604080516080810182526001600160a01b038316815260a083901c67ffffffffffffffff166020820152600160e01b831615159181019190915260e89190911c606082015290565b60008060008084865af1610d485763b12d13eb6000526004601cfd5b612e73733cc6cdda760b79bafa08df41ecfa224f810dceb66001613021565b565b6000612e8083611581565b9050818015612e985750336001600160a01b03821614155b15612ed457612ea78133610c2a565b612ed457612ed47fcfb3b942000000000000000000000000000000000000000000000000000000006126dd565b600083815260066020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0388811691821790925591518693918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a450505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290612f73903390899088908890600401613b8f565b6020604051808303816000875af1925050508015612fae575060408051601f3d908101601f19168201909252612fab91810190613bcb565b60015b613003573d808015612fdc576040519150601f19603f3d011682016040523d82523d6000602084013e612fe1565b606091505b508051600003612ffb57612ffb6368d2bf6b60e11b6126dd565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6001600160a01b0390911690637d3e3dbe8161304e57826130475750634420e48661304e565b5063a0af29035b8060e01b60005250306004528160245260008060446000806daaeb6d7670e522a718067333cd4e5af15060006024525050565b6001600160e01b031981168114610eac57600080fd5b6000602082840312156130a957600080fd5b81356130b481613081565b9392505050565b80356001600160a01b038116811461201057600080fd5b600080604083850312156130e557600080fd5b6130ee836130bb565b915060208301356bffffffffffffffffffffffff8116811461310f57600080fd5b809150509250929050565b6000815180845260005b8181101561314057602081850181015186830182015201613124565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006130b4602083018461311a565b60006020828403121561318557600080fd5b5035919050565b6000806040838503121561319f57600080fd5b6131a8836130bb565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156131f5576131f56131b6565b604052919050565b6000602080838503121561321057600080fd5b823567ffffffffffffffff8082111561322857600080fd5b818501915085601f83011261323c57600080fd5b81358181111561324e5761324e6131b6565b8060051b915061325f8483016131cc565b818152918301840191848101908884111561327957600080fd5b938501935b838510156132aa578435925060ff8316831461329a5760008081fd5b828252938501939085019061327e565b98975050505050505050565b6000806000606084860312156132cb57600080fd5b6132d4846130bb565b92506132e2602085016130bb565b9150604084013590509250925092565b60006020828403121561330457600080fd5b6130b4826130bb565b6000806040838503121561332057600080fd5b50508035926020909101359150565b60008083601f84011261334157600080fd5b50813567ffffffffffffffff81111561335957600080fd5b6020830191508360208260051b850101111561112857600080fd5b6000806020838503121561338757600080fd5b823567ffffffffffffffff81111561339e57600080fd5b6133aa8582860161332f565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015611b41576134208385516001600160a01b03815116825267ffffffffffffffff602082015116602083015260408101511515604083015262ffffff60608201511660608301525050565b92840192608092909201916001016133d2565b6020808252825182820181905260009190848201906040850190845b81811015611b4157835160ff168352928401929184019160010161344f565b600081518084526020808501945080840160005b8381101561349e57815187529582019590820190600101613482565b509495945050505050565b6020815260006130b4602083018461346e565b600067ffffffffffffffff8311156134d6576134d66131b6565b6134e9601f8401601f19166020016131cc565b90508281528383830111156134fd57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261352557600080fd5b6130b4838335602085016134bc565b60006020828403121561354657600080fd5b813567ffffffffffffffff81111561355d57600080fd5b61301984828501613514565b803563ffffffff8116811461201057600080fd5b60006020828403121561358f57600080fd5b6130b482613569565b6000806000606084860312156135ad57600080fd5b6135b6846130bb565b95602085013595506040909401359392505050565b600080604083850312156135de57600080fd5b6135e7836130bb565b91506020830135801515811461310f57600080fd5b6000806000806080858703121561361257600080fd5b61361b856130bb565b9350613629602086016130bb565b925060408501359150606085013567ffffffffffffffff81111561364c57600080fd5b8501601f8101871361365d57600080fd5b61366c878235602084016134bc565b91505092959194509250565b60008060006060848603121561368d57600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156136b257600080fd5b6136be86828701613514565b9150509250925092565b600080604083850312156136db57600080fd5b6136e483613569565b91506136f260208401613569565b90509250929050565b60008060006040848603121561371057600080fd5b833567ffffffffffffffff81111561372757600080fd5b6137338682870161332f565b909790965060209590950135949350505050565b81516001600160a01b0316815260208083015167ffffffffffffffff169082015260408083015115159082015260608083015162ffffff169082015260808101610d1d565b60208152600082516101c08060208501526137ab6101e085018361311a565b91506020850151601f19808685030160408701526137c9848361311a565b935060408701519150808685030160608701526137e6848361311a565b9350606087015191508086850301608087015250613804838261311a565b925050608085015161382160a08601826001600160a01b03169052565b5060a085015163ffffffff811660c08601525060c085015163ffffffff811660e08601525060e085015161010061385f8187018363ffffffff169052565b86015190506101206138788682018363ffffffff169052565b860151905061014061388d8682018315159052565b86015161016086810191909152860151610180808701919091528601516101a0808701919091529095015193019290925250919050565b600080604083850312156138d757600080fd5b6138e0836130bb565b91506136f2602084016130bb565b600181811c9082168061390257607f821691505b60208210810361392257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610d1d57610d1d613928565b60008261397257634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610d1d57610d1d613928565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156139b257600080fd5b5051919050565b8183526000602080850194508260005b8581101561349e576001600160a01b036139e2836130bb565b16875295820195908201906001016139c9565b60006001600160a01b03808816835260806020840152613a196080840187896139b9565b8381036040850152613a2b818761346e565b9250508084166060840152509695505050505050565b601f821115610e6a57600081815260208120601f850160051c81016020861015613a685750805b601f850160051c820191505b81811015613a8757828155600101613a74565b505050505050565b815167ffffffffffffffff811115613aa957613aa96131b6565b613abd81613ab784546138ee565b84613a41565b602080601f831160018114613af25760008415613ada5750858301515b600019600386901b1c1916600185901b178555613a87565b600085815260208120601f198616915b82811015613b2157888601518255948401946001909101908401613b02565b5085821015613b3f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000613019604083018461311a565b606081526000613b7c6060830186886139b9565b6020830194909452506040015292915050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152613bc1608083018461311a565b9695505050505050565b600060208284031215613bdd57600080fd5b81516130b48161308156fea26469706673582212206a0d2d1e05e7a02206173a0a1b9951b7d5c6283a387fff52a18c3a2b4485024664736f6c63430008110033