0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50611d16806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004361003e36600461166f565b610045565b005b61004d61009e565b61009761005a85876117ec565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061016e92505050565b5050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6004015473ffffffffffffffffffffffffffffffffffffffff16331461016c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60448201527f657200000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b565b60005b835181101561036757600084828151811061018e5761018e611948565b6020026020010151602001519050600060028111156101af576101af611977565b8160028111156101c1576101c1611977565b14156102105761020b8583815181106101dc576101dc611948565b6020026020010151600001518684815181106101fa576101fa611948565b6020026020010151604001516103b2565b610354565b600181600281111561022457610224611977565b141561026e5761020b85838151811061023f5761023f611948565b60200260200101516000015186848151811061025d5761025d611948565b60200260200101516040015161075e565b600281600281111561028257610282611977565b14156102cc5761020b85838151811061029d5761029d611948565b6020026020010151600001518684815181106102bb576102bb611948565b602002602001015160400151610b1b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e000000000000000000000000000000000000000000000000006064820152608401610163565b508061035f816119d5565b915050610171565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161039b93929190611a84565b60405180910390a16103ad8282610d0e565b505050565b6000815111610443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f206375740000000000000000000000000000000000000000006064820152608401610163565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f65206164647265737328302900000000000000000000000000000000000000006064820152608401610163565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff811661054c5761054c8285610fc1565b60005b835181101561009757600084828151811061056c5761056c611948565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff168015610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401610163565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff0000000000000000000000000000000000000000161790558361074681611bec565b94505050508080610756906119d5565b91505061054f565b60008151116107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f206375740000000000000000000000000000000000000000006064820152608401610163565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff83166108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f65206164647265737328302900000000000000000000000000000000000000006064820152608401610163565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff81166108f8576108f88285610fc1565b60005b835181101561009757600084828151811061091857610918611948565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff908116908716811415610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e00000000000000006064820152608401610163565b610a0e858284611050565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610b0381611bec565b94505050508080610b13906119d5565b9150506108fb565b6000815111610bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f206375740000000000000000000000000000000000000000006064820152608401610163565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff831615610c71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d7573742062652061646472657373283029000000000000000000006064820152608401610163565b60005b8251811015610d08576000838281518110610c9157610c91611948565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16610cf3848284611050565b50508080610d00906119d5565b915050610c74565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8216610dbc57805115610db8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d707479000000006064820152608401610163565b5050565b6000815111610e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f7420616464726573732830290000006064820152608401610163565b73ffffffffffffffffffffffffffffffffffffffff82163014610e8c57610e8c82604051806060016040528060288152602001611c95602891396115c2565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610eb49190611c18565b600060405180830381855af49150503d8060008114610eef576040519150601f19603f3d011682016040523d82523d6000602084013e610ef4565b606091505b509150915081610d0857805115610f3957806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101639190611c34565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f76657274656400000000000000000000000000000000000000000000000000006064820152608401610163565b610fe381604051806060016040528060248152602001611cbd602491396115c2565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff82166110f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e27742065786973740000000000000000006064820152608401610163565b73ffffffffffffffffffffffffffffffffffffffff8216301415611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e0000000000000000000000000000000000006064820152608401610163565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16929161122391611c4e565b905080821461136a5773ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040812080548390811061126557611265611948565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b9250829190859081106112c3576112c3611948565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff8416600090815260018601602052604090208054806113a0576113a0611c65565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff000000000000000000000000000000000000000000000000000000008516825286905260408120558061009757600285015460009061143590600190611c4e565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260018089016020526040909120015490915080821461152357600087600201838154811061148157611481611948565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff90921692508291849081106114bf576114bf611948565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b8660020180548061153657611536611c65565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b813b8181610d08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101639190611c34565b803573ffffffffffffffffffffffffffffffffffffffff8116811461162157600080fd5b919050565b60008083601f84011261163857600080fd5b50813567ffffffffffffffff81111561165057600080fd5b60208301915083602082850101111561166857600080fd5b9250929050565b60008060008060006060868803121561168757600080fd5b853567ffffffffffffffff8082111561169f57600080fd5b818801915088601f8301126116b357600080fd5b8135818111156116c257600080fd5b8960208260051b85010111156116d757600080fd5b602083019750809650506116ed602089016115fd565b9450604088013591508082111561170357600080fd5b5061171088828901611626565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561177357611773611721565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117c0576117c0611721565b604052919050565b600067ffffffffffffffff8211156117e2576117e2611721565b5060051b60200190565b60006117ff6117fa846117c8565b611779565b83815260208082019190600586811b86013681111561181d57600080fd5b865b8181101561193b57803567ffffffffffffffff808211156118405760008081fd5b818a019150606082360312156118565760008081fd5b61185e611750565b611867836115fd565b8152868301356003811061187b5760008081fd5b81880152604083810135838111156118935760008081fd5b939093019236601f8501126118aa57600092508283fd5b833592506118ba6117fa846117c8565b83815292871b840188019288810190368511156118d75760008081fd5b948901945b848610156119245785357fffffffff00000000000000000000000000000000000000000000000000000000811681146119155760008081fd5b825294890194908901906118dc565b91830191909152508852505094830194830161181f565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611a0757611a076119a6565b5060010190565b60005b83811015611a29578181015183820152602001611a11565b83811115610d085750506000910152565b60008151808452611a52816020860160208601611a0e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b84811015611baf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff82511686528482015160038110611b36577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015611b9a5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928601926001929092019190860190611b58565b50978501979550505090820190600101611aad565b505073ffffffffffffffffffffffffffffffffffffffff8a16908801528681036040880152611bde8189611a3a565b9a9950505050505050505050565b60006bffffffffffffffffffffffff80831681811415611c0e57611c0e6119a6565b6001019392505050565b60008251611c2a818460208701611a0e565b9190910192915050565b602081526000611c476020830184611a3a565b9392505050565b600082821015611c6057611c606119a6565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212205ebb55271a7b4137fff1fdb3061128fbde1889b068f341304476640c9c0371cf64736f6c634300080a0033