0x6080604052600436106101655760003560e01c80637533d788116100d157806395d89b411161008a578063d1deba1f11610064578063d1deba1f14610569578063d2fcb6d514610585578063dd62ed3e146105ae578063f2fde38b146105eb57610165565b806395d89b41146104c4578063a457c2d7146104ef578063a9059cbb1461052c57610165565b80637533d788146103ae57806379cc6790146103eb5780638cef430d146104145780638da5cb5b146104305780638ee749121461045b57806392aa3ff11461049957610165565b8063313ce56711610123578063313ce5671461028c57806339509351146102b757806342966c68146102f45780635b30d0811461031d57806370a082311461035a578063715018a61461039757610165565b80621d35671461016a57806306fdde0314610193578063095ea7b3146101be57806318160ddd146101fb5780631c37a8221461022657806323b872dd1461024f575b600080fd5b34801561017657600080fd5b50610191600480360381019061018c9190611fd0565b610614565b005b34801561019f57600080fd5b506101a8610856565b6040516101b591906120f7565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e091906121ad565b6108e8565b6040516101f29190612208565b60405180910390f35b34801561020757600080fd5b5061021061090b565b60405161021d9190612232565b60405180910390f35b34801561023257600080fd5b5061024d60048036038101906102489190611fd0565b610915565b005b34801561025b57600080fd5b506102766004803603810190610271919061224d565b610995565b6040516102839190612208565b60405180910390f35b34801561029857600080fd5b506102a16109c4565b6040516102ae91906122bc565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d991906121ad565b6109cd565b6040516102eb9190612208565b60405180910390f35b34801561030057600080fd5b5061031b600480360381019061031691906122d7565b610a04565b005b34801561032957600080fd5b50610344600480360381019061033f9190612304565b610a18565b6040516103519190612232565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612344565b610b23565b60405161038e9190612232565b60405180910390f35b3480156103a357600080fd5b506103ac610b6b565b005b3480156103ba57600080fd5b506103d560048036038101906103d09190612371565b610b7f565b6040516103e291906123f3565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d91906121ad565b610c1f565b005b61042e60048036038101906104299190612304565b610c3f565b005b34801561043c57600080fd5b50610445610f45565b6040516104529190612424565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d919061243f565b610f6f565b6040516104909291906124c7565b60405180910390f35b3480156104a557600080fd5b506104ae610fc3565b6040516104bb9190612232565b60405180910390f35b3480156104d057600080fd5b506104d9610fc9565b6040516104e691906120f7565b60405180910390f35b3480156104fb57600080fd5b50610516600480360381019061051191906121ad565b61105b565b6040516105239190612208565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e91906121ad565b6110d2565b6040516105609190612208565b60405180910390f35b610583600480360381019061057e9190612550565b6110f5565b005b34801561059157600080fd5b506105ac60048036038101906105a791906126a0565b611294565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190612721565b611381565b6040516105e29190612232565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d9190612344565b611408565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066e57600080fd5b600860008561ffff1661ffff168152602001908152602001600020805461069490612790565b905083511480156106da5750600860008561ffff1661ffff1681526020019081526020016000206040516106c89190612864565b60405180910390208380519060200120145b610719576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610710906128ed565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16631c37a822858585856040518563ffffffff1660e01b8152600401610758949392919061292b565b600060405180830381600087803b15801561077257600080fd5b505af1925050508015610783575060015b61084f576040518060400160405280825181526020018280519060200120815250600760008661ffff1661ffff168152602001908152602001600020846040516107cd91906129af565b908152602001604051809103902060008467ffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050507fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d84848484604051610842949392919061292b565b60405180910390a1610850565b5b50505050565b60606003805461086590612790565b80601f016020809104026020016040519081016040528092919081815260200182805461089190612790565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b5050505050905090565b6000806108f361148b565b9050610900818585611493565b600191505092915050565b6000600254905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097a90612a38565b60405180910390fd5b61098f8484848461165c565b50505050565b6000806109a061148b565b90506109ad858285611689565b6109b8858585611715565b60019150509392505050565b60006012905090565b6000806109d861148b565b90506109f98185856109ea8589611381565b6109f49190612a87565b611493565b600191505092915050565b610a15610a0f61148b565b8261198b565b50565b6000803383604051602001610a2e929190612add565b6040516020818303038152906040529050600060019050600081600954604051602001610a5c929190612b5d565b60405160208183030381529060405290506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108830876000876040518663ffffffff1660e01b8152600401610ad3959493929190612b89565b6040805180830381865afa158015610aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b139190612bff565b5090508094505050505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b73611b58565b610b7d6000611bd6565b565b60086020528060005260406000206000915090508054610b9e90612790565b80601f0160208091040260200160405190810160405280929190818152602001828054610bca90612790565b8015610c175780601f10610bec57610100808354040283529160200191610c17565b820191906000526020600020905b815481529060010190602001808311610bfa57829003601f168201915b505050505081565b610c3182610c2b61148b565b83611689565b610c3b828261198b565b5050565b610c498282610a18565b341015610c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8290612cb1565b60405180910390fd5b80610c9533610b23565b1015610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612cb1565b60405180910390fd5b610ce0338261198b565b6000600860008461ffff1661ffff1681526020019081526020016000208054610d0890612790565b905011610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4190612d43565b60405180910390fd5b60003382604051602001610d5f929190612add565b6040516020818303038152906040529050600060019050600081600954604051602001610d8d929190612b5d565b60405160208183030381529060405290506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108730876000876040518663ffffffff1660e01b8152600401610e04959493929190612b89565b6040805180830381865afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e449190612bff565b50905080341015610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8190612e21565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c58031003488600860008b61ffff1661ffff16815260200190815260200160002088336000896040518863ffffffff1660e01b8152600401610f0b96959493929190612ee6565b6000604051808303818588803b158015610f2457600080fd5b505af1158015610f38573d6000803e3d6000fd5b5050505050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60076020528260005260406000208280516020810182018051848252602083016020850120818352809550505050505060205280600052604060002060009250925050508060000154908060010154905082565b600a5481565b606060048054610fd890612790565b80601f016020809104026020016040519081016040528092919081815260200182805461100490612790565b80156110515780601f1061102657610100808354040283529160200191611051565b820191906000526020600020905b81548152906001019060200180831161103457829003601f168201915b5050505050905090565b60008061106661148b565b905060006110748286611381565b9050838110156110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b090612fce565b60405180910390fd5b6110c68286868403611493565b60019250505092915050565b6000806110dd61148b565b90506110ea818585611715565b600191505092915050565b6000600760008761ffff1661ffff1681526020019081526020016000208560405161112091906129af565b908152602001604051809103902060008567ffffffffffffffff16815260200190815260200160002090506000801b816001015403611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b90613060565b60405180910390fd5b8060000154838390501480156111c45750806001015483836040516111ba9291906130a5565b6040518091039020145b611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061310a565b60405180910390fd5b600081600001819055506000801b81600101819055503073ffffffffffffffffffffffffffffffffffffffff16631c37a82287878787876040518663ffffffff1660e01b815260040161125a959493929190613157565b600060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b50505050505050505050565b61129c611b58565b8181905084849050146112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db9061321e565b60405180910390fd5b60005b8484905081101561137a578282828181106113055761130461323e565b5b9050602002810190611317919061327c565b6008600088888681811061132e5761132d61323e565b5b90506020020160208101906113439190612371565b61ffff1661ffff1681526020019081526020016000209182611366929190613481565b50808061137290613551565b9150506112e7565b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611410611b58565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114769061360b565b60405180910390fd5b61148881611bd6565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f99061369d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115689061372f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164f9190612232565b60405180910390a3505050565b60008082806020019051810190611673919061377b565b915091506116818282611c9c565b505050505050565b60006116958484611381565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461170f5781811015611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890613807565b60405180910390fd5b61170e8484848403611493565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b90613899565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ea9061392b565b60405180910390fd5b6117fe838383611df2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187b906139bd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119729190612232565b60405180910390a3611985848484611df7565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f190613a4f565b60405180910390fd5b611a0682600083611df2565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613ae1565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b3f9190612232565b60405180910390a3611b5383600084611df7565b505050565b611b6061148b565b73ffffffffffffffffffffffffffffffffffffffff16611b7e610f45565b73ffffffffffffffffffffffffffffffffffffffff1614611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb90613b4d565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0290613bb9565b60405180910390fd5b611d1760008383611df2565b8060026000828254611d299190612a87565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dda9190612232565b60405180910390a3611dee60008383611df7565b5050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600061ffff82169050919050565b611e2781611e10565b8114611e3257600080fd5b50565b600081359050611e4481611e1e565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e9d82611e54565b810181811067ffffffffffffffff82111715611ebc57611ebb611e65565b5b80604052505050565b6000611ecf611dfc565b9050611edb8282611e94565b919050565b600067ffffffffffffffff821115611efb57611efa611e65565b5b611f0482611e54565b9050602081019050919050565b82818337600083830152505050565b6000611f33611f2e84611ee0565b611ec5565b905082815260208101848484011115611f4f57611f4e611e4f565b5b611f5a848285611f11565b509392505050565b600082601f830112611f7757611f76611e4a565b5b8135611f87848260208601611f20565b91505092915050565b600067ffffffffffffffff82169050919050565b611fad81611f90565b8114611fb857600080fd5b50565b600081359050611fca81611fa4565b92915050565b60008060008060808587031215611fea57611fe9611e06565b5b6000611ff887828801611e35565b945050602085013567ffffffffffffffff81111561201957612018611e0b565b5b61202587828801611f62565b935050604061203687828801611fbb565b925050606085013567ffffffffffffffff81111561205757612056611e0b565b5b61206387828801611f62565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b838110156120a957808201518184015260208101905061208e565b838111156120b8576000848401525b50505050565b60006120c98261206f565b6120d3818561207a565b93506120e381856020860161208b565b6120ec81611e54565b840191505092915050565b6000602082019050818103600083015261211181846120be565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061214482612119565b9050919050565b61215481612139565b811461215f57600080fd5b50565b6000813590506121718161214b565b92915050565b6000819050919050565b61218a81612177565b811461219557600080fd5b50565b6000813590506121a781612181565b92915050565b600080604083850312156121c4576121c3611e06565b5b60006121d285828601612162565b92505060206121e385828601612198565b9150509250929050565b60008115159050919050565b612202816121ed565b82525050565b600060208201905061221d60008301846121f9565b92915050565b61222c81612177565b82525050565b60006020820190506122476000830184612223565b92915050565b60008060006060848603121561226657612265611e06565b5b600061227486828701612162565b935050602061228586828701612162565b925050604061229686828701612198565b9150509250925092565b600060ff82169050919050565b6122b6816122a0565b82525050565b60006020820190506122d160008301846122ad565b92915050565b6000602082840312156122ed576122ec611e06565b5b60006122fb84828501612198565b91505092915050565b6000806040838503121561231b5761231a611e06565b5b600061232985828601611e35565b925050602061233a85828601612198565b9150509250929050565b60006020828403121561235a57612359611e06565b5b600061236884828501612162565b91505092915050565b60006020828403121561238757612386611e06565b5b600061239584828501611e35565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60006123c58261239e565b6123cf81856123a9565b93506123df81856020860161208b565b6123e881611e54565b840191505092915050565b6000602082019050818103600083015261240d81846123ba565b905092915050565b61241e81612139565b82525050565b60006020820190506124396000830184612415565b92915050565b60008060006060848603121561245857612457611e06565b5b600061246686828701611e35565b935050602084013567ffffffffffffffff81111561248757612486611e0b565b5b61249386828701611f62565b92505060406124a486828701612198565b9150509250925092565b6000819050919050565b6124c1816124ae565b82525050565b60006040820190506124dc6000830185612223565b6124e960208301846124b8565b9392505050565b600080fd5b600080fd5b60008083601f8401126125105761250f611e4a565b5b8235905067ffffffffffffffff81111561252d5761252c6124f0565b5b602083019150836001820283011115612549576125486124f5565b5b9250929050565b60008060008060006080868803121561256c5761256b611e06565b5b600061257a88828901611e35565b955050602086013567ffffffffffffffff81111561259b5761259a611e0b565b5b6125a788828901611f62565b94505060406125b888828901611fbb565b935050606086013567ffffffffffffffff8111156125d9576125d8611e0b565b5b6125e5888289016124fa565b92509250509295509295909350565b60008083601f84011261260a57612609611e4a565b5b8235905067ffffffffffffffff811115612627576126266124f0565b5b602083019150836020820283011115612643576126426124f5565b5b9250929050565b60008083601f8401126126605761265f611e4a565b5b8235905067ffffffffffffffff81111561267d5761267c6124f0565b5b602083019150836020820283011115612699576126986124f5565b5b9250929050565b600080600080604085870312156126ba576126b9611e06565b5b600085013567ffffffffffffffff8111156126d8576126d7611e0b565b5b6126e4878288016125f4565b9450945050602085013567ffffffffffffffff81111561270757612706611e0b565b5b6127138782880161264a565b925092505092959194509250565b6000806040838503121561273857612737611e06565b5b600061274685828601612162565b925050602061275785828601612162565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127a857607f821691505b6020821081036127bb576127ba612761565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546127ee81612790565b6127f881866127c1565b9450600182166000811461281357600181146128285761285b565b60ff198316865281151582028601935061285b565b612831856127cc565b60005b8381101561285357815481890152600182019150602081019050612834565b838801955050505b50505092915050565b600061287082846127e1565b915081905092915050565b7f4e6f6e626c6f636b696e6752656365697665723a20696e76616c696420736f7560008201527f7263652073656e64696e6720636f6e7472616374000000000000000000000000602082015250565b60006128d760348361207a565b91506128e28261287b565b604082019050919050565b60006020820190508181036000830152612906816128ca565b9050919050565b61291681611e10565b82525050565b61292581611f90565b82525050565b6000608082019050612940600083018761290d565b818103602083015261295281866123ba565b9050612961604083018561291c565b818103606083015261297381846123ba565b905095945050505050565b60006129898261239e565b61299381856127c1565b93506129a381856020860161208b565b80840191505092915050565b60006129bb828461297e565b915081905092915050565b7f4e6f6e626c6f636b696e6752656365697665723a2063616c6c6572206d75737460008201527f206265204272696467652e000000000000000000000000000000000000000000602082015250565b6000612a22602b8361207a565b9150612a2d826129c6565b604082019050919050565b60006020820190508181036000830152612a5181612a15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a9282612177565b9150612a9d83612177565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ad257612ad1612a58565b5b828201905092915050565b6000604082019050612af26000830185612415565b612aff6020830184612223565b9392505050565b60008160f01b9050919050565b6000612b1e82612b06565b9050919050565b612b36612b3182611e10565b612b13565b82525050565b6000819050919050565b612b57612b5282612177565b612b3c565b82525050565b6000612b698285612b25565b600282019150612b798284612b46565b6020820191508190509392505050565b600060a082019050612b9e600083018861290d565b612bab6020830187612415565b8181036040830152612bbd81866123ba565b9050612bcc60608301856121f9565b8181036080830152612bde81846123ba565b90509695505050505050565b600081519050612bf981612181565b92915050565b60008060408385031215612c1657612c15611e06565b5b6000612c2485828601612bea565b9250506020612c3585828601612bea565b9150509250929050565b7f536f6c616e61457468657265756d4176616c616e63686546616e746f6d42736360008201527f42617365204572726f7220233100000000000000000000000000000000000000602082015250565b6000612c9b602d8361207a565b9150612ca682612c3f565b604082019050919050565b60006020820190508181036000830152612cca81612c8e565b9050919050565b7f5468697320636861696e2069732063757272656e746c7920756e617661696c6160008201527f626c6520666f722074726176656c000000000000000000000000000000000000602082015250565b6000612d2d602e8361207a565b9150612d3882612cd1565b604082019050919050565b60006020820190508181036000830152612d5c81612d20565b9050919050565b7f536f6c616e61457468657265756d4176616c616e63686546616e746f6d42736360008201527f426173653a206d73672e76616c7565206e6f7420656e6f75676820746f20636f60208201527f766572206d6573736167654665652e2053656e642067617320666f72206d657360408201527f7361676520666565730000000000000000000000000000000000000000000000606082015250565b6000612e0b60698361207a565b9150612e1682612d63565b608082019050919050565b60006020820190508181036000830152612e3a81612dfe565b9050919050565b60008154612e4e81612790565b612e5881866123a9565b94506001821660008114612e735760018114612e8957612ebc565b60ff198316865281151560200286019350612ebc565b612e92856127cc565b60005b83811015612eb457815481890152600182019150602081019050612e95565b808801955050505b50505092915050565b6000612ed082612119565b9050919050565b612ee081612ec5565b82525050565b600060c082019050612efb600083018961290d565b8181036020830152612f0d8188612e41565b90508181036040830152612f2181876123ba565b9050612f306060830186612ed7565b612f3d6080830185612415565b81810360a0830152612f4f81846123ba565b9050979650505050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612fb860258361207a565b9150612fc382612f5c565b604082019050919050565b60006020820190508181036000830152612fe781612fab565b9050919050565b7f4e6f6e626c6f636b696e6752656365697665723a206e6f2073746f726564206d60008201527f6573736167650000000000000000000000000000000000000000000000000000602082015250565b600061304a60268361207a565b915061305582612fee565b604082019050919050565b600060208201905081810360008301526130798161303d565b9050919050565b600061308c83856127c1565b9350613099838584611f11565b82840190509392505050565b60006130b2828486613080565b91508190509392505050565b7f4c617965725a65726f3a20696e76616c6964207061796c6f6164000000000000600082015250565b60006130f4601a8361207a565b91506130ff826130be565b602082019050919050565b60006020820190508181036000830152613123816130e7565b9050919050565b600061313683856123a9565b9350613143838584611f11565b61314c83611e54565b840190509392505050565b600060808201905061316c600083018861290d565b818103602083015261317e81876123ba565b905061318d604083018661291c565b81810360608301526131a081848661312a565b90509695505050505050565b7f436861696e2049447320616e642072656d6f746573206c656e677468206d697360008201527f6d61746368000000000000000000000000000000000000000000000000000000602082015250565b600061320860258361207a565b9150613213826131ac565b604082019050919050565b60006020820190508181036000830152613237816131fb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126132995761329861326d565b5b80840192508235915067ffffffffffffffff8211156132bb576132ba613272565b5b6020830192506001820236038313156132d7576132d6613277565b5b509250929050565b600082905092915050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026133377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826132fa565b61334186836132fa565b95508019841693508086168417925050509392505050565b6000819050919050565b600061337e61337961337484612177565b613359565b612177565b9050919050565b6000819050919050565b61339883613363565b6133ac6133a482613385565b848454613307565b825550505050565b600090565b6133c16133b4565b6133cc81848461338f565b505050565b5b818110156133f0576133e56000826133b9565b6001810190506133d2565b5050565b601f82111561343557613406816127cc565b61340f846132ea565b8101602085101561341e578190505b61343261342a856132ea565b8301826133d1565b50505b505050565b600082821c905092915050565b60006134586000198460080261343a565b1980831691505092915050565b60006134718383613447565b9150826002028217905092915050565b61348b83836132df565b67ffffffffffffffff8111156134a4576134a3611e65565b5b6134ae8254612790565b6134b98282856133f4565b6000601f8311600181146134e857600084156134d6578287013590505b6134e08582613465565b865550613548565b601f1984166134f6866127cc565b60005b8281101561351e578489013582556001820191506020850194506020810190506134f9565b8683101561353b5784890135613537601f891682613447565b8355505b6001600288020188555050505b50505050505050565b600061355c82612177565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361358e5761358d612a58565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135f560268361207a565b915061360082613599565b604082019050919050565b60006020820190508181036000830152613624816135e8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061368760248361207a565b91506136928261362b565b604082019050919050565b600060208201905081810360008301526136b68161367a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061371960228361207a565b9150613724826136bd565b604082019050919050565b600060208201905081810360008301526137488161370c565b9050919050565b61375881612ec5565b811461376357600080fd5b50565b6000815190506137758161374f565b92915050565b6000806040838503121561379257613791611e06565b5b60006137a085828601613766565b92505060206137b185828601612bea565b9150509250929050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006137f1601d8361207a565b91506137fc826137bb565b602082019050919050565b60006020820190508181036000830152613820816137e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061388360258361207a565b915061388e82613827565b604082019050919050565b600060208201905081810360008301526138b281613876565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061391560238361207a565b9150613920826138b9565b604082019050919050565b6000602082019050818103600083015261394481613908565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006139a760268361207a565b91506139b28261394b565b604082019050919050565b600060208201905081810360008301526139d68161399a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a3960218361207a565b9150613a44826139dd565b604082019050919050565b60006020820190508181036000830152613a6881613a2c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613acb60228361207a565b9150613ad682613a6f565b604082019050919050565b60006020820190508181036000830152613afa81613abe565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b3760208361207a565b9150613b4282613b01565b602082019050919050565b60006020820190508181036000830152613b6681613b2a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613ba3601f8361207a565b9150613bae82613b6d565b602082019050919050565b60006020820190508181036000830152613bd281613b96565b905091905056fea2646970667358221220a039238564355fd7c986c96ca6a0600ec56daa8bf8080085b75de7eb0bf411b864736f6c634300080f0033
0x6080604052620557306009553480156200001857600080fd5b50604051620047c8380380620047c883398181016040528101906200003e919062000497565b604051806060016040528060248152602001620047a4602491396040518060400160405280600781526020017f42414c414e43450000000000000000000000000000000000000000000000000081525081600390816200009f91906200074e565b508060049081620000b191906200074e565b505050620000d4620000c8620001a460201b60201c565b620001ac60201b60201c565b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a819055506200015c33620001316200027260201b60201c565b600a6200013f9190620009c5565b6305f5e10062000150919062000a16565b6200027b60201b60201c565b6200019c33620001716200027260201b60201c565b600a6200017f9190620009c5565b6305f5e10062000190919062000a16565b6200027b60201b60201c565b505062000b85565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002e49062000ad8565b60405180910390fd5b6200030160008383620003e860201b60201c565b806002600082825462000315919062000afa565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003c8919062000b68565b60405180910390a3620003e460008383620003ed60201b60201c565b5050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200042482620003f7565b9050919050565b620004368162000417565b81146200044257600080fd5b50565b60008151905062000456816200042b565b92915050565b6000819050919050565b62000471816200045c565b81146200047d57600080fd5b50565b600081519050620004918162000466565b92915050565b60008060408385031215620004b157620004b0620003f2565b5b6000620004c18582860162000445565b9250506020620004d48582860162000480565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200056057607f821691505b60208210810362000576576200057562000518565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005a1565b620005ec8683620005a1565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200062f6200062962000623846200045c565b62000604565b6200045c565b9050919050565b6000819050919050565b6200064b836200060e565b620006636200065a8262000636565b848454620005ae565b825550505050565b600090565b6200067a6200066b565b6200068781848462000640565b505050565b5b81811015620006af57620006a360008262000670565b6001810190506200068d565b5050565b601f821115620006fe57620006c8816200057c565b620006d38462000591565b81016020851015620006e3578190505b620006fb620006f28562000591565b8301826200068c565b50505b505050565b600082821c905092915050565b6000620007236000198460080262000703565b1980831691505092915050565b60006200073e838362000710565b9150826002028217905092915050565b6200075982620004de565b67ffffffffffffffff811115620007755762000774620004e9565b5b62000781825462000547565b6200078e828285620006b3565b600060209050601f831160018114620007c65760008415620007b1578287015190505b620007bd858262000730565b8655506200082d565b601f198416620007d6866200057c565b60005b828110156200080057848901518255600182019150602085019450602081019050620007d9565b868310156200082057848901516200081c601f89168262000710565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008c3578086048111156200089b576200089a62000835565b5b6001851615620008ab5780820291505b8081029050620008bb8562000864565b94506200087b565b94509492505050565b600082620008de5760019050620009b1565b81620008ee5760009050620009b1565b8160018114620009075760028114620009125762000948565b6001915050620009b1565b60ff84111562000927576200092662000835565b5b8360020a91508482111562000941576200094062000835565b5b50620009b1565b5060208310610133831016604e8410600b8410161715620009825782820a9050838111156200097c576200097b62000835565b5b620009b1565b62000991848484600162000871565b92509050818404811115620009ab57620009aa62000835565b5b81810290505b9392505050565b600060ff82169050919050565b6000620009d2826200045c565b9150620009df83620009b8565b925062000a0e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008cc565b905092915050565b600062000a23826200045c565b915062000a30836200045c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a6c5762000a6b62000835565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ac0601f8362000a77565b915062000acd8262000a88565b602082019050919050565b6000602082019050818103600083015262000af38162000ab1565b9050919050565b600062000b07826200045c565b915062000b14836200045c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b4c5762000b4b62000835565b5b828201905092915050565b62000b62816200045c565b82525050565b600060208201905062000b7f600083018462000b57565b92915050565b613c0f8062000b956000396000f3fe6080604052600436106101655760003560e01c80637533d788116100d157806395d89b411161008a578063d1deba1f11610064578063d1deba1f14610569578063d2fcb6d514610585578063dd62ed3e146105ae578063f2fde38b146105eb57610165565b806395d89b41146104c4578063a457c2d7146104ef578063a9059cbb1461052c57610165565b80637533d788146103ae57806379cc6790146103eb5780638cef430d146104145780638da5cb5b146104305780638ee749121461045b57806392aa3ff11461049957610165565b8063313ce56711610123578063313ce5671461028c57806339509351146102b757806342966c68146102f45780635b30d0811461031d57806370a082311461035a578063715018a61461039757610165565b80621d35671461016a57806306fdde0314610193578063095ea7b3146101be57806318160ddd146101fb5780631c37a8221461022657806323b872dd1461024f575b600080fd5b34801561017657600080fd5b50610191600480360381019061018c9190611fd0565b610614565b005b34801561019f57600080fd5b506101a8610856565b6040516101b591906120f7565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e091906121ad565b6108e8565b6040516101f29190612208565b60405180910390f35b34801561020757600080fd5b5061021061090b565b60405161021d9190612232565b60405180910390f35b34801561023257600080fd5b5061024d60048036038101906102489190611fd0565b610915565b005b34801561025b57600080fd5b506102766004803603810190610271919061224d565b610995565b6040516102839190612208565b60405180910390f35b34801561029857600080fd5b506102a16109c4565b6040516102ae91906122bc565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d991906121ad565b6109cd565b6040516102eb9190612208565b60405180910390f35b34801561030057600080fd5b5061031b600480360381019061031691906122d7565b610a04565b005b34801561032957600080fd5b50610344600480360381019061033f9190612304565b610a18565b6040516103519190612232565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612344565b610b23565b60405161038e9190612232565b60405180910390f35b3480156103a357600080fd5b506103ac610b6b565b005b3480156103ba57600080fd5b506103d560048036038101906103d09190612371565b610b7f565b6040516103e291906123f3565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d91906121ad565b610c1f565b005b61042e60048036038101906104299190612304565b610c3f565b005b34801561043c57600080fd5b50610445610f45565b6040516104529190612424565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d919061243f565b610f6f565b6040516104909291906124c7565b60405180910390f35b3480156104a557600080fd5b506104ae610fc3565b6040516104bb9190612232565b60405180910390f35b3480156104d057600080fd5b506104d9610fc9565b6040516104e691906120f7565b60405180910390f35b3480156104fb57600080fd5b50610516600480360381019061051191906121ad565b61105b565b6040516105239190612208565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e91906121ad565b6110d2565b6040516105609190612208565b60405180910390f35b610583600480360381019061057e9190612550565b6110f5565b005b34801561059157600080fd5b506105ac60048036038101906105a791906126a0565b611294565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190612721565b611381565b6040516105e29190612232565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d9190612344565b611408565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066e57600080fd5b600860008561ffff1661ffff168152602001908152602001600020805461069490612790565b905083511480156106da5750600860008561ffff1661ffff1681526020019081526020016000206040516106c89190612864565b60405180910390208380519060200120145b610719576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610710906128ed565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16631c37a822858585856040518563ffffffff1660e01b8152600401610758949392919061292b565b600060405180830381600087803b15801561077257600080fd5b505af1925050508015610783575060015b61084f576040518060400160405280825181526020018280519060200120815250600760008661ffff1661ffff168152602001908152602001600020846040516107cd91906129af565b908152602001604051809103902060008467ffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050507fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d84848484604051610842949392919061292b565b60405180910390a1610850565b5b50505050565b60606003805461086590612790565b80601f016020809104026020016040519081016040528092919081815260200182805461089190612790565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b5050505050905090565b6000806108f361148b565b9050610900818585611493565b600191505092915050565b6000600254905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097a90612a38565b60405180910390fd5b61098f8484848461165c565b50505050565b6000806109a061148b565b90506109ad858285611689565b6109b8858585611715565b60019150509392505050565b60006012905090565b6000806109d861148b565b90506109f98185856109ea8589611381565b6109f49190612a87565b611493565b600191505092915050565b610a15610a0f61148b565b8261198b565b50565b6000803383604051602001610a2e929190612add565b6040516020818303038152906040529050600060019050600081600954604051602001610a5c929190612b5d565b60405160208183030381529060405290506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108830876000876040518663ffffffff1660e01b8152600401610ad3959493929190612b89565b6040805180830381865afa158015610aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b139190612bff565b5090508094505050505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b73611b58565b610b7d6000611bd6565b565b60086020528060005260406000206000915090508054610b9e90612790565b80601f0160208091040260200160405190810160405280929190818152602001828054610bca90612790565b8015610c175780601f10610bec57610100808354040283529160200191610c17565b820191906000526020600020905b815481529060010190602001808311610bfa57829003601f168201915b505050505081565b610c3182610c2b61148b565b83611689565b610c3b828261198b565b5050565b610c498282610a18565b341015610c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8290612cb1565b60405180910390fd5b80610c9533610b23565b1015610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612cb1565b60405180910390fd5b610ce0338261198b565b6000600860008461ffff1661ffff1681526020019081526020016000208054610d0890612790565b905011610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4190612d43565b60405180910390fd5b60003382604051602001610d5f929190612add565b6040516020818303038152906040529050600060019050600081600954604051602001610d8d929190612b5d565b60405160208183030381529060405290506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108730876000876040518663ffffffff1660e01b8152600401610e04959493929190612b89565b6040805180830381865afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e449190612bff565b50905080341015610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8190612e21565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c58031003488600860008b61ffff1661ffff16815260200190815260200160002088336000896040518863ffffffff1660e01b8152600401610f0b96959493929190612ee6565b6000604051808303818588803b158015610f2457600080fd5b505af1158015610f38573d6000803e3d6000fd5b5050505050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60076020528260005260406000208280516020810182018051848252602083016020850120818352809550505050505060205280600052604060002060009250925050508060000154908060010154905082565b600a5481565b606060048054610fd890612790565b80601f016020809104026020016040519081016040528092919081815260200182805461100490612790565b80156110515780601f1061102657610100808354040283529160200191611051565b820191906000526020600020905b81548152906001019060200180831161103457829003601f168201915b5050505050905090565b60008061106661148b565b905060006110748286611381565b9050838110156110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b090612fce565b60405180910390fd5b6110c68286868403611493565b60019250505092915050565b6000806110dd61148b565b90506110ea818585611715565b600191505092915050565b6000600760008761ffff1661ffff1681526020019081526020016000208560405161112091906129af565b908152602001604051809103902060008567ffffffffffffffff16815260200190815260200160002090506000801b816001015403611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b90613060565b60405180910390fd5b8060000154838390501480156111c45750806001015483836040516111ba9291906130a5565b6040518091039020145b611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061310a565b60405180910390fd5b600081600001819055506000801b81600101819055503073ffffffffffffffffffffffffffffffffffffffff16631c37a82287878787876040518663ffffffff1660e01b815260040161125a959493929190613157565b600060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b50505050505050505050565b61129c611b58565b8181905084849050146112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db9061321e565b60405180910390fd5b60005b8484905081101561137a578282828181106113055761130461323e565b5b9050602002810190611317919061327c565b6008600088888681811061132e5761132d61323e565b5b90506020020160208101906113439190612371565b61ffff1661ffff1681526020019081526020016000209182611366929190613481565b50808061137290613551565b9150506112e7565b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611410611b58565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114769061360b565b60405180910390fd5b61148881611bd6565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f99061369d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115689061372f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164f9190612232565b60405180910390a3505050565b60008082806020019051810190611673919061377b565b915091506116818282611c9c565b505050505050565b60006116958484611381565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461170f5781811015611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890613807565b60405180910390fd5b61170e8484848403611493565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b90613899565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ea9061392b565b60405180910390fd5b6117fe838383611df2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187b906139bd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119729190612232565b60405180910390a3611985848484611df7565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f190613a4f565b60405180910390fd5b611a0682600083611df2565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613ae1565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b3f9190612232565b60405180910390a3611b5383600084611df7565b505050565b611b6061148b565b73ffffffffffffffffffffffffffffffffffffffff16611b7e610f45565b73ffffffffffffffffffffffffffffffffffffffff1614611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb90613b4d565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0290613bb9565b60405180910390fd5b611d1760008383611df2565b8060026000828254611d299190612a87565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dda9190612232565b60405180910390a3611dee60008383611df7565b5050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600061ffff82169050919050565b611e2781611e10565b8114611e3257600080fd5b50565b600081359050611e4481611e1e565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e9d82611e54565b810181811067ffffffffffffffff82111715611ebc57611ebb611e65565b5b80604052505050565b6000611ecf611dfc565b9050611edb8282611e94565b919050565b600067ffffffffffffffff821115611efb57611efa611e65565b5b611f0482611e54565b9050602081019050919050565b82818337600083830152505050565b6000611f33611f2e84611ee0565b611ec5565b905082815260208101848484011115611f4f57611f4e611e4f565b5b611f5a848285611f11565b509392505050565b600082601f830112611f7757611f76611e4a565b5b8135611f87848260208601611f20565b91505092915050565b600067ffffffffffffffff82169050919050565b611fad81611f90565b8114611fb857600080fd5b50565b600081359050611fca81611fa4565b92915050565b60008060008060808587031215611fea57611fe9611e06565b5b6000611ff887828801611e35565b945050602085013567ffffffffffffffff81111561201957612018611e0b565b5b61202587828801611f62565b935050604061203687828801611fbb565b925050606085013567ffffffffffffffff81111561205757612056611e0b565b5b61206387828801611f62565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b838110156120a957808201518184015260208101905061208e565b838111156120b8576000848401525b50505050565b60006120c98261206f565b6120d3818561207a565b93506120e381856020860161208b565b6120ec81611e54565b840191505092915050565b6000602082019050818103600083015261211181846120be565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061214482612119565b9050919050565b61215481612139565b811461215f57600080fd5b50565b6000813590506121718161214b565b92915050565b6000819050919050565b61218a81612177565b811461219557600080fd5b50565b6000813590506121a781612181565b92915050565b600080604083850312156121c4576121c3611e06565b5b60006121d285828601612162565b92505060206121e385828601612198565b9150509250929050565b60008115159050919050565b612202816121ed565b82525050565b600060208201905061221d60008301846121f9565b92915050565b61222c81612177565b82525050565b60006020820190506122476000830184612223565b92915050565b60008060006060848603121561226657612265611e06565b5b600061227486828701612162565b935050602061228586828701612162565b925050604061229686828701612198565b9150509250925092565b600060ff82169050919050565b6122b6816122a0565b82525050565b60006020820190506122d160008301846122ad565b92915050565b6000602082840312156122ed576122ec611e06565b5b60006122fb84828501612198565b91505092915050565b6000806040838503121561231b5761231a611e06565b5b600061232985828601611e35565b925050602061233a85828601612198565b9150509250929050565b60006020828403121561235a57612359611e06565b5b600061236884828501612162565b91505092915050565b60006020828403121561238757612386611e06565b5b600061239584828501611e35565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60006123c58261239e565b6123cf81856123a9565b93506123df81856020860161208b565b6123e881611e54565b840191505092915050565b6000602082019050818103600083015261240d81846123ba565b905092915050565b61241e81612139565b82525050565b60006020820190506124396000830184612415565b92915050565b60008060006060848603121561245857612457611e06565b5b600061246686828701611e35565b935050602084013567ffffffffffffffff81111561248757612486611e0b565b5b61249386828701611f62565b92505060406124a486828701612198565b9150509250925092565b6000819050919050565b6124c1816124ae565b82525050565b60006040820190506124dc6000830185612223565b6124e960208301846124b8565b9392505050565b600080fd5b600080fd5b60008083601f8401126125105761250f611e4a565b5b8235905067ffffffffffffffff81111561252d5761252c6124f0565b5b602083019150836001820283011115612549576125486124f5565b5b9250929050565b60008060008060006080868803121561256c5761256b611e06565b5b600061257a88828901611e35565b955050602086013567ffffffffffffffff81111561259b5761259a611e0b565b5b6125a788828901611f62565b94505060406125b888828901611fbb565b935050606086013567ffffffffffffffff8111156125d9576125d8611e0b565b5b6125e5888289016124fa565b92509250509295509295909350565b60008083601f84011261260a57612609611e4a565b5b8235905067ffffffffffffffff811115612627576126266124f0565b5b602083019150836020820283011115612643576126426124f5565b5b9250929050565b60008083601f8401126126605761265f611e4a565b5b8235905067ffffffffffffffff81111561267d5761267c6124f0565b5b602083019150836020820283011115612699576126986124f5565b5b9250929050565b600080600080604085870312156126ba576126b9611e06565b5b600085013567ffffffffffffffff8111156126d8576126d7611e0b565b5b6126e4878288016125f4565b9450945050602085013567ffffffffffffffff81111561270757612706611e0b565b5b6127138782880161264a565b925092505092959194509250565b6000806040838503121561273857612737611e06565b5b600061274685828601612162565b925050602061275785828601612162565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127a857607f821691505b6020821081036127bb576127ba612761565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546127ee81612790565b6127f881866127c1565b9450600182166000811461281357600181146128285761285b565b60ff198316865281151582028601935061285b565b612831856127cc565b60005b8381101561285357815481890152600182019150602081019050612834565b838801955050505b50505092915050565b600061287082846127e1565b915081905092915050565b7f4e6f6e626c6f636b696e6752656365697665723a20696e76616c696420736f7560008201527f7263652073656e64696e6720636f6e7472616374000000000000000000000000602082015250565b60006128d760348361207a565b91506128e28261287b565b604082019050919050565b60006020820190508181036000830152612906816128ca565b9050919050565b61291681611e10565b82525050565b61292581611f90565b82525050565b6000608082019050612940600083018761290d565b818103602083015261295281866123ba565b9050612961604083018561291c565b818103606083015261297381846123ba565b905095945050505050565b60006129898261239e565b61299381856127c1565b93506129a381856020860161208b565b80840191505092915050565b60006129bb828461297e565b915081905092915050565b7f4e6f6e626c6f636b696e6752656365697665723a2063616c6c6572206d75737460008201527f206265204272696467652e000000000000000000000000000000000000000000602082015250565b6000612a22602b8361207a565b9150612a2d826129c6565b604082019050919050565b60006020820190508181036000830152612a5181612a15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a9282612177565b9150612a9d83612177565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ad257612ad1612a58565b5b828201905092915050565b6000604082019050612af26000830185612415565b612aff6020830184612223565b9392505050565b60008160f01b9050919050565b6000612b1e82612b06565b9050919050565b612b36612b3182611e10565b612b13565b82525050565b6000819050919050565b612b57612b5282612177565b612b3c565b82525050565b6000612b698285612b25565b600282019150612b798284612b46565b6020820191508190509392505050565b600060a082019050612b9e600083018861290d565b612bab6020830187612415565b8181036040830152612bbd81866123ba565b9050612bcc60608301856121f9565b8181036080830152612bde81846123ba565b90509695505050505050565b600081519050612bf981612181565b92915050565b60008060408385031215612c1657612c15611e06565b5b6000612c2485828601612bea565b9250506020612c3585828601612bea565b9150509250929050565b7f536f6c616e61457468657265756d4176616c616e63686546616e746f6d42736360008201527f42617365204572726f7220233100000000000000000000000000000000000000602082015250565b6000612c9b602d8361207a565b9150612ca682612c3f565b604082019050919050565b60006020820190508181036000830152612cca81612c8e565b9050919050565b7f5468697320636861696e2069732063757272656e746c7920756e617661696c6160008201527f626c6520666f722074726176656c000000000000000000000000000000000000602082015250565b6000612d2d602e8361207a565b9150612d3882612cd1565b604082019050919050565b60006020820190508181036000830152612d5c81612d20565b9050919050565b7f536f6c616e61457468657265756d4176616c616e63686546616e746f6d42736360008201527f426173653a206d73672e76616c7565206e6f7420656e6f75676820746f20636f60208201527f766572206d6573736167654665652e2053656e642067617320666f72206d657360408201527f7361676520666565730000000000000000000000000000000000000000000000606082015250565b6000612e0b60698361207a565b9150612e1682612d63565b608082019050919050565b60006020820190508181036000830152612e3a81612dfe565b9050919050565b60008154612e4e81612790565b612e5881866123a9565b94506001821660008114612e735760018114612e8957612ebc565b60ff198316865281151560200286019350612ebc565b612e92856127cc565b60005b83811015612eb457815481890152600182019150602081019050612e95565b808801955050505b50505092915050565b6000612ed082612119565b9050919050565b612ee081612ec5565b82525050565b600060c082019050612efb600083018961290d565b8181036020830152612f0d8188612e41565b90508181036040830152612f2181876123ba565b9050612f306060830186612ed7565b612f3d6080830185612415565b81810360a0830152612f4f81846123ba565b9050979650505050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612fb860258361207a565b9150612fc382612f5c565b604082019050919050565b60006020820190508181036000830152612fe781612fab565b9050919050565b7f4e6f6e626c6f636b696e6752656365697665723a206e6f2073746f726564206d60008201527f6573736167650000000000000000000000000000000000000000000000000000602082015250565b600061304a60268361207a565b915061305582612fee565b604082019050919050565b600060208201905081810360008301526130798161303d565b9050919050565b600061308c83856127c1565b9350613099838584611f11565b82840190509392505050565b60006130b2828486613080565b91508190509392505050565b7f4c617965725a65726f3a20696e76616c6964207061796c6f6164000000000000600082015250565b60006130f4601a8361207a565b91506130ff826130be565b602082019050919050565b60006020820190508181036000830152613123816130e7565b9050919050565b600061313683856123a9565b9350613143838584611f11565b61314c83611e54565b840190509392505050565b600060808201905061316c600083018861290d565b818103602083015261317e81876123ba565b905061318d604083018661291c565b81810360608301526131a081848661312a565b90509695505050505050565b7f436861696e2049447320616e642072656d6f746573206c656e677468206d697360008201527f6d61746368000000000000000000000000000000000000000000000000000000602082015250565b600061320860258361207a565b9150613213826131ac565b604082019050919050565b60006020820190508181036000830152613237816131fb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126132995761329861326d565b5b80840192508235915067ffffffffffffffff8211156132bb576132ba613272565b5b6020830192506001820236038313156132d7576132d6613277565b5b509250929050565b600082905092915050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026133377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826132fa565b61334186836132fa565b95508019841693508086168417925050509392505050565b6000819050919050565b600061337e61337961337484612177565b613359565b612177565b9050919050565b6000819050919050565b61339883613363565b6133ac6133a482613385565b848454613307565b825550505050565b600090565b6133c16133b4565b6133cc81848461338f565b505050565b5b818110156133f0576133e56000826133b9565b6001810190506133d2565b5050565b601f82111561343557613406816127cc565b61340f846132ea565b8101602085101561341e578190505b61343261342a856132ea565b8301826133d1565b50505b505050565b600082821c905092915050565b60006134586000198460080261343a565b1980831691505092915050565b60006134718383613447565b9150826002028217905092915050565b61348b83836132df565b67ffffffffffffffff8111156134a4576134a3611e65565b5b6134ae8254612790565b6134b98282856133f4565b6000601f8311600181146134e857600084156134d6578287013590505b6134e08582613465565b865550613548565b601f1984166134f6866127cc565b60005b8281101561351e578489013582556001820191506020850194506020810190506134f9565b8683101561353b5784890135613537601f891682613447565b8355505b6001600288020188555050505b50505050505050565b600061355c82612177565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361358e5761358d612a58565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135f560268361207a565b915061360082613599565b604082019050919050565b60006020820190508181036000830152613624816135e8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061368760248361207a565b91506136928261362b565b604082019050919050565b600060208201905081810360008301526136b68161367a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061371960228361207a565b9150613724826136bd565b604082019050919050565b600060208201905081810360008301526137488161370c565b9050919050565b61375881612ec5565b811461376357600080fd5b50565b6000815190506137758161374f565b92915050565b6000806040838503121561379257613791611e06565b5b60006137a085828601613766565b92505060206137b185828601612bea565b9150509250929050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006137f1601d8361207a565b91506137fc826137bb565b602082019050919050565b60006020820190508181036000830152613820816137e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061388360258361207a565b915061388e82613827565b604082019050919050565b600060208201905081810360008301526138b281613876565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061391560238361207a565b9150613920826138b9565b604082019050919050565b6000602082019050818103600083015261394481613908565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006139a760268361207a565b91506139b28261394b565b604082019050919050565b600060208201905081810360008301526139d68161399a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a3960218361207a565b9150613a44826139dd565b604082019050919050565b60006020820190508181036000830152613a6881613a2c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613acb60228361207a565b9150613ad682613a6f565b604082019050919050565b60006020820190508181036000830152613afa81613abe565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b3760208361207a565b9150613b4282613b01565b602082019050919050565b60006020820190508181036000830152613b6681613b2a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613ba3601f8361207a565b9150613bae82613b6d565b602082019050919050565b60006020820190508181036000830152613bd281613b96565b905091905056fea2646970667358221220a039238564355fd7c986c96ca6a0600ec56daa8bf8080085b75de7eb0bf411b864736f6c634300080f0033536f6c616e61457468657265756d4176616c616e63686546616e746f6d4273634261736500000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd6750000000000000000000000000000000000000000000000000000000000000065