0x608060405234801561001057600080fd5b50611714806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004361003e366004611064565b610045565b005b61004d61009e565b61009761005a85876111aa565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061011a92505050565b5050505050565b600080516020611673833981519152600401546001600160a01b031633146101185760405162461bcd60e51b815260206004820152602260248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60448201526132b960f11b60648201526084015b60405180910390fd5b565b60005b83518110156102e057600084828151811061013a5761013a6112ee565b60200260200101516020015190506000600281111561015b5761015b611304565b81600281111561016d5761016d611304565b036101bb576101b6858381518110610187576101876112ee565b6020026020010151600001518684815181106101a5576101a56112ee565b60200260200101516040015161032b565b6102cd565b60018160028111156101cf576101cf611304565b03610218576101b68583815181106101e9576101e96112ee565b602002602001015160000151868481518110610207576102076112ee565b60200260200101516040015161058c565b600281600281111561022c5761022c611304565b03610275576101b6858381518110610246576102466112ee565b602002602001015160000151868481518110610264576102646112ee565b602002602001015160400151610816565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b606482015260840161010f565b50806102d881611330565b91505061011d565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161031493929190611399565b60405180910390a16103268282610933565b505050565b600081511161034c5760405162461bcd60e51b815260040161010f90611499565b6000805160206116738339815191526001600160a01b0383166103815760405162461bcd60e51b815260040161010f906114e4565b6001600160a01b03831660009081526001820160205260408120549061ffff82169003610426576103ca846040518060600160405280602481526020016116bb60249139610b61565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b8351811015610097576000848281518110610446576104466112ee565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156104e45760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b606482015260840161010f565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160b01b031916909117600160a01b61ffff8716021790558361057481611530565b9450505050808061058490611330565b915050610429565b60008151116105ad5760405162461bcd60e51b815260040161010f90611499565b6000805160206116738339815191526001600160a01b0383166105e25760405162461bcd60e51b815260040161010f906114e4565b6001600160a01b03831660009081526001820160205260408120549061ffff821690036106875761062b846040518060600160405280602481526020016116bb60249139610b61565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156100975760008482815181106106a7576106a76112ee565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690871681036107525760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840161010f565b61075c8183610b82565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836107fe81611530565b9450505050808061080e90611330565b91505061068a565b60008151116108375760405162461bcd60e51b815260040161010f90611499565b6000805160206116738339815191526001600160a01b038316156108bc5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b606482015260840161010f565b60005b825181101561092d5760008382815181106108dc576108dc6112ee565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b03166109188183610b82565b5050808061092590611330565b9150506108bf565b50505050565b6001600160a01b0382166109ba578051156109b65760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606482015260840161010f565b5050565b6000815111610a315760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606482015260840161010f565b6001600160a01b0382163014610a6357610a638260405180606001604052806028815260200161169360289139610b61565b600080836001600160a01b031683604051610a7e9190611551565b600060405180830381855af49150503d8060008114610ab9576040519150601f19603f3d011682016040523d82523d6000602084013e610abe565b606091505b50915091508161092d57805115610b0a57610b0581604051806040016040528060148152602001732634b12234b0b6b7b73221baba1d2fb4b734ba1d60611b815250610f6d565b61092d565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b606482015260840161010f565b813b818161092d5760405162461bcd60e51b815260040161010f919061156d565b6000805160206116738339815191526001600160a01b038316610c0d5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840161010f565b306001600160a01b03841603610c7c5760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b606482015260840161010f565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610cc691611587565b9050808214610db2576001600160a01b03851660009081526001840160205260408120805483908110610cfb57610cfb6112ee565b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610d4c57610d4c6112ee565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610ddb57610ddb6115a0565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040812080546001600160b01b0319169055819003610097576002830154600090610e4990600190611587565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214610f08576000856002018381548110610e8c57610e8c6112ee565b6000918252602090912001546002870180546001600160a01b039092169250829184908110610ebd57610ebd6112ee565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b84600201805480610f1b57610f1b6115a0565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b60208251610f7b91906115b6565b600403610fee5760208201516001600160e01b0319811662461bcd60e51b03610fdd576044830192508183604051602001610fb79291906115d8565b60408051601f198184030181529082905262461bcd60e51b825261010f9160040161156d565b81604051602001610fb79190611607565b80604051602001610fb7919061163a565b80356001600160a01b038116811461101657600080fd5b919050565b60008083601f84011261102d57600080fd5b50813567ffffffffffffffff81111561104557600080fd5b60208301915083602082850101111561105d57600080fd5b9250929050565b60008060008060006060868803121561107c57600080fd5b853567ffffffffffffffff8082111561109457600080fd5b818801915088601f8301126110a857600080fd5b8135818111156110b757600080fd5b8960208260051b85010111156110cc57600080fd5b602083019750809650506110e260208901610fff565b945060408801359150808211156110f857600080fd5b506111058882890161101b565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561114f5761114f611116565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561117e5761117e611116565b604052919050565b600067ffffffffffffffff8211156111a0576111a0611116565b5060051b60200190565b60006111bd6111b884611186565b611155565b83815260208082019190600586811b8601368111156111db57600080fd5b865b818110156112e157803567ffffffffffffffff808211156111fe5760008081fd5b818a019150606082360312156112145760008081fd5b61121c61112c565b61122583610fff565b815286830135600381106112395760008081fd5b81880152604083810135838111156112515760008081fd5b939093019236601f85011261126857600092508283fd5b833592506112786111b884611186565b83815292871b840188019288810190368511156112955760008081fd5b948901945b848610156112ca5785356001600160e01b0319811681146112bb5760008081fd5b8252948901949089019061129a565b9183019190915250885250509483019483016111dd565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016113425761134261131a565b5060010190565b60005b8381101561136457818101518382015260200161134c565b50506000910152565b60008151808452611385816020860160208601611349565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b8481101561146957898403607f19018652815180516001600160a01b0316855283810151898601906003811061140857634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156114545783516001600160e01b031916825292860192600192909201919086019061142a565b509785019795505050908201906001016113c2565b50506001600160a01b038a1690880152868103604088015261148b818961136d565b9a9950505050505050505050565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b600061ffff8083168181036115475761154761131a565b6001019392505050565b60008251611563818460208701611349565b9190910192915050565b602081526000611580602083018461136d565b9392505050565b8181038181111561159a5761159a61131a565b92915050565b634e487b7160e01b600052603160045260246000fd5b6000826115d357634e487b7160e01b600052601260045260246000fd5b500690565b600083516115ea818460208801611349565b8351908301906115fe818360208801611349565b01949350505050565b60008251611619818460208701611349565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b6000825161164c818460208701611349565b73556e657870656374656452657475726e6461746160601b92019182525060140191905056fec8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212204cb4e85301d7374317b0bc56a6b15530d172e02ff6ece3266001b442ddce7bf764736f6c63430008110033