60c06040523480156200001157600080fd5b50604051620026f8380380620026f883398101604081905262000034916200015d565b6040805180820182526008815267135e515490cd0c0d60c21b6020808301919091528251808401909352600583526413514d0c0d60da1b9083015290601261271084806001600160a01b0381166200009f576040516349e27cff60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001620000f6868262000234565b50600262000105858262000234565b5060ff831660808190526200011c90600a62000415565b62000128908362000426565b60a0525050506001600160a01b03909216600090815260046020526040902069021e19e0c9bab2400000905550620004409050565b6000602082840312156200017057600080fd5b81516001600160a01b03811681146200018857600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001ba57607f821691505b602082108103620001db57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022f57600081815260208120601f850160051c810160208610156200020a5750805b601f850160051c820191505b818110156200022b5782815560010162000216565b5050505b505050565b81516001600160401b038111156200025057620002506200018f565b6200026881620002618454620001a5565b84620001e1565b602080601f831160018114620002a05760008415620002875750858301515b600019600386901b1c1916600185901b1785556200022b565b600085815260208120601f198616915b82811015620002d157888601518255948401946001909101908401620002b0565b5085821015620002f05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003575781600019048211156200033b576200033b62000300565b808516156200034957918102915b93841c93908002906200031b565b509250929050565b60008262000370575060016200040f565b816200037f575060006200040f565b8160018114620003985760028114620003a357620003c3565b60019150506200040f565b60ff841115620003b757620003b762000300565b50506001821b6200040f565b5060208310610133831016604e8410600b8410161715620003e8575081810a6200040f565b620003f4838362000316565b80600019048211156200040b576200040b62000300565b0290505b92915050565b60006200018860ff8416836200035f565b80820281158282048414176200040f576200040f62000300565b60805160a05161228b6200046d60003960006103440152600081816102750152611375015261228b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80638da5cb5b116100f9578063c87b56dd11610097578063e0df5b6f11610071578063e0df5b6f14610410578063e985e9c514610423578063f28ca1dd14610451578063f2fde38b1461045957600080fd5b8063c87b56dd146103ca578063d547cfb7146103dd578063dd62ed3e146103e557600080fd5b80639b19251a116100d35780639b19251a1461036e578063a22cb46514610391578063a9059cbb146103a4578063b88d4fde146103b757600080fd5b80638da5cb5b1461032c578063902d55a51461033f57806395d89b411461036657600080fd5b80632e0f262511610166578063504334c211610140578063504334c2146102d357806353d6fd59146102e65780636352211e146102f957806370a082311461030c57600080fd5b80632e0f26251461027057806342842e0e146102a95780634f02c420146102bc57600080fd5b806318d217c31161019757806318d217c31461024057806323b872dd146102555780632b9689581461026857600080fd5b806306fdde03146101be578063081812fc146101dc578063095ea7b31461021d575b600080fd5b6101c661046c565b6040516101d3919061196d565b60405180910390f35b6102056101ea3660046119a0565b6006602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101d3565b61023061022b3660046119d0565b6104fa565b60405190151581526020016101d3565b61025361024e366004611a9d565b61064b565b005b610253610263366004611ada565b610685565b610253610a0e565b6102977f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101d3565b6102536102b7366004611ada565b610a74565b6102c560035481565b6040519081526020016101d3565b6102536102e1366004611b16565b610b61565b6102536102f4366004611b7a565b610b95565b6102056103073660046119a0565b610bea565b6102c561031a366004611bb6565b60046020526000908152604090205481565b600054610205906001600160a01b031681565b6102c57f000000000000000000000000000000000000000000000000000000000000000081565b6101c6610c3e565b61023061037c366004611bb6565b600b6020526000908152604090205460ff1681565b61025361039f366004611b7a565b610c4b565b6102306103b23660046119d0565b610cb7565b6102536103c5366004611bd1565b610ccb565b6101c66103d83660046119a0565b610da6565b6101c6611269565b6102c56103f3366004611c6c565b600560209081526000928352604080842090915290825290205481565b61025361041e366004611a9d565b611276565b610230610431366004611c6c565b600760209081526000928352604080842090915290825290205460ff1681565b6101c66112ac565b610253610467366004611bb6565b6112b9565b6001805461047990611c9f565b80601f01602080910402602001604051908101604052809291908181526020018280546104a590611c9f565b80156104f25780601f106104c7576101008083540402835291602001916104f2565b820191906000526020600020905b8154815290600101906020018083116104d557829003601f168201915b505050505081565b6000600354821115801561050e5750600082115b156105e5576000828152600860205260409020546001600160a01b031633811480159061055f57506001600160a01b038116600090815260076020908152604080832033845290915290205460ff16155b1561057c576040516282b42960e81b815260040160405180910390fd5b60008381526006602090815260409182902080546001600160a01b0319166001600160a01b038881169182179092559251868152908416917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350610641565b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b5060015b92915050565b6000546001600160a01b03163314610675576040516282b42960e81b815260040160405180910390fd5b600c6106818282611d27565b5050565b600354811161099f576000818152600860205260409020546001600160a01b038481169116146106c857604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0382166106ef57604051634e46966960e11b815260040160405180910390fd5b336001600160a01b0384161480159061072c57506001600160a01b038316600090815260076020908152604080832033845290915290205460ff16155b801561074f57506000818152600660205260409020546001600160a01b03163314155b1561076c576040516282b42960e81b815260040160405180910390fd5b61077461136e565b6001600160a01b0384166000908152600460205260408120805490919061079c908490611dfd565b909155506107aa905061136e565b6001600160a01b03808416600081815260046020908152604080832080549096019095558582526008815284822080546001600160a01b03199081169094179055600681528482208054909316909255918616825260099052908120805461081490600190611dfd565b8154811061082457610824611e10565b60009182526020808320909101546001600160a01b0387168352600982526040808420868552600a9093529092205481549293508392811061086857610868611e10565b60009182526020808320909101929092556001600160a01b038616815260099091526040902080548061089d5761089d611e26565b600082815260208082208301600019908101839055909201909255838252600a8152604080832054848452818420556001600160a01b0386168084526009835290832080546001818101835582865293852001869055925290546109019190611dfd565b6000838152600a602052604080822092909255905183916001600160a01b0380871692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4826001600160a01b0316846001600160a01b03167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e03148761098861136e565b60405190815260200160405180910390a350505050565b6001600160a01b038316600090815260056020908152604080832033845290915290205460001981146109fb576109d68282611dfd565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b610a068484846113a0565b50505b505050565b6000546001600160a01b03163314610a38576040516282b42960e81b815260040160405180910390fd5b600080546001600160a01b031916815560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3565b610a7f838383610685565b6001600160a01b0382163b15801590610b435750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e9190611e3c565b7fffffffff000000000000000000000000000000000000000000000000000000001614155b15610a0957604051633da6393160e01b815260040160405180910390fd5b6000546001600160a01b03163314610b8b576040516282b42960e81b815260040160405180910390fd5b6106818282611562565b6000546001600160a01b03163314610bbf576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000818152600860205260409020546001600160a01b031680610c39576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6002805461047990611c9f565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000610cc43384846113a0565b9392505050565b610cd6858585610685565b6001600160a01b0384163b15801590610d885750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610d209033908a90899089908990600401611e7e565b6020604051808303816000875af1158015610d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d639190611e3c565b7fffffffff000000000000000000000000000000000000000000000000000000001614155b15610a0657604051633da6393160e01b815260040160405180910390fd5b60606000600d8054610db790611c9f565b90501115610df157600d610dca8361157b565b604051602001610ddb929190611ed2565b6040516020818303038152906040529050919050565b600082604051602001610e0691815260200190565b6040516020818303038152906040528051906020012060f81c905060608060648360ff1611610ea4576040518060400160405280600581526020017f312e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600681526020017f507572706c6500000000000000000000000000000000000000000000000000008152509050611121565b60a08360ff1611610f24576040518060400160405280600581526020017f322e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600381526020017f52656400000000000000000000000000000000000000000000000000000000008152509050611121565b60d28360ff1611610fa4576040518060400160405280600581526020017f332e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600581526020017f477265656e0000000000000000000000000000000000000000000000000000008152509050611121565b60f08360ff1611611024576040518060400160405280600581526020017f342e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600481526020017f426c7565000000000000000000000000000000000000000000000000000000008152509050611121565b60ff8360ff16116110a4576040518060400160405280600581526020017f352e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600681526020017f4f72616e676500000000000000000000000000000000000000000000000000008152509050611121565b61012c8360ff1611611121576040518060400160405280600581526020017f362e706e6700000000000000000000000000000000000000000000000000000081525091506040518060400160405280600881526020017f4c6176656e64657200000000000000000000000000000000000000000000000081525090505b600061112c8661157b565b60405160200161113c9190611f59565b60408051601f198184030181529082905261115991602001611f9e565b604051602081830303815290604052600c8460405160200161117c929190611ed2565b60408051601f198184030181529082905261119a9291602001612051565b60405160208183030381529060405290506000826040516020016111be9190612077565b60408051601f198184030181528282018252600483527f227d5d7d000000000000000000000000000000000000000000000000000000006020848101919091529151909350611211918591859101612051565b60408051601f1981840301815290829052611230918390602001612051565b60408051601f198184030181529082905261124d916020016120e2565b6040516020818303038152906040529650505050505050919050565b600d805461047990611c9f565b6000546001600160a01b031633146112a0576040516282b42960e81b815260040160405180910390fd5b600d6106818282611d27565b600c805461047990611c9f565b6000546001600160a01b031633146112e3576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116611323576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600061139b7f0000000000000000000000000000000000000000000000000000000000000000600a61220b565b905090565b6000806113ab61136e565b6001600160a01b038087166000818152600460205260408082208054948a16835290822054928252939450919290918691906113e78386611dfd565b90915550506001600160a01b03808716600090815260046020908152604080832080548a019055928a168252600b9052205460ff16611483576001600160a01b03871660009081526004602052604081205461144490859061221a565b61144e858561221a565b6114589190611dfd565b905060005b818110156114805761146e8961161b565b806114788161223c565b91505061145d565b50505b6001600160a01b0386166000908152600b602052604090205460ff166115085760006114af848361221a565b6001600160a01b0388166000908152600460205260409020546114d390869061221a565b6114dd9190611dfd565b905060005b81811015611505576114f388611743565b806114fd8161223c565b9150506114e2565b50505b856001600160a01b0316876001600160a01b03167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e0314878760405161154d91815260200190565b60405180910390a35060019695505050505050565b600161156e8382611d27565b506002610a098282611d27565b6060600061158883611867565b600101905060008167ffffffffffffffff8111156115a8576115a86119fa565b6040519080825280601f01601f1916602001820160405280156115d2576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846115dc57509392505050565b6001600160a01b03811661164257604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0381166000908152600960205260408120805461166890600190611dfd565b8154811061167857611678611e10565b9060005260206000200154905060096000836001600160a01b03166001600160a01b031681526020019081526020016000208054806116b9576116b9611e26565b600082815260208082208301600019908101839055909201909255828252600a815260408083208390556008825280832080546001600160a01b031990811690915560069092528083208054909216909155518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03811661176a57604051634e46966960e11b815260040160405180910390fd5b60038054600101908190556000818152600860205260409020546001600160a01b0316156117c4576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260086020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260098352908320805460018181018355828652938520018590559252905461181c9190611dfd565b6000828152600a602052604080822092909255905182916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106118b0577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106118dc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106118fa57662386f26fc10000830492506010015b6305f5e1008310611912576305f5e100830492506008015b612710831061192657612710830492506004015b60648310611938576064830492506002015b600a83106106455760010192915050565b60005b8381101561196457818101518382015260200161194c565b50506000910152565b602081526000825180602084015261198c816040850160208701611949565b601f01601f19169190910160400192915050565b6000602082840312156119b257600080fd5b5035919050565b80356001600160a01b0381168114610c3957600080fd5b600080604083850312156119e357600080fd5b6119ec836119b9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611a2157600080fd5b813567ffffffffffffffff80821115611a3c57611a3c6119fa565b604051601f8301601f19908116603f01168101908282118183101715611a6457611a646119fa565b81604052838152866020858801011115611a7d57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215611aaf57600080fd5b813567ffffffffffffffff811115611ac657600080fd5b611ad284828501611a10565b949350505050565b600080600060608486031215611aef57600080fd5b611af8846119b9565b9250611b06602085016119b9565b9150604084013590509250925092565b60008060408385031215611b2957600080fd5b823567ffffffffffffffff80821115611b4157600080fd5b611b4d86838701611a10565b93506020850135915080821115611b6357600080fd5b50611b7085828601611a10565b9150509250929050565b60008060408385031215611b8d57600080fd5b611b96836119b9565b915060208301358015158114611bab57600080fd5b809150509250929050565b600060208284031215611bc857600080fd5b610cc4826119b9565b600080600080600060808688031215611be957600080fd5b611bf2866119b9565b9450611c00602087016119b9565b935060408601359250606086013567ffffffffffffffff80821115611c2457600080fd5b818801915088601f830112611c3857600080fd5b813581811115611c4757600080fd5b896020828501011115611c5957600080fd5b9699959850939650602001949392505050565b60008060408385031215611c7f57600080fd5b611c88836119b9565b9150611c96602084016119b9565b90509250929050565b600181811c90821680611cb357607f821691505b602082108103611cd357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610a0957600081815260208120601f850160051c81016020861015611d005750805b601f850160051c820191505b81811015611d1f57828155600101611d0c565b505050505050565b815167ffffffffffffffff811115611d4157611d416119fa565b611d5581611d4f8454611c9f565b84611cd9565b602080601f831160018114611d8a5760008415611d725750858301515b600019600386901b1c1916600185901b178555611d1f565b600085815260208120601f198616915b82811015611db957888601518255948401946001909101908401611d9a565b5085821015611dd75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8181038181111561064557610645611de7565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060208284031215611e4e57600080fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610cc457600080fd5b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000808454611ee081611c9f565b60018281168015611ef85760018114611f0d57611f3c565b60ff1984168752821515830287019450611f3c565b8860005260208060002060005b85811015611f335781548a820152908401908201611f1a565b50505082870194505b505050508351611f50818360208801611949565b01949350505050565b7f7b226e616d65223a20224d792045524334303420230000000000000000000000815260008251611f91816015850160208701611949565b9190910160150192915050565b60008251611fb0818460208701611949565b7f222c226465736372697074696f6e223a224120636f6c6c656374696f6e206f669201918252507f20636972636c657320656e61626c6564206279204552433430342c20616e206560208201527f78706572696d656e74616c20746f6b656e207374616e646172642e222c22657860408201527f7465726e616c5f75726c223a22222c22696d616765223a2200000000000000006060820152607801919050565b60008351612063818460208801611949565b835190830190611f50818360208801611949565b7f222c2261747472696275746573223a5b7b2274726169745f74797065223a224381527f6f6c6f72222c2276616c7565223a2200000000000000000000000000000000006020820152600082516120d581602f850160208701611949565b91909101602f0192915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c000000000081526000825161211a81601b850160208701611949565b91909101601b0192915050565b600181815b8085111561216257816000190482111561214857612148611de7565b8085161561215557918102915b93841c939080029061212c565b509250929050565b60008261217957506001610645565b8161218657506000610645565b816001811461219c57600281146121a6576121c2565b6001915050610645565b60ff8411156121b7576121b7611de7565b50506001821b610645565b5060208310610133831016604e8410600b84101617156121e5575081810a610645565b6121ef8383612127565b806000190482111561220357612203611de7565b029392505050565b6000610cc460ff84168361216a565b60008261223757634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161224e5761224e611de7565b506001019056fea26469706673582212201f137c3f4314c889dc5e006e95007963e7a0749db42ded3336c15be8fa4c98aa64736f6c63430008140033000000000000000000000000107f6f13db9dcd773a6fab89e419074e48fcea88