60806040526224ea006007553480156200001857600080fd5b5060006200002e6001600160e01b036200010b16565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000a2620000936001600160e01b036200010b16565b6001600160e01b036200010f16565b6005805460ff19169055620000d2620000c36001600160e01b036200010b16565b6001600160e01b036200016116565b62000105620000e96001600160e01b036200010b16565b6b033b2e3c9fd0803ce80000006001600160e01b03620001b316565b6200040c565b3390565b6200012a816004620002b460201b62001c091790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6200017c816006620002b460201b62001c091790919060201c565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b6001600160a01b0382166200020f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200022b816002546200034160201b620016921790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200025e9183906200169262000341821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b620002c982826001600160e01b03620003a316565b156200031c576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200039c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006001600160a01b038216620003ec5760405162461bcd60e51b8152600401808060200182810382526022815260200180620026f36022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6122d7806200041c6000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637fe76df0116101305780639e20749a116100b8578063c40868931161007c578063c408689314610675578063dd62ed3e1461069b578063e6108fc9146106c9578063f2fde38b146106f5578063f83e9a201461071b57610227565b80639e20749a1461059f578063a31052e8146105d1578063a457c2d7146105f7578063a9059cbb14610623578063bb5f747b1461064f57610227565b80638d88a2ff116100ff5780638d88a2ff1461051f5780638da5cb5b146105455780638dc73521146105695780638f32d59b1461058f57806395d89b411461059757610227565b80637fe76df0146104a557806382dc1ec4146104cb5780638456cb59146104f15780638870985b146104f957610227565b806346fbf68e116101b35780636c4e5c86116101825780636c4e5c861461041d5780636ef8d66d1461044957806370a0823114610451578063715018a6146104775780637362d9c81461047f57610227565b806346fbf68e146103bb578063476fe919146103e15780634c5a628c1461040d5780635c975abb1461041557610227565b806323b872dd116101fa57806323b872dd146103295780632ff2e9dc1461035f578063313ce5671461036757806339509351146103855780633f4ba83a146103b157610227565b806306fdde031461022c578063095ea7b3146102a95780630cb7eb4c146102e957806318160ddd14610321575b600080fd5b610234610723565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026e578181015183820152602001610256565b50505050905090810190601f16801561029b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d5600480360360408110156102bf57600080fd5b506001600160a01b038135169060200135610749565b604080519115158252519081900360200190f35b61030f600480360360208110156102ff57600080fd5b50356001600160a01b0316610778565b60408051918252519081900360200190f35b61030f6107b0565b6102d56004803603606081101561033f57600080fd5b506001600160a01b038135811691602081013590911690604001356107b6565b61030f6107e0565b61036f6107f0565b6040805160ff9092168252519081900360200190f35b6102d56004803603604081101561039b57600080fd5b506001600160a01b0381351690602001356107f5565b6103b9610838565b005b6102d5600480360360208110156103d157600080fd5b50356001600160a01b0316610921565b6102d5600480360360408110156103f757600080fd5b506001600160a01b03813516906020013561093a565b6103b9610a0e565b6102d5610a64565b6102d56004803603604081101561043357600080fd5b506001600160a01b038135169060200135610a6d565b6103b9610b90565b61030f6004803603602081101561046757600080fd5b50356001600160a01b0316610be4565b6103b9610bff565b6103b96004803603602081101561049557600080fd5b50356001600160a01b0316610c7d565b6103b9600480360360208110156104bb57600080fd5b50356001600160a01b0316610cd0565b6103b9600480360360208110156104e157600080fd5b50356001600160a01b0316610d78565b6103b9610dc8565b61030f6004803603602081101561050f57600080fd5b50356001600160a01b0316610e8f565b6103b96004803603602081101561053557600080fd5b50356001600160a01b0316610f22565b61054d610fca565b604080516001600160a01b039092168252519081900360200190f35b6102d56004803603602081101561057f57600080fd5b50356001600160a01b0316610fd9565b6102d561109e565b6102346110c4565b6102d5600480360360608110156105b557600080fd5b506001600160a01b0381351690602081013590604001356110e2565b6102d5600480360360208110156105e757600080fd5b50356001600160a01b0316611261565b6102d56004803603604081101561060d57600080fd5b506001600160a01b038135169060200135611349565b6102d56004803603604081101561063957600080fd5b506001600160a01b038135169060200135611397565b6102d56004803603602081101561066557600080fd5b50356001600160a01b03166113ba565b61030f6004803603602081101561068b57600080fd5b50356001600160a01b03166113cd565b61030f600480360360408110156106b157600080fd5b506001600160a01b0381358116916020013516611413565b6102d5600480360360408110156106df57600080fd5b506001600160a01b03813516906020013561143e565b6103b96004803603602081101561070b57600080fd5b50356001600160a01b031661152c565b61030f6115d7565b6040518060400160405280600a8152602001692434a830bc9031b7b4b760b11b81525081565b60008161075c6107576115dd565b610e8f565b101561076757600080fd5b61077183836115e1565b9392505050565b60006001600160a01b03821661078d57600080fd5b506001600160a01b0381166000908152600860205260409020600101545b919050565b60025490565b6000816107c285610e8f565b10156107cd57600080fd5b6107d8848484611639565b949350505050565b6b033b2e3c9fd0803ce800000081565b601281565b60006108188261080c6108066115dd565b86611413565b9063ffffffff61169216565b6108236107576115dd565b101561082e57600080fd5b61077183836116ec565b6108486108436115dd565b610921565b6108835760405162461bcd60e51b815260040180806020018281038252603a81526020018061205f603a913960400191505060405180910390fd5b60055460ff166108d1576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6109046115dd565b604080516001600160a01b039092168252519081900360200190a1565b600061093460048363ffffffff61174416565b92915050565b600061094c6109476115dd565b6113ba565b6109875760405162461bcd60e51b815260040180806020018281038252604a815260200180612234604a913960600191505060405180910390fd5b6001600160a01b03831661099a57600080fd5b428210156109a757600080fd5b6001600160a01b038316600081815260086020908152604091829020600101805490869055825181815291820186905282519093927f014515183d12c0df4c26d74864371ebfe412e000f1f0a252af66950035ff42fe928290030190a25060019392505050565b610a1661109e565b15610a525760405162461bcd60e51b81526004018080602001828103825260468152602001806120196046913960600191505060405180910390fd5b610a62610a5d6115dd565b6117ab565b565b60055460ff1690565b6000610a7a6109476115dd565b610ab55760405162461bcd60e51b815260040180806020018281038252604a815260200180612234604a913960600191505060405180910390fd5b6001600160a01b038316610ac857600080fd5b60008211610ad557600080fd5b6001600160a01b038316600090815260086020526040902054821115610afa57600080fd5b6001600160a01b038316600090815260086020526040902054610b23908363ffffffff6117f316565b6001600160a01b03841660008181526008602090815260409182902084815560010154825187815291820194909452808201939093525190917f44cebfefa4561bee5b61d675ccfd8dc9969fff9cc15e7a4eccccd62af94f9c11919081900360600190a250600192915050565b610b9861109e565b15610bd45760405162461bcd60e51b81526004018080602001828103825260368152602001806121076036913960400191505060405180910390fd5b610a62610bdf6115dd565b611835565b6001600160a01b031660009081526020819052604090205490565b610c0761109e565b610c46576040805162461bcd60e51b815260206004820181905260248201526000805160206121a9833981519152604482015290519081900360640190fd5b60405162461bcd60e51b815260040180806020018281038252602381526020018061213d6023913960400191505060405180910390fd5b610c8561109e565b610cc4576040805162461bcd60e51b815260206004820181905260248201526000805160206121a9833981519152604482015290519081900360640190fd5b610ccd8161187d565b50565b610cd861109e565b610d17576040805162461bcd60e51b815260206004820181905260248201526000805160206121a9833981519152604482015290519081900360640190fd5b610d1f610fca565b6001600160a01b0316816001600160a01b03161415610d6f5760405162461bcd60e51b81526004018080602001828103825260368152602001806121076036913960400191505060405180910390fd5b610ccd81611835565b610d8061109e565b610dbf576040805162461bcd60e51b815260206004820181905260248201526000805160206121a9833981519152604482015290519081900360640190fd5b610ccd816118c5565b610dd36108436115dd565b610e0e5760405162461bcd60e51b815260040180806020018281038252603a81526020018061205f603a913960400191505060405180910390fd5b60055460ff1615610e59576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109046115dd565b6001600160a01b0381166000908152600860205260408120600101544210610ec157610eba82610be4565b90506107ab565b6001600160a01b038216600090815260086020526040902054610ee383610be4565b11610ef0575060006107ab565b6001600160a01b03821660009081526008602052604090205461093490610f1684610be4565b9063ffffffff6117f316565b610f2a61109e565b610f69576040805162461bcd60e51b815260206004820181905260248201526000805160206121a9833981519152604482015290519081900360640190fd5b610f71610fca565b6001600160a01b0316816001600160a01b03161415610fc15760405162461bcd60e51b81526004018080602001828103825260468152602001806120196046913960600191505060405180910390fd5b610ccd816117ab565b6003546001600160a01b031690565b6000610fe66109476115dd565b6110215760405162461bcd60e51b815260040180806020018281038252604a815260200180612234604a913960600191505060405180910390fd5b6001600160a01b03821661103457600080fd5b6001600160a01b038216600081815260086020908152604080832083815560010183905580518381529182018390528181019290925290517f44cebfefa4561bee5b61d675ccfd8dc9969fff9cc15e7a4eccccd62af94f9c119181900360600190a2506001919050565b6003546000906001600160a01b03166110b56115dd565b6001600160a01b031614905090565b60405180604001604052806002815260200161048560f41b81525081565b60006110ef6109476115dd565b61112a5760405162461bcd60e51b815260040180806020018281038252604a815260200180612234604a913960600191505060405180910390fd5b6001600160a01b03841661113d57600080fd5b6000831161114a57600080fd5b8261115485610e8f565b101561115f57600080fd5b4282101561116c57600080fd5b6001600160a01b038416600081815260086020908152604091829020600101805490869055825181815291820186905282519093927f014515183d12c0df4c26d74864371ebfe412e000f1f0a252af66950035ff42fe928290030190a26001600160a01b0385166000908152600860205260409020546111f2908563ffffffff61169216565b6001600160a01b03861660008181526008602090815260409182902084815560010154825189815291820194909452808201939093525190917f44cebfefa4561bee5b61d675ccfd8dc9969fff9cc15e7a4eccccd62af94f9c11919081900360600190a2506001949350505050565b600061126e6109476115dd565b6112a95760405162461bcd60e51b815260040180806020018281038252604a815260200180612234604a913960600191505060405180910390fd5b6001600160a01b0382166112bc57600080fd5b6001600160a01b0382166000908152600860205260409020600101546112e157600080fd5b6001600160a01b038216600081815260086020908152604080832060010180549084905581518181529283019390935280519293927f014515183d12c0df4c26d74864371ebfe412e000f1f0a252af66950035ff42fe9281900390910190a250600192915050565b60008061135d6113576115dd565b85611413565b90508083101561138d57611377818463ffffffff6117f316565b6113826107576115dd565b101561138d57600080fd5b6107d8848461190d565b6000816113a56107576115dd565b10156113b057600080fd5b6107718383611965565b600061093460068363ffffffff61174416565b6001600160a01b03811660009081526008602052604081206001015442106113f7575060006107ab565b506001600160a01b031660009081526008602052604090205490565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061144b6109476115dd565b6114865760405162461bcd60e51b815260040180806020018281038252604a815260200180612234604a913960600191505060405180910390fd5b6001600160a01b03831661149957600080fd5b600082116114a657600080fd5b816114b084610e8f565b10156114bb57600080fd5b6001600160a01b0383166000908152600860205260409020600101544210611503576007546001600160a01b0384166000908152600860205260409020429091016001909101555b6001600160a01b038316600090815260086020526040902054610b23908363ffffffff61169216565b61153461109e565b611573576040805162461bcd60e51b815260206004820181905260248201526000805160206121a9833981519152604482015290519081900360640190fd5b6001600160a01b03811661158657600080fd5b61158e610fca565b6001600160a01b0316816001600160a01b031614156115ac57600080fd5b6115b581610d78565b6115be81610c7d565b6115c7816119bd565b6115cf610b90565b610ccd610a0e565b60075481565b3390565b60055460009060ff161561162f576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6107718383611a0d565b60055460009060ff1615611687576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6107d8848484611a2a565b600082820183811015610771576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60055460009060ff161561173a576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6107718383611ab7565b60006001600160a01b03821661178b5760405162461bcd60e51b81526004018080602001828103825260228152602001806121c96022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6117bc60068263ffffffff611b0b16565b6040516001600160a01b038216907f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16590600090a250565b600061077183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b72565b61184660048263ffffffff611b0b16565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61188e60068263ffffffff611c0916565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b6118d660048263ffffffff611c0916565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b60055460009060ff161561195b576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6107718383611c8a565b60055460009060ff16156119b3576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6107718383611cf8565b6119c561109e565b611a04576040805162461bcd60e51b815260206004820181905260248201526000805160206121a9833981519152604482015290519081900360640190fd5b610ccd81611d0c565b6000611a21611a1a6115dd565b8484611dad565b50600192915050565b6000611a37848484611e99565b611aad84611a436115dd565b611aa885604051806060016040528060288152602001612181602891396001600160a01b038a16600090815260016020526040812090611a816115dd565b6001600160a01b03168152602081019190915260400160002054919063ffffffff611b7216565b611dad565b5060019392505050565b6000611a21611ac46115dd565b84611aa88560016000611ad56115dd565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61169216565b611b158282611744565b611b505760405162461bcd60e51b81526004018080602001828103825260218152602001806121606021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60008184841115611c015760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bc6578181015183820152602001611bae565b50505050905090810190601f168015611bf35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b611c138282611744565b15611c65576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000611a21611c976115dd565b84611aa88560405180606001604052806025815260200161227e6025913960016000611cc16115dd565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff611b7216565b6000611a21611d056115dd565b8484611e99565b6001600160a01b038116611d515760405162461bcd60e51b81526004018080602001828103825260268152602001806120996026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611df25760405162461bcd60e51b81526004018080602001828103825260248152602001806122106024913960400191505060405180910390fd5b6001600160a01b038216611e375760405162461bcd60e51b81526004018080602001828103825260228152602001806120bf6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611ede5760405162461bcd60e51b81526004018080602001828103825260258152602001806121eb6025913960400191505060405180910390fd5b6001600160a01b038216611f235760405162461bcd60e51b8152600401808060200182810382526023815260200180611ff66023913960400191505060405180910390fd5b611f66816040518060600160405280602681526020016120e1602691396001600160a01b038616600090815260208190526040902054919063ffffffff611b7216565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611f9b908263ffffffff61169216565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373436f6e74726f6c6c656457686974656c69737441646d696e526f6c653a206f776e65722063616e6e6f742072656e6f756e63652057686974656c69737441646d696e526f6c65436f6e74726f6c6c6564506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f6e74726f6c6c6564506175736572526f6c653a206f776e65722063616e6e6f742072656e6f756e636520506175736572526f6c65546865206f776e65722063616e6e6f742072656c65617365206f776e6572736869702e526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373436f6e74726f6c6c656457686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c6545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820780d29ce925b26477e2f990786397822ca0363673dcd41c2440396b2e7e4abfb64736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373