0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f6000805160206200574583398151915264010000000062003f7d6200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b5062000230600080516020620057458339815191528264010000000062003f816200023782021704565b50565b5490565b9055565b6154fa806200024b6000396000f30060806040526004361061022f5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630334108281146102345780630803fac01461027e5780630c0512e9146102a75780630d61b519146102ce5780630f529ba2146102e65780631522eb43146102fb5780631df67d2f146103105780632914b9bd146103285780632b4656c8146103aa57806332f0a3b5146103f0578063406244d8146104055780634a393149146104375780634d4eb6ce1461046e5780634d7ec6281461049f5780634f629fbb146104b45780634fb3cbbc146104c957806351ed6a30146104e157806354fac919146104f657806359a5db8b1461050b578063649c649c146105235780636ae1e5411461053e57806376365af7146105bc5780637e7db6e1146105d157806380afdea8146105ff578063817b1cd2146106145780638af07b10146106295780638b3dd7491461063e5780639d4941d814610653578063a1658fad14610681578063a1aab33f146106f5578063a479e5081461070a578063c2239b241461071f578063c35ac76d14610750578063c7f758a814610771578063d4aae0c41461080f578063da682aeb14610824578063dac612601461085b578063db2d878c14610883578063dd0081c714610898578063ddc90e7e146108ad578063de4796ed146108db578063e0a8f6f5146108f0578063e0dd2c3814610908578063eeabf67e14610939578063fbfa77cf1461094e578063fc37005114610963575b600080fd5b34801561024057600080fd5b5061027c602460048035828101929082013591813591820191013560443573ffffffffffffffffffffffffffffffffffffffff6064351661097e565b005b34801561028a57600080fd5b50610293610d5f565b604080519115158252519081900360200190f35b3480156102b357600080fd5b506102bc610d89565b60408051918252519081900360200190f35b3480156102da57600080fd5b5061027c600435610d8f565b3480156102f257600080fd5b506102bc611344565b34801561030757600080fd5b506102bc61134b565b34801561031c57600080fd5b5061027c600435611350565b34801561033457600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103819436949293602493928401919081908401838280828437509497506115529650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156103b657600080fd5b5061027c73ffffffffffffffffffffffffffffffffffffffff6004358116906024358116906044351660643560843560a43560c43561165e565b3480156103fc57600080fd5b50610381611a1a565b34801561041157600080fd5b5061041a611ab9565b6040805167ffffffffffffffff9092168252519081900360200190f35b34801561044357600080fd5b5061029373ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611abe565b34801561047a57600080fd5b5061027c60043573ffffffffffffffffffffffffffffffffffffffff60243516611cce565b3480156104ab57600080fd5b50610381611f06565b3480156104c057600080fd5b506102bc611f22565b3480156104d557600080fd5b5061027c600435611f57565b3480156104ed57600080fd5b506103816120fe565b34801561050257600080fd5b506102bc61211a565b34801561051757600080fd5b506102bc600435612120565b34801561052f57600080fd5b5061027c600435602435612378565b34801561054a57600080fd5b5061056c73ffffffffffffffffffffffffffffffffffffffff60043516612502565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105a8578181015183820152602001610590565b505050509050019250505060405180910390f35b3480156105c857600080fd5b506102bc61257b565b3480156105dd57600080fd5b5061029373ffffffffffffffffffffffffffffffffffffffff60043516612581565b34801561060b57600080fd5b506102bc612587565b34801561062057600080fd5b506102bc6125b7565b34801561063557600080fd5b506102bc6125bd565b34801561064a57600080fd5b506102bc6125f2565b34801561065f57600080fd5b5061027c73ffffffffffffffffffffffffffffffffffffffff6004351661261d565b34801561068d57600080fd5b50604080516020600460443581810135838102808601850190965280855261029395833573ffffffffffffffffffffffffffffffffffffffff1695602480359636969560649593949201929182918501908490808284375094975061293f9650505050505050565b34801561070157600080fd5b506102bc612acf565b34801561071657600080fd5b50610381612ad5565b34801561072b57600080fd5b5061027c60043573ffffffffffffffffffffffffffffffffffffffff60243516612b97565b34801561075c57600080fd5b5061027c600435602435604435606435612d6b565b34801561077d57600080fd5b50610789600435612eb8565b6040805188815273ffffffffffffffffffffffffffffffffffffffff881660208201529081018690526060810185905267ffffffffffffffff8416608082015260a081018360028111156107d957fe5b60ff16815273ffffffffffffffffffffffffffffffffffffffff9092166020830152506040805191829003019650945050505050f35b34801561081b57600080fd5b50610381612f21565b34801561083057600080fd5b5061029373ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435612f4c565b34801561086757600080fd5b506102bc67ffffffffffffffff60043516602435604435613122565b34801561088f57600080fd5b506102bc6131f3565b3480156108a457600080fd5b506102bc6131f9565b3480156108b957600080fd5b506102bc73ffffffffffffffffffffffffffffffffffffffff60043516613205565b3480156108e757600080fd5b5061029361322d565b3480156108fc57600080fd5b5061027c60043561325e565b34801561091457600080fd5b506102bc60043573ffffffffffffffffffffffffffffffffffffffff60243516613640565b34801561094557600080fd5b506102bc613679565b34801561095a57600080fd5b506103816136ae565b34801561096f57600080fd5b5061027c6004356024356136ca565b610986610d5f565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515610a5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a24578181015183820152602001610a0c565b50505050905090810190601f168015610a515780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50604080517f4352454154455f50524f504f53414c535f524f4c4500000000000000000000008152815190819003601501812060008083526020830190935291610aaf9133918491905b5061293f565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610b4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b506040805160e08101825284815273ffffffffffffffffffffffffffffffffffffffff84811660208084019182526000848601818152606086018281526080870183815260a088018481523360c08a015260075485526009909552979092208651815593516001850180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919096161790945592516002808401919091559251600383015593516004820180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091178082559451939491939290917fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff169068010000000000000000908490811115610c7257fe5b021790555060c09190910151600690910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600754604080519081018690529184166060830152608080835282018890529033907f9fc9ab43300923a3b8d47f890603798c652956421ae650ed96c526f311d2c2ac908a908a908a908a908a908a90806020810160a082018989808284379091018481038352878152602001905087878082843760405192018290039a509098505050505050505050a350506007805460010190555050505050565b600080610d6a6125f2565b90508015801590610d82575080610d7f61377b565b10155b91505b5090565b60075481565b6000610d99610d5f565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515610e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50818060011480610e6d575060008181526009602052604090206006015473ffffffffffffffffffffffffffffffffffffffff1615155b60408051808201909152601a81527f43565f50524f504f53414c5f444f45535f4e4f545f45584953540000000000006020820152901515610f0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b506009600084815260200190815260200160002091506001831415606060405190810160405280602281526020017f43565f43414e4e4f545f455845435554455f4142535441494e5f50524f504f5381526020017f414c000000000000000000000000000000000000000000000000000000000000815250901515610feb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50815460408051606081018252602581527f43565f43414e4e4f545f455845435554455f5a45524f5f56414c55455f50524f60208201527f504f53414c00000000000000000000000000000000000000000000000000000091810191909152906000106110b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b506000600483015468010000000000000000900460ff1660028111156110d657fe5b60408051808201909152601681527f43565f50524f504f53414c5f4e4f545f4143544956450000000000000000000060208201529114611172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b5061118182836002015461377f565b815461118c90612120565b600383015460408051808201909152601981527f43565f494e53554646494349454e545f434f4e564943494f4e000000000000006020820152911061122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50600482810180547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff166802000000000000000017905560018054600254918501548554604080517fbeabacc800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff95861696810196909652918416602486015260448501525191169163beabacc891606480830192600092919082900301818387803b1580156112ee57600080fd5b505af1158015611302573d6000803e3d6000fd5b505050600383015460408051918252518592507ff758fc91e01b00ea6b4a6138756f7f28e021f9bf21db6dbf8c36c88eb737257a9181900360200190a2505050565b6298968081565b600181565b611358610d5f565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a454400000000000000000000000060208201529015156113f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50336000908152600a6020908152604091829020548251808401909352601983527f43565f5354414b494e475f414c52454144595f5354414b45440000000000000091830191909152156114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b5060008054604080517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152905161154f93859373ffffffffffffffffffffffffffffffffffffffff16926370a082319260248083019360209383900390910190829087803b15801561151d57600080fd5b505af1158015611531573d6000803e3d6000fd5b505050506040513d602081101561154757600080fd5b50513361382d565b50565b600061155c612ad5565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115e05781810151838201526020016115c8565b50505050905090810190601f16801561160d5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561162c57600080fd5b505af1158015611640573d6000803e3d6000fd5b505050506040513d602081101561165657600080fd5b505192915050565b6116666125f2565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015611702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50600260078190556000805473ffffffffffffffffffffffffffffffffffffffff808b167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600180548b8316908416179055835490891691161790915560038590556004849055600583905560068290556040805160e0810182528281526020810183905290810182905260608101829052608081018290529060a0820190815260006020918201819052600190526009815281517f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36908155908201517f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a3780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408201517f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a385560608201517f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a395560808201517f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a3a80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9092169190911780825560a084015191907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff166801000000000000000083600281111561193257fe5b021790555060c0918201516006909101805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790556040805160008183018190526060820181905260808083526010908301527f4162737461696e2070726f706f73616c0000000000000000000000000000000060a0830152602082018490529281018390529051600192917f9fc9ab43300923a3b8d47f890603798c652956421ae650ed96c526f311d2c2ac91908190036101000190a3611a11613e9e565b50505050505050565b6000611a24612f21565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611a8757600080fd5b505af1158015611a9b573d6000803e3d6000fd5b505050506040513d6020811015611ab157600080fd5b505190505b90565b600a81565b600033611aea7f5c513b2347f66d33af9d68f4a0ed7fbb73ce364889b2af7f3ee5764440da6a8a613f7d565b73ffffffffffffffffffffffffffffffffffffffff1614611b9257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f486f6f6b73206d7573742062652063616c6c65642066726f6d20546f6b656e2060448201527f4d616e6167657200000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b611bbb7fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb613f7d565b60408051808201909152601981527f5245454e5452414e43595f5245454e5452414e545f43414c4c0000000000000060208201529015611c57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50611c897fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb600163ffffffff613f8116565b611c94848484613f85565b9050611cc77fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb600063ffffffff613f8116565b9392505050565b611cf77fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb613f7d565b60408051808201909152601981527f5245454e5452414e43595f5245454e5452414e545f43414c4c0000000000000060208201529015611d93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50611dc57fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb600163ffffffff613f8116565b611dee7f5c513b2347f66d33af9d68f4a0ed7fbb73ce364889b2af7f3ee5764440da6a8a613f7d565b73ffffffffffffffffffffffffffffffffffffffff1615611e9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f486f6f6b20616c7265616479207265676973746572656420627920546f6b656e60448201527f204d616e61676572000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b611ec67f5c513b2347f66d33af9d68f4a0ed7fbb73ce364889b2af7f3ee5764440da6a8a3363ffffffff613f8116565b611ed133838361410e565b611f027fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb600063ffffffff613f8116565b5050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b604080517f5550444154455f53455454494e47535f524f4c450000000000000000000000008152905190819003601401902081565b611f5f610d5f565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515611ffc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50808060011480612033575060008181526009602052604090206006015473ffffffffffffffffffffffffffffffffffffffff1615155b60408051808201909152601a81527f43565f50524f504f53414c5f444f45535f4e4f545f455849535400000000000060208201529015156120d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50600082815260096020908152604080832033808552600590910190925290912054611f02918491906141c7565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b600154600254604080517fe3d670d700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015290516000938493849391169163e3d670d79160248082019260209290919082900301818787803b15801561219d57600080fd5b505af11580156121b1573d6000803e3d6000fd5b505050506040513d60208110156121c757600080fd5b505191506121de846298968063ffffffff61452a16565b6004546121f1908463ffffffff61452a16565b60408051808201909152601881527f43565f414d4f554e545f4f5645525f4d41585f524154494f00000000000000006020820152911061228d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b506122d96122ac6801000000000000000086028463ffffffff6145f816565b6004546122cd9068010000000000000000026298968063ffffffff6145f816565b9063ffffffff6146af16565b905060406123696122e861475a565b61235d612303600354629896806146af90919063ffffffff16565b6123516298968061235d604061231f8a8063ffffffff61452a16565b60055460029290920a90049061235190700100000000000000000000000000000000026298968063ffffffff6145f816565b9063ffffffff6145f816565b9063ffffffff61452a16565b9060020a900492505050919050565b612380610d5f565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a4544000000000000000000000000602082015290151561241d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50818060011480612454575060008181526009602052604090206006015473ffffffffffffffffffffffffffffffffffffffff1615155b60408051808201909152601a81527f43565f50524f504f53414c5f444f45535f4e4f545f455849535400000000000060208201529015156124f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b506124fd8383336141c7565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602090815260409182902080548351818402810184019094528084526060939283018282801561256f57602002820191906000526020600020905b81548152602001906001019080831161255b575b50505050509050919050565b60045481565b50600190565b60006125b27fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b613f7d565b905090565b60085481565b604080517f43414e43454c5f50524f504f53414c5f524f4c450000000000000000000000008152905190819003601401902081565b60006125b27febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e613f7d565b600080600061262b84612581565b60408051808201909152601281527f5245434f5645525f444953414c4c4f574544000000000000000000000000000060208201529015156126c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b506126d1611a1a565b92506126dc83614848565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515612779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b5073ffffffffffffffffffffffffffffffffffffffff841615156127e4576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f193505050501580156127de573d6000803e3d6000fd5b506128d4565b508261280c73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61488216565b915061283573ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff6149bf16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c454400000060208201529015156128d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b60008061294a610d5f565b15156129595760009150612ac7565b612961612f21565b905073ffffffffffffffffffffffffffffffffffffffff811615156129895760009150612ac7565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef91068630876129b188614a57565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b83811015612a49578181015183820152602001612a31565b50505050905090810190601f168015612a765780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015612a9857600080fd5b505af1158015612aac573d6000803e3d6000fd5b505050506040513d6020811015612ac257600080fd5b505191505b509392505050565b60055481565b600080612ae0612f21565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561162c57600080fd5b33612bc17f5c513b2347f66d33af9d68f4a0ed7fbb73ce364889b2af7f3ee5764440da6a8a613f7d565b73ffffffffffffffffffffffffffffffffffffffff1614612c6957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f486f6f6b73206d7573742062652063616c6c65642066726f6d20546f6b656e2060448201527f4d616e6167657200000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b612c927fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb613f7d565b60408051808201909152601981527f5245454e5452414e43595f5245454e5452414e545f43414c4c0000000000000060208201529015612d2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50612d607fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb600163ffffffff613f8116565b611ed13383836124fd565b604080517f5550444154455f53455454494e47535f524f4c450000000000000000000000008152815190819003601401812060008083526020830190935291612db8913391849190610aa9565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515612e55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50600385905560048490556005839055600682905560408051868152602081018690528082018590526060810184905290517fab0e1d16e026a71973fa1c1862074f152ee6c430f36fce58005928c3bb1588369181900360800190a15050505050565b600090815260096020526040902080546001820154600283015460038401546004850154600690950154939573ffffffffffffffffffffffffffffffffffffffff938416959294919367ffffffffffffffff84169368010000000000000000900460ff16921690565b60006125b27f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b613f7d565b600033612f787f5c513b2347f66d33af9d68f4a0ed7fbb73ce364889b2af7f3ee5764440da6a8a613f7d565b73ffffffffffffffffffffffffffffffffffffffff161461302057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f486f6f6b73206d7573742062652063616c6c65642066726f6d20546f6b656e2060448201527f4d616e6167657200000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6130497fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb613f7d565b60408051808201909152601981527f5245454e5452414e43595f5245454e5452414e545f43414c4c00000000000000602082015290156130e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b506131177fe855346402235fdd185c890e68d2c4ecad599b88587635ee285bce2fda58dacb600163ffffffff613f8116565b611c94848484614a61565b60035460009067ffffffffffffffff85169082906131669061316090700100000000000000000000000000000000026298968063ffffffff6145f816565b83614a6a565b905060806131e26f800000000000000000000000000000006131d66131c660035462989680036123516131b3887001000000000000000000000000000000006146af90919063ffffffff16565b61235d8c6298968063ffffffff61452a16565b6131d6868b63ffffffff61452a16565b9063ffffffff614b6b16565b9060020a9004925050509392505050565b60065481565b670de0b6b3a764000081565b73ffffffffffffffffffffffffffffffffffffffff166000908152600a602052604090205490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6132586125f2565b14905090565b600080828060011480613297575060008181526009602052604090206006015473ffffffffffffffffffffffffffffffffffffffff1615155b60408051808201909152601a81527f43565f50524f504f53414c5f444f45535f4e4f545f45584953540000000000006020820152901515613334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50600084815260096020908152604080832081517f43414e43454c5f50524f504f53414c5f524f4c4500000000000000000000000081528251908190036014018120858252938101909252955061338e9233929190610aa9565b600684015490925073ffffffffffffffffffffffffffffffffffffffff163314806133b65750815b60408051808201909152601781527f43565f53454e4445525f43414e4e4f545f43414e43454c0000000000000000006020820152901515613453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b5060408051606081018252602181527f43565f43414e4e4f545f43414e43454c5f4142535441494e5f50524f504f534160208201527f4c0000000000000000000000000000000000000000000000000000000000000091810191909152600185141561351b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b506000600484015468010000000000000000900460ff16600281111561353d57fe5b60408051808201909152601681527f43565f50524f504f53414c5f4e4f545f41435449564500000000000000000000602082015291146135d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b506004830180547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff166801000000000000000017905560405184907f416e669c63d9a3a5e36ee7cc7e2104b8db28ccd286aa18966e98fa230c73b08c90600090a250505050565b600082815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845260050190915290205492915050565b604080517f4352454154455f50524f504f53414c535f524f4c4500000000000000000000008152905190819003601501902081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6136d2610d5f565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a4544000000000000000000000000602082015290151561376f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50611f0282823361382d565b4390565b60008061378a614c10565b600485015490925067ffffffffffffffff808416911611156137a857fe5b600484015467ffffffffffffffff838116911614156137c657613827565b600484015460038501546137e79167ffffffffffffffff1684039085613122565b6004850180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff85161790556003850181905590505b50505050565b6000806000858060011480613868575060008181526009602052604090206006015473ffffffffffffffffffffffffffffffffffffffff1615155b60408051808201909152601a81527f43565f50524f504f53414c5f444f45535f4e4f545f45584953540000000000006020820152901515613905576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b5060008781526009602090815260408083208151808301909252601982527f43565f414d4f554e545f43414e5f4e4f545f42455f5a45524f00000000000000928201929092529095509087116139b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b506000600485015468010000000000000000900460ff1660028111156139d957fe5b60408051808201909152601681527f43565f50524f504f53414c5f4e4f545f4143544956450000000000000000000060208201529114613a75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b5073ffffffffffffffffffffffffffffffffffffffff8086166000818152600a6020908152604080832054835482517f70a0823100000000000000000000000000000000000000000000000000000000815260048101969096529151613b3a96919592909116936370a0823193602480850194919392918390030190829087803b158015613b0257600080fd5b505af1158015613b16573d6000803e3d6000fd5b505050506040513d6020811015613b2c57600080fd5b50519063ffffffff6146af16565b925082861115613b5d57613b5d613b57878563ffffffff6146af16565b86614c22565b60008054604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152915191909216926370a0823192602480820193602093909283900390910190829087803b158015613bd557600080fd5b505af1158015613be9573d6000803e3d6000fd5b505050506040513d6020811015613bff57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff86166000908152600a6020526040902054613c37908863ffffffff614b6b16565b60408051808201909152601e81527f43565f5354414b494e475f4d4f52455f5448414e5f415641494c41424c4500006020820152911015613cd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b5060028401549150613cec828763ffffffff614b6b16565b600285015573ffffffffffffffffffffffffffffffffffffffff85166000908152600585016020526040902054613d29908763ffffffff614b6b16565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600586016020908152604080832093909355600a90522054613d6d908763ffffffff614b6b16565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600a6020526040902055600854613da6908763ffffffff614b6b16565b600855600484015467ffffffffffffffff161515613e0657613dc6614c10565b6004850180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055613e10565b613e10848361377f565b613e1a8786614d92565b73ffffffffffffffffffffffffffffffffffffffff85166000818152600586016020908152604091829020546002880154600389015484518c81529384019290925282840152606082015290518992917f28d9b583e0c477691a08f6c1e00fedc0895ed4221487c627fa96a7024119f499919081900360800190a350505050505050565b613ea66125f2565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015613f42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50613f7b613f4e61377b565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff613f8116565b565b5490565b9055565b60008073ffffffffffffffffffffffffffffffffffffffff85161515613fae5760019150612ac7565b60008054604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152915161402c94889493909316926370a0823192602480820193602093909283900390910190829087803b158015613b0257600080fd5b73ffffffffffffffffffffffffffffffffffffffff86166000908152600a60205260409020549091508110156140965773ffffffffffffffffffffffffffffffffffffffff85166000908152600a602052604090205461409690613b57908363ffffffff6146af16565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600a60205260409020548110156141035773ffffffffffffffffffffffffffffffffffffffff85166000908152600a6020526040902054614103906140fd908363ffffffff6146af16565b86614e8c565b506001949350505050565b60005460408051808201909152601f81527f43565f494e434f52524543545f544f4b454e5f4d414e414745525f484f4f4b0060208201529073ffffffffffffffffffffffffffffffffffffffff838116911614613827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b600083815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600581018352818420548251808401909352601c83527f43565f57495448445241575f4d4f52455f5448414e5f5354414b45440000000093830193909352929185111561429a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b5060408051808201909152601981527f43565f414d4f554e545f43414e5f4e4f545f42455f5a45524f00000000000000602082015260008511614339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50506002810154614350818563ffffffff6146af16565b600283015573ffffffffffffffffffffffffffffffffffffffff8316600090815260058301602052604090205461438d908563ffffffff6146af16565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600584016020908152604080832093909355600a905220546143d1908563ffffffff6146af16565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604090205560085461440a908563ffffffff6146af16565b60085573ffffffffffffffffffffffffffffffffffffffff8316600090815260058301602052604090205415156144725773ffffffffffffffffffffffffffffffffffffffff83166000908152600b60205260409020614470908663ffffffff6150df16565b505b6000600483015468010000000000000000900460ff16600281111561449357fe5b14156144a3576144a3828261377f565b73ffffffffffffffffffffffffffffffffffffffff831660008181526005840160209081526040918290205460028601546003870154845195865292850189905284840191909152606084015260808301525186917f16f23283da3097bc9027dcdf31f24863b1520556f04818d406f0e6ecd08580f5919081900360a00190a25050505050565b60008083151561453d57600091506145f1565b5082820282848281151561454d57fe5b60408051808201909152601181527f4d4154485f4d554c5f4f564552464c4f57000000000000000000000000000000602082015292919004146145ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b508091505b5092915050565b60408051808201909152600d81527f4d4154485f4449565f5a45524f000000000000000000000000000000000000006020820152600090819081841161469a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b5082848115156146a657fe5b04949350505050565b60408051808201909152601281527f4d4154485f5355425f554e444552464c4f5700000000000000000000000000006020820152600090819084841115614752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b505050900390565b60008061482c670de0b6b3a76400006123516006546000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156147f457600080fd5b505af1158015614808573d6000803e3d6000fd5b505050506040513d602081101561481e57600080fd5b50519063ffffffff61452a16565b9050806008541061483f57600854610d82565b919050565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff83161515614871576000915061487c565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052600090818061490f86846151b4565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f524556455254454400000000602082015291935091508215156149b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b508093505b50505092915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052600090614a4e85826151e5565b95945050505050565b8051602002815290565b60019392505050565b600080807001000000000000000000000000000000008510614aed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f5f612073686f756c64206265206c657373207468616e20325e31323800000000604482015290519081900360640190fd5b507001000000000000000000000000000000009150839050825b6000811115614b6357600181161515614b2f57614b248283615233565b915060029004614b5e565b614b398383615233565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b614b07565b505092915050565b60408051808201909152601181527f4d4154485f4144445f4f564552464c4f57000000000000000000000000000000602082015260009083830190848210156145ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b60006125b2614c1d61377b565b61538e565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020908152604080832080548251818502810185019093528083528493849360609385938493830182828015614c9557602002820191906000526020600020905b815481526020019060010190808311614c81575b505050505092505b825186108015614cac57508784105b15614d88578286815181101515614cbf57fe5b602090810290910181015160008181526009909252604090912090925090506002600482015468010000000000000000900460ff166002811115614cff57fe5b1480614d2957506001600482015468010000000000000000900460ff166002811115614d2757fe5b145b15614d7d5773ffffffffffffffffffffffffffffffffffffffff871660009081526005820160205260408120549550851115614d7d57614d6a8286896141c7565b614d7a848663ffffffff614b6b16565b93505b600190950194614c9d565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b60205260409020614dc7818463ffffffff61543e16565b15156124fd57805460408051808201909152601881527f43565f4d41585f50524f504f53414c535f524541434845440000000000000000602082015290600a11614e6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b50805460018101825560008281526020902001839055505050565b9055565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020908152604080832080548251818502810185019093528083528493849360609385938493830182828015614eff57602002820191906000526020600020905b815481526020019060010190808311614eeb575b5050505073ffffffffffffffffffffffffffffffffffffffff89166000908152600b60205260409020919450614f38919050600161543e565b15614fb75773ffffffffffffffffffffffffffffffffffffffff871660009081527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a3b6020526040902054614f8d908990615486565b94506000851115614fb757614fa4600186896141c7565b614fb4848663ffffffff614b6b16565b93505b73ffffffffffffffffffffffffffffffffffffffff87166000908152600b60209081526040918290208054835181840281018401909452808452909183018282801561502257602002820191906000526020600020905b81548152602001906001019080831161500e575b505050505092505b82518610801561503957508784105b15614d8857828681518110151561504c57fe5b602090810290910181015160008181526009909252604090912090925090506150ab61507e898663ffffffff6146af16565b73ffffffffffffffffffffffffffffffffffffffff89166000908152600584016020526040902054615486565b945060008511156150d4576150c18286896141c7565b6150d1848663ffffffff614b6b16565b93505b60019095019461502a565b815460009081805b828210156151a8578486838154811015156150fe57fe5b9060005260206000200154141561519d575084547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0181811461516f57858181548110151561514957fe5b9060005260206000200154868381548110151561516257fe5b6000918252602090912001555b858181548110151561517d57fe5b6000918252602082200155806151938782615495565b50600193506149b6565b6001909101906150e7565b50600095945050505050565b6000806000806040516020818751602089018a5afa925060008311156151d957805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115615229573d8015615216576020811461521f57615227565b60019350615227565b600183511493505b505b5090949350505050565b60007001000000000000000000000000000000008311156152db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5f612073686f756c64206265206c657373207468616e206f7220657175616c2060448201527f746f20325e313238000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b700100000000000000000000000000000000821061535a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f5f622073686f756c64206265206c657373207468616e20325e31323800000000604482015290519081900360640190fd5b60806153806f800000000000000000000000000000006131d6868663ffffffff61452a16565b9060020a9004905092915050565b60408051808201909152601581527f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000602082015260009067ffffffffffffffff831115615437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610a24578181015183820152602001610a0c565b5090919050565b6000805b835481101561547c5782848281548110151561545a57fe5b9060005260206000200154141561547457600191506145f1565b600101615442565b5060009392505050565b60008183106154375781611cc7565b8154818355818111156124fd576000838152602090206124fd918101908301611ab691905b80821115610d8557600081556001016154ba5600a165627a7a723058203b88880d8cbb3a842f189d7d7bcf716fd9285fb21b4fb2ba5b00d26932ab872e0029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e