//
0x60806040523480156200001157600080fd5b50604051620020af380380620020af833981810160405281019062000037919062000587565b620000638273ffffffffffffffffffffffffffffffffffffffff16620004fa60201b62000a231760201c565b620000a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200009c9062000655565b60405180910390fd5b620000d18173ffffffffffffffffffffffffffffffffffffffff16620004fa60201b62000a231760201c565b62000113576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200010a90620006ed565b60405180910390fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633d83908a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e5919062000754565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b83f91a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f8919062000786565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cc919062000786565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620004ab929190620007e4565b6020604051808303816000875af1158015620004cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f191906200084e565b50505062000880565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200054f8262000522565b9050919050565b620005618162000542565b81146200056d57600080fd5b50565b600081519050620005818162000556565b92915050565b60008060408385031215620005a157620005a06200051d565b5b6000620005b18582860162000570565b9250506020620005c48582860162000570565b9150509250929050565b600082825260208201905092915050565b7f53776170416e64436c6f7365546f6f6c3a20626f72726f7765724f706572617460008201527f696f6e73206973206e6f7420636f6e7472616374000000000000000000000000602082015250565b60006200063d603483620005ce565b91506200064a82620005df565b604082019050919050565b6000602082019050818103600083015262000670816200062e565b9050919050565b7f53776170416e64436c6f7365546f6f6c3a206d696d6f526f757465722069732060008201527f6e6f7420636f6e74726163740000000000000000000000000000000000000000602082015250565b6000620006d5602c83620005ce565b9150620006e28262000677565b604082019050919050565b600060208201905081810360008301526200070881620006c6565b9050919050565b60006200071c8262000542565b9050919050565b6200072e816200070f565b81146200073a57600080fd5b50565b6000815190506200074e8162000723565b92915050565b6000602082840312156200076d576200076c6200051d565b5b60006200077d848285016200073d565b91505092915050565b6000602082840312156200079f576200079e6200051d565b5b6000620007af8482850162000570565b91505092915050565b620007c38162000542565b82525050565b6000819050919050565b620007de81620007c9565b82525050565b6000604082019050620007fb6000830185620007b8565b6200080a6020830184620007d3565b9392505050565b60008115159050919050565b620008288162000811565b81146200083457600080fd5b50565b60008151905062000848816200081d565b92915050565b6000602082840312156200086757620008666200051d565b5b6000620008778482850162000837565b91505092915050565b61181f80620008906000396000f3fe6080604052600436106100555760003560e01c8063341a87731461005a5780633d83908a1461006457806352c70ad01461008f57806377553ad4146100ba5780637f477738146100e5578063ad5c464814610110575b600080fd5b61006261013b565b005b34801561007057600080fd5b50610079610967565b6040516100869190610dc0565b60405180910390f35b34801561009b57600080fd5b506100a461098d565b6040516100b19190610dfc565b60405180910390f35b3480156100c657600080fd5b506100cf6109b3565b6040516100dc9190610e38565b60405180910390f35b3480156100f157600080fd5b506100fa6109d7565b6040516101079190610e74565b60405180910390f35b34801561011c57600080fd5b506101256109fd565b6040516101329190610eb0565b60405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d66a2553336040518263ffffffff1660e01b81526004016101989190610eb0565b602060405180830381865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d99190610f15565b90506000811161021e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021590610f9f565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e86bbd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ad9190610f15565b816102b89190610fee565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016103179190610eb0565b602060405180830381865afa158015610334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103589190610f15565b905060008282101561036a578161036c565b825b905060008111156103c7576103c6333083600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a46909392919063ffffffff16565b5b82600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104239190610eb0565b602060405180830381865afa158015610440573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104649190610f15565b1015610820576000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104c79190610eb0565b602060405180830381865afa1580156104e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105089190610f15565b846105139190610fee565b90506000600267ffffffffffffffff81111561053257610531611022565b5b6040519080825280602002602001820160405280156105605781602001602082028036833780820191505090505b509050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061059a57610599611051565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061060b5761060a611051565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7484846040518363ffffffff1660e01b81526004016106a492919061114d565b600060405180830381865afa1580156106c1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906106ea91906112a7565b905080600081518110610700576106ff611051565b5b602002602001015134101561074a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074190611362565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb3bdb418260008151811061079c5761079b611051565b5b6020026020010151858530600a426107b49190611382565b6040518663ffffffff1660e01b81526004016107d394939291906113b6565b60006040518083038185885af11580156107f1573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525081019061081b91906112a7565b505050505b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c345960c336040518263ffffffff1660e01b81526004016108799190610eb0565b600060405180830381600087803b15801561089357600080fd5b505af11580156108a7573d6000803e3d6000fd5b5050505060004711156109625760003373ffffffffffffffffffffffffffffffffffffffff16476040516108da90611433565b60006040518083038185875af1925050503d8060008114610917576040519150601f19603f3d011682016040523d82523d6000602084013e61091c565b606091505b5050905080610960576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610957906114ba565b60405180910390fd5b505b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b610ac9846323b872dd60e01b858585604051602401610a67939291906114da565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610acf565b50505050565b6000610b31826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610b979092919063ffffffff16565b9050600081511480610b53575080806020019051810190610b529190611549565b5b610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b89906115e8565b60405180910390fd5b505050565b6060610ba68484600085610baf565b90509392505050565b606082471015610bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610beb9061167a565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610c1d9190611700565b60006040518083038185875af1925050503d8060008114610c5a576040519150601f19603f3d011682016040523d82523d6000602084013e610c5f565b606091505b5091509150610c7087838387610c7c565b92505050949350505050565b60608315610cde576000835103610cd657610c9685610a23565b610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90611763565b60405180910390fd5b5b829050610ce9565b610ce88383610cf1565b5b949350505050565b600082511115610d045781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3891906117c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d86610d81610d7c84610d41565b610d61565b610d41565b9050919050565b6000610d9882610d6b565b9050919050565b6000610daa82610d8d565b9050919050565b610dba81610d9f565b82525050565b6000602082019050610dd56000830184610db1565b92915050565b6000610de682610d8d565b9050919050565b610df681610ddb565b82525050565b6000602082019050610e116000830184610ded565b92915050565b6000610e2282610d8d565b9050919050565b610e3281610e17565b82525050565b6000602082019050610e4d6000830184610e29565b92915050565b6000610e5e82610d8d565b9050919050565b610e6e81610e53565b82525050565b6000602082019050610e896000830184610e65565b92915050565b6000610e9a82610d41565b9050919050565b610eaa81610e8f565b82525050565b6000602082019050610ec56000830184610ea1565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b610ef281610edf565b8114610efd57600080fd5b50565b600081519050610f0f81610ee9565b92915050565b600060208284031215610f2b57610f2a610ed5565b5b6000610f3984828501610f00565b91505092915050565b600082825260208201905092915050565b7f53776170416e64436c6f7365546f6f6c3a206465627420697320300000000000600082015250565b6000610f89601b83610f42565b9150610f9482610f53565b602082019050919050565b60006020820190508181036000830152610fb881610f7c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ff982610edf565b915061100483610edf565b925082820390508181111561101c5761101b610fbf565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b61108981610edf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6110c481610e8f565b82525050565b60006110d683836110bb565b60208301905092915050565b6000602082019050919050565b60006110fa8261108f565b611104818561109a565b935061110f836110ab565b8060005b8381101561114057815161112788826110ca565b9750611132836110e2565b925050600181019050611113565b5085935050505092915050565b60006040820190506111626000830185611080565b818103602083015261117481846110ef565b90509392505050565b600080fd5b6000601f19601f8301169050919050565b61119c82611182565b810181811067ffffffffffffffff821117156111bb576111ba611022565b5b80604052505050565b60006111ce610ecb565b90506111da8282611193565b919050565b600067ffffffffffffffff8211156111fa576111f9611022565b5b602082029050602081019050919050565b600080fd5b600061122361121e846111df565b6111c4565b905080838252602082019050602084028301858111156112465761124561120b565b5b835b8181101561126f578061125b8882610f00565b845260208401935050602081019050611248565b5050509392505050565b600082601f83011261128e5761128d61117d565b5b815161129e848260208601611210565b91505092915050565b6000602082840312156112bd576112bc610ed5565b5b600082015167ffffffffffffffff8111156112db576112da610eda565b5b6112e784828501611279565b91505092915050565b7f53776170416e64436c6f7365546f6f6c3a20455448206973206e6f7420656e6f60008201527f7567680000000000000000000000000000000000000000000000000000000000602082015250565b600061134c602383610f42565b9150611357826112f0565b604082019050919050565b6000602082019050818103600083015261137b8161133f565b9050919050565b600061138d82610edf565b915061139883610edf565b92508282019050808211156113b0576113af610fbf565b5b92915050565b60006080820190506113cb6000830187611080565b81810360208301526113dd81866110ef565b90506113ec6040830185610ea1565b6113f96060830184611080565b95945050505050565b600081905092915050565b50565b600061141d600083611402565b91506114288261140d565b600082019050919050565b600061143e82611410565b9150819050919050565b7f53776170416e64436c6f7365546f6f6c3a2073656e64696e672045544820666160008201527f696c656400000000000000000000000000000000000000000000000000000000602082015250565b60006114a4602483610f42565b91506114af82611448565b604082019050919050565b600060208201905081810360008301526114d381611497565b9050919050565b60006060820190506114ef6000830186610ea1565b6114fc6020830185610ea1565b6115096040830184611080565b949350505050565b60008115159050919050565b61152681611511565b811461153157600080fd5b50565b6000815190506115438161151d565b92915050565b60006020828403121561155f5761155e610ed5565b5b600061156d84828501611534565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006115d2602a83610f42565b91506115dd82611576565b604082019050919050565b60006020820190508181036000830152611601816115c5565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000611664602683610f42565b915061166f82611608565b604082019050919050565b6000602082019050818103600083015261169381611657565b9050919050565b600081519050919050565b60005b838110156116c35780820151818401526020810190506116a8565b60008484015250505050565b60006116da8261169a565b6116e48185611402565b93506116f48185602086016116a5565b80840191505092915050565b600061170c82846116cf565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b600061174d601d83610f42565b915061175882611717565b602082019050919050565b6000602082019050818103600083015261177c81611740565b9050919050565b600081519050919050565b600061179982611783565b6117a38185610f42565b93506117b38185602086016116a5565b6117bc81611182565b840191505092915050565b600060208201905081810360008301526117e1818461178e565b90509291505056fea26469706673582212208afe1789a6cc7156c54694cd8234024f1fc9dbf467d082091a2c8cd7a023841d64736f6c634300081200330000000000000000000000004c579289b99a8b1741745bd557c754b30b0b81fa000000000000000000000000147cdae2bf7e809b9789ad0765899c06b361c5ce