60a06040523480156200001157600080fd5b5060405162004f6f38038062004f6f833981016040819052620000349162000210565b838383838383838380806200004933620000fb565b6001600160a01b03166080525081620000b45760405162461bcd60e51b8152602060048201526024808201527f6d696e476173546f5472616e73666572416e6453746f7265206d7573742062656044820152630203e20360e41b606482015260840160405180910390fd5b506006556000600a55600b80546001600160a01b0319169055600c620000db838262000334565b50600d620000ea828262000334565b505050505050505050505062000400565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200017357600080fd5b81516001600160401b03808211156200019057620001906200014b565b604051601f8301601f19908116603f01168101908282118183101715620001bb57620001bb6200014b565b81604052838152602092508683858801011115620001d857600080fd5b600091505b83821015620001fc5785820183015181830184015290820190620001dd565b600093810190920192909252949350505050565b600080600080608085870312156200022757600080fd5b84516001600160401b03808211156200023f57600080fd5b6200024d8883890162000161565b955060208701519150808211156200026457600080fd5b50620002738782880162000161565b60408701516060880151919550935090506001600160a01b03811681146200029a57600080fd5b939692955090935050565b600181811c90821680620002ba57607f821691505b602082108103620002db57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200032f57600081815260208120601f850160051c810160208610156200030a5750805b601f850160051c820191505b818110156200032b5782815560010162000316565b5050505b505050565b81516001600160401b038111156200035057620003506200014b565b6200036881620003618454620002a5565b84620002e1565b602080601f831160018114620003a05760008415620003875750858301515b600019600386901b1c1916600185901b1785556200032b565b600085815260208120601f198616915b82811015620003d157888601518255948401946001909101908401620003b0565b5085821015620003f05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051614b1b620004546000396000818161095b01528181610b7601528181610e9c015281816111e70152818161139e01528181611e99015281816124000152818161255801526134c90152614b1b6000f3fe6080604052600436106103755760003560e01c80638cfd8f5c116101d1578063baf3292d11610102578063df2a5b3b116100a0578063f23536411161006f578063f235364114610ae6578063f2fde38b14610b06578063f5ecbdbc14610b26578063fa25f9b614610b4657600080fd5b8063df2a5b3b14610a66578063e5e5d22014610a86578063e985e9c514610aa6578063eb8d72b714610ac657600080fd5b8063c87b56dd116100dc578063c87b56dd146109f3578063cbed8b9c14610a13578063d12473a514610a33578063d1deba1f14610a5357600080fd5b8063baf3292d1461099d578063bfe0d0de146109bd578063c4461834146109dd57600080fd5b80639f38369a1161016f578063ab3ffb9311610149578063ab3ffb931461090e578063af3fb21c14610921578063b353aaa714610949578063b88d4fde1461097d57600080fd5b80639f38369a146108ae578063a22cb465146108ce578063a6c3d165146108ee57600080fd5b80638ffa1f2a116101ab5780638ffa1f2a14610839578063950c8a741461085957806395d89b41146108795780639ea5d6b11461088e57600080fd5b80638cfd8f5c146107c35780638da5cb5b146107fb5780638ef8ea4b1461081957600080fd5b80633d8b38f6116102ab57806355f804b31161024957806366ad5c8a1161022357806366ad5c8a1461074e57806370a082311461076e578063715018a61461078e5780637533d788146107a357600080fd5b806355f804b3146106bf5780635b8c41e6146106df5780636352211e1461072e57600080fd5b806342d65a8d1161028557806342d65a8d1461064957806348288190146106695780634ac3f4ff1461067f57806351905636146106ac57600080fd5b80633d8b38f6146105dc5780633f1f4fa4146105fc57806342842e0e1461062957600080fd5b80630b4cad4c1161031857806318160ddd116102f257806318160ddd146104ef57806322a3ecf91461050457806323b872dd146105875780632a205e3d146105a757600080fd5b80630b4cad4c1461048f5780630df37483146104af57806310ddb137146104cf57600080fd5b806306fdde031161035457806306fdde03146103f557806307e0db1714610417578063081812fc14610437578063095ea7b31461046f57600080fd5b80621d35671461037a57806301ffc9a71461039c578063056c7e57146103d1575b600080fd5b34801561038657600080fd5b5061039a610395366004613961565b610b73565b005b3480156103a857600080fd5b506103bc6103b7366004613a0a565b610da4565b60405190151581526020015b60405180910390f35b3480156103dd57600080fd5b506103e7600a5481565b6040519081526020016103c8565b34801561040157600080fd5b5061040a610dc7565b6040516103c89190613a77565b34801561042357600080fd5b5061039a610432366004613a8a565b610e59565b34801561044357600080fd5b50610457610452366004613aa5565b610f04565b6040516001600160a01b0390911681526020016103c8565b34801561047b57600080fd5b5061039a61048a366004613ade565b610f8c565b34801561049b57600080fd5b5061039a6104aa366004613aa5565b6110a1565b3480156104bb57600080fd5b5061039a6104ca366004613b0a565b611163565b3480156104db57600080fd5b5061039a6104ea366004613a8a565b6111a4565b3480156104fb57600080fd5b50610d056103e7565b34801561051057600080fd5b5061055861051f366004613aa5565b60096020526000908152604090208054600182015460029092015461ffff821692620100009092046001600160a01b0316919060ff1684565b6040805161ffff90951685526001600160a01b03909316602085015291830152151560608201526080016103c8565b34801561059357600080fd5b5061039a6105a2366004613b26565b61121e565b3480156105b357600080fd5b506105c76105c2366004613c42565b611250565b604080519283526020830191909152016103c8565b3480156105e857600080fd5b506103bc6105f7366004613cd0565b611276565b34801561060857600080fd5b506103e7610617366004613a8a565b60036020526000908152604090205481565b34801561063557600080fd5b5061039a610644366004613b26565b611342565b34801561065557600080fd5b5061039a610664366004613cd0565b61135d565b34801561067557600080fd5b506103e760065481565b34801561068b57600080fd5b506103e761069a366004613a8a565b60076020526000908152604090205481565b61039a6106ba366004613d22565b611405565b3480156106cb57600080fd5b5061039a6106da366004613ddb565b61141c565b3480156106eb57600080fd5b506103e76106fa366004613e23565b6005602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561073a57600080fd5b50610457610749366004613aa5565b611456565b34801561075a57600080fd5b5061039a610769366004613961565b6114cd565b34801561077a57600080fd5b506103e7610789366004613e80565b6115a9565b34801561079a57600080fd5b5061039a611630565b3480156107af57600080fd5b5061040a6107be366004613a8a565b611666565b3480156107cf57600080fd5b506103e76107de366004613e9d565b600260209081526000928352604080842090915290825290205481565b34801561080757600080fd5b506000546001600160a01b0316610457565b34801561082557600080fd5b50600b54610457906001600160a01b031681565b34801561084557600080fd5b5061039a610854366004613ed0565b611700565b34801561086557600080fd5b50600454610457906001600160a01b031681565b34801561088557600080fd5b5061040a611939565b34801561089a57600080fd5b5061039a6108a9366004613b0a565b611948565b3480156108ba57600080fd5b5061040a6108c9366004613a8a565b611a21565b3480156108da57600080fd5b5061039a6108e9366004613f04565b611b37565b3480156108fa57600080fd5b5061039a610909366004613cd0565b611bfb565b61039a61091c366004613fb9565b611ca6565b34801561092d57600080fd5b50610936600181565b60405161ffff90911681526020016103c8565b34801561095557600080fd5b506104577f000000000000000000000000000000000000000000000000000000000000000081565b34801561098957600080fd5b5061039a61099836600461406e565b611cb5565b3480156109a957600080fd5b5061039a6109b8366004613e80565b611ce7565b3480156109c957600080fd5b5061039a6109d8366004613aa5565b611d5f565b3480156109e957600080fd5b506103e761271081565b3480156109ff57600080fd5b5061040a610a0e366004613aa5565b611d8e565b348015610a1f57600080fd5b5061039a610a2e3660046140d9565b611e58565b348015610a3f57600080fd5b5061039a610a4e366004613b0a565b611f0f565b61039a610a61366004613961565b611fe1565b348015610a7257600080fd5b5061039a610a81366004614147565b6121f7565b348015610a9257600080fd5b5061039a610aa1366004613e80565b6122cb565b348015610ab257600080fd5b506103bc610ac1366004614183565b612317565b348015610ad257600080fd5b5061039a610ae1366004613cd0565b612345565b348015610af257600080fd5b506105c7610b013660046141bc565b6123c1565b348015610b1257600080fd5b5061039a610b21366004613e80565b61248c565b348015610b3257600080fd5b5061040a610b41366004614235565b612527565b348015610b5257600080fd5b506103e7610b61366004613a8a565b60086020526000908152604090205481565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610bf05760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff861660009081526001602052604081208054610c0e90614282565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3a90614282565b8015610c875780601f10610c5c57610100808354040283529160200191610c87565b820191906000526020600020905b815481529060010190602001808311610c6a57829003601f168201915b50505050509050805186869050148015610ca2575060008151115b8015610cca575080516020820120604051610cc090889088906142bc565b6040518091039020145b610d255760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401610be7565b610d9b8787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506125da92505050565b50505050505050565b60006001600160e01b031982161580610dc15750610dc182612653565b92915050565b6060600c8054610dd690614282565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0290614282565b8015610e4f5780601f10610e2457610100808354040283529160200191610e4f565b820191906000526020600020905b815481529060010190602001808311610e3257829003601f168201915b5050505050905090565b6000546001600160a01b03163314610e835760405162461bcd60e51b8152600401610be7906142cc565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b158015610ee957600080fd5b505af1158015610efd573d6000803e3d6000fd5b5050505050565b6000610f0f82612693565b610f705760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610be7565b506000908152601060205260409020546001600160a01b031690565b6000610f9782611456565b9050806001600160a01b0316836001600160a01b0316036110045760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610be7565b336001600160a01b038216148061102057506110208133612317565b6110925760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610be7565b61109c83836126b0565b505050565b6000546001600160a01b031633146110cb5760405162461bcd60e51b8152600401610be7906142cc565b600081116111275760405162461bcd60e51b8152602060048201526024808201527f6d696e476173546f5472616e73666572416e6453746f7265206d7573742062656044820152630203e20360e41b6064820152608401610be7565b60068190556040518181527ffebbc4f8bb9ec2313950c718d43123124b15778efda4c1f1d529de2995b4f34d906020015b60405180910390a150565b6000546001600160a01b0316331461118d5760405162461bcd60e51b8152600401610be7906142cc565b61ffff909116600090815260036020526040902055565b6000546001600160a01b031633146111ce5760405162461bcd60e51b8152600401610be7906142cc565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb13790602401610ecf565b611229335b8261271e565b6112455760405162461bcd60e51b8152600401610be790614301565b61109c8383836127e0565b600080611268878761126188612980565b87876123c1565b915091509550959350505050565b61ffff83166000908152600160205260408120805482919061129790614282565b80601f01602080910402602001604051908101604052809291908181526020018280546112c390614282565b80156113105780601f106112e557610100808354040283529160200191611310565b820191906000526020600020905b8154815290600101906020018083116112f357829003601f168201915b5050505050905083836040516113279291906142bc565b60405180910390208180519060200120149150509392505050565b61109c83838360405180602001604052806000815250611cb5565b6000546001600160a01b031633146113875760405162461bcd60e51b8152600401610be7906142cc565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d906113d79086908690869060040161437b565b600060405180830381600087803b1580156113f157600080fd5b505af1158015610d9b573d6000803e3d6000fd5b610d9b87878761141488612980565b8787876129cb565b6000546001600160a01b031633146114465760405162461bcd60e51b8152600401610be7906142cc565b601261145282826143df565b5050565b6000818152600e60205260408120546001600160a01b031680610dc15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610be7565b33301461152b5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401610be7565b6115a18686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250612c2692505050565b505050505050565b60006001600160a01b0382166116145760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610be7565b506001600160a01b03166000908152600f602052604090205490565b6000546001600160a01b0316331461165a5760405162461bcd60e51b8152600401610be7906142cc565b6116646000612d8f565b565b6001602052600090815260409020805461167f90614282565b80601f01602080910402602001604051908101604052809291908181526020018280546116ab90614282565b80156116f85780601f106116cd576101008083540402835291602001916116f8565b820191906000526020600020905b8154815290600101906020018083116116db57829003601f168201915b505050505081565b80516020808301919091206000818152600990925260409091206002015460ff166117615760405162461bcd60e51b81526020600482015260116024820152701b9bc818dc99591a5d1cc81cdd1bdc9959607a1b6044820152606401610be7565b60008280602001905181019061177791906144e3565b600084815260096020526040812080546001909101549294509092506117b39161ffff8216916201000090046001600160a01b03169085612ddf565b60008481526009602052604090206001015490915081116118285760405162461bcd60e51b815260206004820152602960248201527f6e6f7420656e6f7567682067617320746f2070726f6365737320637265646974604482015268103a3930b739b332b960b91b6064820152608401610be7565b8151810361189f5760008381526009602052604080822080546001600160b01b031916815560018101929092556002909101805460ff19169055517fd7be02b8dd0d27bd0517a9cb4d7469ce27df4313821ae5ec1ff69acc594ba233906118929085815260200190565b60405180910390a1611933565b60408051608081018252600085815260096020818152848320805461ffff80821687526001600160a01b03620100008084048216868a019081529989018b8152600160608b01818152998f90529790965297519851169096026001600160b01b03199091169690951695909517939093178455915191830191909155516002909101805491151560ff199092169190911790555b50505050565b6060600d8054610dd690614282565b6000546001600160a01b031633146119725760405162461bcd60e51b8152600401610be7906142cc565b600081116119cd5760405162461bcd60e51b815260206004820152602260248201527f647374436861696e4964546f42617463684c696d6974206d757374206265203e604482015261020360f41b6064820152608401610be7565b61ffff8216600081815260076020908152604091829020849055815192835282018390527f7315f7654d594ead24a30160ed9ba2d23247f543016b918343591e93d7afdb6d91015b60405180910390a15050565b61ffff8116600090815260016020526040812080546060929190611a4490614282565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7090614282565b8015611abd5780601f10611a9257610100808354040283529160200191611abd565b820191906000526020600020905b815481529060010190602001808311611aa057829003601f168201915b505050505090508051600003611b155760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610be7565b611b30600060148351611b2891906145b3565b839190612e2b565b9392505050565b336001600160a01b03831603611b8f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610be7565b3360008181526011602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000546001600160a01b03163314611c255760405162461bcd60e51b8152600401610be7906142cc565b818130604051602001611c3a939291906145c6565b60408051601f1981840301815291815261ffff8516600090815260016020522090611c6590826143df565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce838383604051611c999392919061437b565b60405180910390a1505050565b610d9b878787878787876129cb565b611cbf338361271e565b611cdb5760405162461bcd60e51b8152600401610be790614301565b61193384848484612f38565b6000546001600160a01b03163314611d115760405162461bcd60e51b8152600401610be7906142cc565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b90602001611158565b6000546001600160a01b03163314611d895760405162461bcd60e51b8152600401610be7906142cc565b600a55565b6060611d9982612693565b611dfd5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610be7565b6000611e07612f6b565b90506000815111611e275760405180602001604052806000815250611b30565b80611e3184612f7a565b604051602001611e429291906145ec565b6040516020818303038152906040529392505050565b6000546001600160a01b03163314611e825760405162461bcd60e51b8152600401610be7906142cc565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c90611ed6908890889088908890889060040161461b565b600060405180830381600087803b158015611ef057600080fd5b505af1158015611f04573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b03163314611f395760405162461bcd60e51b8152600401610be7906142cc565b60008111611f955760405162461bcd60e51b815260206004820152602360248201527f647374436861696e4964546f5472616e73666572476173206d7573742062652060448201526203e20360ec1b6064820152608401610be7565b61ffff8216600081815260086020908152604091829020849055815192835282018390527fc46df2983228ac2d9754e94a0d565e6671665dc8ad38602bc8e544f0685a29fb9101611a15565b61ffff8616600090815260056020526040808220905161200490889088906142bc565b90815260408051602092819003830190206001600160401b038716600090815292529020549050806120845760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401610be7565b8083836040516120959291906142bc565b6040518091039020146120f45760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401610be7565b61ffff8716600090815260056020526040808220905161211790899089906142bc565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f880182900482028301820190528682526121af918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250612c2692505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e587878787856040516121e6959493929190614654565b60405180910390a150505050505050565b6000546001600160a01b031633146122215760405162461bcd60e51b8152600401610be7906142cc565b600081116122695760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606401610be7565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611c99565b6000546001600160a01b031633146122f55760405162461bcd60e51b8152600401610be7906142cc565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205460ff1690565b6000546001600160a01b0316331461236f5760405162461bcd60e51b8152600401610be7906142cc565b61ffff8316600090815260016020526040902061238d82848361468f565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab838383604051611c999392919061437b565b600080600086866040516020016123d9929190614789565b60408051601f198184030181529082905263040a7bb160e41b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb109061243d908b90309086908b908b906004016147b7565b6040805180830381865afa158015612459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247d919061480b565b92509250509550959350505050565b6000546001600160a01b031633146124b65760405162461bcd60e51b8152600401610be7906142cc565b6001600160a01b03811661251b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610be7565b61252481612d8f565b50565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa1580156125a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125cf919081019061482f565b90505b949350505050565b60008061263d5a60966366ad5c8a60e01b898989896040516024016126029493929190614863565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091523092919061307a565b91509150816115a1576115a18686868685613104565b60006001600160e01b031982166380ac58cd60e01b148061268457506001600160e01b03198216635b5e139f60e01b145b80610dc15750610dc1826131a1565b6000908152600e60205260409020546001600160a01b0316151590565b600081815260106020526040902080546001600160a01b0319166001600160a01b03841690811790915581906126e582611456565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061272982612693565b61278a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610be7565b600061279583611456565b9050806001600160a01b0316846001600160a01b031614806127d05750836001600160a01b03166127c584610f04565b6001600160a01b0316145b806125d257506125d28185612317565b826001600160a01b03166127f382611456565b6001600160a01b03161461285b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610be7565b6001600160a01b0382166128bd5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610be7565b6128c86000826126b0565b6001600160a01b0383166000908152600f602052604081208054600192906128f19084906145b3565b90915550506001600160a01b0382166000908152600f6020526040812080546001929061291f9084906148a1565b90915550506000818152600e602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106129ba576129ba6148b4565b602090810291909101015292915050565b6000845111612a125760405162461bcd60e51b8152602060048201526013602482015272746f6b656e4964735b5d20697320656d70747960681b6044820152606401610be7565b835160011480612a36575061ffff8616600090815260076020526040902054845111155b612a8d5760405162461bcd60e51b815260206004820152602260248201527f62617463682073697a65206578636565647320647374206261746368206c696d6044820152611a5d60f21b6064820152608401610be7565b60005b8451811015612ad057612abe888888888581518110612ab157612ab16148b4565b60200260200101516131d6565b80612ac8816148ca565b915050612a90565b5060008585604051602001612ae6929190614789565b60405160208183030381529060405290506000600a5434612b0791906145b3565b865161ffff8a16600090815260086020526040902054919250612b39918a916001918791612b34916148e3565b6132c1565b612b478883878787866133a0565b6000600a54118015612b635750600b546001600160a01b031615155b15612bbf57600b54600a546040516001600160a01b0390921691600081818185875af1925050503d8060008114612bb6576040519150601f19603f3d011682016040523d82523d6000602084013e612bbb565b606091505b5050505b86604051612bcd91906148fa565b6040518091039020896001600160a01b03168961ffff167fe1b87c47fdeb4f9cbadbca9df3af7aba453bb6e501075d0440d88125b711522a89604051612c139190614916565b60405180910390a4505050505050505050565b60008082806020019051810190612c3d91906144e3565b601482015191935091506000612c5588838386612ddf565b90508251811015612d295784516020808701919091206040805160808101825261ffff808d1682526001600160a01b0380881683870190815283850188815260016060860181815260008981526009909a529887902095518654935190941662010000026001600160b01b03199093169390941692909217178355519082015592516002909301805493151560ff199094169390931790925590517f10e0b70d256bccc84b7027506978bd8b68984a870788b93b479def144c839ad790612d1f9083908990614929565b60405180910390a1505b816001600160a01b031687604051612d4191906148fa565b60405180910390208961ffff167f5b821db8a46f8ecbe1941ba2f51cfeea9643268b56631f70d45e2a745d99026586604051612d7d9190614916565b60405180910390a45050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000825b82518110156125cf576006545a106125cf57612e198686858481518110612e0c57612e0c6148b4565b6020026020010151613545565b80612e23816148ca565b915050612de3565b606081612e3981601f6148a1565b1015612e785760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610be7565b612e8282846148a1565b84511015612ec65760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610be7565b606082158015612ee55760405191506000825260208201604052612f2f565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612f1e578051835260209283019201612f06565b5050858452601f01601f1916604052505b50949350505050565b612f438484846127e0565b612f4f848484846135a5565b6119335760405162461bcd60e51b8152600401610be790614942565b606060128054610dd690614282565b606081600003612fa15750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612fcb5780612fb5816148ca565b9150612fc49050600a836149aa565b9150612fa5565b6000816001600160401b03811115612fe557612fe5613b67565b6040519080825280601f01601f19166020018201604052801561300f576020820181803683370190505b5090505b84156125d2576130246001836145b3565b9150613031600a866149be565b61303c9060306148a1565b60f81b818381518110613051576130516148b4565b60200101906001600160f81b031916908160001a905350613073600a866149aa565b9450613013565b6000606060008060008661ffff166001600160401b0381111561309f5761309f613b67565b6040519080825280601f01601f1916602001820160405280156130c9576020820181803683370190505b50905060008087516020890160008d8df191503d9250868311156130eb578692505b828152826000602083013e909890975095505050505050565b8180519060200120600560008761ffff1661ffff1681526020019081526020016000208560405161313591906148fa565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9061319290879087908790879087906149d2565b60405180910390a15050505050565b60006001600160e01b031982166322bac5d960e01b1480610dc157506301ffc9a760e01b6001600160e01b0319831614610dc1565b6131df33611223565b6132425760405162461bcd60e51b815260206004820152602e60248201527f4f4e46543732313a2073656e642063616c6c6572206973206e6f74206f776e6560448201526d1c881b9bdc88185c1c1c9bdd995960921b6064820152608401610be7565b836001600160a01b031661325582611456565b6001600160a01b0316146132b65760405162461bcd60e51b815260206004820152602260248201527f4f4e46543732313a2073656e642066726f6d20696e636f7272656374206f776e60448201526132b960f11b6064820152608401610be7565b6119338430836127e0565b60006132cc836136a3565b61ffff8087166000908152600260209081526040808320938916835292905290812054919250906132fe9084906148a1565b9050600081116133505760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610be7565b808210156115a15760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610be7565b61ffff8616600090815260016020526040812080546133be90614282565b80601f01602080910402602001604051908101604052809291908181526020018280546133ea90614282565b80156134375780601f1061340c57610100808354040283529160200191613437565b820191906000526020600020905b81548152906001019060200180831161341a57829003601f168201915b5050505050905080516000036134a85760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401610be7565b6134b38787516136ff565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c580310090849061350a908b9086908c908c908c908c90600401614a24565b6000604051808303818588803b15801561352357600080fd5b505af1158015613537573d6000803e3d6000fd5b505050505050505050505050565b61354e81612693565b158061357a575061355e81612693565b801561357a57503061356f82611456565b6001600160a01b0316145b61358357600080fd5b61358c81612693565b61359a5761109c8282613770565b61109c3083836127e0565b60006001600160a01b0384163b1561369b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906135e9903390899088908890600401614a8b565b6020604051808303816000875af1925050508015613624575060408051601f3d908101601f1916820190925261362191810190614ac8565b60015b613681573d808015613652576040519150601f19603f3d011682016040523d82523d6000602084013e613657565b606091505b5080516000036136795760405162461bcd60e51b8152600401610be790614942565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506125d2565b5060016125d2565b60006022825110156136f75760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606401610be7565b506022015190565b61ffff82166000908152600360205260408120549081900361372057506127105b8082111561109c5760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401610be7565b61145282826040518060200160405280600081525061378f83836137b8565b61379c60008484846135a5565b61109c5760405162461bcd60e51b8152600401610be790614942565b6001600160a01b03821661380e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610be7565b61381781612693565b156138645760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610be7565b6001600160a01b0382166000908152600f6020526040812080546001929061388d9084906148a1565b90915550506000818152600e602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b803561ffff811681146138fd57600080fd5b919050565b60008083601f84011261391457600080fd5b5081356001600160401b0381111561392b57600080fd5b60208301915083602082850101111561394357600080fd5b9250929050565b80356001600160401b03811681146138fd57600080fd5b6000806000806000806080878903121561397a57600080fd5b613983876138eb565b955060208701356001600160401b038082111561399f57600080fd5b6139ab8a838b01613902565b90975095508591506139bf60408a0161394a565b945060608901359150808211156139d557600080fd5b506139e289828a01613902565b979a9699509497509295939492505050565b6001600160e01b03198116811461252457600080fd5b600060208284031215613a1c57600080fd5b8135611b30816139f4565b60005b83811015613a42578181015183820152602001613a2a565b50506000910152565b60008151808452613a63816020860160208601613a27565b601f01601f19169290920160200192915050565b602081526000611b306020830184613a4b565b600060208284031215613a9c57600080fd5b611b30826138eb565b600060208284031215613ab757600080fd5b5035919050565b6001600160a01b038116811461252457600080fd5b80356138fd81613abe565b60008060408385031215613af157600080fd5b8235613afc81613abe565b946020939093013593505050565b60008060408385031215613b1d57600080fd5b613afc836138eb565b600080600060608486031215613b3b57600080fd5b8335613b4681613abe565b92506020840135613b5681613abe565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613ba557613ba5613b67565b604052919050565b60006001600160401b03821115613bc657613bc6613b67565b50601f01601f191660200190565b6000613be7613be284613bad565b613b7d565b9050828152838383011115613bfb57600080fd5b828260208301376000602084830101529392505050565b600082601f830112613c2357600080fd5b611b3083833560208501613bd4565b803580151581146138fd57600080fd5b600080600080600060a08688031215613c5a57600080fd5b613c63866138eb565b945060208601356001600160401b0380821115613c7f57600080fd5b613c8b89838a01613c12565b955060408801359450613ca060608901613c32565b93506080880135915080821115613cb657600080fd5b50613cc388828901613c12565b9150509295509295909350565b600080600060408486031215613ce557600080fd5b613cee846138eb565b925060208401356001600160401b03811115613d0957600080fd5b613d1586828701613902565b9497909650939450505050565b600080600080600080600060e0888a031215613d3d57600080fd5b8735613d4881613abe565b9650613d56602089016138eb565b955060408801356001600160401b0380821115613d7257600080fd5b613d7e8b838c01613c12565b965060608a0135955060808a01359150613d9782613abe565b90935060a089013590613da982613abe565b90925060c08901359080821115613dbf57600080fd5b50613dcc8a828b01613c12565b91505092959891949750929550565b600060208284031215613ded57600080fd5b81356001600160401b03811115613e0357600080fd5b8201601f81018413613e1457600080fd5b6125d284823560208401613bd4565b600080600060608486031215613e3857600080fd5b613e41846138eb565b925060208401356001600160401b03811115613e5c57600080fd5b613e6886828701613c12565b925050613e776040850161394a565b90509250925092565b600060208284031215613e9257600080fd5b8135611b3081613abe565b60008060408385031215613eb057600080fd5b613eb9836138eb565b9150613ec7602084016138eb565b90509250929050565b600060208284031215613ee257600080fd5b81356001600160401b03811115613ef857600080fd5b6125d284828501613c12565b60008060408385031215613f1757600080fd5b8235613f2281613abe565b9150613ec760208401613c32565b60006001600160401b03821115613f4957613f49613b67565b5060051b60200190565b600082601f830112613f6457600080fd5b81356020613f74613be283613f30565b82815260059290921b84018101918181019086841115613f9357600080fd5b8286015b84811015613fae5780358352918301918301613f97565b509695505050505050565b600080600080600080600060e0888a031215613fd457600080fd5b8735613fdf81613abe565b9650613fed602089016138eb565b955060408801356001600160401b038082111561400957600080fd5b6140158b838c01613c12565b965060608a013591508082111561402b57600080fd5b6140378b838c01613f53565b955060808a0135915061404982613abe565b81945061405860a08b01613ad3565b935060c08a0135915080821115613dbf57600080fd5b6000806000806080858703121561408457600080fd5b843561408f81613abe565b9350602085013561409f81613abe565b92506040850135915060608501356001600160401b038111156140c157600080fd5b6140cd87828801613c12565b91505092959194509250565b6000806000806000608086880312156140f157600080fd5b6140fa866138eb565b9450614108602087016138eb565b93506040860135925060608601356001600160401b0381111561412a57600080fd5b61413688828901613902565b969995985093965092949392505050565b60008060006060848603121561415c57600080fd5b614165846138eb565b9250614173602085016138eb565b9150604084013590509250925092565b6000806040838503121561419657600080fd5b82356141a181613abe565b915060208301356141b181613abe565b809150509250929050565b600080600080600060a086880312156141d457600080fd5b6141dd866138eb565b945060208601356001600160401b03808211156141f957600080fd5b61420589838a01613c12565b9550604088013591508082111561421b57600080fd5b61422789838a01613f53565b9450613ca060608901613c32565b6000806000806080858703121561424b57600080fd5b614254856138eb565b9350614262602086016138eb565b9250604085013561427281613abe565b9396929550929360600135925050565b600181811c9082168061429657607f821691505b6020821081036142b657634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff841681526040602082015260006125cf604083018486614352565b601f82111561109c57600081815260208120601f850160051c810160208610156143c05750805b601f850160051c820191505b818110156115a1578281556001016143cc565b81516001600160401b038111156143f8576143f8613b67565b61440c816144068454614282565b84614399565b602080601f83116001811461444157600084156144295750858301515b600019600386901b1c1916600185901b1785556115a1565b600085815260208120601f198616915b8281101561447057888601518255948401946001909101908401614451565b508582101561448e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082601f8301126144af57600080fd5b81516144bd613be282613bad565b8181528460208386010111156144d257600080fd5b6125d2826020830160208701613a27565b600080604083850312156144f657600080fd5b82516001600160401b038082111561450d57600080fd5b6145198683870161449e565b935060209150818501518181111561453057600080fd5b85019050601f8101861361454357600080fd5b8051614551613be282613f30565b81815260059190911b8201830190838101908883111561457057600080fd5b928401925b8284101561458e57835182529284019290840190614575565b80955050505050509250929050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610dc157610dc161459d565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600083516145fe818460208801613a27565b835190830190614612818360208801613a27565b01949350505050565b600061ffff808816835280871660208401525084604083015260806060830152614649608083018486614352565b979650505050505050565b61ffff86168152608060208201526000614672608083018688614352565b6001600160401b0394909416604083015250606001529392505050565b6001600160401b038311156146a6576146a6613b67565b6146ba836146b48354614282565b83614399565b6000601f8411600181146146ee57600085156146d65750838201355b600019600387901b1c1916600186901b178355610efd565b600083815260209020601f19861690835b8281101561471f57868501358255602094850194600190920191016146ff565b508682101561473c5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b600081518084526020808501945080840160005b8381101561477e57815187529582019590820190600101614762565b509495945050505050565b60408152600061479c6040830185613a4b565b82810360208401526147ae818561474e565b95945050505050565b61ffff861681526001600160a01b038516602082015260a0604082018190526000906147e590830186613a4b565b841515606084015282810360808401526147ff8185613a4b565b98975050505050505050565b6000806040838503121561481e57600080fd5b505080516020909101519092909150565b60006020828403121561484157600080fd5b81516001600160401b0381111561485757600080fd5b6125d28482850161449e565b61ffff851681526080602082015260006148806080830186613a4b565b6001600160401b038516604084015282810360608401526146498185613a4b565b80820180821115610dc157610dc161459d565b634e487b7160e01b600052603260045260246000fd5b6000600182016148dc576148dc61459d565b5060010190565b8082028115828204841417610dc157610dc161459d565b6000825161490c818460208701613a27565b9190910192915050565b602081526000611b30602083018461474e565b8281526040602082015260006125d26040830184613a4b565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826149b9576149b9614994565b500490565b6000826149cd576149cd614994565b500690565b61ffff8616815260a0602082015260006149ef60a0830187613a4b565b6001600160401b03861660408401528281036060840152614a108186613a4b565b905082810360808401526147ff8185613a4b565b61ffff8716815260c060208201526000614a4160c0830188613a4b565b8281036040840152614a538188613a4b565b6001600160a01b0387811660608601528616608085015283810360a08501529050614a7e8185613a4b565b9998505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614abe90830184613a4b565b9695505050505050565b600060208284031215614ada57600080fd5b8151611b30816139f456fea26469706673582212208289f6c661d5f7dd127986642e88bb3d7018005b2e8fbfda34f454c4cc0dc6c964736f6c63430008120033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000030d40000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd700000000000000000000000000000000000000000000000000000000000000075a4b50454e475a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000450454e4700000000000000000000000000000000000000000000000000000000