{
	"deploy": {
		"VM:-": {
			"linkReferences": {},
			"autoDeployLib": true
		},
		"main:1": {
			"linkReferences": {},
			"autoDeployLib": true
		},
		"ropsten:3": {
			"linkReferences": {},
			"autoDeployLib": true
		},
		"rinkeby:4": {
			"linkReferences": {},
			"autoDeployLib": true
		},
		"kovan:42": {
			"linkReferences": {},
			"autoDeployLib": true
		},
		"görli:5": {
			"linkReferences": {},
			"autoDeployLib": true
		},
		"Custom": {
			"linkReferences": {},
			"autoDeployLib": true
		}
	},
	"data": {
		"bytecode": {
			"generatedSources": [
				{
					"ast": {
						"nodeType": "YulBlock",
						"src": "0:3911:1",
						"statements": [
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "72:53:1",
									"statements": [
										{
											"expression": {
												"arguments": [
													{
														"name": "pos",
														"nodeType": "YulIdentifier",
														"src": "89:3:1"
													},
													{
														"arguments": [
															{
																"name": "value",
																"nodeType": "YulIdentifier",
																"src": "112:5:1"
															}
														],
														"functionName": {
															"name": "cleanup_t_uint256",
															"nodeType": "YulIdentifier",
															"src": "94:17:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "94:24:1"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "82:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "82:37:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "82:37:1"
										}
									]
								},
								"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "60:5:1",
										"type": ""
									},
									{
										"name": "pos",
										"nodeType": "YulTypedName",
										"src": "67:3:1",
										"type": ""
									}
								],
								"src": "7:118:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "229:124:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "239:26:1",
											"value": {
												"arguments": [
													{
														"name": "headStart",
														"nodeType": "YulIdentifier",
														"src": "251:9:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "262:2:1",
														"type": "",
														"value": "32"
													}
												],
												"functionName": {
													"name": "add",
													"nodeType": "YulIdentifier",
													"src": "247:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "247:18:1"
											},
											"variableNames": [
												{
													"name": "tail",
													"nodeType": "YulIdentifier",
													"src": "239:4:1"
												}
											]
										},
										{
											"expression": {
												"arguments": [
													{
														"name": "value0",
														"nodeType": "YulIdentifier",
														"src": "319:6:1"
													},
													{
														"arguments": [
															{
																"name": "headStart",
																"nodeType": "YulIdentifier",
																"src": "332:9:1"
															},
															{
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "343:1:1",
																"type": "",
																"value": "0"
															}
														],
														"functionName": {
															"name": "add",
															"nodeType": "YulIdentifier",
															"src": "328:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "328:17:1"
													}
												],
												"functionName": {
													"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
													"nodeType": "YulIdentifier",
													"src": "275:43:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "275:71:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "275:71:1"
										}
									]
								},
								"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "headStart",
										"nodeType": "YulTypedName",
										"src": "201:9:1",
										"type": ""
									},
									{
										"name": "value0",
										"nodeType": "YulTypedName",
										"src": "213:6:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "tail",
										"nodeType": "YulTypedName",
										"src": "224:4:1",
										"type": ""
									}
								],
								"src": "131:222:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "432:775:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "442:15:1",
											"value": {
												"name": "_power",
												"nodeType": "YulIdentifier",
												"src": "451:6:1"
											},
											"variableNames": [
												{
													"name": "power",
													"nodeType": "YulIdentifier",
													"src": "442:5:1"
												}
											]
										},
										{
											"nodeType": "YulAssignment",
											"src": "466:14:1",
											"value": {
												"name": "_base",
												"nodeType": "YulIdentifier",
												"src": "475:5:1"
											},
											"variableNames": [
												{
													"name": "base",
													"nodeType": "YulIdentifier",
													"src": "466:4:1"
												}
											]
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "524:677:1",
												"statements": [
													{
														"body": {
															"nodeType": "YulBlock",
															"src": "612:22:1",
															"statements": [
																{
																	"expression": {
																		"arguments": [],
																		"functionName": {
																			"name": "panic_error_0x11",
																			"nodeType": "YulIdentifier",
																			"src": "614:16:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "614:18:1"
																	},
																	"nodeType": "YulExpressionStatement",
																	"src": "614:18:1"
																}
															]
														},
														"condition": {
															"arguments": [
																{
																	"name": "base",
																	"nodeType": "YulIdentifier",
																	"src": "590:4:1"
																},
																{
																	"arguments": [
																		{
																			"name": "max",
																			"nodeType": "YulIdentifier",
																			"src": "600:3:1"
																		},
																		{
																			"name": "base",
																			"nodeType": "YulIdentifier",
																			"src": "605:4:1"
																		}
																	],
																	"functionName": {
																		"name": "div",
																		"nodeType": "YulIdentifier",
																		"src": "596:3:1"
																	},
																	"nodeType": "YulFunctionCall",
																	"src": "596:14:1"
																}
															],
															"functionName": {
																"name": "gt",
																"nodeType": "YulIdentifier",
																"src": "587:2:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "587:24:1"
														},
														"nodeType": "YulIf",
														"src": "584:2:1"
													},
													{
														"body": {
															"nodeType": "YulBlock",
															"src": "679:419:1",
															"statements": [
																{
																	"nodeType": "YulAssignment",
																	"src": "1059:25:1",
																	"value": {
																		"arguments": [
																			{
																				"name": "power",
																				"nodeType": "YulIdentifier",
																				"src": "1072:5:1"
																			},
																			{
																				"name": "base",
																				"nodeType": "YulIdentifier",
																				"src": "1079:4:1"
																			}
																		],
																		"functionName": {
																			"name": "mul",
																			"nodeType": "YulIdentifier",
																			"src": "1068:3:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "1068:16:1"
																	},
																	"variableNames": [
																		{
																			"name": "power",
																			"nodeType": "YulIdentifier",
																			"src": "1059:5:1"
																		}
																	]
																}
															]
														},
														"condition": {
															"arguments": [
																{
																	"name": "exponent",
																	"nodeType": "YulIdentifier",
																	"src": "654:8:1"
																},
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "664:1:1",
																	"type": "",
																	"value": "1"
																}
															],
															"functionName": {
																"name": "and",
																"nodeType": "YulIdentifier",
																"src": "650:3:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "650:16:1"
														},
														"nodeType": "YulIf",
														"src": "647:2:1"
													},
													{
														"nodeType": "YulAssignment",
														"src": "1111:23:1",
														"value": {
															"arguments": [
																{
																	"name": "base",
																	"nodeType": "YulIdentifier",
																	"src": "1123:4:1"
																},
																{
																	"name": "base",
																	"nodeType": "YulIdentifier",
																	"src": "1129:4:1"
																}
															],
															"functionName": {
																"name": "mul",
																"nodeType": "YulIdentifier",
																"src": "1119:3:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "1119:15:1"
														},
														"variableNames": [
															{
																"name": "base",
																"nodeType": "YulIdentifier",
																"src": "1111:4:1"
															}
														]
													},
													{
														"nodeType": "YulAssignment",
														"src": "1147:44:1",
														"value": {
															"arguments": [
																{
																	"name": "exponent",
																	"nodeType": "YulIdentifier",
																	"src": "1182:8:1"
																}
															],
															"functionName": {
																"name": "shift_right_1_unsigned",
																"nodeType": "YulIdentifier",
																"src": "1159:22:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "1159:32:1"
														},
														"variableNames": [
															{
																"name": "exponent",
																"nodeType": "YulIdentifier",
																"src": "1147:8:1"
															}
														]
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "exponent",
														"nodeType": "YulIdentifier",
														"src": "500:8:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "510:1:1",
														"type": "",
														"value": "1"
													}
												],
												"functionName": {
													"name": "gt",
													"nodeType": "YulIdentifier",
													"src": "497:2:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "497:15:1"
											},
											"nodeType": "YulForLoop",
											"post": {
												"nodeType": "YulBlock",
												"src": "513:2:1",
												"statements": []
											},
											"pre": {
												"nodeType": "YulBlock",
												"src": "493:3:1",
												"statements": []
											},
											"src": "489:712:1"
										}
									]
								},
								"name": "checked_exp_helper",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "_power",
										"nodeType": "YulTypedName",
										"src": "387:6:1",
										"type": ""
									},
									{
										"name": "_base",
										"nodeType": "YulTypedName",
										"src": "395:5:1",
										"type": ""
									},
									{
										"name": "exponent",
										"nodeType": "YulTypedName",
										"src": "402:8:1",
										"type": ""
									},
									{
										"name": "max",
										"nodeType": "YulTypedName",
										"src": "412:3:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "power",
										"nodeType": "YulTypedName",
										"src": "420:5:1",
										"type": ""
									},
									{
										"name": "base",
										"nodeType": "YulTypedName",
										"src": "427:4:1",
										"type": ""
									}
								],
								"src": "359:848:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "1277:217:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "1287:31:1",
											"value": {
												"arguments": [
													{
														"name": "base",
														"nodeType": "YulIdentifier",
														"src": "1313:4:1"
													}
												],
												"functionName": {
													"name": "cleanup_t_uint256",
													"nodeType": "YulIdentifier",
													"src": "1295:17:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "1295:23:1"
											},
											"variableNames": [
												{
													"name": "base",
													"nodeType": "YulIdentifier",
													"src": "1287:4:1"
												}
											]
										},
										{
											"nodeType": "YulAssignment",
											"src": "1327:37:1",
											"value": {
												"arguments": [
													{
														"name": "exponent",
														"nodeType": "YulIdentifier",
														"src": "1355:8:1"
													}
												],
												"functionName": {
													"name": "cleanup_t_uint8",
													"nodeType": "YulIdentifier",
													"src": "1339:15:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "1339:25:1"
											},
											"variableNames": [
												{
													"name": "exponent",
													"nodeType": "YulIdentifier",
													"src": "1327:8:1"
												}
											]
										},
										{
											"nodeType": "YulAssignment",
											"src": "1374:113:1",
											"value": {
												"arguments": [
													{
														"name": "base",
														"nodeType": "YulIdentifier",
														"src": "1404:4:1"
													},
													{
														"name": "exponent",
														"nodeType": "YulIdentifier",
														"src": "1410:8:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "1420:66:1",
														"type": "",
														"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
													}
												],
												"functionName": {
													"name": "checked_exp_unsigned",
													"nodeType": "YulIdentifier",
													"src": "1383:20:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "1383:104:1"
											},
											"variableNames": [
												{
													"name": "power",
													"nodeType": "YulIdentifier",
													"src": "1374:5:1"
												}
											]
										}
									]
								},
								"name": "checked_exp_t_uint256_t_uint8",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "base",
										"nodeType": "YulTypedName",
										"src": "1252:4:1",
										"type": ""
									},
									{
										"name": "exponent",
										"nodeType": "YulTypedName",
										"src": "1258:8:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "power",
										"nodeType": "YulTypedName",
										"src": "1271:5:1",
										"type": ""
									}
								],
								"src": "1213:281:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "1560:1013:1",
									"statements": [
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "1755:20:1",
												"statements": [
													{
														"nodeType": "YulAssignment",
														"src": "1757:10:1",
														"value": {
															"kind": "number",
															"nodeType": "YulLiteral",
															"src": "1766:1:1",
															"type": "",
															"value": "1"
														},
														"variableNames": [
															{
																"name": "power",
																"nodeType": "YulIdentifier",
																"src": "1757:5:1"
															}
														]
													},
													{
														"nodeType": "YulLeave",
														"src": "1768:5:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "exponent",
														"nodeType": "YulIdentifier",
														"src": "1745:8:1"
													}
												],
												"functionName": {
													"name": "iszero",
													"nodeType": "YulIdentifier",
													"src": "1738:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "1738:16:1"
											},
											"nodeType": "YulIf",
											"src": "1735:2:1"
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "1800:20:1",
												"statements": [
													{
														"nodeType": "YulAssignment",
														"src": "1802:10:1",
														"value": {
															"kind": "number",
															"nodeType": "YulLiteral",
															"src": "1811:1:1",
															"type": "",
															"value": "0"
														},
														"variableNames": [
															{
																"name": "power",
																"nodeType": "YulIdentifier",
																"src": "1802:5:1"
															}
														]
													},
													{
														"nodeType": "YulLeave",
														"src": "1813:5:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "base",
														"nodeType": "YulIdentifier",
														"src": "1794:4:1"
													}
												],
												"functionName": {
													"name": "iszero",
													"nodeType": "YulIdentifier",
													"src": "1787:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "1787:12:1"
											},
											"nodeType": "YulIf",
											"src": "1784:2:1"
										},
										{
											"cases": [
												{
													"body": {
														"nodeType": "YulBlock",
														"src": "1930:20:1",
														"statements": [
															{
																"nodeType": "YulAssignment",
																"src": "1932:10:1",
																"value": {
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "1941:1:1",
																	"type": "",
																	"value": "1"
																},
																"variableNames": [
																	{
																		"name": "power",
																		"nodeType": "YulIdentifier",
																		"src": "1932:5:1"
																	}
																]
															},
															{
																"nodeType": "YulLeave",
																"src": "1943:5:1"
															}
														]
													},
													"nodeType": "YulCase",
													"src": "1923:27:1",
													"value": {
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "1928:1:1",
														"type": "",
														"value": "1"
													}
												},
												{
													"body": {
														"nodeType": "YulBlock",
														"src": "1974:176:1",
														"statements": [
															{
																"body": {
																	"nodeType": "YulBlock",
																	"src": "2009:22:1",
																	"statements": [
																		{
																			"expression": {
																				"arguments": [],
																				"functionName": {
																					"name": "panic_error_0x11",
																					"nodeType": "YulIdentifier",
																					"src": "2011:16:1"
																				},
																				"nodeType": "YulFunctionCall",
																				"src": "2011:18:1"
																			},
																			"nodeType": "YulExpressionStatement",
																			"src": "2011:18:1"
																		}
																	]
																},
																"condition": {
																	"arguments": [
																		{
																			"name": "exponent",
																			"nodeType": "YulIdentifier",
																			"src": "1994:8:1"
																		},
																		{
																			"kind": "number",
																			"nodeType": "YulLiteral",
																			"src": "2004:3:1",
																			"type": "",
																			"value": "255"
																		}
																	],
																	"functionName": {
																		"name": "gt",
																		"nodeType": "YulIdentifier",
																		"src": "1991:2:1"
																	},
																	"nodeType": "YulFunctionCall",
																	"src": "1991:17:1"
																},
																"nodeType": "YulIf",
																"src": "1988:2:1"
															},
															{
																"nodeType": "YulAssignment",
																"src": "2044:25:1",
																"value": {
																	"arguments": [
																		{
																			"kind": "number",
																			"nodeType": "YulLiteral",
																			"src": "2057:1:1",
																			"type": "",
																			"value": "2"
																		},
																		{
																			"name": "exponent",
																			"nodeType": "YulIdentifier",
																			"src": "2060:8:1"
																		}
																	],
																	"functionName": {
																		"name": "exp",
																		"nodeType": "YulIdentifier",
																		"src": "2053:3:1"
																	},
																	"nodeType": "YulFunctionCall",
																	"src": "2053:16:1"
																},
																"variableNames": [
																	{
																		"name": "power",
																		"nodeType": "YulIdentifier",
																		"src": "2044:5:1"
																	}
																]
															},
															{
																"body": {
																	"nodeType": "YulBlock",
																	"src": "2100:22:1",
																	"statements": [
																		{
																			"expression": {
																				"arguments": [],
																				"functionName": {
																					"name": "panic_error_0x11",
																					"nodeType": "YulIdentifier",
																					"src": "2102:16:1"
																				},
																				"nodeType": "YulFunctionCall",
																				"src": "2102:18:1"
																			},
																			"nodeType": "YulExpressionStatement",
																			"src": "2102:18:1"
																		}
																	]
																},
																"condition": {
																	"arguments": [
																		{
																			"name": "power",
																			"nodeType": "YulIdentifier",
																			"src": "2088:5:1"
																		},
																		{
																			"name": "max",
																			"nodeType": "YulIdentifier",
																			"src": "2095:3:1"
																		}
																	],
																	"functionName": {
																		"name": "gt",
																		"nodeType": "YulIdentifier",
																		"src": "2085:2:1"
																	},
																	"nodeType": "YulFunctionCall",
																	"src": "2085:14:1"
																},
																"nodeType": "YulIf",
																"src": "2082:2:1"
															},
															{
																"nodeType": "YulLeave",
																"src": "2135:5:1"
															}
														]
													},
													"nodeType": "YulCase",
													"src": "1959:191:1",
													"value": {
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "1964:1:1",
														"type": "",
														"value": "2"
													}
												}
											],
											"expression": {
												"name": "base",
												"nodeType": "YulIdentifier",
												"src": "1880:4:1"
											},
											"nodeType": "YulSwitch",
											"src": "1873:277:1"
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "2282:123:1",
												"statements": [
													{
														"nodeType": "YulAssignment",
														"src": "2296:28:1",
														"value": {
															"arguments": [
																{
																	"name": "base",
																	"nodeType": "YulIdentifier",
																	"src": "2309:4:1"
																},
																{
																	"name": "exponent",
																	"nodeType": "YulIdentifier",
																	"src": "2315:8:1"
																}
															],
															"functionName": {
																"name": "exp",
																"nodeType": "YulIdentifier",
																"src": "2305:3:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "2305:19:1"
														},
														"variableNames": [
															{
																"name": "power",
																"nodeType": "YulIdentifier",
																"src": "2296:5:1"
															}
														]
													},
													{
														"body": {
															"nodeType": "YulBlock",
															"src": "2355:22:1",
															"statements": [
																{
																	"expression": {
																		"arguments": [],
																		"functionName": {
																			"name": "panic_error_0x11",
																			"nodeType": "YulIdentifier",
																			"src": "2357:16:1"
																		},
																		"nodeType": "YulFunctionCall",
																		"src": "2357:18:1"
																	},
																	"nodeType": "YulExpressionStatement",
																	"src": "2357:18:1"
																}
															]
														},
														"condition": {
															"arguments": [
																{
																	"name": "power",
																	"nodeType": "YulIdentifier",
																	"src": "2343:5:1"
																},
																{
																	"name": "max",
																	"nodeType": "YulIdentifier",
																	"src": "2350:3:1"
																}
															],
															"functionName": {
																"name": "gt",
																"nodeType": "YulIdentifier",
																"src": "2340:2:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "2340:14:1"
														},
														"nodeType": "YulIf",
														"src": "2337:2:1"
													},
													{
														"nodeType": "YulLeave",
														"src": "2390:5:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"arguments": [
															{
																"arguments": [
																	{
																		"name": "base",
																		"nodeType": "YulIdentifier",
																		"src": "2185:4:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "2191:2:1",
																		"type": "",
																		"value": "11"
																	}
																],
																"functionName": {
																	"name": "lt",
																	"nodeType": "YulIdentifier",
																	"src": "2182:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "2182:12:1"
															},
															{
																"arguments": [
																	{
																		"name": "exponent",
																		"nodeType": "YulIdentifier",
																		"src": "2199:8:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "2209:2:1",
																		"type": "",
																		"value": "78"
																	}
																],
																"functionName": {
																	"name": "lt",
																	"nodeType": "YulIdentifier",
																	"src": "2196:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "2196:16:1"
															}
														],
														"functionName": {
															"name": "and",
															"nodeType": "YulIdentifier",
															"src": "2178:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "2178:35:1"
													},
													{
														"arguments": [
															{
																"arguments": [
																	{
																		"name": "base",
																		"nodeType": "YulIdentifier",
																		"src": "2234:4:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "2240:3:1",
																		"type": "",
																		"value": "307"
																	}
																],
																"functionName": {
																	"name": "lt",
																	"nodeType": "YulIdentifier",
																	"src": "2231:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "2231:13:1"
															},
															{
																"arguments": [
																	{
																		"name": "exponent",
																		"nodeType": "YulIdentifier",
																		"src": "2249:8:1"
																	},
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "2259:2:1",
																		"type": "",
																		"value": "32"
																	}
																],
																"functionName": {
																	"name": "lt",
																	"nodeType": "YulIdentifier",
																	"src": "2246:2:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "2246:16:1"
															}
														],
														"functionName": {
															"name": "and",
															"nodeType": "YulIdentifier",
															"src": "2227:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "2227:36:1"
													}
												],
												"functionName": {
													"name": "or",
													"nodeType": "YulIdentifier",
													"src": "2162:2:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2162:111:1"
											},
											"nodeType": "YulIf",
											"src": "2159:2:1"
										},
										{
											"nodeType": "YulAssignment",
											"src": "2415:57:1",
											"value": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "2449:1:1",
														"type": "",
														"value": "1"
													},
													{
														"name": "base",
														"nodeType": "YulIdentifier",
														"src": "2452:4:1"
													},
													{
														"name": "exponent",
														"nodeType": "YulIdentifier",
														"src": "2458:8:1"
													},
													{
														"name": "max",
														"nodeType": "YulIdentifier",
														"src": "2468:3:1"
													}
												],
												"functionName": {
													"name": "checked_exp_helper",
													"nodeType": "YulIdentifier",
													"src": "2430:18:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2430:42:1"
											},
											"variableNames": [
												{
													"name": "power",
													"nodeType": "YulIdentifier",
													"src": "2415:5:1"
												},
												{
													"name": "base",
													"nodeType": "YulIdentifier",
													"src": "2422:4:1"
												}
											]
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "2511:22:1",
												"statements": [
													{
														"expression": {
															"arguments": [],
															"functionName": {
																"name": "panic_error_0x11",
																"nodeType": "YulIdentifier",
																"src": "2513:16:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "2513:18:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "2513:18:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "power",
														"nodeType": "YulIdentifier",
														"src": "2488:5:1"
													},
													{
														"arguments": [
															{
																"name": "max",
																"nodeType": "YulIdentifier",
																"src": "2499:3:1"
															},
															{
																"name": "base",
																"nodeType": "YulIdentifier",
																"src": "2504:4:1"
															}
														],
														"functionName": {
															"name": "div",
															"nodeType": "YulIdentifier",
															"src": "2495:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "2495:14:1"
													}
												],
												"functionName": {
													"name": "gt",
													"nodeType": "YulIdentifier",
													"src": "2485:2:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2485:25:1"
											},
											"nodeType": "YulIf",
											"src": "2482:2:1"
										},
										{
											"nodeType": "YulAssignment",
											"src": "2542:25:1",
											"value": {
												"arguments": [
													{
														"name": "power",
														"nodeType": "YulIdentifier",
														"src": "2555:5:1"
													},
													{
														"name": "base",
														"nodeType": "YulIdentifier",
														"src": "2562:4:1"
													}
												],
												"functionName": {
													"name": "mul",
													"nodeType": "YulIdentifier",
													"src": "2551:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2551:16:1"
											},
											"variableNames": [
												{
													"name": "power",
													"nodeType": "YulIdentifier",
													"src": "2542:5:1"
												}
											]
										}
									]
								},
								"name": "checked_exp_unsigned",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "base",
										"nodeType": "YulTypedName",
										"src": "1530:4:1",
										"type": ""
									},
									{
										"name": "exponent",
										"nodeType": "YulTypedName",
										"src": "1536:8:1",
										"type": ""
									},
									{
										"name": "max",
										"nodeType": "YulTypedName",
										"src": "1546:3:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "power",
										"nodeType": "YulTypedName",
										"src": "1554:5:1",
										"type": ""
									}
								],
								"src": "1500:1073:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "2627:300:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "2637:25:1",
											"value": {
												"arguments": [
													{
														"name": "x",
														"nodeType": "YulIdentifier",
														"src": "2660:1:1"
													}
												],
												"functionName": {
													"name": "cleanup_t_uint256",
													"nodeType": "YulIdentifier",
													"src": "2642:17:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2642:20:1"
											},
											"variableNames": [
												{
													"name": "x",
													"nodeType": "YulIdentifier",
													"src": "2637:1:1"
												}
											]
										},
										{
											"nodeType": "YulAssignment",
											"src": "2671:25:1",
											"value": {
												"arguments": [
													{
														"name": "y",
														"nodeType": "YulIdentifier",
														"src": "2694:1:1"
													}
												],
												"functionName": {
													"name": "cleanup_t_uint256",
													"nodeType": "YulIdentifier",
													"src": "2676:17:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2676:20:1"
											},
											"variableNames": [
												{
													"name": "y",
													"nodeType": "YulIdentifier",
													"src": "2671:1:1"
												}
											]
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "2869:22:1",
												"statements": [
													{
														"expression": {
															"arguments": [],
															"functionName": {
																"name": "panic_error_0x11",
																"nodeType": "YulIdentifier",
																"src": "2871:16:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "2871:18:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "2871:18:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"arguments": [
															{
																"arguments": [
																	{
																		"name": "x",
																		"nodeType": "YulIdentifier",
																		"src": "2781:1:1"
																	}
																],
																"functionName": {
																	"name": "iszero",
																	"nodeType": "YulIdentifier",
																	"src": "2774:6:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "2774:9:1"
															}
														],
														"functionName": {
															"name": "iszero",
															"nodeType": "YulIdentifier",
															"src": "2767:6:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "2767:17:1"
													},
													{
														"arguments": [
															{
																"name": "y",
																"nodeType": "YulIdentifier",
																"src": "2789:1:1"
															},
															{
																"arguments": [
																	{
																		"kind": "number",
																		"nodeType": "YulLiteral",
																		"src": "2796:66:1",
																		"type": "",
																		"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
																	},
																	{
																		"name": "x",
																		"nodeType": "YulIdentifier",
																		"src": "2864:1:1"
																	}
																],
																"functionName": {
																	"name": "div",
																	"nodeType": "YulIdentifier",
																	"src": "2792:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "2792:74:1"
															}
														],
														"functionName": {
															"name": "gt",
															"nodeType": "YulIdentifier",
															"src": "2786:2:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "2786:81:1"
													}
												],
												"functionName": {
													"name": "and",
													"nodeType": "YulIdentifier",
													"src": "2763:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2763:105:1"
											},
											"nodeType": "YulIf",
											"src": "2760:2:1"
										},
										{
											"nodeType": "YulAssignment",
											"src": "2901:20:1",
											"value": {
												"arguments": [
													{
														"name": "x",
														"nodeType": "YulIdentifier",
														"src": "2916:1:1"
													},
													{
														"name": "y",
														"nodeType": "YulIdentifier",
														"src": "2919:1:1"
													}
												],
												"functionName": {
													"name": "mul",
													"nodeType": "YulIdentifier",
													"src": "2912:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2912:9:1"
											},
											"variableNames": [
												{
													"name": "product",
													"nodeType": "YulIdentifier",
													"src": "2901:7:1"
												}
											]
										}
									]
								},
								"name": "checked_mul_t_uint256",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "x",
										"nodeType": "YulTypedName",
										"src": "2610:1:1",
										"type": ""
									},
									{
										"name": "y",
										"nodeType": "YulTypedName",
										"src": "2613:1:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "product",
										"nodeType": "YulTypedName",
										"src": "2619:7:1",
										"type": ""
									}
								],
								"src": "2579:348:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "2978:32:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "2988:16:1",
											"value": {
												"name": "value",
												"nodeType": "YulIdentifier",
												"src": "2999:5:1"
											},
											"variableNames": [
												{
													"name": "cleaned",
													"nodeType": "YulIdentifier",
													"src": "2988:7:1"
												}
											]
										}
									]
								},
								"name": "cleanup_t_uint256",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "2960:5:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "cleaned",
										"nodeType": "YulTypedName",
										"src": "2970:7:1",
										"type": ""
									}
								],
								"src": "2933:77:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "3059:43:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "3069:27:1",
											"value": {
												"arguments": [
													{
														"name": "value",
														"nodeType": "YulIdentifier",
														"src": "3084:5:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3091:4:1",
														"type": "",
														"value": "0xff"
													}
												],
												"functionName": {
													"name": "and",
													"nodeType": "YulIdentifier",
													"src": "3080:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3080:16:1"
											},
											"variableNames": [
												{
													"name": "cleaned",
													"nodeType": "YulIdentifier",
													"src": "3069:7:1"
												}
											]
										}
									]
								},
								"name": "cleanup_t_uint8",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "3041:5:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "cleaned",
										"nodeType": "YulTypedName",
										"src": "3051:7:1",
										"type": ""
									}
								],
								"src": "3016:86:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "3159:269:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "3169:22:1",
											"value": {
												"arguments": [
													{
														"name": "data",
														"nodeType": "YulIdentifier",
														"src": "3183:4:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3189:1:1",
														"type": "",
														"value": "2"
													}
												],
												"functionName": {
													"name": "div",
													"nodeType": "YulIdentifier",
													"src": "3179:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3179:12:1"
											},
											"variableNames": [
												{
													"name": "length",
													"nodeType": "YulIdentifier",
													"src": "3169:6:1"
												}
											]
										},
										{
											"nodeType": "YulVariableDeclaration",
											"src": "3200:38:1",
											"value": {
												"arguments": [
													{
														"name": "data",
														"nodeType": "YulIdentifier",
														"src": "3230:4:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3236:1:1",
														"type": "",
														"value": "1"
													}
												],
												"functionName": {
													"name": "and",
													"nodeType": "YulIdentifier",
													"src": "3226:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3226:12:1"
											},
											"variables": [
												{
													"name": "outOfPlaceEncoding",
													"nodeType": "YulTypedName",
													"src": "3204:18:1",
													"type": ""
												}
											]
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "3277:51:1",
												"statements": [
													{
														"nodeType": "YulAssignment",
														"src": "3291:27:1",
														"value": {
															"arguments": [
																{
																	"name": "length",
																	"nodeType": "YulIdentifier",
																	"src": "3305:6:1"
																},
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "3313:4:1",
																	"type": "",
																	"value": "0x7f"
																}
															],
															"functionName": {
																"name": "and",
																"nodeType": "YulIdentifier",
																"src": "3301:3:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "3301:17:1"
														},
														"variableNames": [
															{
																"name": "length",
																"nodeType": "YulIdentifier",
																"src": "3291:6:1"
															}
														]
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "outOfPlaceEncoding",
														"nodeType": "YulIdentifier",
														"src": "3257:18:1"
													}
												],
												"functionName": {
													"name": "iszero",
													"nodeType": "YulIdentifier",
													"src": "3250:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3250:26:1"
											},
											"nodeType": "YulIf",
											"src": "3247:2:1"
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "3380:42:1",
												"statements": [
													{
														"expression": {
															"arguments": [],
															"functionName": {
																"name": "panic_error_0x22",
																"nodeType": "YulIdentifier",
																"src": "3394:16:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "3394:18:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "3394:18:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "outOfPlaceEncoding",
														"nodeType": "YulIdentifier",
														"src": "3344:18:1"
													},
													{
														"arguments": [
															{
																"name": "length",
																"nodeType": "YulIdentifier",
																"src": "3367:6:1"
															},
															{
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "3375:2:1",
																"type": "",
																"value": "32"
															}
														],
														"functionName": {
															"name": "lt",
															"nodeType": "YulIdentifier",
															"src": "3364:2:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "3364:14:1"
													}
												],
												"functionName": {
													"name": "eq",
													"nodeType": "YulIdentifier",
													"src": "3341:2:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3341:38:1"
											},
											"nodeType": "YulIf",
											"src": "3338:2:1"
										}
									]
								},
								"name": "extract_byte_array_length",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "data",
										"nodeType": "YulTypedName",
										"src": "3143:4:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "length",
										"nodeType": "YulTypedName",
										"src": "3152:6:1",
										"type": ""
									}
								],
								"src": "3108:320:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "3462:152:1",
									"statements": [
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3479:1:1",
														"type": "",
														"value": "0"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3482:77:1",
														"type": "",
														"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "3472:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3472:88:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "3472:88:1"
										},
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3576:1:1",
														"type": "",
														"value": "4"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3579:4:1",
														"type": "",
														"value": "0x11"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "3569:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3569:15:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "3569:15:1"
										},
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3600:1:1",
														"type": "",
														"value": "0"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3603:4:1",
														"type": "",
														"value": "0x24"
													}
												],
												"functionName": {
													"name": "revert",
													"nodeType": "YulIdentifier",
													"src": "3593:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3593:15:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "3593:15:1"
										}
									]
								},
								"name": "panic_error_0x11",
								"nodeType": "YulFunctionDefinition",
								"src": "3434:180:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "3648:152:1",
									"statements": [
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3665:1:1",
														"type": "",
														"value": "0"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3668:77:1",
														"type": "",
														"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "3658:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3658:88:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "3658:88:1"
										},
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3762:1:1",
														"type": "",
														"value": "4"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3765:4:1",
														"type": "",
														"value": "0x22"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "3755:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3755:15:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "3755:15:1"
										},
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3786:1:1",
														"type": "",
														"value": "0"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3789:4:1",
														"type": "",
														"value": "0x24"
													}
												],
												"functionName": {
													"name": "revert",
													"nodeType": "YulIdentifier",
													"src": "3779:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3779:15:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "3779:15:1"
										}
									]
								},
								"name": "panic_error_0x22",
								"nodeType": "YulFunctionDefinition",
								"src": "3620:180:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "3857:51:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "3867:34:1",
											"value": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3892:1:1",
														"type": "",
														"value": "1"
													},
													{
														"name": "value",
														"nodeType": "YulIdentifier",
														"src": "3895:5:1"
													}
												],
												"functionName": {
													"name": "shr",
													"nodeType": "YulIdentifier",
													"src": "3888:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3888:13:1"
											},
											"variableNames": [
												{
													"name": "newValue",
													"nodeType": "YulIdentifier",
													"src": "3867:8:1"
												}
											]
										}
									]
								},
								"name": "shift_right_1_unsigned",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "3838:5:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "newValue",
										"nodeType": "YulTypedName",
										"src": "3848:8:1",
										"type": ""
									}
								],
								"src": "3806:102:1"
							}
						]
					},
					"contents": "{\n\n    function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\n\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function checked_exp_helper(_power, _base, exponent, max) -> power, base {\n        power := _power\n        base  := _base\n        for { } gt(exponent, 1) {}\n        {\n            // overflow check for base * base\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1)\n            {\n                // No checks for power := mul(power, base) needed, because the check\n                // for base * base above is sufficient, since:\n                // |power| <= base (proof by induction) and thus:\n                // |power * base| <= base * base <= max <= |min| (for signed)\n                // (this is equally true for signed and unsigned exp)\n                power := mul(power, base)\n            }\n            base := mul(base, base)\n            exponent := shift_right_1_unsigned(exponent)\n        }\n    }\n\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power {\n        base := cleanup_t_uint256(base)\n        exponent := cleanup_t_uint8(exponent)\n\n        power := checked_exp_unsigned(base, exponent, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n\n    }\n\n    function checked_exp_unsigned(base, exponent, max) -> power {\n        // This function currently cannot be inlined because of the\n        // \"leave\" statements. We have to improve the optimizer.\n\n        // Note that 0**0 == 1\n        if iszero(exponent) { power := 1 leave }\n        if iszero(base) { power := 0 leave }\n\n        // Specializations for small bases\n        switch base\n        // 0 is handled above\n        case 1 { power := 1 leave }\n        case 2\n        {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := exp(2, exponent)\n            if gt(power, max) { panic_error_0x11() }\n            leave\n        }\n        if or(\n            and(lt(base, 11), lt(exponent, 78)),\n            and(lt(base, 307), lt(exponent, 32))\n        )\n        {\n            power := exp(base, exponent)\n            if gt(power, max) { panic_error_0x11() }\n            leave\n        }\n\n        power, base := checked_exp_helper(1, base, exponent, max)\n\n        if gt(power, div(max, base)) { panic_error_0x11() }\n        power := mul(power, base)\n    }\n\n    function checked_mul_t_uint256(x, y) -> product {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n\n        // overflow, if x != 0 and y > (maxValue / x)\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n\n        product := mul(x, y)\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function cleanup_t_uint8(value) -> cleaned {\n        cleaned := and(value, 0xff)\n    }\n\n    function extract_byte_array_length(data) -> length {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) {\n            length := and(length, 0x7f)\n        }\n\n        if eq(outOfPlaceEncoding, lt(length, 32)) {\n            panic_error_0x22()\n        }\n    }\n\n    function panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n\n    function panic_error_0x22() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x22)\n        revert(0, 0x24)\n    }\n\n    function shift_right_1_unsigned(value) -> newValue {\n        newValue :=\n\n        shr(1, value)\n\n    }\n\n}\n",
					"id": 1,
					"language": "Yul",
					"name": "#utility.yul"
				}
			],
			"linkReferences": {},
			"object": "60806040526040518060400160405280601581526020017f466565206f6e207472616e7366657220746f6b656e00000000000000000000008152506001908051906020019062000051929190620001b0565b506040518060400160405280600481526020017f464f465400000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f929190620001b0565b506012600360006101000a81548160ff021916908360ff160217905550600360009054906101000a900460ff16600a620000da9190620002e9565b620f4240620000ea919062000426565b600455348015620000fa57600080fd5b506004546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620001a2919062000271565b60405180910390a36200053f565b828054620001be906200049e565b90600052602060002090601f016020900481019282620001e257600085556200022e565b82601f10620001fd57805160ff19168380011785556200022e565b828001600101855582156200022e579182015b828111156200022d57825182559160200191906001019062000210565b5b5090506200023d919062000241565b5090565b5b808211156200025c57600081600090555060010162000242565b5090565b6200026b8162000487565b82525050565b600060208201905062000288600083018462000260565b92915050565b6000808291508390505b6001851115620002e057808604811115620002b857620002b7620004d4565b5b6001851615620002c85780820291505b8081029050620002d88562000532565b945062000298565b94509492505050565b6000620002f68262000487565b9150620003038362000491565b9250620003327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200033a565b905092915050565b6000826200034c57600190506200041f565b816200035c57600090506200041f565b81600181146200037557600281146200038057620003b6565b60019150506200041f565b60ff841115620003955762000394620004d4565b5b8360020a915084821115620003af57620003ae620004d4565b5b506200041f565b5060208310610133831016604e8410600b8410161715620003f05782820a905083811115620003ea57620003e9620004d4565b5b6200041f565b620003ff84848460016200028e565b92509050818404811115620004195762000418620004d4565b5b81810290505b9392505050565b6000620004338262000487565b9150620004408362000487565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200047c576200047b620004d4565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b60006002820490506001821680620004b757607f821691505b60208210811415620004ce57620004cd62000503565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b610f08806200054f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806342966c681161006657806342966c681461015d57806370a082311461017957806395d89b41146101a9578063a9059cbb146101c7578063dd62ed3e146101f75761009e565b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100f157806323b872dd1461010f578063313ce5671461013f575b600080fd5b6100ab610227565b6040516100b89190610c1d565b60405180910390f35b6100db60048036038101906100d69190610b37565b6102b5565b6040516100e89190610c02565b60405180910390f35b6100f96103a7565b6040516101069190610c3f565b60405180910390f35b61012960048036038101906101249190610ae8565b6103ad565b6040516101369190610c02565b60405180910390f35b610147610630565b6040516101549190610c5a565b60405180910390f35b61017760048036038101906101729190610b73565b610643565b005b610193600480360381019061018e9190610a83565b61069b565b6040516101a09190610c3f565b60405180910390f35b6101b16106b3565b6040516101be9190610c1d565b60405180910390f35b6101e160048036038101906101dc9190610b37565b610741565b6040516101ee9190610c02565b60405180910390f35b610211600480360381019061020c9190610aac565b6108d1565b60405161021e9190610c3f565b60405180910390f35b6001805461023490610dd4565b80601f016020809104026020016040519081016040528092919081815260200182805461026090610dd4565b80156102ad5780601f10610282576101008083540402835291602001916102ad565b820191906000526020600020905b81548152906001019060200180831161029057829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103959190610c3f565b60405180910390a36001905092915050565b60045481565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156103fa57600080fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561048357600080fd5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104d19190610d18565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105269190610c91565b9250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105b99190610d18565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161061d9190610c3f565b60405180910390a3600190509392505050565b600360009054906101000a900460ff1681565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561068e57600080fd5b61069833826108f6565b50565b60006020528060005260406000206000915090505481565b600280546106c090610dd4565b80601f01602080910402602001604051908101604052809291908181526020018280546106ec90610dd4565b80156107395780601f1061070e57610100808354040283529160200191610739565b820191906000526020600020905b81548152906001019060200180831161071c57829003601f168201915b505050505081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078e57600080fd5b600060028361079d9190610ce7565b90506107a933826108f6565b80836107b59190610d18565b9250826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108059190610d18565b92505081905550826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461085a9190610c91565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516108be9190610c3f565b60405180910390a3600191505092915050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600081141561090457600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561094f57600080fd5b8060045461095d9190610d18565b600481905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109ad9190610d18565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a4d9190610c3f565b60405180910390a35050565b600081359050610a6881610ea4565b92915050565b600081359050610a7d81610ebb565b92915050565b600060208284031215610a9557600080fd5b6000610aa384828501610a59565b91505092915050565b60008060408385031215610abf57600080fd5b6000610acd85828601610a59565b9250506020610ade85828601610a59565b9150509250929050565b600080600060608486031215610afd57600080fd5b6000610b0b86828701610a59565b9350506020610b1c86828701610a59565b9250506040610b2d86828701610a6e565b9150509250925092565b60008060408385031215610b4a57600080fd5b6000610b5885828601610a59565b9250506020610b6985828601610a6e565b9150509250929050565b600060208284031215610b8557600080fd5b6000610b9384828501610a6e565b91505092915050565b610ba581610d5e565b82525050565b6000610bb682610c75565b610bc08185610c80565b9350610bd0818560208601610da1565b610bd981610e93565b840191505092915050565b610bed81610d8a565b82525050565b610bfc81610d94565b82525050565b6000602082019050610c176000830184610b9c565b92915050565b60006020820190508181036000830152610c378184610bab565b905092915050565b6000602082019050610c546000830184610be4565b92915050565b6000602082019050610c6f6000830184610bf3565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610c9c82610d8a565b9150610ca783610d8a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610cdc57610cdb610e06565b5b828201905092915050565b6000610cf282610d8a565b9150610cfd83610d8a565b925082610d0d57610d0c610e35565b5b828204905092915050565b6000610d2382610d8a565b9150610d2e83610d8a565b925082821015610d4157610d40610e06565b5b828203905092915050565b6000610d5782610d6a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610dbf578082015181840152602081019050610da4565b83811115610dce576000848401525b50505050565b60006002820490506001821680610dec57607f821691505b60208210811415610e0057610dff610e64565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b610ead81610d4c565b8114610eb857600080fd5b50565b610ec481610d8a565b8114610ecf57600080fd5b5056fea2646970667358221220535fe1ff977e752005f289d3d7bb05b4260708142004691ff0ac8084395d96ca64736f6c63430008000033",
			"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x466565206F6E207472616E7366657220746F6B656E0000000000000000000000 DUP2 MSTORE POP PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x51 SWAP3 SWAP2 SWAP1 PUSH3 0x1B0 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x464F465400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x9F SWAP3 SWAP2 SWAP1 PUSH3 0x1B0 JUMP JUMPDEST POP PUSH1 0x12 PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xA PUSH3 0xDA SWAP2 SWAP1 PUSH3 0x2E9 JUMP JUMPDEST PUSH3 0xF4240 PUSH3 0xEA SWAP2 SWAP1 PUSH3 0x426 JUMP JUMPDEST PUSH1 0x4 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x4 SLOAD PUSH1 0x40 MLOAD PUSH3 0x1A2 SWAP2 SWAP1 PUSH3 0x271 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH3 0x53F JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x1BE SWAP1 PUSH3 0x49E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x1E2 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x22E JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x1FD JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x22E JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x22E JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x22D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x210 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x23D SWAP2 SWAP1 PUSH3 0x241 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x25C JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x242 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x26B DUP2 PUSH3 0x487 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x288 PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x260 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SWAP2 POP DUP4 SWAP1 POP JUMPDEST PUSH1 0x1 DUP6 GT ISZERO PUSH3 0x2E0 JUMPI DUP1 DUP7 DIV DUP2 GT ISZERO PUSH3 0x2B8 JUMPI PUSH3 0x2B7 PUSH3 0x4D4 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP6 AND ISZERO PUSH3 0x2C8 JUMPI DUP1 DUP3 MUL SWAP2 POP JUMPDEST DUP1 DUP2 MUL SWAP1 POP PUSH3 0x2D8 DUP6 PUSH3 0x532 JUMP JUMPDEST SWAP5 POP PUSH3 0x298 JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2F6 DUP3 PUSH3 0x487 JUMP JUMPDEST SWAP2 POP PUSH3 0x303 DUP4 PUSH3 0x491 JUMP JUMPDEST SWAP3 POP PUSH3 0x332 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP5 PUSH3 0x33A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x34C JUMPI PUSH1 0x1 SWAP1 POP PUSH3 0x41F JUMP JUMPDEST DUP2 PUSH3 0x35C JUMPI PUSH1 0x0 SWAP1 POP PUSH3 0x41F JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH3 0x375 JUMPI PUSH1 0x2 DUP2 EQ PUSH3 0x380 JUMPI PUSH3 0x3B6 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH3 0x41F JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH3 0x395 JUMPI PUSH3 0x394 PUSH3 0x4D4 JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x2 EXP SWAP2 POP DUP5 DUP3 GT ISZERO PUSH3 0x3AF JUMPI PUSH3 0x3AE PUSH3 0x4D4 JUMP JUMPDEST JUMPDEST POP PUSH3 0x41F JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH3 0x3F0 JUMPI DUP3 DUP3 EXP SWAP1 POP DUP4 DUP2 GT ISZERO PUSH3 0x3EA JUMPI PUSH3 0x3E9 PUSH3 0x4D4 JUMP JUMPDEST JUMPDEST PUSH3 0x41F JUMP JUMPDEST PUSH3 0x3FF DUP5 DUP5 DUP5 PUSH1 0x1 PUSH3 0x28E JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP2 DUP5 DIV DUP2 GT ISZERO PUSH3 0x419 JUMPI PUSH3 0x418 PUSH3 0x4D4 JUMP JUMPDEST JUMPDEST DUP2 DUP2 MUL SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x433 DUP3 PUSH3 0x487 JUMP JUMPDEST SWAP2 POP PUSH3 0x440 DUP4 PUSH3 0x487 JUMP JUMPDEST SWAP3 POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x47C JUMPI PUSH3 0x47B PUSH3 0x4D4 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MUL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x4B7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x4CE JUMPI PUSH3 0x4CD PUSH3 0x503 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF08 DUP1 PUSH3 0x54F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42966C68 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1F7 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xF1 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x13F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0xC1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xD6 SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH2 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE8 SWAP2 SWAP1 PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF9 PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x106 SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x124 SWAP2 SWAP1 PUSH2 0xAE8 JUMP JUMPDEST PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x136 SWAP2 SWAP1 PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x147 PUSH2 0x630 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x154 SWAP2 SWAP1 PUSH2 0xC5A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x172 SWAP2 SWAP1 PUSH2 0xB73 JUMP JUMPDEST PUSH2 0x643 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18E SWAP2 SWAP1 PUSH2 0xA83 JUMP JUMPDEST PUSH2 0x69B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A0 SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B1 PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0xC1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1DC SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1EE SWAP2 SWAP1 PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x211 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20C SWAP2 SWAP1 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x8D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21E SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x234 SWAP1 PUSH2 0xDD4 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x260 SWAP1 PUSH2 0xDD4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2AD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x282 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2AD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x290 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x5 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x395 SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x3FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x4D1 SWAP2 SWAP1 PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x526 SWAP2 SWAP1 PUSH2 0xC91 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x5 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x5B9 SWAP2 SWAP1 PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x61D SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x698 CALLER DUP3 PUSH2 0x8F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH2 0x6C0 SWAP1 PUSH2 0xDD4 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x6EC SWAP1 PUSH2 0xDD4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x739 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x70E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x739 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x71C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x78E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP4 PUSH2 0x79D SWAP2 SWAP1 PUSH2 0xCE7 JUMP JUMPDEST SWAP1 POP PUSH2 0x7A9 CALLER DUP3 PUSH2 0x8F6 JUMP JUMPDEST DUP1 DUP4 PUSH2 0x7B5 SWAP2 SWAP1 PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP DUP3 PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x805 SWAP2 SWAP1 PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x85A SWAP2 SWAP1 PUSH2 0xC91 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP6 PUSH1 0x40 MLOAD PUSH2 0x8BE SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 EQ ISZERO PUSH2 0x904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x94F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x4 SLOAD PUSH2 0x95D SWAP2 SWAP1 PUSH2 0xD18 JUMP JUMPDEST PUSH1 0x4 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x9AD SWAP2 SWAP1 PUSH2 0xD18 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xA4D SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA68 DUP2 PUSH2 0xEA4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA7D DUP2 PUSH2 0xEBB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAA3 DUP5 DUP3 DUP6 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xABF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xACD DUP6 DUP3 DUP7 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xADE DUP6 DUP3 DUP7 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xAFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB0B DUP7 DUP3 DUP8 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xB1C DUP7 DUP3 DUP8 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xB2D DUP7 DUP3 DUP8 ADD PUSH2 0xA6E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB58 DUP6 DUP3 DUP7 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xB69 DUP6 DUP3 DUP7 ADD PUSH2 0xA6E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB93 DUP5 DUP3 DUP6 ADD PUSH2 0xA6E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBA5 DUP2 PUSH2 0xD5E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBB6 DUP3 PUSH2 0xC75 JUMP JUMPDEST PUSH2 0xBC0 DUP2 DUP6 PUSH2 0xC80 JUMP JUMPDEST SWAP4 POP PUSH2 0xBD0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDA1 JUMP JUMPDEST PUSH2 0xBD9 DUP2 PUSH2 0xE93 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBED DUP2 PUSH2 0xD8A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xBFC DUP2 PUSH2 0xD94 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC17 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB9C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC37 DUP2 DUP5 PUSH2 0xBAB JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC54 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBE4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC6F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBF3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC9C DUP3 PUSH2 0xD8A JUMP JUMPDEST SWAP2 POP PUSH2 0xCA7 DUP4 PUSH2 0xD8A JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xCDC JUMPI PUSH2 0xCDB PUSH2 0xE06 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF2 DUP3 PUSH2 0xD8A JUMP JUMPDEST SWAP2 POP PUSH2 0xCFD DUP4 PUSH2 0xD8A JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0xD0D JUMPI PUSH2 0xD0C PUSH2 0xE35 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD23 DUP3 PUSH2 0xD8A JUMP JUMPDEST SWAP2 POP PUSH2 0xD2E DUP4 PUSH2 0xD8A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0xD41 JUMPI PUSH2 0xD40 PUSH2 0xE06 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD57 DUP3 PUSH2 0xD6A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDBF JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDA4 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xDCE JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xDEC JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xE00 JUMPI PUSH2 0xDFF PUSH2 0xE64 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xEAD DUP2 PUSH2 0xD4C JUMP JUMPDEST DUP2 EQ PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xEC4 DUP2 PUSH2 0xD8A JUMP JUMPDEST DUP2 EQ PUSH2 0xECF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 0x5F 0xE1 SELFDESTRUCT SWAP8 PUSH31 0x752005F289D3D7BB05B4260708142004691FF0AC8084395D96CA64736F6C63 NUMBER STOP ADDMOD STOP STOP CALLER ",
			"sourceMap": "24:2289:0:-:0;;;180:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;230:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;289:2;265:26;;;;;;;;;;;;;;;;;;;;352:8;;;;;;;;;;;345:2;337:23;;;;:::i;:::-;326:7;:35;;;;:::i;:::-;297:64;;446:199;;;;;;;;;;567:11;;543:9;:21;553:10;543:21;;;;;;;;;;;;;;;:35;;;;614:10;593:45;;610:1;593:45;;;626:11;;593:45;;;;;;:::i;:::-;;;;;;;;24:2289;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:118:1:-;94:24;112:5;94:24;:::i;:::-;89:3;82:37;72:53;;:::o;131:222::-;;262:2;251:9;247:18;239:26;;275:71;343:1;332:9;328:17;319:6;275:71;:::i;:::-;229:124;;;;:::o;359:848::-;;;451:6;442:15;;475:5;466:14;;489:712;510:1;500:8;497:15;489:712;;;605:4;600:3;596:14;590:4;587:24;584:2;;;614:18;;:::i;:::-;584:2;664:1;654:8;650:16;647:2;;;1079:4;1072:5;1068:16;1059:25;;647:2;1129:4;1123;1119:15;1111:23;;1159:32;1182:8;1159:32;:::i;:::-;1147:44;;489:712;;;432:775;;;;;;;:::o;1213:281::-;;1295:23;1313:4;1295:23;:::i;:::-;1287:31;;1339:25;1355:8;1339:25;:::i;:::-;1327:37;;1383:104;1420:66;1410:8;1404:4;1383:104;:::i;:::-;1374:113;;1277:217;;;;:::o;1500:1073::-;;1745:8;1735:2;;1766:1;1757:10;;1768:5;;1735:2;1794:4;1784:2;;1811:1;1802:10;;1813:5;;1784:2;1880:4;1928:1;1923:27;;;;1964:1;1959:191;;;;1873:277;;1923:27;1941:1;1932:10;;1943:5;;;1959:191;2004:3;1994:8;1991:17;1988:2;;;2011:18;;:::i;:::-;1988:2;2060:8;2057:1;2053:16;2044:25;;2095:3;2088:5;2085:14;2082:2;;;2102:18;;:::i;:::-;2082:2;2135:5;;;1873:277;;2259:2;2249:8;2246:16;2240:3;2234:4;2231:13;2227:36;2209:2;2199:8;2196:16;2191:2;2185:4;2182:12;2178:35;2162:111;2159:2;;;2315:8;2309:4;2305:19;2296:28;;2350:3;2343:5;2340:14;2337:2;;;2357:18;;:::i;:::-;2337:2;2390:5;;2159:2;2430:42;2468:3;2458:8;2452:4;2449:1;2430:42;:::i;:::-;2415:57;;;;2504:4;2499:3;2495:14;2488:5;2485:25;2482:2;;;2513:18;;:::i;:::-;2482:2;2562:4;2555:5;2551:16;2542:25;;1560:1013;;;;;;:::o;2579:348::-;;2642:20;2660:1;2642:20;:::i;:::-;2637:25;;2676:20;2694:1;2676:20;:::i;:::-;2671:25;;2864:1;2796:66;2792:74;2789:1;2786:81;2781:1;2774:9;2767:17;2763:105;2760:2;;;2871:18;;:::i;:::-;2760:2;2919:1;2916;2912:9;2901:20;;2627:300;;;;:::o;2933:77::-;;2999:5;2988:16;;2978:32;;;:::o;3016:86::-;;3091:4;3084:5;3080:16;3069:27;;3059:43;;;:::o;3108:320::-;;3189:1;3183:4;3179:12;3169:22;;3236:1;3230:4;3226:12;3257:18;3247:2;;3313:4;3305:6;3301:17;3291:27;;3247:2;3375;3367:6;3364:14;3344:18;3341:38;3338:2;;;3394:18;;:::i;:::-;3338:2;3159:269;;;;:::o;3434:180::-;3482:77;3479:1;3472:88;3579:4;3576:1;3569:15;3603:4;3600:1;3593:15;3620:180;3668:77;3665:1;3658:88;3765:4;3762:1;3755:15;3789:4;3786:1;3779:15;3806:102;;3895:5;3892:1;3888:13;3867:34;;3857:51;;;:::o;24:2289:0:-;;;;;;;"
		},
		"deployedBytecode": {
			"generatedSources": [
				{
					"ast": {
						"nodeType": "YulBlock",
						"src": "0:6969:1",
						"statements": [
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "59:87:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "69:29:1",
											"value": {
												"arguments": [
													{
														"name": "offset",
														"nodeType": "YulIdentifier",
														"src": "91:6:1"
													}
												],
												"functionName": {
													"name": "calldataload",
													"nodeType": "YulIdentifier",
													"src": "78:12:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "78:20:1"
											},
											"variableNames": [
												{
													"name": "value",
													"nodeType": "YulIdentifier",
													"src": "69:5:1"
												}
											]
										},
										{
											"expression": {
												"arguments": [
													{
														"name": "value",
														"nodeType": "YulIdentifier",
														"src": "134:5:1"
													}
												],
												"functionName": {
													"name": "validator_revert_t_address",
													"nodeType": "YulIdentifier",
													"src": "107:26:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "107:33:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "107:33:1"
										}
									]
								},
								"name": "abi_decode_t_address",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "offset",
										"nodeType": "YulTypedName",
										"src": "37:6:1",
										"type": ""
									},
									{
										"name": "end",
										"nodeType": "YulTypedName",
										"src": "45:3:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "53:5:1",
										"type": ""
									}
								],
								"src": "7:139:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "204:87:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "214:29:1",
											"value": {
												"arguments": [
													{
														"name": "offset",
														"nodeType": "YulIdentifier",
														"src": "236:6:1"
													}
												],
												"functionName": {
													"name": "calldataload",
													"nodeType": "YulIdentifier",
													"src": "223:12:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "223:20:1"
											},
											"variableNames": [
												{
													"name": "value",
													"nodeType": "YulIdentifier",
													"src": "214:5:1"
												}
											]
										},
										{
											"expression": {
												"arguments": [
													{
														"name": "value",
														"nodeType": "YulIdentifier",
														"src": "279:5:1"
													}
												],
												"functionName": {
													"name": "validator_revert_t_uint256",
													"nodeType": "YulIdentifier",
													"src": "252:26:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "252:33:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "252:33:1"
										}
									]
								},
								"name": "abi_decode_t_uint256",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "offset",
										"nodeType": "YulTypedName",
										"src": "182:6:1",
										"type": ""
									},
									{
										"name": "end",
										"nodeType": "YulTypedName",
										"src": "190:3:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "198:5:1",
										"type": ""
									}
								],
								"src": "152:139:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "363:196:1",
									"statements": [
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "409:16:1",
												"statements": [
													{
														"expression": {
															"arguments": [
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "418:1:1",
																	"type": "",
																	"value": "0"
																},
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "421:1:1",
																	"type": "",
																	"value": "0"
																}
															],
															"functionName": {
																"name": "revert",
																"nodeType": "YulIdentifier",
																"src": "411:6:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "411:12:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "411:12:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"arguments": [
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "384:7:1"
															},
															{
																"name": "headStart",
																"nodeType": "YulIdentifier",
																"src": "393:9:1"
															}
														],
														"functionName": {
															"name": "sub",
															"nodeType": "YulIdentifier",
															"src": "380:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "380:23:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "405:2:1",
														"type": "",
														"value": "32"
													}
												],
												"functionName": {
													"name": "slt",
													"nodeType": "YulIdentifier",
													"src": "376:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "376:32:1"
											},
											"nodeType": "YulIf",
											"src": "373:2:1"
										},
										{
											"nodeType": "YulBlock",
											"src": "435:117:1",
											"statements": [
												{
													"nodeType": "YulVariableDeclaration",
													"src": "450:15:1",
													"value": {
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "464:1:1",
														"type": "",
														"value": "0"
													},
													"variables": [
														{
															"name": "offset",
															"nodeType": "YulTypedName",
															"src": "454:6:1",
															"type": ""
														}
													]
												},
												{
													"nodeType": "YulAssignment",
													"src": "479:63:1",
													"value": {
														"arguments": [
															{
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "514:9:1"
																	},
																	{
																		"name": "offset",
																		"nodeType": "YulIdentifier",
																		"src": "525:6:1"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "510:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "510:22:1"
															},
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "534:7:1"
															}
														],
														"functionName": {
															"name": "abi_decode_t_address",
															"nodeType": "YulIdentifier",
															"src": "489:20:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "489:53:1"
													},
													"variableNames": [
														{
															"name": "value0",
															"nodeType": "YulIdentifier",
															"src": "479:6:1"
														}
													]
												}
											]
										}
									]
								},
								"name": "abi_decode_tuple_t_address",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "headStart",
										"nodeType": "YulTypedName",
										"src": "333:9:1",
										"type": ""
									},
									{
										"name": "dataEnd",
										"nodeType": "YulTypedName",
										"src": "344:7:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "value0",
										"nodeType": "YulTypedName",
										"src": "356:6:1",
										"type": ""
									}
								],
								"src": "297:262:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "648:324:1",
									"statements": [
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "694:16:1",
												"statements": [
													{
														"expression": {
															"arguments": [
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "703:1:1",
																	"type": "",
																	"value": "0"
																},
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "706:1:1",
																	"type": "",
																	"value": "0"
																}
															],
															"functionName": {
																"name": "revert",
																"nodeType": "YulIdentifier",
																"src": "696:6:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "696:12:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "696:12:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"arguments": [
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "669:7:1"
															},
															{
																"name": "headStart",
																"nodeType": "YulIdentifier",
																"src": "678:9:1"
															}
														],
														"functionName": {
															"name": "sub",
															"nodeType": "YulIdentifier",
															"src": "665:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "665:23:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "690:2:1",
														"type": "",
														"value": "64"
													}
												],
												"functionName": {
													"name": "slt",
													"nodeType": "YulIdentifier",
													"src": "661:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "661:32:1"
											},
											"nodeType": "YulIf",
											"src": "658:2:1"
										},
										{
											"nodeType": "YulBlock",
											"src": "720:117:1",
											"statements": [
												{
													"nodeType": "YulVariableDeclaration",
													"src": "735:15:1",
													"value": {
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "749:1:1",
														"type": "",
														"value": "0"
													},
													"variables": [
														{
															"name": "offset",
															"nodeType": "YulTypedName",
															"src": "739:6:1",
															"type": ""
														}
													]
												},
												{
													"nodeType": "YulAssignment",
													"src": "764:63:1",
													"value": {
														"arguments": [
															{
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "799:9:1"
																	},
																	{
																		"name": "offset",
																		"nodeType": "YulIdentifier",
																		"src": "810:6:1"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "795:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "795:22:1"
															},
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "819:7:1"
															}
														],
														"functionName": {
															"name": "abi_decode_t_address",
															"nodeType": "YulIdentifier",
															"src": "774:20:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "774:53:1"
													},
													"variableNames": [
														{
															"name": "value0",
															"nodeType": "YulIdentifier",
															"src": "764:6:1"
														}
													]
												}
											]
										},
										{
											"nodeType": "YulBlock",
											"src": "847:118:1",
											"statements": [
												{
													"nodeType": "YulVariableDeclaration",
													"src": "862:16:1",
													"value": {
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "876:2:1",
														"type": "",
														"value": "32"
													},
													"variables": [
														{
															"name": "offset",
															"nodeType": "YulTypedName",
															"src": "866:6:1",
															"type": ""
														}
													]
												},
												{
													"nodeType": "YulAssignment",
													"src": "892:63:1",
													"value": {
														"arguments": [
															{
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "927:9:1"
																	},
																	{
																		"name": "offset",
																		"nodeType": "YulIdentifier",
																		"src": "938:6:1"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "923:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "923:22:1"
															},
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "947:7:1"
															}
														],
														"functionName": {
															"name": "abi_decode_t_address",
															"nodeType": "YulIdentifier",
															"src": "902:20:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "902:53:1"
													},
													"variableNames": [
														{
															"name": "value1",
															"nodeType": "YulIdentifier",
															"src": "892:6:1"
														}
													]
												}
											]
										}
									]
								},
								"name": "abi_decode_tuple_t_addresst_address",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "headStart",
										"nodeType": "YulTypedName",
										"src": "610:9:1",
										"type": ""
									},
									{
										"name": "dataEnd",
										"nodeType": "YulTypedName",
										"src": "621:7:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "value0",
										"nodeType": "YulTypedName",
										"src": "633:6:1",
										"type": ""
									},
									{
										"name": "value1",
										"nodeType": "YulTypedName",
										"src": "641:6:1",
										"type": ""
									}
								],
								"src": "565:407:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "1078:452:1",
									"statements": [
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "1124:16:1",
												"statements": [
													{
														"expression": {
															"arguments": [
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "1133:1:1",
																	"type": "",
																	"value": "0"
																},
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "1136:1:1",
																	"type": "",
																	"value": "0"
																}
															],
															"functionName": {
																"name": "revert",
																"nodeType": "YulIdentifier",
																"src": "1126:6:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "1126:12:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "1126:12:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"arguments": [
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "1099:7:1"
															},
															{
																"name": "headStart",
																"nodeType": "YulIdentifier",
																"src": "1108:9:1"
															}
														],
														"functionName": {
															"name": "sub",
															"nodeType": "YulIdentifier",
															"src": "1095:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "1095:23:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "1120:2:1",
														"type": "",
														"value": "96"
													}
												],
												"functionName": {
													"name": "slt",
													"nodeType": "YulIdentifier",
													"src": "1091:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "1091:32:1"
											},
											"nodeType": "YulIf",
											"src": "1088:2:1"
										},
										{
											"nodeType": "YulBlock",
											"src": "1150:117:1",
											"statements": [
												{
													"nodeType": "YulVariableDeclaration",
													"src": "1165:15:1",
													"value": {
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "1179:1:1",
														"type": "",
														"value": "0"
													},
													"variables": [
														{
															"name": "offset",
															"nodeType": "YulTypedName",
															"src": "1169:6:1",
															"type": ""
														}
													]
												},
												{
													"nodeType": "YulAssignment",
													"src": "1194:63:1",
													"value": {
														"arguments": [
															{
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "1229:9:1"
																	},
																	{
																		"name": "offset",
																		"nodeType": "YulIdentifier",
																		"src": "1240:6:1"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "1225:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "1225:22:1"
															},
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "1249:7:1"
															}
														],
														"functionName": {
															"name": "abi_decode_t_address",
															"nodeType": "YulIdentifier",
															"src": "1204:20:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "1204:53:1"
													},
													"variableNames": [
														{
															"name": "value0",
															"nodeType": "YulIdentifier",
															"src": "1194:6:1"
														}
													]
												}
											]
										},
										{
											"nodeType": "YulBlock",
											"src": "1277:118:1",
											"statements": [
												{
													"nodeType": "YulVariableDeclaration",
													"src": "1292:16:1",
													"value": {
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "1306:2:1",
														"type": "",
														"value": "32"
													},
													"variables": [
														{
															"name": "offset",
															"nodeType": "YulTypedName",
															"src": "1296:6:1",
															"type": ""
														}
													]
												},
												{
													"nodeType": "YulAssignment",
													"src": "1322:63:1",
													"value": {
														"arguments": [
															{
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "1357:9:1"
																	},
																	{
																		"name": "offset",
																		"nodeType": "YulIdentifier",
																		"src": "1368:6:1"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "1353:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "1353:22:1"
															},
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "1377:7:1"
															}
														],
														"functionName": {
															"name": "abi_decode_t_address",
															"nodeType": "YulIdentifier",
															"src": "1332:20:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "1332:53:1"
													},
													"variableNames": [
														{
															"name": "value1",
															"nodeType": "YulIdentifier",
															"src": "1322:6:1"
														}
													]
												}
											]
										},
										{
											"nodeType": "YulBlock",
											"src": "1405:118:1",
											"statements": [
												{
													"nodeType": "YulVariableDeclaration",
													"src": "1420:16:1",
													"value": {
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "1434:2:1",
														"type": "",
														"value": "64"
													},
													"variables": [
														{
															"name": "offset",
															"nodeType": "YulTypedName",
															"src": "1424:6:1",
															"type": ""
														}
													]
												},
												{
													"nodeType": "YulAssignment",
													"src": "1450:63:1",
													"value": {
														"arguments": [
															{
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "1485:9:1"
																	},
																	{
																		"name": "offset",
																		"nodeType": "YulIdentifier",
																		"src": "1496:6:1"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "1481:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "1481:22:1"
															},
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "1505:7:1"
															}
														],
														"functionName": {
															"name": "abi_decode_t_uint256",
															"nodeType": "YulIdentifier",
															"src": "1460:20:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "1460:53:1"
													},
													"variableNames": [
														{
															"name": "value2",
															"nodeType": "YulIdentifier",
															"src": "1450:6:1"
														}
													]
												}
											]
										}
									]
								},
								"name": "abi_decode_tuple_t_addresst_addresst_uint256",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "headStart",
										"nodeType": "YulTypedName",
										"src": "1032:9:1",
										"type": ""
									},
									{
										"name": "dataEnd",
										"nodeType": "YulTypedName",
										"src": "1043:7:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "value0",
										"nodeType": "YulTypedName",
										"src": "1055:6:1",
										"type": ""
									},
									{
										"name": "value1",
										"nodeType": "YulTypedName",
										"src": "1063:6:1",
										"type": ""
									},
									{
										"name": "value2",
										"nodeType": "YulTypedName",
										"src": "1071:6:1",
										"type": ""
									}
								],
								"src": "978:552:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "1619:324:1",
									"statements": [
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "1665:16:1",
												"statements": [
													{
														"expression": {
															"arguments": [
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "1674:1:1",
																	"type": "",
																	"value": "0"
																},
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "1677:1:1",
																	"type": "",
																	"value": "0"
																}
															],
															"functionName": {
																"name": "revert",
																"nodeType": "YulIdentifier",
																"src": "1667:6:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "1667:12:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "1667:12:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"arguments": [
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "1640:7:1"
															},
															{
																"name": "headStart",
																"nodeType": "YulIdentifier",
																"src": "1649:9:1"
															}
														],
														"functionName": {
															"name": "sub",
															"nodeType": "YulIdentifier",
															"src": "1636:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "1636:23:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "1661:2:1",
														"type": "",
														"value": "64"
													}
												],
												"functionName": {
													"name": "slt",
													"nodeType": "YulIdentifier",
													"src": "1632:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "1632:32:1"
											},
											"nodeType": "YulIf",
											"src": "1629:2:1"
										},
										{
											"nodeType": "YulBlock",
											"src": "1691:117:1",
											"statements": [
												{
													"nodeType": "YulVariableDeclaration",
													"src": "1706:15:1",
													"value": {
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "1720:1:1",
														"type": "",
														"value": "0"
													},
													"variables": [
														{
															"name": "offset",
															"nodeType": "YulTypedName",
															"src": "1710:6:1",
															"type": ""
														}
													]
												},
												{
													"nodeType": "YulAssignment",
													"src": "1735:63:1",
													"value": {
														"arguments": [
															{
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "1770:9:1"
																	},
																	{
																		"name": "offset",
																		"nodeType": "YulIdentifier",
																		"src": "1781:6:1"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "1766:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "1766:22:1"
															},
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "1790:7:1"
															}
														],
														"functionName": {
															"name": "abi_decode_t_address",
															"nodeType": "YulIdentifier",
															"src": "1745:20:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "1745:53:1"
													},
													"variableNames": [
														{
															"name": "value0",
															"nodeType": "YulIdentifier",
															"src": "1735:6:1"
														}
													]
												}
											]
										},
										{
											"nodeType": "YulBlock",
											"src": "1818:118:1",
											"statements": [
												{
													"nodeType": "YulVariableDeclaration",
													"src": "1833:16:1",
													"value": {
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "1847:2:1",
														"type": "",
														"value": "32"
													},
													"variables": [
														{
															"name": "offset",
															"nodeType": "YulTypedName",
															"src": "1837:6:1",
															"type": ""
														}
													]
												},
												{
													"nodeType": "YulAssignment",
													"src": "1863:63:1",
													"value": {
														"arguments": [
															{
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "1898:9:1"
																	},
																	{
																		"name": "offset",
																		"nodeType": "YulIdentifier",
																		"src": "1909:6:1"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "1894:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "1894:22:1"
															},
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "1918:7:1"
															}
														],
														"functionName": {
															"name": "abi_decode_t_uint256",
															"nodeType": "YulIdentifier",
															"src": "1873:20:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "1873:53:1"
													},
													"variableNames": [
														{
															"name": "value1",
															"nodeType": "YulIdentifier",
															"src": "1863:6:1"
														}
													]
												}
											]
										}
									]
								},
								"name": "abi_decode_tuple_t_addresst_uint256",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "headStart",
										"nodeType": "YulTypedName",
										"src": "1581:9:1",
										"type": ""
									},
									{
										"name": "dataEnd",
										"nodeType": "YulTypedName",
										"src": "1592:7:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "value0",
										"nodeType": "YulTypedName",
										"src": "1604:6:1",
										"type": ""
									},
									{
										"name": "value1",
										"nodeType": "YulTypedName",
										"src": "1612:6:1",
										"type": ""
									}
								],
								"src": "1536:407:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "2015:196:1",
									"statements": [
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "2061:16:1",
												"statements": [
													{
														"expression": {
															"arguments": [
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "2070:1:1",
																	"type": "",
																	"value": "0"
																},
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "2073:1:1",
																	"type": "",
																	"value": "0"
																}
															],
															"functionName": {
																"name": "revert",
																"nodeType": "YulIdentifier",
																"src": "2063:6:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "2063:12:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "2063:12:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"arguments": [
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "2036:7:1"
															},
															{
																"name": "headStart",
																"nodeType": "YulIdentifier",
																"src": "2045:9:1"
															}
														],
														"functionName": {
															"name": "sub",
															"nodeType": "YulIdentifier",
															"src": "2032:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "2032:23:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "2057:2:1",
														"type": "",
														"value": "32"
													}
												],
												"functionName": {
													"name": "slt",
													"nodeType": "YulIdentifier",
													"src": "2028:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2028:32:1"
											},
											"nodeType": "YulIf",
											"src": "2025:2:1"
										},
										{
											"nodeType": "YulBlock",
											"src": "2087:117:1",
											"statements": [
												{
													"nodeType": "YulVariableDeclaration",
													"src": "2102:15:1",
													"value": {
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "2116:1:1",
														"type": "",
														"value": "0"
													},
													"variables": [
														{
															"name": "offset",
															"nodeType": "YulTypedName",
															"src": "2106:6:1",
															"type": ""
														}
													]
												},
												{
													"nodeType": "YulAssignment",
													"src": "2131:63:1",
													"value": {
														"arguments": [
															{
																"arguments": [
																	{
																		"name": "headStart",
																		"nodeType": "YulIdentifier",
																		"src": "2166:9:1"
																	},
																	{
																		"name": "offset",
																		"nodeType": "YulIdentifier",
																		"src": "2177:6:1"
																	}
																],
																"functionName": {
																	"name": "add",
																	"nodeType": "YulIdentifier",
																	"src": "2162:3:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "2162:22:1"
															},
															{
																"name": "dataEnd",
																"nodeType": "YulIdentifier",
																"src": "2186:7:1"
															}
														],
														"functionName": {
															"name": "abi_decode_t_uint256",
															"nodeType": "YulIdentifier",
															"src": "2141:20:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "2141:53:1"
													},
													"variableNames": [
														{
															"name": "value0",
															"nodeType": "YulIdentifier",
															"src": "2131:6:1"
														}
													]
												}
											]
										}
									]
								},
								"name": "abi_decode_tuple_t_uint256",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "headStart",
										"nodeType": "YulTypedName",
										"src": "1985:9:1",
										"type": ""
									},
									{
										"name": "dataEnd",
										"nodeType": "YulTypedName",
										"src": "1996:7:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "value0",
										"nodeType": "YulTypedName",
										"src": "2008:6:1",
										"type": ""
									}
								],
								"src": "1949:262:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "2276:50:1",
									"statements": [
										{
											"expression": {
												"arguments": [
													{
														"name": "pos",
														"nodeType": "YulIdentifier",
														"src": "2293:3:1"
													},
													{
														"arguments": [
															{
																"name": "value",
																"nodeType": "YulIdentifier",
																"src": "2313:5:1"
															}
														],
														"functionName": {
															"name": "cleanup_t_bool",
															"nodeType": "YulIdentifier",
															"src": "2298:14:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "2298:21:1"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "2286:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2286:34:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "2286:34:1"
										}
									]
								},
								"name": "abi_encode_t_bool_to_t_bool_fromStack",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "2264:5:1",
										"type": ""
									},
									{
										"name": "pos",
										"nodeType": "YulTypedName",
										"src": "2271:3:1",
										"type": ""
									}
								],
								"src": "2217:109:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "2424:272:1",
									"statements": [
										{
											"nodeType": "YulVariableDeclaration",
											"src": "2434:53:1",
											"value": {
												"arguments": [
													{
														"name": "value",
														"nodeType": "YulIdentifier",
														"src": "2481:5:1"
													}
												],
												"functionName": {
													"name": "array_length_t_string_memory_ptr",
													"nodeType": "YulIdentifier",
													"src": "2448:32:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2448:39:1"
											},
											"variables": [
												{
													"name": "length",
													"nodeType": "YulTypedName",
													"src": "2438:6:1",
													"type": ""
												}
											]
										},
										{
											"nodeType": "YulAssignment",
											"src": "2496:78:1",
											"value": {
												"arguments": [
													{
														"name": "pos",
														"nodeType": "YulIdentifier",
														"src": "2562:3:1"
													},
													{
														"name": "length",
														"nodeType": "YulIdentifier",
														"src": "2567:6:1"
													}
												],
												"functionName": {
													"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
													"nodeType": "YulIdentifier",
													"src": "2503:58:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2503:71:1"
											},
											"variableNames": [
												{
													"name": "pos",
													"nodeType": "YulIdentifier",
													"src": "2496:3:1"
												}
											]
										},
										{
											"expression": {
												"arguments": [
													{
														"arguments": [
															{
																"name": "value",
																"nodeType": "YulIdentifier",
																"src": "2609:5:1"
															},
															{
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "2616:4:1",
																"type": "",
																"value": "0x20"
															}
														],
														"functionName": {
															"name": "add",
															"nodeType": "YulIdentifier",
															"src": "2605:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "2605:16:1"
													},
													{
														"name": "pos",
														"nodeType": "YulIdentifier",
														"src": "2623:3:1"
													},
													{
														"name": "length",
														"nodeType": "YulIdentifier",
														"src": "2628:6:1"
													}
												],
												"functionName": {
													"name": "copy_memory_to_memory",
													"nodeType": "YulIdentifier",
													"src": "2583:21:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2583:52:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "2583:52:1"
										},
										{
											"nodeType": "YulAssignment",
											"src": "2644:46:1",
											"value": {
												"arguments": [
													{
														"name": "pos",
														"nodeType": "YulIdentifier",
														"src": "2655:3:1"
													},
													{
														"arguments": [
															{
																"name": "length",
																"nodeType": "YulIdentifier",
																"src": "2682:6:1"
															}
														],
														"functionName": {
															"name": "round_up_to_mul_of_32",
															"nodeType": "YulIdentifier",
															"src": "2660:21:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "2660:29:1"
													}
												],
												"functionName": {
													"name": "add",
													"nodeType": "YulIdentifier",
													"src": "2651:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2651:39:1"
											},
											"variableNames": [
												{
													"name": "end",
													"nodeType": "YulIdentifier",
													"src": "2644:3:1"
												}
											]
										}
									]
								},
								"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "2405:5:1",
										"type": ""
									},
									{
										"name": "pos",
										"nodeType": "YulTypedName",
										"src": "2412:3:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "end",
										"nodeType": "YulTypedName",
										"src": "2420:3:1",
										"type": ""
									}
								],
								"src": "2332:364:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "2767:53:1",
									"statements": [
										{
											"expression": {
												"arguments": [
													{
														"name": "pos",
														"nodeType": "YulIdentifier",
														"src": "2784:3:1"
													},
													{
														"arguments": [
															{
																"name": "value",
																"nodeType": "YulIdentifier",
																"src": "2807:5:1"
															}
														],
														"functionName": {
															"name": "cleanup_t_uint256",
															"nodeType": "YulIdentifier",
															"src": "2789:17:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "2789:24:1"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "2777:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2777:37:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "2777:37:1"
										}
									]
								},
								"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "2755:5:1",
										"type": ""
									},
									{
										"name": "pos",
										"nodeType": "YulTypedName",
										"src": "2762:3:1",
										"type": ""
									}
								],
								"src": "2702:118:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "2887:51:1",
									"statements": [
										{
											"expression": {
												"arguments": [
													{
														"name": "pos",
														"nodeType": "YulIdentifier",
														"src": "2904:3:1"
													},
													{
														"arguments": [
															{
																"name": "value",
																"nodeType": "YulIdentifier",
																"src": "2925:5:1"
															}
														],
														"functionName": {
															"name": "cleanup_t_uint8",
															"nodeType": "YulIdentifier",
															"src": "2909:15:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "2909:22:1"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "2897:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "2897:35:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "2897:35:1"
										}
									]
								},
								"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "2875:5:1",
										"type": ""
									},
									{
										"name": "pos",
										"nodeType": "YulTypedName",
										"src": "2882:3:1",
										"type": ""
									}
								],
								"src": "2826:112:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "3036:118:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "3046:26:1",
											"value": {
												"arguments": [
													{
														"name": "headStart",
														"nodeType": "YulIdentifier",
														"src": "3058:9:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3069:2:1",
														"type": "",
														"value": "32"
													}
												],
												"functionName": {
													"name": "add",
													"nodeType": "YulIdentifier",
													"src": "3054:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3054:18:1"
											},
											"variableNames": [
												{
													"name": "tail",
													"nodeType": "YulIdentifier",
													"src": "3046:4:1"
												}
											]
										},
										{
											"expression": {
												"arguments": [
													{
														"name": "value0",
														"nodeType": "YulIdentifier",
														"src": "3120:6:1"
													},
													{
														"arguments": [
															{
																"name": "headStart",
																"nodeType": "YulIdentifier",
																"src": "3133:9:1"
															},
															{
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "3144:1:1",
																"type": "",
																"value": "0"
															}
														],
														"functionName": {
															"name": "add",
															"nodeType": "YulIdentifier",
															"src": "3129:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "3129:17:1"
													}
												],
												"functionName": {
													"name": "abi_encode_t_bool_to_t_bool_fromStack",
													"nodeType": "YulIdentifier",
													"src": "3082:37:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3082:65:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "3082:65:1"
										}
									]
								},
								"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "headStart",
										"nodeType": "YulTypedName",
										"src": "3008:9:1",
										"type": ""
									},
									{
										"name": "value0",
										"nodeType": "YulTypedName",
										"src": "3020:6:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "tail",
										"nodeType": "YulTypedName",
										"src": "3031:4:1",
										"type": ""
									}
								],
								"src": "2944:210:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "3278:195:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "3288:26:1",
											"value": {
												"arguments": [
													{
														"name": "headStart",
														"nodeType": "YulIdentifier",
														"src": "3300:9:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3311:2:1",
														"type": "",
														"value": "32"
													}
												],
												"functionName": {
													"name": "add",
													"nodeType": "YulIdentifier",
													"src": "3296:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3296:18:1"
											},
											"variableNames": [
												{
													"name": "tail",
													"nodeType": "YulIdentifier",
													"src": "3288:4:1"
												}
											]
										},
										{
											"expression": {
												"arguments": [
													{
														"arguments": [
															{
																"name": "headStart",
																"nodeType": "YulIdentifier",
																"src": "3335:9:1"
															},
															{
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "3346:1:1",
																"type": "",
																"value": "0"
															}
														],
														"functionName": {
															"name": "add",
															"nodeType": "YulIdentifier",
															"src": "3331:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "3331:17:1"
													},
													{
														"arguments": [
															{
																"name": "tail",
																"nodeType": "YulIdentifier",
																"src": "3354:4:1"
															},
															{
																"name": "headStart",
																"nodeType": "YulIdentifier",
																"src": "3360:9:1"
															}
														],
														"functionName": {
															"name": "sub",
															"nodeType": "YulIdentifier",
															"src": "3350:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "3350:20:1"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "3324:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3324:47:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "3324:47:1"
										},
										{
											"nodeType": "YulAssignment",
											"src": "3380:86:1",
											"value": {
												"arguments": [
													{
														"name": "value0",
														"nodeType": "YulIdentifier",
														"src": "3452:6:1"
													},
													{
														"name": "tail",
														"nodeType": "YulIdentifier",
														"src": "3461:4:1"
													}
												],
												"functionName": {
													"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
													"nodeType": "YulIdentifier",
													"src": "3388:63:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3388:78:1"
											},
											"variableNames": [
												{
													"name": "tail",
													"nodeType": "YulIdentifier",
													"src": "3380:4:1"
												}
											]
										}
									]
								},
								"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "headStart",
										"nodeType": "YulTypedName",
										"src": "3250:9:1",
										"type": ""
									},
									{
										"name": "value0",
										"nodeType": "YulTypedName",
										"src": "3262:6:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "tail",
										"nodeType": "YulTypedName",
										"src": "3273:4:1",
										"type": ""
									}
								],
								"src": "3160:313:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "3577:124:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "3587:26:1",
											"value": {
												"arguments": [
													{
														"name": "headStart",
														"nodeType": "YulIdentifier",
														"src": "3599:9:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3610:2:1",
														"type": "",
														"value": "32"
													}
												],
												"functionName": {
													"name": "add",
													"nodeType": "YulIdentifier",
													"src": "3595:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3595:18:1"
											},
											"variableNames": [
												{
													"name": "tail",
													"nodeType": "YulIdentifier",
													"src": "3587:4:1"
												}
											]
										},
										{
											"expression": {
												"arguments": [
													{
														"name": "value0",
														"nodeType": "YulIdentifier",
														"src": "3667:6:1"
													},
													{
														"arguments": [
															{
																"name": "headStart",
																"nodeType": "YulIdentifier",
																"src": "3680:9:1"
															},
															{
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "3691:1:1",
																"type": "",
																"value": "0"
															}
														],
														"functionName": {
															"name": "add",
															"nodeType": "YulIdentifier",
															"src": "3676:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "3676:17:1"
													}
												],
												"functionName": {
													"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
													"nodeType": "YulIdentifier",
													"src": "3623:43:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3623:71:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "3623:71:1"
										}
									]
								},
								"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "headStart",
										"nodeType": "YulTypedName",
										"src": "3549:9:1",
										"type": ""
									},
									{
										"name": "value0",
										"nodeType": "YulTypedName",
										"src": "3561:6:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "tail",
										"nodeType": "YulTypedName",
										"src": "3572:4:1",
										"type": ""
									}
								],
								"src": "3479:222:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "3801:120:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "3811:26:1",
											"value": {
												"arguments": [
													{
														"name": "headStart",
														"nodeType": "YulIdentifier",
														"src": "3823:9:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "3834:2:1",
														"type": "",
														"value": "32"
													}
												],
												"functionName": {
													"name": "add",
													"nodeType": "YulIdentifier",
													"src": "3819:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3819:18:1"
											},
											"variableNames": [
												{
													"name": "tail",
													"nodeType": "YulIdentifier",
													"src": "3811:4:1"
												}
											]
										},
										{
											"expression": {
												"arguments": [
													{
														"name": "value0",
														"nodeType": "YulIdentifier",
														"src": "3887:6:1"
													},
													{
														"arguments": [
															{
																"name": "headStart",
																"nodeType": "YulIdentifier",
																"src": "3900:9:1"
															},
															{
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "3911:1:1",
																"type": "",
																"value": "0"
															}
														],
														"functionName": {
															"name": "add",
															"nodeType": "YulIdentifier",
															"src": "3896:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "3896:17:1"
													}
												],
												"functionName": {
													"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
													"nodeType": "YulIdentifier",
													"src": "3847:39:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "3847:67:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "3847:67:1"
										}
									]
								},
								"name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "headStart",
										"nodeType": "YulTypedName",
										"src": "3773:9:1",
										"type": ""
									},
									{
										"name": "value0",
										"nodeType": "YulTypedName",
										"src": "3785:6:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "tail",
										"nodeType": "YulTypedName",
										"src": "3796:4:1",
										"type": ""
									}
								],
								"src": "3707:214:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "3986:40:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "3997:22:1",
											"value": {
												"arguments": [
													{
														"name": "value",
														"nodeType": "YulIdentifier",
														"src": "4013:5:1"
													}
												],
												"functionName": {
													"name": "mload",
													"nodeType": "YulIdentifier",
													"src": "4007:5:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4007:12:1"
											},
											"variableNames": [
												{
													"name": "length",
													"nodeType": "YulIdentifier",
													"src": "3997:6:1"
												}
											]
										}
									]
								},
								"name": "array_length_t_string_memory_ptr",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "3969:5:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "length",
										"nodeType": "YulTypedName",
										"src": "3979:6:1",
										"type": ""
									}
								],
								"src": "3927:99:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "4128:73:1",
									"statements": [
										{
											"expression": {
												"arguments": [
													{
														"name": "pos",
														"nodeType": "YulIdentifier",
														"src": "4145:3:1"
													},
													{
														"name": "length",
														"nodeType": "YulIdentifier",
														"src": "4150:6:1"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "4138:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4138:19:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "4138:19:1"
										},
										{
											"nodeType": "YulAssignment",
											"src": "4166:29:1",
											"value": {
												"arguments": [
													{
														"name": "pos",
														"nodeType": "YulIdentifier",
														"src": "4185:3:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "4190:4:1",
														"type": "",
														"value": "0x20"
													}
												],
												"functionName": {
													"name": "add",
													"nodeType": "YulIdentifier",
													"src": "4181:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4181:14:1"
											},
											"variableNames": [
												{
													"name": "updated_pos",
													"nodeType": "YulIdentifier",
													"src": "4166:11:1"
												}
											]
										}
									]
								},
								"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "pos",
										"nodeType": "YulTypedName",
										"src": "4100:3:1",
										"type": ""
									},
									{
										"name": "length",
										"nodeType": "YulTypedName",
										"src": "4105:6:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "updated_pos",
										"nodeType": "YulTypedName",
										"src": "4116:11:1",
										"type": ""
									}
								],
								"src": "4032:169:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "4251:261:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "4261:25:1",
											"value": {
												"arguments": [
													{
														"name": "x",
														"nodeType": "YulIdentifier",
														"src": "4284:1:1"
													}
												],
												"functionName": {
													"name": "cleanup_t_uint256",
													"nodeType": "YulIdentifier",
													"src": "4266:17:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4266:20:1"
											},
											"variableNames": [
												{
													"name": "x",
													"nodeType": "YulIdentifier",
													"src": "4261:1:1"
												}
											]
										},
										{
											"nodeType": "YulAssignment",
											"src": "4295:25:1",
											"value": {
												"arguments": [
													{
														"name": "y",
														"nodeType": "YulIdentifier",
														"src": "4318:1:1"
													}
												],
												"functionName": {
													"name": "cleanup_t_uint256",
													"nodeType": "YulIdentifier",
													"src": "4300:17:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4300:20:1"
											},
											"variableNames": [
												{
													"name": "y",
													"nodeType": "YulIdentifier",
													"src": "4295:1:1"
												}
											]
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "4458:22:1",
												"statements": [
													{
														"expression": {
															"arguments": [],
															"functionName": {
																"name": "panic_error_0x11",
																"nodeType": "YulIdentifier",
																"src": "4460:16:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "4460:18:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "4460:18:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "x",
														"nodeType": "YulIdentifier",
														"src": "4379:1:1"
													},
													{
														"arguments": [
															{
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "4386:66:1",
																"type": "",
																"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
															},
															{
																"name": "y",
																"nodeType": "YulIdentifier",
																"src": "4454:1:1"
															}
														],
														"functionName": {
															"name": "sub",
															"nodeType": "YulIdentifier",
															"src": "4382:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "4382:74:1"
													}
												],
												"functionName": {
													"name": "gt",
													"nodeType": "YulIdentifier",
													"src": "4376:2:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4376:81:1"
											},
											"nodeType": "YulIf",
											"src": "4373:2:1"
										},
										{
											"nodeType": "YulAssignment",
											"src": "4490:16:1",
											"value": {
												"arguments": [
													{
														"name": "x",
														"nodeType": "YulIdentifier",
														"src": "4501:1:1"
													},
													{
														"name": "y",
														"nodeType": "YulIdentifier",
														"src": "4504:1:1"
													}
												],
												"functionName": {
													"name": "add",
													"nodeType": "YulIdentifier",
													"src": "4497:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4497:9:1"
											},
											"variableNames": [
												{
													"name": "sum",
													"nodeType": "YulIdentifier",
													"src": "4490:3:1"
												}
											]
										}
									]
								},
								"name": "checked_add_t_uint256",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "x",
										"nodeType": "YulTypedName",
										"src": "4238:1:1",
										"type": ""
									},
									{
										"name": "y",
										"nodeType": "YulTypedName",
										"src": "4241:1:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "sum",
										"nodeType": "YulTypedName",
										"src": "4247:3:1",
										"type": ""
									}
								],
								"src": "4207:305:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "4560:143:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "4570:25:1",
											"value": {
												"arguments": [
													{
														"name": "x",
														"nodeType": "YulIdentifier",
														"src": "4593:1:1"
													}
												],
												"functionName": {
													"name": "cleanup_t_uint256",
													"nodeType": "YulIdentifier",
													"src": "4575:17:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4575:20:1"
											},
											"variableNames": [
												{
													"name": "x",
													"nodeType": "YulIdentifier",
													"src": "4570:1:1"
												}
											]
										},
										{
											"nodeType": "YulAssignment",
											"src": "4604:25:1",
											"value": {
												"arguments": [
													{
														"name": "y",
														"nodeType": "YulIdentifier",
														"src": "4627:1:1"
													}
												],
												"functionName": {
													"name": "cleanup_t_uint256",
													"nodeType": "YulIdentifier",
													"src": "4609:17:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4609:20:1"
											},
											"variableNames": [
												{
													"name": "y",
													"nodeType": "YulIdentifier",
													"src": "4604:1:1"
												}
											]
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "4651:22:1",
												"statements": [
													{
														"expression": {
															"arguments": [],
															"functionName": {
																"name": "panic_error_0x12",
																"nodeType": "YulIdentifier",
																"src": "4653:16:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "4653:18:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "4653:18:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "y",
														"nodeType": "YulIdentifier",
														"src": "4648:1:1"
													}
												],
												"functionName": {
													"name": "iszero",
													"nodeType": "YulIdentifier",
													"src": "4641:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4641:9:1"
											},
											"nodeType": "YulIf",
											"src": "4638:2:1"
										},
										{
											"nodeType": "YulAssignment",
											"src": "4683:14:1",
											"value": {
												"arguments": [
													{
														"name": "x",
														"nodeType": "YulIdentifier",
														"src": "4692:1:1"
													},
													{
														"name": "y",
														"nodeType": "YulIdentifier",
														"src": "4695:1:1"
													}
												],
												"functionName": {
													"name": "div",
													"nodeType": "YulIdentifier",
													"src": "4688:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4688:9:1"
											},
											"variableNames": [
												{
													"name": "r",
													"nodeType": "YulIdentifier",
													"src": "4683:1:1"
												}
											]
										}
									]
								},
								"name": "checked_div_t_uint256",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "x",
										"nodeType": "YulTypedName",
										"src": "4549:1:1",
										"type": ""
									},
									{
										"name": "y",
										"nodeType": "YulTypedName",
										"src": "4552:1:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "r",
										"nodeType": "YulTypedName",
										"src": "4558:1:1",
										"type": ""
									}
								],
								"src": "4518:185:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "4754:146:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "4764:25:1",
											"value": {
												"arguments": [
													{
														"name": "x",
														"nodeType": "YulIdentifier",
														"src": "4787:1:1"
													}
												],
												"functionName": {
													"name": "cleanup_t_uint256",
													"nodeType": "YulIdentifier",
													"src": "4769:17:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4769:20:1"
											},
											"variableNames": [
												{
													"name": "x",
													"nodeType": "YulIdentifier",
													"src": "4764:1:1"
												}
											]
										},
										{
											"nodeType": "YulAssignment",
											"src": "4798:25:1",
											"value": {
												"arguments": [
													{
														"name": "y",
														"nodeType": "YulIdentifier",
														"src": "4821:1:1"
													}
												],
												"functionName": {
													"name": "cleanup_t_uint256",
													"nodeType": "YulIdentifier",
													"src": "4803:17:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4803:20:1"
											},
											"variableNames": [
												{
													"name": "y",
													"nodeType": "YulIdentifier",
													"src": "4798:1:1"
												}
											]
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "4845:22:1",
												"statements": [
													{
														"expression": {
															"arguments": [],
															"functionName": {
																"name": "panic_error_0x11",
																"nodeType": "YulIdentifier",
																"src": "4847:16:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "4847:18:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "4847:18:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "x",
														"nodeType": "YulIdentifier",
														"src": "4839:1:1"
													},
													{
														"name": "y",
														"nodeType": "YulIdentifier",
														"src": "4842:1:1"
													}
												],
												"functionName": {
													"name": "lt",
													"nodeType": "YulIdentifier",
													"src": "4836:2:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4836:8:1"
											},
											"nodeType": "YulIf",
											"src": "4833:2:1"
										},
										{
											"nodeType": "YulAssignment",
											"src": "4877:17:1",
											"value": {
												"arguments": [
													{
														"name": "x",
														"nodeType": "YulIdentifier",
														"src": "4889:1:1"
													},
													{
														"name": "y",
														"nodeType": "YulIdentifier",
														"src": "4892:1:1"
													}
												],
												"functionName": {
													"name": "sub",
													"nodeType": "YulIdentifier",
													"src": "4885:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4885:9:1"
											},
											"variableNames": [
												{
													"name": "diff",
													"nodeType": "YulIdentifier",
													"src": "4877:4:1"
												}
											]
										}
									]
								},
								"name": "checked_sub_t_uint256",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "x",
										"nodeType": "YulTypedName",
										"src": "4740:1:1",
										"type": ""
									},
									{
										"name": "y",
										"nodeType": "YulTypedName",
										"src": "4743:1:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "diff",
										"nodeType": "YulTypedName",
										"src": "4749:4:1",
										"type": ""
									}
								],
								"src": "4709:191:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "4951:51:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "4961:35:1",
											"value": {
												"arguments": [
													{
														"name": "value",
														"nodeType": "YulIdentifier",
														"src": "4990:5:1"
													}
												],
												"functionName": {
													"name": "cleanup_t_uint160",
													"nodeType": "YulIdentifier",
													"src": "4972:17:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "4972:24:1"
											},
											"variableNames": [
												{
													"name": "cleaned",
													"nodeType": "YulIdentifier",
													"src": "4961:7:1"
												}
											]
										}
									]
								},
								"name": "cleanup_t_address",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "4933:5:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "cleaned",
										"nodeType": "YulTypedName",
										"src": "4943:7:1",
										"type": ""
									}
								],
								"src": "4906:96:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "5050:48:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "5060:32:1",
											"value": {
												"arguments": [
													{
														"arguments": [
															{
																"name": "value",
																"nodeType": "YulIdentifier",
																"src": "5085:5:1"
															}
														],
														"functionName": {
															"name": "iszero",
															"nodeType": "YulIdentifier",
															"src": "5078:6:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "5078:13:1"
													}
												],
												"functionName": {
													"name": "iszero",
													"nodeType": "YulIdentifier",
													"src": "5071:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "5071:21:1"
											},
											"variableNames": [
												{
													"name": "cleaned",
													"nodeType": "YulIdentifier",
													"src": "5060:7:1"
												}
											]
										}
									]
								},
								"name": "cleanup_t_bool",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "5032:5:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "cleaned",
										"nodeType": "YulTypedName",
										"src": "5042:7:1",
										"type": ""
									}
								],
								"src": "5008:90:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "5149:81:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "5159:65:1",
											"value": {
												"arguments": [
													{
														"name": "value",
														"nodeType": "YulIdentifier",
														"src": "5174:5:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "5181:42:1",
														"type": "",
														"value": "0xffffffffffffffffffffffffffffffffffffffff"
													}
												],
												"functionName": {
													"name": "and",
													"nodeType": "YulIdentifier",
													"src": "5170:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "5170:54:1"
											},
											"variableNames": [
												{
													"name": "cleaned",
													"nodeType": "YulIdentifier",
													"src": "5159:7:1"
												}
											]
										}
									]
								},
								"name": "cleanup_t_uint160",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "5131:5:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "cleaned",
										"nodeType": "YulTypedName",
										"src": "5141:7:1",
										"type": ""
									}
								],
								"src": "5104:126:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "5281:32:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "5291:16:1",
											"value": {
												"name": "value",
												"nodeType": "YulIdentifier",
												"src": "5302:5:1"
											},
											"variableNames": [
												{
													"name": "cleaned",
													"nodeType": "YulIdentifier",
													"src": "5291:7:1"
												}
											]
										}
									]
								},
								"name": "cleanup_t_uint256",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "5263:5:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "cleaned",
										"nodeType": "YulTypedName",
										"src": "5273:7:1",
										"type": ""
									}
								],
								"src": "5236:77:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "5362:43:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "5372:27:1",
											"value": {
												"arguments": [
													{
														"name": "value",
														"nodeType": "YulIdentifier",
														"src": "5387:5:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "5394:4:1",
														"type": "",
														"value": "0xff"
													}
												],
												"functionName": {
													"name": "and",
													"nodeType": "YulIdentifier",
													"src": "5383:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "5383:16:1"
											},
											"variableNames": [
												{
													"name": "cleaned",
													"nodeType": "YulIdentifier",
													"src": "5372:7:1"
												}
											]
										}
									]
								},
								"name": "cleanup_t_uint8",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "5344:5:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "cleaned",
										"nodeType": "YulTypedName",
										"src": "5354:7:1",
										"type": ""
									}
								],
								"src": "5319:86:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "5460:258:1",
									"statements": [
										{
											"nodeType": "YulVariableDeclaration",
											"src": "5470:10:1",
											"value": {
												"kind": "number",
												"nodeType": "YulLiteral",
												"src": "5479:1:1",
												"type": "",
												"value": "0"
											},
											"variables": [
												{
													"name": "i",
													"nodeType": "YulTypedName",
													"src": "5474:1:1",
													"type": ""
												}
											]
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "5539:63:1",
												"statements": [
													{
														"expression": {
															"arguments": [
																{
																	"arguments": [
																		{
																			"name": "dst",
																			"nodeType": "YulIdentifier",
																			"src": "5564:3:1"
																		},
																		{
																			"name": "i",
																			"nodeType": "YulIdentifier",
																			"src": "5569:1:1"
																		}
																	],
																	"functionName": {
																		"name": "add",
																		"nodeType": "YulIdentifier",
																		"src": "5560:3:1"
																	},
																	"nodeType": "YulFunctionCall",
																	"src": "5560:11:1"
																},
																{
																	"arguments": [
																		{
																			"arguments": [
																				{
																					"name": "src",
																					"nodeType": "YulIdentifier",
																					"src": "5583:3:1"
																				},
																				{
																					"name": "i",
																					"nodeType": "YulIdentifier",
																					"src": "5588:1:1"
																				}
																			],
																			"functionName": {
																				"name": "add",
																				"nodeType": "YulIdentifier",
																				"src": "5579:3:1"
																			},
																			"nodeType": "YulFunctionCall",
																			"src": "5579:11:1"
																		}
																	],
																	"functionName": {
																		"name": "mload",
																		"nodeType": "YulIdentifier",
																		"src": "5573:5:1"
																	},
																	"nodeType": "YulFunctionCall",
																	"src": "5573:18:1"
																}
															],
															"functionName": {
																"name": "mstore",
																"nodeType": "YulIdentifier",
																"src": "5553:6:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "5553:39:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "5553:39:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "i",
														"nodeType": "YulIdentifier",
														"src": "5500:1:1"
													},
													{
														"name": "length",
														"nodeType": "YulIdentifier",
														"src": "5503:6:1"
													}
												],
												"functionName": {
													"name": "lt",
													"nodeType": "YulIdentifier",
													"src": "5497:2:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "5497:13:1"
											},
											"nodeType": "YulForLoop",
											"post": {
												"nodeType": "YulBlock",
												"src": "5511:19:1",
												"statements": [
													{
														"nodeType": "YulAssignment",
														"src": "5513:15:1",
														"value": {
															"arguments": [
																{
																	"name": "i",
																	"nodeType": "YulIdentifier",
																	"src": "5522:1:1"
																},
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "5525:2:1",
																	"type": "",
																	"value": "32"
																}
															],
															"functionName": {
																"name": "add",
																"nodeType": "YulIdentifier",
																"src": "5518:3:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "5518:10:1"
														},
														"variableNames": [
															{
																"name": "i",
																"nodeType": "YulIdentifier",
																"src": "5513:1:1"
															}
														]
													}
												]
											},
											"pre": {
												"nodeType": "YulBlock",
												"src": "5493:3:1",
												"statements": []
											},
											"src": "5489:113:1"
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "5636:76:1",
												"statements": [
													{
														"expression": {
															"arguments": [
																{
																	"arguments": [
																		{
																			"name": "dst",
																			"nodeType": "YulIdentifier",
																			"src": "5686:3:1"
																		},
																		{
																			"name": "length",
																			"nodeType": "YulIdentifier",
																			"src": "5691:6:1"
																		}
																	],
																	"functionName": {
																		"name": "add",
																		"nodeType": "YulIdentifier",
																		"src": "5682:3:1"
																	},
																	"nodeType": "YulFunctionCall",
																	"src": "5682:16:1"
																},
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "5700:1:1",
																	"type": "",
																	"value": "0"
																}
															],
															"functionName": {
																"name": "mstore",
																"nodeType": "YulIdentifier",
																"src": "5675:6:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "5675:27:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "5675:27:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "i",
														"nodeType": "YulIdentifier",
														"src": "5617:1:1"
													},
													{
														"name": "length",
														"nodeType": "YulIdentifier",
														"src": "5620:6:1"
													}
												],
												"functionName": {
													"name": "gt",
													"nodeType": "YulIdentifier",
													"src": "5614:2:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "5614:13:1"
											},
											"nodeType": "YulIf",
											"src": "5611:2:1"
										}
									]
								},
								"name": "copy_memory_to_memory",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "src",
										"nodeType": "YulTypedName",
										"src": "5442:3:1",
										"type": ""
									},
									{
										"name": "dst",
										"nodeType": "YulTypedName",
										"src": "5447:3:1",
										"type": ""
									},
									{
										"name": "length",
										"nodeType": "YulTypedName",
										"src": "5452:6:1",
										"type": ""
									}
								],
								"src": "5411:307:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "5775:269:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "5785:22:1",
											"value": {
												"arguments": [
													{
														"name": "data",
														"nodeType": "YulIdentifier",
														"src": "5799:4:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "5805:1:1",
														"type": "",
														"value": "2"
													}
												],
												"functionName": {
													"name": "div",
													"nodeType": "YulIdentifier",
													"src": "5795:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "5795:12:1"
											},
											"variableNames": [
												{
													"name": "length",
													"nodeType": "YulIdentifier",
													"src": "5785:6:1"
												}
											]
										},
										{
											"nodeType": "YulVariableDeclaration",
											"src": "5816:38:1",
											"value": {
												"arguments": [
													{
														"name": "data",
														"nodeType": "YulIdentifier",
														"src": "5846:4:1"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "5852:1:1",
														"type": "",
														"value": "1"
													}
												],
												"functionName": {
													"name": "and",
													"nodeType": "YulIdentifier",
													"src": "5842:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "5842:12:1"
											},
											"variables": [
												{
													"name": "outOfPlaceEncoding",
													"nodeType": "YulTypedName",
													"src": "5820:18:1",
													"type": ""
												}
											]
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "5893:51:1",
												"statements": [
													{
														"nodeType": "YulAssignment",
														"src": "5907:27:1",
														"value": {
															"arguments": [
																{
																	"name": "length",
																	"nodeType": "YulIdentifier",
																	"src": "5921:6:1"
																},
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "5929:4:1",
																	"type": "",
																	"value": "0x7f"
																}
															],
															"functionName": {
																"name": "and",
																"nodeType": "YulIdentifier",
																"src": "5917:3:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "5917:17:1"
														},
														"variableNames": [
															{
																"name": "length",
																"nodeType": "YulIdentifier",
																"src": "5907:6:1"
															}
														]
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "outOfPlaceEncoding",
														"nodeType": "YulIdentifier",
														"src": "5873:18:1"
													}
												],
												"functionName": {
													"name": "iszero",
													"nodeType": "YulIdentifier",
													"src": "5866:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "5866:26:1"
											},
											"nodeType": "YulIf",
											"src": "5863:2:1"
										},
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "5996:42:1",
												"statements": [
													{
														"expression": {
															"arguments": [],
															"functionName": {
																"name": "panic_error_0x22",
																"nodeType": "YulIdentifier",
																"src": "6010:16:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "6010:18:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "6010:18:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"name": "outOfPlaceEncoding",
														"nodeType": "YulIdentifier",
														"src": "5960:18:1"
													},
													{
														"arguments": [
															{
																"name": "length",
																"nodeType": "YulIdentifier",
																"src": "5983:6:1"
															},
															{
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "5991:2:1",
																"type": "",
																"value": "32"
															}
														],
														"functionName": {
															"name": "lt",
															"nodeType": "YulIdentifier",
															"src": "5980:2:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "5980:14:1"
													}
												],
												"functionName": {
													"name": "eq",
													"nodeType": "YulIdentifier",
													"src": "5957:2:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "5957:38:1"
											},
											"nodeType": "YulIf",
											"src": "5954:2:1"
										}
									]
								},
								"name": "extract_byte_array_length",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "data",
										"nodeType": "YulTypedName",
										"src": "5759:4:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "length",
										"nodeType": "YulTypedName",
										"src": "5768:6:1",
										"type": ""
									}
								],
								"src": "5724:320:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "6078:152:1",
									"statements": [
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6095:1:1",
														"type": "",
														"value": "0"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6098:77:1",
														"type": "",
														"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "6088:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "6088:88:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "6088:88:1"
										},
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6192:1:1",
														"type": "",
														"value": "4"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6195:4:1",
														"type": "",
														"value": "0x11"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "6185:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "6185:15:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "6185:15:1"
										},
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6216:1:1",
														"type": "",
														"value": "0"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6219:4:1",
														"type": "",
														"value": "0x24"
													}
												],
												"functionName": {
													"name": "revert",
													"nodeType": "YulIdentifier",
													"src": "6209:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "6209:15:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "6209:15:1"
										}
									]
								},
								"name": "panic_error_0x11",
								"nodeType": "YulFunctionDefinition",
								"src": "6050:180:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "6264:152:1",
									"statements": [
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6281:1:1",
														"type": "",
														"value": "0"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6284:77:1",
														"type": "",
														"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "6274:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "6274:88:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "6274:88:1"
										},
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6378:1:1",
														"type": "",
														"value": "4"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6381:4:1",
														"type": "",
														"value": "0x12"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "6371:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "6371:15:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "6371:15:1"
										},
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6402:1:1",
														"type": "",
														"value": "0"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6405:4:1",
														"type": "",
														"value": "0x24"
													}
												],
												"functionName": {
													"name": "revert",
													"nodeType": "YulIdentifier",
													"src": "6395:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "6395:15:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "6395:15:1"
										}
									]
								},
								"name": "panic_error_0x12",
								"nodeType": "YulFunctionDefinition",
								"src": "6236:180:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "6450:152:1",
									"statements": [
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6467:1:1",
														"type": "",
														"value": "0"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6470:77:1",
														"type": "",
														"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "6460:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "6460:88:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "6460:88:1"
										},
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6564:1:1",
														"type": "",
														"value": "4"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6567:4:1",
														"type": "",
														"value": "0x22"
													}
												],
												"functionName": {
													"name": "mstore",
													"nodeType": "YulIdentifier",
													"src": "6557:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "6557:15:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "6557:15:1"
										},
										{
											"expression": {
												"arguments": [
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6588:1:1",
														"type": "",
														"value": "0"
													},
													{
														"kind": "number",
														"nodeType": "YulLiteral",
														"src": "6591:4:1",
														"type": "",
														"value": "0x24"
													}
												],
												"functionName": {
													"name": "revert",
													"nodeType": "YulIdentifier",
													"src": "6581:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "6581:15:1"
											},
											"nodeType": "YulExpressionStatement",
											"src": "6581:15:1"
										}
									]
								},
								"name": "panic_error_0x22",
								"nodeType": "YulFunctionDefinition",
								"src": "6422:180:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "6656:54:1",
									"statements": [
										{
											"nodeType": "YulAssignment",
											"src": "6666:38:1",
											"value": {
												"arguments": [
													{
														"arguments": [
															{
																"name": "value",
																"nodeType": "YulIdentifier",
																"src": "6684:5:1"
															},
															{
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "6691:2:1",
																"type": "",
																"value": "31"
															}
														],
														"functionName": {
															"name": "add",
															"nodeType": "YulIdentifier",
															"src": "6680:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "6680:14:1"
													},
													{
														"arguments": [
															{
																"kind": "number",
																"nodeType": "YulLiteral",
																"src": "6700:2:1",
																"type": "",
																"value": "31"
															}
														],
														"functionName": {
															"name": "not",
															"nodeType": "YulIdentifier",
															"src": "6696:3:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "6696:7:1"
													}
												],
												"functionName": {
													"name": "and",
													"nodeType": "YulIdentifier",
													"src": "6676:3:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "6676:28:1"
											},
											"variableNames": [
												{
													"name": "result",
													"nodeType": "YulIdentifier",
													"src": "6666:6:1"
												}
											]
										}
									]
								},
								"name": "round_up_to_mul_of_32",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "6639:5:1",
										"type": ""
									}
								],
								"returnVariables": [
									{
										"name": "result",
										"nodeType": "YulTypedName",
										"src": "6649:6:1",
										"type": ""
									}
								],
								"src": "6608:102:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "6759:79:1",
									"statements": [
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "6816:16:1",
												"statements": [
													{
														"expression": {
															"arguments": [
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "6825:1:1",
																	"type": "",
																	"value": "0"
																},
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "6828:1:1",
																	"type": "",
																	"value": "0"
																}
															],
															"functionName": {
																"name": "revert",
																"nodeType": "YulIdentifier",
																"src": "6818:6:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "6818:12:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "6818:12:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"arguments": [
															{
																"name": "value",
																"nodeType": "YulIdentifier",
																"src": "6782:5:1"
															},
															{
																"arguments": [
																	{
																		"name": "value",
																		"nodeType": "YulIdentifier",
																		"src": "6807:5:1"
																	}
																],
																"functionName": {
																	"name": "cleanup_t_address",
																	"nodeType": "YulIdentifier",
																	"src": "6789:17:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "6789:24:1"
															}
														],
														"functionName": {
															"name": "eq",
															"nodeType": "YulIdentifier",
															"src": "6779:2:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "6779:35:1"
													}
												],
												"functionName": {
													"name": "iszero",
													"nodeType": "YulIdentifier",
													"src": "6772:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "6772:43:1"
											},
											"nodeType": "YulIf",
											"src": "6769:2:1"
										}
									]
								},
								"name": "validator_revert_t_address",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "6752:5:1",
										"type": ""
									}
								],
								"src": "6716:122:1"
							},
							{
								"body": {
									"nodeType": "YulBlock",
									"src": "6887:79:1",
									"statements": [
										{
											"body": {
												"nodeType": "YulBlock",
												"src": "6944:16:1",
												"statements": [
													{
														"expression": {
															"arguments": [
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "6953:1:1",
																	"type": "",
																	"value": "0"
																},
																{
																	"kind": "number",
																	"nodeType": "YulLiteral",
																	"src": "6956:1:1",
																	"type": "",
																	"value": "0"
																}
															],
															"functionName": {
																"name": "revert",
																"nodeType": "YulIdentifier",
																"src": "6946:6:1"
															},
															"nodeType": "YulFunctionCall",
															"src": "6946:12:1"
														},
														"nodeType": "YulExpressionStatement",
														"src": "6946:12:1"
													}
												]
											},
											"condition": {
												"arguments": [
													{
														"arguments": [
															{
																"name": "value",
																"nodeType": "YulIdentifier",
																"src": "6910:5:1"
															},
															{
																"arguments": [
																	{
																		"name": "value",
																		"nodeType": "YulIdentifier",
																		"src": "6935:5:1"
																	}
																],
																"functionName": {
																	"name": "cleanup_t_uint256",
																	"nodeType": "YulIdentifier",
																	"src": "6917:17:1"
																},
																"nodeType": "YulFunctionCall",
																"src": "6917:24:1"
															}
														],
														"functionName": {
															"name": "eq",
															"nodeType": "YulIdentifier",
															"src": "6907:2:1"
														},
														"nodeType": "YulFunctionCall",
														"src": "6907:35:1"
													}
												],
												"functionName": {
													"name": "iszero",
													"nodeType": "YulIdentifier",
													"src": "6900:6:1"
												},
												"nodeType": "YulFunctionCall",
												"src": "6900:43:1"
											},
											"nodeType": "YulIf",
											"src": "6897:2:1"
										}
									]
								},
								"name": "validator_revert_t_uint256",
								"nodeType": "YulFunctionDefinition",
								"parameters": [
									{
										"name": "value",
										"nodeType": "YulTypedName",
										"src": "6880:5:1",
										"type": ""
									}
								],
								"src": "6844:122:1"
							}
						]
					},
					"contents": "{\n\n    function abi_decode_t_address(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function abi_decode_t_uint256(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n        mstore(pos, cleanup_t_bool(value))\n    }\n\n    function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n        let length := array_length_t_string_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n        copy_memory_to_memory(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\n\n    function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint8(value))\n    }\n\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_bool_to_t_bool_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0,  tail)\n\n    }\n\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint8_to_t_uint8_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function checked_add_t_uint256(x, y) -> sum {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n\n        // overflow, if x > (maxValue - y)\n        if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n        sum := add(x, y)\n    }\n\n    function checked_div_t_uint256(x, y) -> r {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n        if iszero(y) { panic_error_0x12() }\n\n        r := div(x, y)\n    }\n\n    function checked_sub_t_uint256(x, y) -> diff {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n\n        if lt(x, y) { panic_error_0x11() }\n\n        diff := sub(x, y)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function cleanup_t_bool(value) -> cleaned {\n        cleaned := iszero(iszero(value))\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function cleanup_t_uint8(value) -> cleaned {\n        cleaned := and(value, 0xff)\n    }\n\n    function copy_memory_to_memory(src, dst, length) {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length)\n        {\n            // clear end\n            mstore(add(dst, length), 0)\n        }\n    }\n\n    function extract_byte_array_length(data) -> length {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) {\n            length := and(length, 0x7f)\n        }\n\n        if eq(outOfPlaceEncoding, lt(length, 32)) {\n            panic_error_0x22()\n        }\n    }\n\n    function panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n\n    function panic_error_0x12() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n\n    function panic_error_0x22() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x22)\n        revert(0, 0x24)\n    }\n\n    function round_up_to_mul_of_32(value) -> result {\n        result := and(add(value, 31), not(31))\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function validator_revert_t_uint256(value) {\n        if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n    }\n\n}\n",
					"id": 1,
					"language": "Yul",
					"name": "#utility.yul"
				}
			],
			"immutableReferences": {},
			"linkReferences": {},
			"object": "608060405234801561001057600080fd5b506004361061009e5760003560e01c806342966c681161006657806342966c681461015d57806370a082311461017957806395d89b41146101a9578063a9059cbb146101c7578063dd62ed3e146101f75761009e565b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100f157806323b872dd1461010f578063313ce5671461013f575b600080fd5b6100ab610227565b6040516100b89190610c1d565b60405180910390f35b6100db60048036038101906100d69190610b37565b6102b5565b6040516100e89190610c02565b60405180910390f35b6100f96103a7565b6040516101069190610c3f565b60405180910390f35b61012960048036038101906101249190610ae8565b6103ad565b6040516101369190610c02565b60405180910390f35b610147610630565b6040516101549190610c5a565b60405180910390f35b61017760048036038101906101729190610b73565b610643565b005b610193600480360381019061018e9190610a83565b61069b565b6040516101a09190610c3f565b60405180910390f35b6101b16106b3565b6040516101be9190610c1d565b60405180910390f35b6101e160048036038101906101dc9190610b37565b610741565b6040516101ee9190610c02565b60405180910390f35b610211600480360381019061020c9190610aac565b6108d1565b60405161021e9190610c3f565b60405180910390f35b6001805461023490610dd4565b80601f016020809104026020016040519081016040528092919081815260200182805461026090610dd4565b80156102ad5780601f10610282576101008083540402835291602001916102ad565b820191906000526020600020905b81548152906001019060200180831161029057829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103959190610c3f565b60405180910390a36001905092915050565b60045481565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156103fa57600080fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561048357600080fd5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104d19190610d18565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105269190610c91565b9250508190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105b99190610d18565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161061d9190610c3f565b60405180910390a3600190509392505050565b600360009054906101000a900460ff1681565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561068e57600080fd5b61069833826108f6565b50565b60006020528060005260406000206000915090505481565b600280546106c090610dd4565b80601f01602080910402602001604051908101604052809291908181526020018280546106ec90610dd4565b80156107395780601f1061070e57610100808354040283529160200191610739565b820191906000526020600020905b81548152906001019060200180831161071c57829003601f168201915b505050505081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561078e57600080fd5b600060028361079d9190610ce7565b90506107a933826108f6565b80836107b59190610d18565b9250826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108059190610d18565b92505081905550826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461085a9190610c91565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516108be9190610c3f565b60405180910390a3600191505092915050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600081141561090457600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561094f57600080fd5b8060045461095d9190610d18565b600481905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109ad9190610d18565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a4d9190610c3f565b60405180910390a35050565b600081359050610a6881610ea4565b92915050565b600081359050610a7d81610ebb565b92915050565b600060208284031215610a9557600080fd5b6000610aa384828501610a59565b91505092915050565b60008060408385031215610abf57600080fd5b6000610acd85828601610a59565b9250506020610ade85828601610a59565b9150509250929050565b600080600060608486031215610afd57600080fd5b6000610b0b86828701610a59565b9350506020610b1c86828701610a59565b9250506040610b2d86828701610a6e565b9150509250925092565b60008060408385031215610b4a57600080fd5b6000610b5885828601610a59565b9250506020610b6985828601610a6e565b9150509250929050565b600060208284031215610b8557600080fd5b6000610b9384828501610a6e565b91505092915050565b610ba581610d5e565b82525050565b6000610bb682610c75565b610bc08185610c80565b9350610bd0818560208601610da1565b610bd981610e93565b840191505092915050565b610bed81610d8a565b82525050565b610bfc81610d94565b82525050565b6000602082019050610c176000830184610b9c565b92915050565b60006020820190508181036000830152610c378184610bab565b905092915050565b6000602082019050610c546000830184610be4565b92915050565b6000602082019050610c6f6000830184610bf3565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610c9c82610d8a565b9150610ca783610d8a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610cdc57610cdb610e06565b5b828201905092915050565b6000610cf282610d8a565b9150610cfd83610d8a565b925082610d0d57610d0c610e35565b5b828204905092915050565b6000610d2382610d8a565b9150610d2e83610d8a565b925082821015610d4157610d40610e06565b5b828203905092915050565b6000610d5782610d6a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610dbf578082015181840152602081019050610da4565b83811115610dce576000848401525b50505050565b60006002820490506001821680610dec57607f821691505b60208210811415610e0057610dff610e64565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b610ead81610d4c565b8114610eb857600080fd5b50565b610ec481610d8a565b8114610ecf57600080fd5b5056fea2646970667358221220535fe1ff977e752005f289d3d7bb05b4260708142004691ff0ac8084395d96ca64736f6c63430008000033",
			"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x42966C68 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1F7 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xF1 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x13F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0xC1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xD6 SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH2 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE8 SWAP2 SWAP1 PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF9 PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x106 SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x124 SWAP2 SWAP1 PUSH2 0xAE8 JUMP JUMPDEST PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x136 SWAP2 SWAP1 PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x147 PUSH2 0x630 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x154 SWAP2 SWAP1 PUSH2 0xC5A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x177 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x172 SWAP2 SWAP1 PUSH2 0xB73 JUMP JUMPDEST PUSH2 0x643 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x18E SWAP2 SWAP1 PUSH2 0xA83 JUMP JUMPDEST PUSH2 0x69B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A0 SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B1 PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0xC1D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1DC SWAP2 SWAP1 PUSH2 0xB37 JUMP JUMPDEST PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1EE SWAP2 SWAP1 PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x211 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20C SWAP2 SWAP1 PUSH2 0xAAC JUMP JUMPDEST PUSH2 0x8D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21E SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH2 0x234 SWAP1 PUSH2 0xDD4 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x260 SWAP1 PUSH2 0xDD4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2AD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x282 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2AD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x290 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x5 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x395 SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x3FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x4D1 SWAP2 SWAP1 PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x526 SWAP2 SWAP1 PUSH2 0xC91 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x5 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x5B9 SWAP2 SWAP1 PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x61D SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x698 CALLER DUP3 PUSH2 0x8F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH2 0x6C0 SWAP1 PUSH2 0xDD4 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x6EC SWAP1 PUSH2 0xDD4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x739 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x70E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x739 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x71C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x78E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP4 PUSH2 0x79D SWAP2 SWAP1 PUSH2 0xCE7 JUMP JUMPDEST SWAP1 POP PUSH2 0x7A9 CALLER DUP3 PUSH2 0x8F6 JUMP JUMPDEST DUP1 DUP4 PUSH2 0x7B5 SWAP2 SWAP1 PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP DUP3 PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x805 SWAP2 SWAP1 PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x85A SWAP2 SWAP1 PUSH2 0xC91 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP6 PUSH1 0x40 MLOAD PUSH2 0x8BE SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 EQ ISZERO PUSH2 0x904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x94F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x4 SLOAD PUSH2 0x95D SWAP2 SWAP1 PUSH2 0xD18 JUMP JUMPDEST PUSH1 0x4 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x9AD SWAP2 SWAP1 PUSH2 0xD18 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xA4D SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA68 DUP2 PUSH2 0xEA4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA7D DUP2 PUSH2 0xEBB JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAA3 DUP5 DUP3 DUP6 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xABF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xACD DUP6 DUP3 DUP7 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xADE DUP6 DUP3 DUP7 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xAFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB0B DUP7 DUP3 DUP8 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xB1C DUP7 DUP3 DUP8 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xB2D DUP7 DUP3 DUP8 ADD PUSH2 0xA6E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB58 DUP6 DUP3 DUP7 ADD PUSH2 0xA59 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xB69 DUP6 DUP3 DUP7 ADD PUSH2 0xA6E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB93 DUP5 DUP3 DUP6 ADD PUSH2 0xA6E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBA5 DUP2 PUSH2 0xD5E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBB6 DUP3 PUSH2 0xC75 JUMP JUMPDEST PUSH2 0xBC0 DUP2 DUP6 PUSH2 0xC80 JUMP JUMPDEST SWAP4 POP PUSH2 0xBD0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDA1 JUMP JUMPDEST PUSH2 0xBD9 DUP2 PUSH2 0xE93 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBED DUP2 PUSH2 0xD8A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xBFC DUP2 PUSH2 0xD94 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC17 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB9C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC37 DUP2 DUP5 PUSH2 0xBAB JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC54 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBE4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC6F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBF3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC9C DUP3 PUSH2 0xD8A JUMP JUMPDEST SWAP2 POP PUSH2 0xCA7 DUP4 PUSH2 0xD8A JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0xCDC JUMPI PUSH2 0xCDB PUSH2 0xE06 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF2 DUP3 PUSH2 0xD8A JUMP JUMPDEST SWAP2 POP PUSH2 0xCFD DUP4 PUSH2 0xD8A JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0xD0D JUMPI PUSH2 0xD0C PUSH2 0xE35 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD23 DUP3 PUSH2 0xD8A JUMP JUMPDEST SWAP2 POP PUSH2 0xD2E DUP4 PUSH2 0xD8A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0xD41 JUMPI PUSH2 0xD40 PUSH2 0xE06 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD57 DUP3 PUSH2 0xD6A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDBF JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDA4 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xDCE JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0xDEC JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xE00 JUMPI PUSH2 0xDFF PUSH2 0xE64 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xEAD DUP2 PUSH2 0xD4C JUMP JUMPDEST DUP2 EQ PUSH2 0xEB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xEC4 DUP2 PUSH2 0xD8A JUMP JUMPDEST DUP2 EQ PUSH2 0xECF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 0x5F 0xE1 SELFDESTRUCT SWAP8 PUSH31 0x752005F289D3D7BB05B4260708142004691FF0AC8084395D96CA64736F6C63 NUMBER STOP ADDMOD STOP STOP CALLER ",
			"sourceMap": "24:2289:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;180:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1687:226;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;297:64;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1919:392;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;265:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;651:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;101:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;230:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1093:433;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1616:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;180:44;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1687:226::-;1768:12;1829:5;1796:9;:21;1806:10;1796:21;;;;;;;;;;;;;;;:30;1818:7;1796:30;;;;;;;;;;;;;;;:38;;;;1870:7;1849:36;;1858:10;1849:36;;;1879:5;1849:36;;;;;;:::i;:::-;;;;;;;;1902:4;1895:11;;1687:226;;;;:::o;297:64::-;;;;:::o;1919:392::-;2014:12;2059:9;:15;2069:4;2059:15;;;;;;;;;;;;;;;;2050:5;:24;;2042:33;;;;;;2102:9;:15;2112:4;2102:15;;;;;;;;;;;;;;;:27;2118:10;2102:27;;;;;;;;;;;;;;;;2093:5;:36;;2085:45;;;;;;2160:5;2141:9;:15;2151:4;2141:15;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;2192:5;2175:9;:13;2185:2;2175:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;2238:5;2207:9;:15;2217:4;2207:15;;;;;;;;;;;;;;;:27;2223:10;2207:27;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;2273:2;2258:25;;2267:4;2258:25;;;2277:5;2258:25;;;;;;:::i;:::-;;;;;;;;2300:4;2293:11;;1919:392;;;;;:::o;265:26::-;;;;;;;;;;;;;:::o;651:131::-;733:6;708:9;:21;718:10;708:21;;;;;;;;;;;;;;;;:31;;700:40;;;;;;750:25;756:10;768:6;750:5;:25::i;:::-;651:131;:::o;101:45::-;;;;;;;;;;;;;;;;;:::o;230:29::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1093:433::-;1154:12;1211:5;1186:9;:21;1196:10;1186:21;;;;;;;;;;;;;;;;:30;;1178:39;;;;;;1227:8;1246:1;1238:5;:9;;;;:::i;:::-;1227:20;;1257:22;1263:10;1275:3;1257:5;:22::i;:::-;1305:3;1297:5;:11;;;;:::i;:::-;1289:19;;1343:5;1318:9;:21;1328:10;1318:21;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;1408:5;1391:9;:13;1401:2;1391:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;1488:2;1467:31;;1476:10;1467:31;;;1492:5;1467:31;;;;;;:::i;:::-;;;;;;;;1515:4;1508:11;;;1093:433;;;;:::o;1616:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;792:295::-;877:1;867:6;:11;;859:20;;;;;;907:9;:18;917:7;907:18;;;;;;;;;;;;;;;;897:6;:28;;889:37;;;;;;964:6;950:11;;:20;;;;:::i;:::-;936:11;:34;;;;1022:6;1001:9;:18;1011:7;1001:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;980:9;:18;990:7;980:18;;;;;;;;;;;;;;;:48;;;;1069:1;1043:37;;1052:7;1043:37;;;1073:6;1043:37;;;;;;:::i;:::-;;;;;;;;792:295;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:262::-;;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:109::-;2298:21;2313:5;2298:21;:::i;:::-;2293:3;2286:34;2276:50;;:::o;2332:364::-;;2448:39;2481:5;2448:39;:::i;:::-;2503:71;2567:6;2562:3;2503:71;:::i;:::-;2496:78;;2583:52;2628:6;2623:3;2616:4;2609:5;2605:16;2583:52;:::i;:::-;2660:29;2682:6;2660:29;:::i;:::-;2655:3;2651:39;2644:46;;2424:272;;;;;:::o;2702:118::-;2789:24;2807:5;2789:24;:::i;:::-;2784:3;2777:37;2767:53;;:::o;2826:112::-;2909:22;2925:5;2909:22;:::i;:::-;2904:3;2897:35;2887:51;;:::o;2944:210::-;;3069:2;3058:9;3054:18;3046:26;;3082:65;3144:1;3133:9;3129:17;3120:6;3082:65;:::i;:::-;3036:118;;;;:::o;3160:313::-;;3311:2;3300:9;3296:18;3288:26;;3360:9;3354:4;3350:20;3346:1;3335:9;3331:17;3324:47;3388:78;3461:4;3452:6;3388:78;:::i;:::-;3380:86;;3278:195;;;;:::o;3479:222::-;;3610:2;3599:9;3595:18;3587:26;;3623:71;3691:1;3680:9;3676:17;3667:6;3623:71;:::i;:::-;3577:124;;;;:::o;3707:214::-;;3834:2;3823:9;3819:18;3811:26;;3847:67;3911:1;3900:9;3896:17;3887:6;3847:67;:::i;:::-;3801:120;;;;:::o;3927:99::-;;4013:5;4007:12;3997:22;;3986:40;;;:::o;4032:169::-;;4150:6;4145:3;4138:19;4190:4;4185:3;4181:14;4166:29;;4128:73;;;;:::o;4207:305::-;;4266:20;4284:1;4266:20;:::i;:::-;4261:25;;4300:20;4318:1;4300:20;:::i;:::-;4295:25;;4454:1;4386:66;4382:74;4379:1;4376:81;4373:2;;;4460:18;;:::i;:::-;4373:2;4504:1;4501;4497:9;4490:16;;4251:261;;;;:::o;4518:185::-;;4575:20;4593:1;4575:20;:::i;:::-;4570:25;;4609:20;4627:1;4609:20;:::i;:::-;4604:25;;4648:1;4638:2;;4653:18;;:::i;:::-;4638:2;4695:1;4692;4688:9;4683:14;;4560:143;;;;:::o;4709:191::-;;4769:20;4787:1;4769:20;:::i;:::-;4764:25;;4803:20;4821:1;4803:20;:::i;:::-;4798:25;;4842:1;4839;4836:8;4833:2;;;4847:18;;:::i;:::-;4833:2;4892:1;4889;4885:9;4877:17;;4754:146;;;;:::o;4906:96::-;;4972:24;4990:5;4972:24;:::i;:::-;4961:35;;4951:51;;;:::o;5008:90::-;;5085:5;5078:13;5071:21;5060:32;;5050:48;;;:::o;5104:126::-;;5181:42;5174:5;5170:54;5159:65;;5149:81;;;:::o;5236:77::-;;5302:5;5291:16;;5281:32;;;:::o;5319:86::-;;5394:4;5387:5;5383:16;5372:27;;5362:43;;;:::o;5411:307::-;5479:1;5489:113;5503:6;5500:1;5497:13;5489:113;;;5588:1;5583:3;5579:11;5573:18;5569:1;5564:3;5560:11;5553:39;5525:2;5522:1;5518:10;5513:15;;5489:113;;;5620:6;5617:1;5614:13;5611:2;;;5700:1;5691:6;5686:3;5682:16;5675:27;5611:2;5460:258;;;;:::o;5724:320::-;;5805:1;5799:4;5795:12;5785:22;;5852:1;5846:4;5842:12;5873:18;5863:2;;5929:4;5921:6;5917:17;5907:27;;5863:2;5991;5983:6;5980:14;5960:18;5957:38;5954:2;;;6010:18;;:::i;:::-;5954:2;5775:269;;;;:::o;6050:180::-;6098:77;6095:1;6088:88;6195:4;6192:1;6185:15;6219:4;6216:1;6209:15;6236:180;6284:77;6281:1;6274:88;6381:4;6378:1;6371:15;6405:4;6402:1;6395:15;6422:180;6470:77;6467:1;6460:88;6567:4;6564:1;6557:15;6591:4;6588:1;6581:15;6608:102;;6700:2;6696:7;6691:2;6684:5;6680:14;6676:28;6666:38;;6656:54;;;:::o;6716:122::-;6789:24;6807:5;6789:24;:::i;:::-;6782:5;6779:35;6769:2;;6828:1;6825;6818:12;6769:2;6759:79;:::o;6844:122::-;6917:24;6935:5;6917:24;:::i;:::-;6910:5;6907:35;6897:2;;6956:1;6953;6946:12;6897:2;6887:79;:::o"
		},
		"gasEstimates": {
			"creation": {
				"codeDepositCost": "769600",
				"executionCost": "infinite",
				"totalCost": "infinite"
			},
			"external": {
				"allowance(address,address)": "infinite",
				"approve(address,uint256)": "infinite",
				"balanceOf(address)": "1536",
				"burn(uint256)": "infinite",
				"decimals()": "1260",
				"name()": "infinite",
				"symbol()": "infinite",
				"totalSupply()": "1174",
				"transfer(address,uint256)": "infinite",
				"transferFrom(address,address,uint256)": "infinite"
			},
			"internal": {
				"_burn(address,uint256)": "infinite"
			}
		},
		"methodIdentifiers": {
			"allowance(address,address)": "dd62ed3e",
			"approve(address,uint256)": "095ea7b3",
			"balanceOf(address)": "70a08231",
			"burn(uint256)": "42966c68",
			"decimals()": "313ce567",
			"name()": "06fdde03",
			"symbol()": "95d89b41",
			"totalSupply()": "18160ddd",
			"transfer(address,uint256)": "a9059cbb",
			"transferFrom(address,address,uint256)": "23b872dd"
		}
	},
	"abi": [
		{
			"inputs": [],
			"stateMutability": "nonpayable",
			"type": "constructor"
		},
		{
			"anonymous": false,
			"inputs": [
				{
					"indexed": true,
					"internalType": "address",
					"name": "owner",
					"type": "address"
				},
				{
					"indexed": true,
					"internalType": "address",
					"name": "spender",
					"type": "address"
				},
				{
					"indexed": false,
					"internalType": "uint256",
					"name": "value",
					"type": "uint256"
				}
			],
			"name": "Approval",
			"type": "event"
		},
		{
			"anonymous": false,
			"inputs": [
				{
					"indexed": true,
					"internalType": "address",
					"name": "from",
					"type": "address"
				},
				{
					"indexed": true,
					"internalType": "address",
					"name": "to",
					"type": "address"
				},
				{
					"indexed": false,
					"internalType": "uint256",
					"name": "value",
					"type": "uint256"
				}
			],
			"name": "Transfer",
			"type": "event"
		},
		{
			"inputs": [
				{
					"internalType": "address",
					"name": "",
					"type": "address"
				},
				{
					"internalType": "address",
					"name": "",
					"type": "address"
				}
			],
			"name": "allowance",
			"outputs": [
				{
					"internalType": "uint256",
					"name": "",
					"type": "uint256"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "address",
					"name": "spender",
					"type": "address"
				},
				{
					"internalType": "uint256",
					"name": "value",
					"type": "uint256"
				}
			],
			"name": "approve",
			"outputs": [
				{
					"internalType": "bool",
					"name": "success",
					"type": "bool"
				}
			],
			"stateMutability": "nonpayable",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "address",
					"name": "",
					"type": "address"
				}
			],
			"name": "balanceOf",
			"outputs": [
				{
					"internalType": "uint256",
					"name": "",
					"type": "uint256"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "uint256",
					"name": "amount",
					"type": "uint256"
				}
			],
			"name": "burn",
			"outputs": [],
			"stateMutability": "nonpayable",
			"type": "function"
		},
		{
			"inputs": [],
			"name": "decimals",
			"outputs": [
				{
					"internalType": "uint8",
					"name": "",
					"type": "uint8"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [],
			"name": "name",
			"outputs": [
				{
					"internalType": "string",
					"name": "",
					"type": "string"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [],
			"name": "symbol",
			"outputs": [
				{
					"internalType": "string",
					"name": "",
					"type": "string"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [],
			"name": "totalSupply",
			"outputs": [
				{
					"internalType": "uint256",
					"name": "",
					"type": "uint256"
				}
			],
			"stateMutability": "view",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "address",
					"name": "to",
					"type": "address"
				},
				{
					"internalType": "uint256",
					"name": "value",
					"type": "uint256"
				}
			],
			"name": "transfer",
			"outputs": [
				{
					"internalType": "bool",
					"name": "success",
					"type": "bool"
				}
			],
			"stateMutability": "nonpayable",
			"type": "function"
		},
		{
			"inputs": [
				{
					"internalType": "address",
					"name": "from",
					"type": "address"
				},
				{
					"internalType": "address",
					"name": "to",
					"type": "address"
				},
				{
					"internalType": "uint256",
					"name": "value",
					"type": "uint256"
				}
			],
			"name": "transferFrom",
			"outputs": [
				{
					"internalType": "bool",
					"name": "success",
					"type": "bool"
				}
			],
			"stateMutability": "nonpayable",
			"type": "function"
		}
	]
}