-----------------------------------------------------------------------
-- Lua Script Wireshark Dissector
-- 
-- Please see end of file for rules and regulations
-----------------------------------------------------------------------

-- Eurex Cash Eti T7 12.0 Protocol
local omi_eurex_cash_eti_t7_v12_0 = Proto("Eurex.Cash.Eti.T7.v12.0.Lua", "Eurex Cash Eti T7 12.0")

-- Protocol table
local eurex_cash_eti_t7_v12_0 = {}

-----------------------------------------------------------------------
-- Declare Protocol Fields
-----------------------------------------------------------------------

-- Eurex Cash Eti T7 12.0 Fields
omi_eurex_cash_eti_t7_v12_0.fields.account = ProtoField.new("Account", "eurex.cash.eti.t7.v12.0.account", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.accrued_interes_amt = ProtoField.new("Accrued Interes Amt", "eurex.cash.eti.t7.v12.0.accruedinteresamt", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.activation_date = ProtoField.new("Activation Date", "eurex.cash.eti.t7.v12.0.activationdate", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.affected_ord_grp_comp = ProtoField.new("Affected Ord Grp Comp", "eurex.cash.eti.t7.v12.0.affectedordgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.affected_order_id = ProtoField.new("Affected Order Id", "eurex.cash.eti.t7.v12.0.affectedorderid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.affected_order_request_id = ProtoField.new("Affected Order Request Id", "eurex.cash.eti.t7.v12.0.affectedorderrequestid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.affected_order_requests_grp_comp = ProtoField.new("Affected Order Requests Grp Comp", "eurex.cash.eti.t7.v12.0.affectedorderrequestsgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.affected_orig_cl_ord_id = ProtoField.new("Affected Orig Cl Ord Id", "eurex.cash.eti.t7.v12.0.affectedorigclordid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.alignment_padding = ProtoField.new("Alignment Padding", "eurex.cash.eti.t7.v12.0.alignmentpadding", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.alloc_id = ProtoField.new("Alloc Id", "eurex.cash.eti.t7.v12.0.allocid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.alloc_method = ProtoField.new("Alloc Method", "eurex.cash.eti.t7.v12.0.allocmethod", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.alloc_qty = ProtoField.new("Alloc Qty", "eurex.cash.eti.t7.v12.0.allocqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.appl_beg_msg_id = ProtoField.new("Appl Beg Msg Id", "eurex.cash.eti.t7.v12.0.applbegmsgid", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.appl_beg_seq_num = ProtoField.new("Appl Beg Seq Num", "eurex.cash.eti.t7.v12.0.applbegseqnum", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.appl_end_msg_id = ProtoField.new("Appl End Msg Id", "eurex.cash.eti.t7.v12.0.applendmsgid", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.appl_end_seq_num = ProtoField.new("Appl End Seq Num", "eurex.cash.eti.t7.v12.0.applendseqnum", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.appl_id = ProtoField.new("Appl Id", "eurex.cash.eti.t7.v12.0.applid", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.appl_id_status = ProtoField.new("Appl Id Status", "eurex.cash.eti.t7.v12.0.applidstatus", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.appl_msg_id = ProtoField.new("Appl Msg Id", "eurex.cash.eti.t7.v12.0.applmsgid", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.appl_resend_flag = ProtoField.new("Appl Resend Flag", "eurex.cash.eti.t7.v12.0.applresendflag", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.appl_seq_indicator = ProtoField.new("Appl Seq Indicator", "eurex.cash.eti.t7.v12.0.applseqindicator", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.appl_seq_num = ProtoField.new("Appl Seq Num", "eurex.cash.eti.t7.v12.0.applseqnum", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.appl_seq_status = ProtoField.new("Appl Seq Status", "eurex.cash.eti.t7.v12.0.applseqstatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.appl_seq_trade_date = ProtoField.new("Appl Seq Trade Date", "eurex.cash.eti.t7.v12.0.applseqtradedate", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.appl_sub_id = ProtoField.new("Appl Sub Id", "eurex.cash.eti.t7.v12.0.applsubid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.appl_total_message_count = ProtoField.new("Appl Total Message Count", "eurex.cash.eti.t7.v12.0.appltotalmessagecount", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.appl_usage_orders = ProtoField.new("Appl Usage Orders", "eurex.cash.eti.t7.v12.0.applusageorders", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.appl_usage_quotes = ProtoField.new("Appl Usage Quotes", "eurex.cash.eti.t7.v12.0.applusagequotes", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.application_system_name = ProtoField.new("Application System Name", "eurex.cash.eti.t7.v12.0.applicationsystemname", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.application_system_vendor = ProtoField.new("Application System Vendor", "eurex.cash.eti.t7.v12.0.applicationsystemvendor", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.application_system_version = ProtoField.new("Application System Version", "eurex.cash.eti.t7.v12.0.applicationsystemversion", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.auto_approval_rule_id = ProtoField.new("Auto Approval Rule Id", "eurex.cash.eti.t7.v12.0.autoapprovalruleid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.auto_exec_expiry_time = ProtoField.new("Auto Exec Expiry Time", "eurex.cash.eti.t7.v12.0.autoexecexpirytime", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.auto_exec_exposure_duration = ProtoField.new("Auto Exec Exposure Duration", "eurex.cash.eti.t7.v12.0.autoexecexposureduration", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.auto_exec_limit_price = ProtoField.new("Auto Exec Limit Price", "eurex.cash.eti.t7.v12.0.autoexeclimitprice", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.auto_exec_min_no_of_quotes = ProtoField.new("Auto Exec Min No Of Quotes", "eurex.cash.eti.t7.v12.0.autoexecminnoofquotes", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.auto_exec_reference_price_offset = ProtoField.new("Auto Exec Reference Price Offset", "eurex.cash.eti.t7.v12.0.autoexecreferencepriceoffset", ftypes.INT32)
omi_eurex_cash_eti_t7_v12_0.fields.auto_exec_type = ProtoField.new("Auto Exec Type", "eurex.cash.eti.t7.v12.0.autoexectype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.bbo_setting = ProtoField.new("Bbo Setting", "eurex.cash.eti.t7.v12.0.bbosetting", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.best_bid_px = ProtoField.new("Best Bid Px", "eurex.cash.eti.t7.v12.0.bestbidpx", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.best_bid_size = ProtoField.new("Best Bid Size", "eurex.cash.eti.t7.v12.0.bestbidsize", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.best_offer_px = ProtoField.new("Best Offer Px", "eurex.cash.eti.t7.v12.0.bestofferpx", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.best_offer_size = ProtoField.new("Best Offer Size", "eurex.cash.eti.t7.v12.0.bestoffersize", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.bid_px = ProtoField.new("Bid Px", "eurex.cash.eti.t7.v12.0.bidpx", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.bid_px_is_locked = ProtoField.new("Bid Px Is Locked", "eurex.cash.eti.t7.v12.0.bidpxislocked", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.bid_size = ProtoField.new("Bid Size", "eurex.cash.eti.t7.v12.0.bidsize", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.body_len = ProtoField.new("Body Len", "eurex.cash.eti.t7.v12.0.bodylen", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.cl_ord_id = ProtoField.new("Cl Ord Id", "eurex.cash.eti.t7.v12.0.clordid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.clearing_instruction = ProtoField.new("Clearing Instruction", "eurex.cash.eti.t7.v12.0.clearinginstruction", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.closure_reason = ProtoField.new("Closure Reason", "eurex.cash.eti.t7.v12.0.closurereason", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.coupon_rate = ProtoField.new("Coupon Rate", "eurex.cash.eti.t7.v12.0.couponrate", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.crossed_indicator = ProtoField.new("Crossed Indicator", "eurex.cash.eti.t7.v12.0.crossedindicator", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.cum_qty = ProtoField.new("Cum Qty", "eurex.cash.eti.t7.v12.0.cumqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.currency = ProtoField.new("Currency", "eurex.cash.eti.t7.v12.0.currency", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.cxl_qty = ProtoField.new("Cxl Qty", "eurex.cash.eti.t7.v12.0.cxlqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.cxl_size = ProtoField.new("Cxl Size", "eurex.cash.eti.t7.v12.0.cxlsize", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.default_cstm_appl_ver_id = ProtoField.new("Default Cstm Appl Ver Id", "eurex.cash.eti.t7.v12.0.defaultcstmapplverid", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.default_cstm_appl_ver_sub_id = ProtoField.new("Default Cstm Appl Ver Sub Id", "eurex.cash.eti.t7.v12.0.defaultcstmapplversubid", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_reason = ProtoField.new("Delete Reason", "eurex.cash.eti.t7.v12.0.deletereason", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.delivery_type = ProtoField.new("Delivery Type", "eurex.cash.eti.t7.v12.0.deliverytype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.display_high_qty = ProtoField.new("Display High Qty", "eurex.cash.eti.t7.v12.0.displayhighqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.display_low_qty = ProtoField.new("Display Low Qty", "eurex.cash.eti.t7.v12.0.displaylowqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.display_qty = ProtoField.new("Display Qty", "eurex.cash.eti.t7.v12.0.displayqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.encrypted_password = ProtoField.new("Encrypted Password", "eurex.cash.eti.t7.v12.0.encryptedpassword", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.enrichment_rule_id = ProtoField.new("Enrichment Rule Id", "eurex.cash.eti.t7.v12.0.enrichmentruleid", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.enrichment_rules_grp_comp = ProtoField.new("Enrichment Rules Grp Comp", "eurex.cash.eti.t7.v12.0.enrichmentrulesgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.event_date = ProtoField.new("Event Date", "eurex.cash.eti.t7.v12.0.eventdate", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.event_px = ProtoField.new("Event Px", "eurex.cash.eti.t7.v12.0.eventpx", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.event_type = ProtoField.new("Event Type", "eurex.cash.eti.t7.v12.0.eventtype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.exec_id = ProtoField.new("Exec Id", "eurex.cash.eti.t7.v12.0.execid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.exec_inst = ProtoField.new("Exec Inst", "eurex.cash.eti.t7.v12.0.execinst", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.exec_restatement_reason = ProtoField.new("Exec Restatement Reason", "eurex.cash.eti.t7.v12.0.execrestatementreason", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.exec_type = ProtoField.new("Exec Type", "eurex.cash.eti.t7.v12.0.exectype", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.executing_trader = ProtoField.new("Executing Trader", "eurex.cash.eti.t7.v12.0.executingtrader", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.executing_trader_qualifier = ProtoField.new("Executing Trader Qualifier", "eurex.cash.eti.t7.v12.0.executingtraderqualifier", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.expire_date = ProtoField.new("Expire Date", "eurex.cash.eti.t7.v12.0.expiredate", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.expire_time = ProtoField.new("Expire Time", "eurex.cash.eti.t7.v12.0.expiretime", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.fill_exec_id = ProtoField.new("Fill Exec Id", "eurex.cash.eti.t7.v12.0.fillexecid", ftypes.INT32)
omi_eurex_cash_eti_t7_v12_0.fields.fill_liquidity_ind = ProtoField.new("Fill Liquidity Ind", "eurex.cash.eti.t7.v12.0.fillliquidityind", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.fill_match_id = ProtoField.new("Fill Match Id", "eurex.cash.eti.t7.v12.0.fillmatchid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.fill_px = ProtoField.new("Fill Px", "eurex.cash.eti.t7.v12.0.fillpx", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.fill_qty = ProtoField.new("Fill Qty", "eurex.cash.eti.t7.v12.0.fillqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.fills_grp_comp = ProtoField.new("Fills Grp Comp", "eurex.cash.eti.t7.v12.0.fillsgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.firm_negotiation_id = ProtoField.new("Firm Negotiation Id", "eurex.cash.eti.t7.v12.0.firmnegotiationid", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.firm_trade_id = ProtoField.new("Firm Trade Id", "eurex.cash.eti.t7.v12.0.firmtradeid", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.fix_cl_ord_id = ProtoField.new("Fix Cl Ord Id", "eurex.cash.eti.t7.v12.0.fixclordid", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.fix_engine_name = ProtoField.new("Fix Engine Name", "eurex.cash.eti.t7.v12.0.fixenginename", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.fix_engine_vendor = ProtoField.new("Fix Engine Vendor", "eurex.cash.eti.t7.v12.0.fixenginevendor", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.fix_engine_version = ProtoField.new("Fix Engine Version", "eurex.cash.eti.t7.v12.0.fixengineversion", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.free_text_1 = ProtoField.new("Free Text 1", "eurex.cash.eti.t7.v12.0.freetext1", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.free_text_2 = ProtoField.new("Free Text 2", "eurex.cash.eti.t7.v12.0.freetext2", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.free_text_4 = ProtoField.new("Free Text 4", "eurex.cash.eti.t7.v12.0.freetext4", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.free_text_5 = ProtoField.new("Free Text 5", "eurex.cash.eti.t7.v12.0.freetext5", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.headline = ProtoField.new("Headline", "eurex.cash.eti.t7.v12.0.headline", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.heart_bt_int = ProtoField.new("Heart Bt Int", "eurex.cash.eti.t7.v12.0.heartbtint", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.imbalance_qty = ProtoField.new("Imbalance Qty", "eurex.cash.eti.t7.v12.0.imbalanceqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.individual_alloc_id = ProtoField.new("Individual Alloc Id", "eurex.cash.eti.t7.v12.0.individualallocid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.last_coupon_deviation_indicator = ProtoField.new("Last Coupon Deviation Indicator", "eurex.cash.eti.t7.v12.0.lastcoupondeviationindicator", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.last_entity_processed = ProtoField.new("Last Entity Processed", "eurex.cash.eti.t7.v12.0.lastentityprocessed", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.last_fragment = ProtoField.new("Last Fragment", "eurex.cash.eti.t7.v12.0.lastfragment", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.last_mkt = ProtoField.new("Last Mkt", "eurex.cash.eti.t7.v12.0.lastmkt", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.last_px = ProtoField.new("Last Px", "eurex.cash.eti.t7.v12.0.lastpx", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.last_qty = ProtoField.new("Last Qty", "eurex.cash.eti.t7.v12.0.lastqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.latest_public_key_seq_no = ProtoField.new("Latest Public Key Seq No", "eurex.cash.eti.t7.v12.0.latestpublickeyseqno", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.leaves_qty = ProtoField.new("Leaves Qty", "eurex.cash.eti.t7.v12.0.leavesqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.list_update_action = ProtoField.new("List Update Action", "eurex.cash.eti.t7.v12.0.listupdateaction", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.market_id = ProtoField.new("Market Id", "eurex.cash.eti.t7.v12.0.marketid", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.market_segment_id = ProtoField.new("Market Segment Id", "eurex.cash.eti.t7.v12.0.marketsegmentid", ftypes.INT32)
omi_eurex_cash_eti_t7_v12_0.fields.mass_action_reason = ProtoField.new("Mass Action Reason", "eurex.cash.eti.t7.v12.0.massactionreason", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.mass_action_report_id = ProtoField.new("Mass Action Report Id", "eurex.cash.eti.t7.v12.0.massactionreportid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.mass_action_type = ProtoField.new("Mass Action Type", "eurex.cash.eti.t7.v12.0.massactiontype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.match_date = ProtoField.new("Match Date", "eurex.cash.eti.t7.v12.0.matchdate", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.match_inst_cross_id = ProtoField.new("Match Inst Cross Id", "eurex.cash.eti.t7.v12.0.matchinstcrossid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.match_sub_type = ProtoField.new("Match Sub Type", "eurex.cash.eti.t7.v12.0.matchsubtype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.match_type = ProtoField.new("Match Type", "eurex.cash.eti.t7.v12.0.matchtype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.matching_engine_status = ProtoField.new("Matching Engine Status", "eurex.cash.eti.t7.v12.0.matchingenginestatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.matching_engine_trade_date = ProtoField.new("Matching Engine Trade Date", "eurex.cash.eti.t7.v12.0.matchingenginetradedate", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.md_book_type = ProtoField.new("Md Book Type", "eurex.cash.eti.t7.v12.0.mdbooktype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.md_sub_book_type = ProtoField.new("Md Sub Book Type", "eurex.cash.eti.t7.v12.0.mdsubbooktype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.message = ProtoField.new("Message", "eurex.cash.eti.t7.v12.0.message", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.message_event_source = ProtoField.new("Message Event Source", "eurex.cash.eti.t7.v12.0.messageeventsource", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.message_header = ProtoField.new("Message Header", "eurex.cash.eti.t7.v12.0.messageheader", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.msg_seq_num = ProtoField.new("Msg Seq Num", "eurex.cash.eti.t7.v12.0.msgseqnum", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.negotiation_id = ProtoField.new("Negotiation Id", "eurex.cash.eti.t7.v12.0.negotiationid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.negotiation_start_time = ProtoField.new("Negotiation Start Time", "eurex.cash.eti.t7.v12.0.negotiationstarttime", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.network_msg_id = ProtoField.new("Network Msg Id", "eurex.cash.eti.t7.v12.0.networkmsgid", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.news_rtm_service_status = ProtoField.new("News Rtm Service Status", "eurex.cash.eti.t7.v12.0.newsrtmservicestatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.no_affected_order_requests = ProtoField.new("No Affected Order Requests", "eurex.cash.eti.t7.v12.0.noaffectedorderrequests", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.no_affected_orders = ProtoField.new("No Affected Orders", "eurex.cash.eti.t7.v12.0.noaffectedorders", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.no_enrichment_rules = ProtoField.new("No Enrichment Rules", "eurex.cash.eti.t7.v12.0.noenrichmentrules", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.no_events = ProtoField.new("No Events", "eurex.cash.eti.t7.v12.0.noevents", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.no_fills = ProtoField.new("No Fills", "eurex.cash.eti.t7.v12.0.nofills", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.no_not_affected_orders = ProtoField.new("No Not Affected Orders", "eurex.cash.eti.t7.v12.0.nonotaffectedorders", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.no_not_affected_securities = ProtoField.new("No Not Affected Securities", "eurex.cash.eti.t7.v12.0.nonotaffectedsecurities", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.no_order_book_items = ProtoField.new("No Order Book Items", "eurex.cash.eti.t7.v12.0.noorderbookitems", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.no_order_events = ProtoField.new("No Order Events", "eurex.cash.eti.t7.v12.0.noorderevents", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.no_party_details = ProtoField.new("No Party Details", "eurex.cash.eti.t7.v12.0.nopartydetails", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.no_quote_entries = ProtoField.new("No Quote Entries", "eurex.cash.eti.t7.v12.0.noquoteentries", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.no_quote_events = ProtoField.new("No Quote Events", "eurex.cash.eti.t7.v12.0.noquoteevents", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.no_quote_side_entries = ProtoField.new("No Quote Side Entries", "eurex.cash.eti.t7.v12.0.noquotesideentries", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.no_risk_limit_amount = ProtoField.new("No Risk Limit Amount", "eurex.cash.eti.t7.v12.0.norisklimitamount", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.no_risk_limits = ProtoField.new("No Risk Limits", "eurex.cash.eti.t7.v12.0.norisklimits", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.no_sessions = ProtoField.new("No Sessions", "eurex.cash.eti.t7.v12.0.nosessions", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.no_side_allocs = ProtoField.new("No Side Allocs", "eurex.cash.eti.t7.v12.0.nosideallocs", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.no_target_party_i_ds = ProtoField.new("No Target Party I Ds", "eurex.cash.eti.t7.v12.0.notargetpartyids", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.not_aff_orig_cl_ord_id = ProtoField.new("Not Aff Orig Cl Ord Id", "eurex.cash.eti.t7.v12.0.notafforigclordid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.not_affected_order_id = ProtoField.new("Not Affected Order Id", "eurex.cash.eti.t7.v12.0.notaffectedorderid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.not_affected_orders_grp_comp = ProtoField.new("Not Affected Orders Grp Comp", "eurex.cash.eti.t7.v12.0.notaffectedordersgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.not_affected_securities_grp_comp = ProtoField.new("Not Affected Securities Grp Comp", "eurex.cash.eti.t7.v12.0.notaffectedsecuritiesgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.not_affected_security_id = ProtoField.new("Not Affected Security Id", "eurex.cash.eti.t7.v12.0.notaffectedsecurityid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.notif_header_comp = ProtoField.new("Notif Header Comp", "eurex.cash.eti.t7.v12.0.notifheadercomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.notification_in = ProtoField.new("Notification In", "eurex.cash.eti.t7.v12.0.notificationin", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.nr_response_header_me_comp = ProtoField.new("Nr Response Header Me Comp", "eurex.cash.eti.t7.v12.0.nrresponseheadermecomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.nrbc_header_comp = ProtoField.new("Nrbc Header Comp", "eurex.cash.eti.t7.v12.0.nrbcheadercomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.num_days_interest = ProtoField.new("Num Days Interest", "eurex.cash.eti.t7.v12.0.numdaysinterest", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.number_of_resp_disclosure_instruction = ProtoField.new("Number Of Resp Disclosure Instruction", "eurex.cash.eti.t7.v12.0.numberofrespdisclosureinstruction", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.number_of_respondents = ProtoField.new("Number Of Respondents", "eurex.cash.eti.t7.v12.0.numberofrespondents", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.offer_px = ProtoField.new("Offer Px", "eurex.cash.eti.t7.v12.0.offerpx", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.offer_px_is_locked = ProtoField.new("Offer Px Is Locked", "eurex.cash.eti.t7.v12.0.offerpxislocked", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.offer_size = ProtoField.new("Offer Size", "eurex.cash.eti.t7.v12.0.offersize", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.ord_status = ProtoField.new("Ord Status", "eurex.cash.eti.t7.v12.0.ordstatus", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.ord_type = ProtoField.new("Ord Type", "eurex.cash.eti.t7.v12.0.ordtype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.order_attribute_liquidity_provision = ProtoField.new("Order Attribute Liquidity Provision", "eurex.cash.eti.t7.v12.0.orderattributeliquidityprovision", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.order_book_item_grp_comp = ProtoField.new("Order Book Item Grp Comp", "eurex.cash.eti.t7.v12.0.orderbookitemgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.order_category = ProtoField.new("Order Category", "eurex.cash.eti.t7.v12.0.ordercategory", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.order_event_grp_comp = ProtoField.new("Order Event Grp Comp", "eurex.cash.eti.t7.v12.0.ordereventgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.order_event_match_id = ProtoField.new("Order Event Match Id", "eurex.cash.eti.t7.v12.0.ordereventmatchid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.order_event_px = ProtoField.new("Order Event Px", "eurex.cash.eti.t7.v12.0.ordereventpx", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.order_event_qty = ProtoField.new("Order Event Qty", "eurex.cash.eti.t7.v12.0.ordereventqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.order_event_reason = ProtoField.new("Order Event Reason", "eurex.cash.eti.t7.v12.0.ordereventreason", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.order_event_type = ProtoField.new("Order Event Type", "eurex.cash.eti.t7.v12.0.ordereventtype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.order_id = ProtoField.new("Order Id", "eurex.cash.eti.t7.v12.0.orderid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.order_id_sfx = ProtoField.new("Order Id Sfx", "eurex.cash.eti.t7.v12.0.orderidsfx", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.order_origination = ProtoField.new("Order Origination", "eurex.cash.eti.t7.v12.0.orderorigination", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.order_qty = ProtoField.new("Order Qty", "eurex.cash.eti.t7.v12.0.orderqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.order_routing_indicator = ProtoField.new("Order Routing Indicator", "eurex.cash.eti.t7.v12.0.orderroutingindicator", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.orig_cl_ord_id = ProtoField.new("Orig Cl Ord Id", "eurex.cash.eti.t7.v12.0.origclordid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.orig_time = ProtoField.new("Orig Time", "eurex.cash.eti.t7.v12.0.origtime", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.orig_trade_id = ProtoField.new("Orig Trade Id", "eurex.cash.eti.t7.v12.0.origtradeid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.ownership_indicator = ProtoField.new("Ownership Indicator", "eurex.cash.eti.t7.v12.0.ownershipindicator", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.package_id = ProtoField.new("Package Id", "eurex.cash.eti.t7.v12.0.packageid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.packet = ProtoField.new("Packet", "eurex.cash.eti.t7.v12.0.packet", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.pad_1 = ProtoField.new("Pad 1", "eurex.cash.eti.t7.v12.0.pad1", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.pad_2 = ProtoField.new("Pad 2", "eurex.cash.eti.t7.v12.0.pad2", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.pad_3 = ProtoField.new("Pad 3", "eurex.cash.eti.t7.v12.0.pad3", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.pad_4 = ProtoField.new("Pad 4", "eurex.cash.eti.t7.v12.0.pad4", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.pad_5 = ProtoField.new("Pad 5", "eurex.cash.eti.t7.v12.0.pad5", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.pad_6 = ProtoField.new("Pad 6", "eurex.cash.eti.t7.v12.0.pad6", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.pad_7 = ProtoField.new("Pad 7", "eurex.cash.eti.t7.v12.0.pad7", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.partition_id = ProtoField.new("Partition Id", "eurex.cash.eti.t7.v12.0.partitionid", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.party_action_type = ProtoField.new("Party Action Type", "eurex.cash.eti.t7.v12.0.partyactiontype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.party_detail_desk_id = ProtoField.new("Party Detail Desk Id", "eurex.cash.eti.t7.v12.0.partydetaildeskid", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.party_detail_executing_trader = ProtoField.new("Party Detail Executing Trader", "eurex.cash.eti.t7.v12.0.partydetailexecutingtrader", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.party_detail_executing_unit = ProtoField.new("Party Detail Executing Unit", "eurex.cash.eti.t7.v12.0.partydetailexecutingunit", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.party_detail_id_executing_trader = ProtoField.new("Party Detail Id Executing Trader", "eurex.cash.eti.t7.v12.0.partydetailidexecutingtrader", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.party_detail_id_executing_unit = ProtoField.new("Party Detail Id Executing Unit", "eurex.cash.eti.t7.v12.0.partydetailidexecutingunit", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.party_detail_role_qualifier = ProtoField.new("Party Detail Role Qualifier", "eurex.cash.eti.t7.v12.0.partydetailrolequalifier", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.party_detail_status = ProtoField.new("Party Detail Status", "eurex.cash.eti.t7.v12.0.partydetailstatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.party_details_grp_comp = ProtoField.new("Party Details Grp Comp", "eurex.cash.eti.t7.v12.0.partydetailsgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.party_entering_firm = ProtoField.new("Party Entering Firm", "eurex.cash.eti.t7.v12.0.partyenteringfirm", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.party_entering_trader = ProtoField.new("Party Entering Trader", "eurex.cash.eti.t7.v12.0.partyenteringtrader", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.party_executing_firm = ProtoField.new("Party Executing Firm", "eurex.cash.eti.t7.v12.0.partyexecutingfirm", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.party_executing_trader = ProtoField.new("Party Executing Trader", "eurex.cash.eti.t7.v12.0.partyexecutingtrader", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.party_executing_unit = ProtoField.new("Party Executing Unit", "eurex.cash.eti.t7.v12.0.partyexecutingunit", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.party_id_client_id = ProtoField.new("Party Id Client Id", "eurex.cash.eti.t7.v12.0.partyidclientid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.party_id_entering_firm = ProtoField.new("Party Id Entering Firm", "eurex.cash.eti.t7.v12.0.partyidenteringfirm", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.party_id_entering_trader = ProtoField.new("Party Id Entering Trader", "eurex.cash.eti.t7.v12.0.partyidenteringtrader", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.party_id_executing_trader = ProtoField.new("Party Id Executing Trader", "eurex.cash.eti.t7.v12.0.partyidexecutingtrader", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.party_id_executing_unit = ProtoField.new("Party Id Executing Unit", "eurex.cash.eti.t7.v12.0.partyidexecutingunit", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.party_id_investment_decision_maker = ProtoField.new("Party Id Investment Decision Maker", "eurex.cash.eti.t7.v12.0.partyidinvestmentdecisionmaker", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.party_id_investment_decision_maker_qualifier = ProtoField.new("Party Id Investment Decision Maker Qualifier", "eurex.cash.eti.t7.v12.0.partyidinvestmentdecisionmakerqualifier", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.party_id_session_id = ProtoField.new("Party Id Session Id", "eurex.cash.eti.t7.v12.0.partyidsessionid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.party_id_specialist_trader = ProtoField.new("Party Id Specialist Trader", "eurex.cash.eti.t7.v12.0.partyidspecialisttrader", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.party_specialist_firm = ProtoField.new("Party Specialist Firm", "eurex.cash.eti.t7.v12.0.partyspecialistfirm", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.party_specialist_trader = ProtoField.new("Party Specialist Trader", "eurex.cash.eti.t7.v12.0.partyspecialisttrader", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.password = ProtoField.new("Password", "eurex.cash.eti.t7.v12.0.password", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.payload = ProtoField.new("Payload", "eurex.cash.eti.t7.v12.0.payload", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.peg_offset_value_abs = ProtoField.new("Peg Offset Value Abs", "eurex.cash.eti.t7.v12.0.pegoffsetvalueabs", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.peg_offset_value_pct = ProtoField.new("Peg Offset Value Pct", "eurex.cash.eti.t7.v12.0.pegoffsetvaluepct", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.potential_exec_volume = ProtoField.new("Potential Exec Volume", "eurex.cash.eti.t7.v12.0.potentialexecvolume", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.price = ProtoField.new("Price", "eurex.cash.eti.t7.v12.0.price", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.price_validity_check_type = ProtoField.new("Price Validity Check Type", "eurex.cash.eti.t7.v12.0.pricevaliditychecktype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.public_key = ProtoField.new("Public Key", "eurex.cash.eti.t7.v12.0.publickey", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.public_key_len = ProtoField.new("Public Key Len", "eurex.cash.eti.t7.v12.0.publickeylen", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.quote_cancel_reason = ProtoField.new("Quote Cancel Reason", "eurex.cash.eti.t7.v12.0.quotecancelreason", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.quote_condition = ProtoField.new("Quote Condition", "eurex.cash.eti.t7.v12.0.quotecondition", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.quote_entry_ack_grp_comp = ProtoField.new("Quote Entry Ack Grp Comp", "eurex.cash.eti.t7.v12.0.quoteentryackgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.quote_entry_grp_comp = ProtoField.new("Quote Entry Grp Comp", "eurex.cash.eti.t7.v12.0.quoteentrygrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.quote_entry_reject_reason = ProtoField.new("Quote Entry Reject Reason", "eurex.cash.eti.t7.v12.0.quoteentryrejectreason", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.quote_entry_status = ProtoField.new("Quote Entry Status", "eurex.cash.eti.t7.v12.0.quoteentrystatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.quote_event_exec_id = ProtoField.new("Quote Event Exec Id", "eurex.cash.eti.t7.v12.0.quoteeventexecid", ftypes.INT32)
omi_eurex_cash_eti_t7_v12_0.fields.quote_event_grp_comp = ProtoField.new("Quote Event Grp Comp", "eurex.cash.eti.t7.v12.0.quoteeventgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.quote_event_liquidity_ind = ProtoField.new("Quote Event Liquidity Ind", "eurex.cash.eti.t7.v12.0.quoteeventliquidityind", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.quote_event_match_id = ProtoField.new("Quote Event Match Id", "eurex.cash.eti.t7.v12.0.quoteeventmatchid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.quote_event_px = ProtoField.new("Quote Event Px", "eurex.cash.eti.t7.v12.0.quoteeventpx", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.quote_event_qty = ProtoField.new("Quote Event Qty", "eurex.cash.eti.t7.v12.0.quoteeventqty", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.quote_event_reason = ProtoField.new("Quote Event Reason", "eurex.cash.eti.t7.v12.0.quoteeventreason", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.quote_event_side = ProtoField.new("Quote Event Side", "eurex.cash.eti.t7.v12.0.quoteeventside", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.quote_event_type = ProtoField.new("Quote Event Type", "eurex.cash.eti.t7.v12.0.quoteeventtype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.quote_id = ProtoField.new("Quote Id", "eurex.cash.eti.t7.v12.0.quoteid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.quote_msg_id = ProtoField.new("Quote Msg Id", "eurex.cash.eti.t7.v12.0.quotemsgid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.quote_req_id = ProtoField.new("Quote Req Id", "eurex.cash.eti.t7.v12.0.quotereqid", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.quote_request_reject_reason = ProtoField.new("Quote Request Reject Reason", "eurex.cash.eti.t7.v12.0.quoterequestrejectreason", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.quote_response_id = ProtoField.new("Quote Response Id", "eurex.cash.eti.t7.v12.0.quoteresponseid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.quote_size_type = ProtoField.new("Quote Size Type", "eurex.cash.eti.t7.v12.0.quotesizetype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.quote_type = ProtoField.new("Quote Type", "eurex.cash.eti.t7.v12.0.quotetype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.quoting_frequency = ProtoField.new("Quoting Frequency", "eurex.cash.eti.t7.v12.0.quotingfrequency", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.quoting_status = ProtoField.new("Quoting Status", "eurex.cash.eti.t7.v12.0.quotingstatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.rbc_header_comp = ProtoField.new("Rbc Header Comp", "eurex.cash.eti.t7.v12.0.rbcheadercomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.rbc_header_me_comp = ProtoField.new("Rbc Header Me Comp", "eurex.cash.eti.t7.v12.0.rbcheadermecomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.ref_appl_id = ProtoField.new("Ref Appl Id", "eurex.cash.eti.t7.v12.0.refapplid", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.ref_appl_last_msg_id = ProtoField.new("Ref Appl Last Msg Id", "eurex.cash.eti.t7.v12.0.refappllastmsgid", ftypes.BYTES)
omi_eurex_cash_eti_t7_v12_0.fields.ref_appl_last_seq_num = ProtoField.new("Ref Appl Last Seq Num", "eurex.cash.eti.t7.v12.0.refappllastseqnum", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.ref_appl_sub_id = ProtoField.new("Ref Appl Sub Id", "eurex.cash.eti.t7.v12.0.refapplsubid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.refinancing_eligibility_indicator = ProtoField.new("Refinancing Eligibility Indicator", "eurex.cash.eti.t7.v12.0.refinancingeligibilityindicator", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.regulatory_trade_id = ProtoField.new("Regulatory Trade Id", "eurex.cash.eti.t7.v12.0.regulatorytradeid", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.request_header_comp = ProtoField.new("Request Header Comp", "eurex.cash.eti.t7.v12.0.requestheadercomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.request_time = ProtoField.new("Request Time", "eurex.cash.eti.t7.v12.0.requesttime", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_clearing_firm = ProtoField.new("Requesting Party Clearing Firm", "eurex.cash.eti.t7.v12.0.requestingpartyclearingfirm", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_entering_firm = ProtoField.new("Requesting Party Entering Firm", "eurex.cash.eti.t7.v12.0.requestingpartyenteringfirm", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_executing_firm = ProtoField.new("Requesting Party Executing Firm", "eurex.cash.eti.t7.v12.0.requestingpartyexecutingfirm", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_executing_trader = ProtoField.new("Requesting Party Executing Trader", "eurex.cash.eti.t7.v12.0.requestingpartyexecutingtrader", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_id_entering_firm = ProtoField.new("Requesting Party Id Entering Firm", "eurex.cash.eti.t7.v12.0.requestingpartyidenteringfirm", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_id_executing_system = ProtoField.new("Requesting Party Id Executing System", "eurex.cash.eti.t7.v12.0.requestingpartyidexecutingsystem", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_id_executing_trader = ProtoField.new("Requesting Party Id Executing Trader", "eurex.cash.eti.t7.v12.0.requestingpartyidexecutingtrader", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.requesting_side = ProtoField.new("Requesting Side", "eurex.cash.eti.t7.v12.0.requestingside", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.respondent_type = ProtoField.new("Respondent Type", "eurex.cash.eti.t7.v12.0.respondenttype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.response_header_comp = ProtoField.new("Response Header Comp", "eurex.cash.eti.t7.v12.0.responseheadercomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.response_header_me_comp = ProtoField.new("Response Header Me Comp", "eurex.cash.eti.t7.v12.0.responseheadermecomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.response_in = ProtoField.new("Response In", "eurex.cash.eti.t7.v12.0.responsein", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.rfq_publish_indicator = ProtoField.new("Rfq Publish Indicator", "eurex.cash.eti.t7.v12.0.rfqpublishindicator", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.rfq_requester_disclosure_instruction = ProtoField.new("Rfq Requester Disclosure Instruction", "eurex.cash.eti.t7.v12.0.rfqrequesterdisclosureinstruction", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.risk_control_rtm_service_status = ProtoField.new("Risk Control Rtm Service Status", "eurex.cash.eti.t7.v12.0.riskcontrolrtmservicestatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_amount = ProtoField.new("Risk Limit Amount", "eurex.cash.eti.t7.v12.0.risklimitamount", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_amount_grp_comp = ProtoField.new("Risk Limit Amount Grp Comp", "eurex.cash.eti.t7.v12.0.risklimitamountgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_group = ProtoField.new("Risk Limit Group", "eurex.cash.eti.t7.v12.0.risklimitgroup", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_net_position_amount = ProtoField.new("Risk Limit Net Position Amount", "eurex.cash.eti.t7.v12.0.risklimitnetpositionamount", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_open_amount = ProtoField.new("Risk Limit Open Amount", "eurex.cash.eti.t7.v12.0.risklimitopenamount", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_report_id = ProtoField.new("Risk Limit Report Id", "eurex.cash.eti.t7.v12.0.risklimitreportid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_requesting_party_role = ProtoField.new("Risk Limit Requesting Party Role", "eurex.cash.eti.t7.v12.0.risklimitrequestingpartyrole", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_type = ProtoField.new("Risk Limit Type", "eurex.cash.eti.t7.v12.0.risklimittype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_violation_indicator = ProtoField.new("Risk Limit Violation Indicator", "eurex.cash.eti.t7.v12.0.risklimitviolationindicator", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.risk_limits_rpt_grp_comp = ProtoField.new("Risk Limits Rpt Grp Comp", "eurex.cash.eti.t7.v12.0.risklimitsrptgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_clearing_firm = ProtoField.new("Root Party Clearing Firm", "eurex.cash.eti.t7.v12.0.rootpartyclearingfirm", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_contra_firm = ProtoField.new("Root Party Contra Firm", "eurex.cash.eti.t7.v12.0.rootpartycontrafirm", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_contra_firm_kv_number = ProtoField.new("Root Party Contra Firm Kv Number", "eurex.cash.eti.t7.v12.0.rootpartycontrafirmkvnumber", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_contra_settlement_account = ProtoField.new("Root Party Contra Settlement Account", "eurex.cash.eti.t7.v12.0.rootpartycontrasettlementaccount", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_contra_settlement_firm = ProtoField.new("Root Party Contra Settlement Firm", "eurex.cash.eti.t7.v12.0.rootpartycontrasettlementfirm", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_contra_settlement_location = ProtoField.new("Root Party Contra Settlement Location", "eurex.cash.eti.t7.v12.0.rootpartycontrasettlementlocation", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_entering_trader = ProtoField.new("Root Party Entering Trader", "eurex.cash.eti.t7.v12.0.rootpartyenteringtrader", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_executing_firm = ProtoField.new("Root Party Executing Firm", "eurex.cash.eti.t7.v12.0.rootpartyexecutingfirm", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_executing_firm_kv_number = ProtoField.new("Root Party Executing Firm Kv Number", "eurex.cash.eti.t7.v12.0.rootpartyexecutingfirmkvnumber", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_executing_trader = ProtoField.new("Root Party Executing Trader", "eurex.cash.eti.t7.v12.0.rootpartyexecutingtrader", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_clearing_unit = ProtoField.new("Root Party Id Clearing Unit", "eurex.cash.eti.t7.v12.0.rootpartyidclearingunit", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_client_id = ProtoField.new("Root Party Id Client Id", "eurex.cash.eti.t7.v12.0.rootpartyidclientid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_contra_settlement_unit = ProtoField.new("Root Party Id Contra Settlement Unit", "eurex.cash.eti.t7.v12.0.rootpartyidcontrasettlementunit", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_contra_unit = ProtoField.new("Root Party Id Contra Unit", "eurex.cash.eti.t7.v12.0.rootpartyidcontraunit", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_executing_trader = ProtoField.new("Root Party Id Executing Trader", "eurex.cash.eti.t7.v12.0.rootpartyidexecutingtrader", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_executing_unit = ProtoField.new("Root Party Id Executing Unit", "eurex.cash.eti.t7.v12.0.rootpartyidexecutingunit", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_execution_venue = ProtoField.new("Root Party Id Execution Venue", "eurex.cash.eti.t7.v12.0.rootpartyidexecutionvenue", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_investment_decision_maker = ProtoField.new("Root Party Id Investment Decision Maker", "eurex.cash.eti.t7.v12.0.rootpartyidinvestmentdecisionmaker", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_investment_decision_maker_qualifier = ProtoField.new("Root Party Id Investment Decision Maker Qualifier", "eurex.cash.eti.t7.v12.0.rootpartyidinvestmentdecisionmakerqualifier", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_session_id = ProtoField.new("Root Party Id Session Id", "eurex.cash.eti.t7.v12.0.rootpartyidsessionid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_settlement_unit = ProtoField.new("Root Party Id Settlement Unit", "eurex.cash.eti.t7.v12.0.rootpartyidsettlementunit", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_settlement_account = ProtoField.new("Root Party Settlement Account", "eurex.cash.eti.t7.v12.0.rootpartysettlementaccount", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_settlement_firm = ProtoField.new("Root Party Settlement Firm", "eurex.cash.eti.t7.v12.0.rootpartysettlementfirm", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.root_party_settlement_location = ProtoField.new("Root Party Settlement Location", "eurex.cash.eti.t7.v12.0.rootpartysettlementlocation", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.secondary_quote_id = ProtoField.new("Secondary Quote Id", "eurex.cash.eti.t7.v12.0.secondaryquoteid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.secondary_trade_id = ProtoField.new("Secondary Trade Id", "eurex.cash.eti.t7.v12.0.secondarytradeid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.security_id = ProtoField.new("Security Id", "eurex.cash.eti.t7.v12.0.securityid", ftypes.INT64)
omi_eurex_cash_eti_t7_v12_0.fields.security_status = ProtoField.new("Security Status", "eurex.cash.eti.t7.v12.0.securitystatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.security_status_event_grp_comp = ProtoField.new("Security Status Event Grp Comp", "eurex.cash.eti.t7.v12.0.securitystatuseventgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.security_status_report_id = ProtoField.new("Security Status Report Id", "eurex.cash.eti.t7.v12.0.securitystatusreportid", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.security_trading_status = ProtoField.new("Security Trading Status", "eurex.cash.eti.t7.v12.0.securitytradingstatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.selective_request_for_quote_rtm_service_status = ProtoField.new("Selective Request For Quote Rtm Service Status", "eurex.cash.eti.t7.v12.0.selectiverequestforquotertmservicestatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.selective_request_for_quote_service_status = ProtoField.new("Selective Request For Quote Service Status", "eurex.cash.eti.t7.v12.0.selectiverequestforquoteservicestatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.selective_request_for_quote_service_trade_date = ProtoField.new("Selective Request For Quote Service Trade Date", "eurex.cash.eti.t7.v12.0.selectiverequestforquoteservicetradedate", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.sender_sub_id = ProtoField.new("Sender Sub Id", "eurex.cash.eti.t7.v12.0.sendersubid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.sending_time = ProtoField.new("Sending Time", "eurex.cash.eti.t7.v12.0.sendingtime", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.session_instance_id = ProtoField.new("Session Instance Id", "eurex.cash.eti.t7.v12.0.sessioninstanceid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.session_mode = ProtoField.new("Session Mode", "eurex.cash.eti.t7.v12.0.sessionmode", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.session_reject_reason = ProtoField.new("Session Reject Reason", "eurex.cash.eti.t7.v12.0.sessionrejectreason", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.session_status = ProtoField.new("Session Status", "eurex.cash.eti.t7.v12.0.sessionstatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.session_sub_mode = ProtoField.new("Session Sub Mode", "eurex.cash.eti.t7.v12.0.sessionsubmode", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.sessions_grp_comp = ProtoField.new("Sessions Grp Comp", "eurex.cash.eti.t7.v12.0.sessionsgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.settl_curr_amt = ProtoField.new("Settl Curr Amt", "eurex.cash.eti.t7.v12.0.settlcurramt", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.settl_curr_fx_rate = ProtoField.new("Settl Curr Fx Rate", "eurex.cash.eti.t7.v12.0.settlcurrfxrate", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.settl_currency = ProtoField.new("Settl Currency", "eurex.cash.eti.t7.v12.0.settlcurrency", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.settl_date = ProtoField.new("Settl Date", "eurex.cash.eti.t7.v12.0.settldate", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.side = ProtoField.new("Side", "eurex.cash.eti.t7.v12.0.side", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.side_alloc_grp_bc_comp = ProtoField.new("Side Alloc Grp Bc Comp", "eurex.cash.eti.t7.v12.0.sideallocgrpbccomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.side_alloc_grp_comp = ProtoField.new("Side Alloc Grp Comp", "eurex.cash.eti.t7.v12.0.sideallocgrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.side_disclosure_instruction = ProtoField.new("Side Disclosure Instruction", "eurex.cash.eti.t7.v12.0.sidedisclosureinstruction", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.side_gross_trade_amt = ProtoField.new("Side Gross Trade Amt", "eurex.cash.eti.t7.v12.0.sidegrosstradeamt", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.side_is_locked = ProtoField.new("Side Is Locked", "eurex.cash.eti.t7.v12.0.sideislocked", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.side_liquidity_ind = ProtoField.new("Side Liquidity Ind", "eurex.cash.eti.t7.v12.0.sideliquidityind", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.side_trade_id = ProtoField.new("Side Trade Id", "eurex.cash.eti.t7.v12.0.sidetradeid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.side_trade_report_id = ProtoField.new("Side Trade Report Id", "eurex.cash.eti.t7.v12.0.sidetradereportid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.sold_out_indicator = ProtoField.new("Sold Out Indicator", "eurex.cash.eti.t7.v12.0.soldoutindicator", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.srqs_quote_entry_grp_comp = ProtoField.new("Srqs Quote Entry Grp Comp", "eurex.cash.eti.t7.v12.0.srqsquoteentrygrpcomp", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.srqs_related_trade_id = ProtoField.new("Srqs Related Trade Id", "eurex.cash.eti.t7.v12.0.srqsrelatedtradeid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.stop_px = ProtoField.new("Stop Px", "eurex.cash.eti.t7.v12.0.stoppx", ftypes.DOUBLE)
omi_eurex_cash_eti_t7_v12_0.fields.stop_px_indicator = ProtoField.new("Stop Px Indicator", "eurex.cash.eti.t7.v12.0.stoppxindicator", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.subscription_scope = ProtoField.new("Subscription Scope", "eurex.cash.eti.t7.v12.0.subscriptionscope", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.t_7_entry_service_rtm_status = ProtoField.new("T 7 Entry Service Rtm Status", "eurex.cash.eti.t7.v12.0.t7entryservicertmstatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.t_7_entry_service_rtm_trade_date = ProtoField.new("T 7 Entry Service Rtm Trade Date", "eurex.cash.eti.t7.v12.0.t7entryservicertmtradedate", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.t_7_entry_service_status = ProtoField.new("T 7 Entry Service Status", "eurex.cash.eti.t7.v12.0.t7entryservicestatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.t_7_entry_service_trade_date = ProtoField.new("T 7 Entry Service Trade Date", "eurex.cash.eti.t7.v12.0.t7entryservicetradedate", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.target_party_entering_trader = ProtoField.new("Target Party Entering Trader", "eurex.cash.eti.t7.v12.0.targetpartyenteringtrader", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.target_party_executing_firm = ProtoField.new("Target Party Executing Firm", "eurex.cash.eti.t7.v12.0.targetpartyexecutingfirm", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.target_party_executing_trader = ProtoField.new("Target Party Executing Trader", "eurex.cash.eti.t7.v12.0.targetpartyexecutingtrader", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.target_party_id_desk_id = ProtoField.new("Target Party Id Desk Id", "eurex.cash.eti.t7.v12.0.targetpartyiddeskid", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.target_party_id_executing_trader = ProtoField.new("Target Party Id Executing Trader", "eurex.cash.eti.t7.v12.0.targetpartyidexecutingtrader", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.target_party_id_session_id = ProtoField.new("Target Party Id Session Id", "eurex.cash.eti.t7.v12.0.targetpartyidsessionid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.target_side = ProtoField.new("Target Side", "eurex.cash.eti.t7.v12.0.targetside", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.template_id = ProtoField.new("Template Id", "eurex.cash.eti.t7.v12.0.templateid", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.tes_enrichment_rule_id = ProtoField.new("Tes Enrichment Rule Id", "eurex.cash.eti.t7.v12.0.tesenrichmentruleid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.tes_exec_id = ProtoField.new("Tes Exec Id", "eurex.cash.eti.t7.v12.0.tesexecid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.throttle_disconnect_limit = ProtoField.new("Throttle Disconnect Limit", "eurex.cash.eti.t7.v12.0.throttledisconnectlimit", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.throttle_no_msgs = ProtoField.new("Throttle No Msgs", "eurex.cash.eti.t7.v12.0.throttlenomsgs", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.throttle_time_interval = ProtoField.new("Throttle Time Interval", "eurex.cash.eti.t7.v12.0.throttletimeinterval", ftypes.INT64)
omi_eurex_cash_eti_t7_v12_0.fields.time_in_force = ProtoField.new("Time In Force", "eurex.cash.eti.t7.v12.0.timeinforce", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.trad_ses_event = ProtoField.new("Trad Ses Event", "eurex.cash.eti.t7.v12.0.tradsesevent", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.trad_ses_mode = ProtoField.new("Trad Ses Mode", "eurex.cash.eti.t7.v12.0.tradsesmode", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.trade_alloc_status = ProtoField.new("Trade Alloc Status", "eurex.cash.eti.t7.v12.0.tradeallocstatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.trade_at_close_opt_in = ProtoField.new("Trade At Close Opt In", "eurex.cash.eti.t7.v12.0.tradeatcloseoptin", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.trade_date = ProtoField.new("Trade Date", "eurex.cash.eti.t7.v12.0.tradedate", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.trade_id = ProtoField.new("Trade Id", "eurex.cash.eti.t7.v12.0.tradeid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.trade_manager_status = ProtoField.new("Trade Manager Status", "eurex.cash.eti.t7.v12.0.trademanagerstatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.trade_manager_trade_date = ProtoField.new("Trade Manager Trade Date", "eurex.cash.eti.t7.v12.0.trademanagertradedate", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.trade_number = ProtoField.new("Trade Number", "eurex.cash.eti.t7.v12.0.tradenumber", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.trade_publish_indicator = ProtoField.new("Trade Publish Indicator", "eurex.cash.eti.t7.v12.0.tradepublishindicator", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.trade_report_id = ProtoField.new("Trade Report Id", "eurex.cash.eti.t7.v12.0.tradereportid", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.trade_report_text = ProtoField.new("Trade Report Text", "eurex.cash.eti.t7.v12.0.tradereporttext", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.trade_report_type = ProtoField.new("Trade Report Type", "eurex.cash.eti.t7.v12.0.tradereporttype", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.trading_capacity = ProtoField.new("Trading Capacity", "eurex.cash.eti.t7.v12.0.tradingcapacity", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.trading_session_sub_id = ProtoField.new("Trading Session Sub Id", "eurex.cash.eti.t7.v12.0.tradingsessionsubid", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.trans_bkd_time = ProtoField.new("Trans Bkd Time", "eurex.cash.eti.t7.v12.0.transbkdtime", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.transact_time = ProtoField.new("Transact Time", "eurex.cash.eti.t7.v12.0.transacttime", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.transaction_delay_indicator = ProtoField.new("Transaction Delay Indicator", "eurex.cash.eti.t7.v12.0.transactiondelayindicator", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.transfer_reason = ProtoField.new("Transfer Reason", "eurex.cash.eti.t7.v12.0.transferreason", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.trd_match_id = ProtoField.new("Trd Match Id", "eurex.cash.eti.t7.v12.0.trdmatchid", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.trd_reg_ts_entry_time = ProtoField.new("Trd Reg Ts Entry Time", "eurex.cash.eti.t7.v12.0.trdregtsentrytime", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.trd_reg_ts_execution_time = ProtoField.new("Trd Reg Ts Execution Time", "eurex.cash.eti.t7.v12.0.trdregtsexecutiontime", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.trd_reg_ts_time_in = ProtoField.new("Trd Reg Ts Time In", "eurex.cash.eti.t7.v12.0.trdregtstimein", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.trd_reg_ts_time_out = ProtoField.new("Trd Reg Ts Time Out", "eurex.cash.eti.t7.v12.0.trdregtstimeout", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.trd_reg_ts_time_priority = ProtoField.new("Trd Reg Ts Time Priority", "eurex.cash.eti.t7.v12.0.trdregtstimepriority", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.trd_rpt_status = ProtoField.new("Trd Rpt Status", "eurex.cash.eti.t7.v12.0.trdrptstatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.trd_type = ProtoField.new("Trd Type", "eurex.cash.eti.t7.v12.0.trdtype", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.triggered = ProtoField.new("Triggered", "eurex.cash.eti.t7.v12.0.triggered", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.user_status = ProtoField.new("User Status", "eurex.cash.eti.t7.v12.0.userstatus", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.username = ProtoField.new("Username", "eurex.cash.eti.t7.v12.0.username", ftypes.UINT32)
omi_eurex_cash_eti_t7_v12_0.fields.valid_until_time = ProtoField.new("Valid Until Time", "eurex.cash.eti.t7.v12.0.validuntiltime", ftypes.UINT64)
omi_eurex_cash_eti_t7_v12_0.fields.value_check_type_quantity = ProtoField.new("Value Check Type Quantity", "eurex.cash.eti.t7.v12.0.valuechecktypequantity", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.value_check_type_value = ProtoField.new("Value Check Type Value", "eurex.cash.eti.t7.v12.0.valuechecktypevalue", ftypes.UINT8)
omi_eurex_cash_eti_t7_v12_0.fields.var_text = ProtoField.new("Var Text", "eurex.cash.eti.t7.v12.0.vartext", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.var_text_len = ProtoField.new("Var Text Len", "eurex.cash.eti.t7.v12.0.vartextlen", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_target_parties_comp = ProtoField.new("Xetra En Light Target Parties Comp", "eurex.cash.eti.t7.v12.0.xetraenlighttargetpartiescomp", ftypes.STRING)

-- Eurex Cash Eti T7 12.0 messages
omi_eurex_cash_eti_t7_v12_0.fields.approve_tes_trade_request = ProtoField.new("Approve Tes Trade Request", "eurex.cash.eti.t7.v12.0.approvetestraderequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.broadcast_error_notification = ProtoField.new("Broadcast Error Notification", "eurex.cash.eti.t7.v12.0.broadcasterrornotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.cross_request = ProtoField.new("Cross Request", "eurex.cash.eti.t7.v12.0.crossrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.cross_request_response = ProtoField.new("Cross Request Response", "eurex.cash.eti.t7.v12.0.crossrequestresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_all_order_broadcast = ProtoField.new("Delete All Order Broadcast", "eurex.cash.eti.t7.v12.0.deleteallorderbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_all_order_nr_response = ProtoField.new("Delete All Order Nr Response", "eurex.cash.eti.t7.v12.0.deleteallordernrresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_all_order_quote_event_broadcast = ProtoField.new("Delete All Order Quote Event Broadcast", "eurex.cash.eti.t7.v12.0.deleteallorderquoteeventbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_all_order_request = ProtoField.new("Delete All Order Request", "eurex.cash.eti.t7.v12.0.deleteallorderrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_all_order_response = ProtoField.new("Delete All Order Response", "eurex.cash.eti.t7.v12.0.deleteallorderresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_all_quote_broadcast = ProtoField.new("Delete All Quote Broadcast", "eurex.cash.eti.t7.v12.0.deleteallquotebroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_all_quote_request = ProtoField.new("Delete All Quote Request", "eurex.cash.eti.t7.v12.0.deleteallquoterequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_all_quote_response = ProtoField.new("Delete All Quote Response", "eurex.cash.eti.t7.v12.0.deleteallquoteresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_order_broadcast = ProtoField.new("Delete Order Broadcast", "eurex.cash.eti.t7.v12.0.deleteorderbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_order_nr_response = ProtoField.new("Delete Order Nr Response", "eurex.cash.eti.t7.v12.0.deleteordernrresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_order_response = ProtoField.new("Delete Order Response", "eurex.cash.eti.t7.v12.0.deleteorderresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_order_single_request = ProtoField.new("Delete Order Single Request", "eurex.cash.eti.t7.v12.0.deleteordersinglerequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.delete_tes_trade_request = ProtoField.new("Delete Tes Trade Request", "eurex.cash.eti.t7.v12.0.deletetestraderequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.enter_tes_trade_request = ProtoField.new("Enter Tes Trade Request", "eurex.cash.eti.t7.v12.0.entertestraderequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.extended_deletion_report = ProtoField.new("Extended Deletion Report", "eurex.cash.eti.t7.v12.0.extendeddeletionreport", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.forced_logout_notification = ProtoField.new("Forced Logout Notification", "eurex.cash.eti.t7.v12.0.forcedlogoutnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.forced_user_logout_notification = ProtoField.new("Forced User Logout Notification", "eurex.cash.eti.t7.v12.0.forceduserlogoutnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.heartbeat = ProtoField.new("Heartbeat", "eurex.cash.eti.t7.v12.0.heartbeat", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.heartbeat_notification = ProtoField.new("Heartbeat Notification", "eurex.cash.eti.t7.v12.0.heartbeatnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.inquire_enrichment_rule_id_list_request = ProtoField.new("Inquire Enrichment Rule Id List Request", "eurex.cash.eti.t7.v12.0.inquireenrichmentruleidlistrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.inquire_enrichment_rule_id_list_response = ProtoField.new("Inquire Enrichment Rule Id List Response", "eurex.cash.eti.t7.v12.0.inquireenrichmentruleidlistresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.inquire_pre_trade_risk_limits_request = ProtoField.new("Inquire Pre Trade Risk Limits Request", "eurex.cash.eti.t7.v12.0.inquirepretraderisklimitsrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.inquire_session_list_request = ProtoField.new("Inquire Session List Request", "eurex.cash.eti.t7.v12.0.inquiresessionlistrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.inquire_session_list_response = ProtoField.new("Inquire Session List Response", "eurex.cash.eti.t7.v12.0.inquiresessionlistresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.inquire_user_request = ProtoField.new("Inquire User Request", "eurex.cash.eti.t7.v12.0.inquireuserrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.inquire_user_response = ProtoField.new("Inquire User Response", "eurex.cash.eti.t7.v12.0.inquireuserresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.issuer_notification = ProtoField.new("Issuer Notification", "eurex.cash.eti.t7.v12.0.issuernotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.issuer_security_state_change_request = ProtoField.new("Issuer Security State Change Request", "eurex.cash.eti.t7.v12.0.issuersecuritystatechangerequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.issuer_security_state_change_response = ProtoField.new("Issuer Security State Change Response", "eurex.cash.eti.t7.v12.0.issuersecuritystatechangeresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.legal_notification_broadcast = ProtoField.new("Legal Notification Broadcast", "eurex.cash.eti.t7.v12.0.legalnotificationbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.logon_request = ProtoField.new("Logon Request", "eurex.cash.eti.t7.v12.0.logonrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.logon_request_encrypted = ProtoField.new("Logon Request Encrypted", "eurex.cash.eti.t7.v12.0.logonrequestencrypted", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.logon_response = ProtoField.new("Logon Response", "eurex.cash.eti.t7.v12.0.logonresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.logout_request = ProtoField.new("Logout Request", "eurex.cash.eti.t7.v12.0.logoutrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.logout_response = ProtoField.new("Logout Response", "eurex.cash.eti.t7.v12.0.logoutresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.mass_quote_request = ProtoField.new("Mass Quote Request", "eurex.cash.eti.t7.v12.0.massquoterequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.mass_quote_response = ProtoField.new("Mass Quote Response", "eurex.cash.eti.t7.v12.0.massquoteresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.modify_order_nr_response = ProtoField.new("Modify Order Nr Response", "eurex.cash.eti.t7.v12.0.modifyordernrresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.modify_order_response = ProtoField.new("Modify Order Response", "eurex.cash.eti.t7.v12.0.modifyorderresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.modify_order_single_request = ProtoField.new("Modify Order Single Request", "eurex.cash.eti.t7.v12.0.modifyordersinglerequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.modify_order_single_short_request = ProtoField.new("Modify Order Single Short Request", "eurex.cash.eti.t7.v12.0.modifyordersingleshortrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.modify_tes_trade_request = ProtoField.new("Modify Tes Trade Request", "eurex.cash.eti.t7.v12.0.modifytestraderequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.new_order_nr_response = ProtoField.new("New Order Nr Response", "eurex.cash.eti.t7.v12.0.newordernrresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.new_order_response = ProtoField.new("New Order Response", "eurex.cash.eti.t7.v12.0.neworderresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.new_order_single_request = ProtoField.new("New Order Single Request", "eurex.cash.eti.t7.v12.0.newordersinglerequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.new_order_single_short_request = ProtoField.new("New Order Single Short Request", "eurex.cash.eti.t7.v12.0.newordersingleshortrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.news_broadcast = ProtoField.new("News Broadcast", "eurex.cash.eti.t7.v12.0.newsbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.order_exec_notification = ProtoField.new("Order Exec Notification", "eurex.cash.eti.t7.v12.0.orderexecnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.order_exec_report_broadcast = ProtoField.new("Order Exec Report Broadcast", "eurex.cash.eti.t7.v12.0.orderexecreportbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.order_exec_response = ProtoField.new("Order Exec Response", "eurex.cash.eti.t7.v12.0.orderexecresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.party_action_report = ProtoField.new("Party Action Report", "eurex.cash.eti.t7.v12.0.partyactionreport", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.party_entitlements_update_report = ProtoField.new("Party Entitlements Update Report", "eurex.cash.eti.t7.v12.0.partyentitlementsupdatereport", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.ping_request = ProtoField.new("Ping Request", "eurex.cash.eti.t7.v12.0.pingrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.ping_response = ProtoField.new("Ping Response", "eurex.cash.eti.t7.v12.0.pingresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.pre_trade_risk_limit_response = ProtoField.new("Pre Trade Risk Limit Response", "eurex.cash.eti.t7.v12.0.pretraderisklimitresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.pre_trade_risk_limits_definition_request = ProtoField.new("Pre Trade Risk Limits Definition Request", "eurex.cash.eti.t7.v12.0.pretraderisklimitsdefinitionrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.quote_activation_notification = ProtoField.new("Quote Activation Notification", "eurex.cash.eti.t7.v12.0.quoteactivationnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.quote_activation_request = ProtoField.new("Quote Activation Request", "eurex.cash.eti.t7.v12.0.quoteactivationrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.quote_activation_response = ProtoField.new("Quote Activation Response", "eurex.cash.eti.t7.v12.0.quoteactivationresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.quote_execution_report = ProtoField.new("Quote Execution Report", "eurex.cash.eti.t7.v12.0.quoteexecutionreport", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.reject = ProtoField.new("Reject", "eurex.cash.eti.t7.v12.0.reject", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.retransmit_me_message_request = ProtoField.new("Retransmit Me Message Request", "eurex.cash.eti.t7.v12.0.retransmitmemessagerequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.retransmit_me_message_response = ProtoField.new("Retransmit Me Message Response", "eurex.cash.eti.t7.v12.0.retransmitmemessageresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.retransmit_request = ProtoField.new("Retransmit Request", "eurex.cash.eti.t7.v12.0.retransmitrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.retransmit_response = ProtoField.new("Retransmit Response", "eurex.cash.eti.t7.v12.0.retransmitresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.rfq_broadcast = ProtoField.new("Rfq Broadcast", "eurex.cash.eti.t7.v12.0.rfqbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.rfq_reject_notification = ProtoField.new("Rfq Reject Notification", "eurex.cash.eti.t7.v12.0.rfqrejectnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.rfq_request = ProtoField.new("Rfq Request", "eurex.cash.eti.t7.v12.0.rfqrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.rfq_response = ProtoField.new("Rfq Response", "eurex.cash.eti.t7.v12.0.rfqresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.rfq_specialist_broadcast = ProtoField.new("Rfq Specialist Broadcast", "eurex.cash.eti.t7.v12.0.rfqspecialistbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.service_availability_broadcast = ProtoField.new("Service Availability Broadcast", "eurex.cash.eti.t7.v12.0.serviceavailabilitybroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.service_availability_market_broadcast = ProtoField.new("Service Availability Market Broadcast", "eurex.cash.eti.t7.v12.0.serviceavailabilitymarketbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.single_quote_request = ProtoField.new("Single Quote Request", "eurex.cash.eti.t7.v12.0.singlequoterequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.specialist_delete_all_order_broadcast = ProtoField.new("Specialist Delete All Order Broadcast", "eurex.cash.eti.t7.v12.0.specialistdeleteallorderbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.specialist_instrument_event_notification = ProtoField.new("Specialist Instrument Event Notification", "eurex.cash.eti.t7.v12.0.specialistinstrumenteventnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.specialist_order_book_notification = ProtoField.new("Specialist Order Book Notification", "eurex.cash.eti.t7.v12.0.specialistorderbooknotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.specialist_rfq_reject_request = ProtoField.new("Specialist Rfq Reject Request", "eurex.cash.eti.t7.v12.0.specialistrfqrejectrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.specialist_rfq_reply_notification = ProtoField.new("Specialist Rfq Reply Notification", "eurex.cash.eti.t7.v12.0.specialistrfqreplynotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.specialist_rfq_reply_request = ProtoField.new("Specialist Rfq Reply Request", "eurex.cash.eti.t7.v12.0.specialistrfqreplyrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.specialist_rfq_reply_response = ProtoField.new("Specialist Rfq Reply Response", "eurex.cash.eti.t7.v12.0.specialistrfqreplyresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.specialist_security_state_change_request = ProtoField.new("Specialist Security State Change Request", "eurex.cash.eti.t7.v12.0.specialistsecuritystatechangerequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.specialist_security_state_change_response = ProtoField.new("Specialist Security State Change Response", "eurex.cash.eti.t7.v12.0.specialistsecuritystatechangeresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.status_broadcast = ProtoField.new("Status Broadcast", "eurex.cash.eti.t7.v12.0.statusbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.subscribe_request = ProtoField.new("Subscribe Request", "eurex.cash.eti.t7.v12.0.subscriberequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.subscribe_response = ProtoField.new("Subscribe Response", "eurex.cash.eti.t7.v12.0.subscriberesponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.tes_approve_broadcast = ProtoField.new("Tes Approve Broadcast", "eurex.cash.eti.t7.v12.0.tesapprovebroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.tes_broadcast = ProtoField.new("Tes Broadcast", "eurex.cash.eti.t7.v12.0.tesbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.tes_delete_broadcast = ProtoField.new("Tes Delete Broadcast", "eurex.cash.eti.t7.v12.0.tesdeletebroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.tes_execution_broadcast = ProtoField.new("Tes Execution Broadcast", "eurex.cash.eti.t7.v12.0.tesexecutionbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.tes_response = ProtoField.new("Tes Response", "eurex.cash.eti.t7.v12.0.tesresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.tes_trade_broadcast = ProtoField.new("Tes Trade Broadcast", "eurex.cash.eti.t7.v12.0.testradebroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.tes_trading_session_status_broadcast = ProtoField.new("Tes Trading Session Status Broadcast", "eurex.cash.eti.t7.v12.0.testradingsessionstatusbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.throttle_update_notification = ProtoField.new("Throttle Update Notification", "eurex.cash.eti.t7.v12.0.throttleupdatenotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.tm_trading_session_status_broadcast = ProtoField.new("Tm Trading Session Status Broadcast", "eurex.cash.eti.t7.v12.0.tmtradingsessionstatusbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.trade_broadcast = ProtoField.new("Trade Broadcast", "eurex.cash.eti.t7.v12.0.tradebroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.trading_session_status_broadcast = ProtoField.new("Trading Session Status Broadcast", "eurex.cash.eti.t7.v12.0.tradingsessionstatusbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.trailing_stop_update_notification = ProtoField.new("Trailing Stop Update Notification", "eurex.cash.eti.t7.v12.0.trailingstopupdatenotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.unsubscribe_request = ProtoField.new("Unsubscribe Request", "eurex.cash.eti.t7.v12.0.unsubscriberequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.unsubscribe_response = ProtoField.new("Unsubscribe Response", "eurex.cash.eti.t7.v12.0.unsubscriberesponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.user_login_request = ProtoField.new("User Login Request", "eurex.cash.eti.t7.v12.0.userloginrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.user_login_request_encrypted = ProtoField.new("User Login Request Encrypted", "eurex.cash.eti.t7.v12.0.userloginrequestencrypted", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.user_login_response = ProtoField.new("User Login Response", "eurex.cash.eti.t7.v12.0.userloginresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.user_logout_request = ProtoField.new("User Logout Request", "eurex.cash.eti.t7.v12.0.userlogoutrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.user_logout_response = ProtoField.new("User Logout Response", "eurex.cash.eti.t7.v12.0.userlogoutresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_approve_deal_notification = ProtoField.new("Xetra En Light Approve Deal Notification", "eurex.cash.eti.t7.v12.0.xetraenlightapprovedealnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_approve_deal_request = ProtoField.new("Xetra En Light Approve Deal Request", "eurex.cash.eti.t7.v12.0.xetraenlightapprovedealrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_create_deal_notification = ProtoField.new("Xetra En Light Create Deal Notification", "eurex.cash.eti.t7.v12.0.xetraenlightcreatedealnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_deal_response = ProtoField.new("Xetra En Light Deal Response", "eurex.cash.eti.t7.v12.0.xetraenlightdealresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_deal_status_notification = ProtoField.new("Xetra En Light Deal Status Notification", "eurex.cash.eti.t7.v12.0.xetraenlightdealstatusnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_delete_all_quote_notification = ProtoField.new("Xetra En Light Delete All Quote Notification", "eurex.cash.eti.t7.v12.0.xetraenlightdeleteallquotenotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_delete_all_quote_request = ProtoField.new("Xetra En Light Delete All Quote Request", "eurex.cash.eti.t7.v12.0.xetraenlightdeleteallquoterequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_enter_quote_request = ProtoField.new("Xetra En Light Enter Quote Request", "eurex.cash.eti.t7.v12.0.xetraenlightenterquoterequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_hit_quote_request = ProtoField.new("Xetra En Light Hit Quote Request", "eurex.cash.eti.t7.v12.0.xetraenlighthitquoterequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_negotiation_notification = ProtoField.new("Xetra En Light Negotiation Notification", "eurex.cash.eti.t7.v12.0.xetraenlightnegotiationnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_negotiation_requester_notification = ProtoField.new("Xetra En Light Negotiation Requester Notification", "eurex.cash.eti.t7.v12.0.xetraenlightnegotiationrequesternotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_negotiation_status_notification = ProtoField.new("Xetra En Light Negotiation Status Notification", "eurex.cash.eti.t7.v12.0.xetraenlightnegotiationstatusnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_open_negotiation_notification = ProtoField.new("Xetra En Light Open Negotiation Notification", "eurex.cash.eti.t7.v12.0.xetraenlightopennegotiationnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_open_negotiation_request = ProtoField.new("Xetra En Light Open Negotiation Request", "eurex.cash.eti.t7.v12.0.xetraenlightopennegotiationrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_open_negotiation_requester_notification = ProtoField.new("Xetra En Light Open Negotiation Requester Notification", "eurex.cash.eti.t7.v12.0.xetraenlightopennegotiationrequesternotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_quote_notification = ProtoField.new("Xetra En Light Quote Notification", "eurex.cash.eti.t7.v12.0.xetraenlightquotenotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_quote_requester_notification = ProtoField.new("Xetra En Light Quote Requester Notification", "eurex.cash.eti.t7.v12.0.xetraenlightquoterequesternotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_quote_response = ProtoField.new("Xetra En Light Quote Response", "eurex.cash.eti.t7.v12.0.xetraenlightquoteresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_quote_snapshot_notification = ProtoField.new("Xetra En Light Quote Snapshot Notification", "eurex.cash.eti.t7.v12.0.xetraenlightquotesnapshotnotification", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_quote_snapshot_request = ProtoField.new("Xetra En Light Quote Snapshot Request", "eurex.cash.eti.t7.v12.0.xetraenlightquotesnapshotrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_quoting_status_request = ProtoField.new("Xetra En Light Quoting Status Request", "eurex.cash.eti.t7.v12.0.xetraenlightquotingstatusrequest", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_response = ProtoField.new("Xetra En Light Response", "eurex.cash.eti.t7.v12.0.xetraenlightresponse", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_status_broadcast = ProtoField.new("Xetra En Light Status Broadcast", "eurex.cash.eti.t7.v12.0.xetraenlightstatusbroadcast", ftypes.STRING)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_update_negotiation_request = ProtoField.new("Xetra En Light Update Negotiation Request", "eurex.cash.eti.t7.v12.0.xetraenlightupdatenegotiationrequest", ftypes.STRING)

-- Eurex Cash Eti T7 12.0 generated fields
omi_eurex_cash_eti_t7_v12_0.fields.affected_ord_grp_comp_index = ProtoField.new("Affected Ord Grp Comp Index", "eurex.cash.eti.t7.v12.0.affectedordgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.affected_order_requests_grp_comp_index = ProtoField.new("Affected Order Requests Grp Comp Index", "eurex.cash.eti.t7.v12.0.affectedorderrequestsgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.enrichment_rules_grp_comp_index = ProtoField.new("Enrichment Rules Grp Comp Index", "eurex.cash.eti.t7.v12.0.enrichmentrulesgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.fills_grp_comp_index = ProtoField.new("Fills Grp Comp Index", "eurex.cash.eti.t7.v12.0.fillsgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.not_affected_orders_grp_comp_index = ProtoField.new("Not Affected Orders Grp Comp Index", "eurex.cash.eti.t7.v12.0.notaffectedordersgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.not_affected_securities_grp_comp_index = ProtoField.new("Not Affected Securities Grp Comp Index", "eurex.cash.eti.t7.v12.0.notaffectedsecuritiesgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.order_book_item_grp_comp_index = ProtoField.new("Order Book Item Grp Comp Index", "eurex.cash.eti.t7.v12.0.orderbookitemgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.order_event_grp_comp_index = ProtoField.new("Order Event Grp Comp Index", "eurex.cash.eti.t7.v12.0.ordereventgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.party_details_grp_comp_index = ProtoField.new("Party Details Grp Comp Index", "eurex.cash.eti.t7.v12.0.partydetailsgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.quote_entry_ack_grp_comp_index = ProtoField.new("Quote Entry Ack Grp Comp Index", "eurex.cash.eti.t7.v12.0.quoteentryackgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.quote_entry_grp_comp_index = ProtoField.new("Quote Entry Grp Comp Index", "eurex.cash.eti.t7.v12.0.quoteentrygrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.quote_event_grp_comp_index = ProtoField.new("Quote Event Grp Comp Index", "eurex.cash.eti.t7.v12.0.quoteeventgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_amount_grp_comp_index = ProtoField.new("Risk Limit Amount Grp Comp Index", "eurex.cash.eti.t7.v12.0.risklimitamountgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.risk_limits_rpt_grp_comp_index = ProtoField.new("Risk Limits Rpt Grp Comp Index", "eurex.cash.eti.t7.v12.0.risklimitsrptgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.security_status_event_grp_comp_index = ProtoField.new("Security Status Event Grp Comp Index", "eurex.cash.eti.t7.v12.0.securitystatuseventgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.sessions_grp_comp_index = ProtoField.new("Sessions Grp Comp Index", "eurex.cash.eti.t7.v12.0.sessionsgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.side_alloc_grp_bc_comp_index = ProtoField.new("Side Alloc Grp Bc Comp Index", "eurex.cash.eti.t7.v12.0.sideallocgrpbccompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.side_alloc_grp_comp_index = ProtoField.new("Side Alloc Grp Comp Index", "eurex.cash.eti.t7.v12.0.sideallocgrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.srqs_quote_entry_grp_comp_index = ProtoField.new("Srqs Quote Entry Grp Comp Index", "eurex.cash.eti.t7.v12.0.srqsquoteentrygrpcompindex", ftypes.UINT16)
omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_target_parties_comp_index = ProtoField.new("Xetra En Light Target Parties Comp Index", "eurex.cash.eti.t7.v12.0.xetraenlighttargetpartiescompindex", ftypes.UINT16)

-----------------------------------------------------------------------
-- Declare Dissection Options
-----------------------------------------------------------------------

local show = {}

-- Eurex Cash Eti T7 12.0 Element Dissection Options
show.affected_ord_grp_comp = true
show.affected_order_requests_grp_comp = true
show.approve_tes_trade_request = true
show.broadcast_error_notification = true
show.cross_request = true
show.cross_request_response = true
show.delete_all_order_broadcast = true
show.delete_all_order_nr_response = true
show.delete_all_order_quote_event_broadcast = true
show.delete_all_order_request = true
show.delete_all_order_response = true
show.delete_all_quote_broadcast = true
show.delete_all_quote_request = true
show.delete_all_quote_response = true
show.delete_order_broadcast = true
show.delete_order_nr_response = true
show.delete_order_response = true
show.delete_order_single_request = true
show.delete_tes_trade_request = true
show.enrichment_rules_grp_comp = true
show.enter_tes_trade_request = true
show.extended_deletion_report = true
show.fills_grp_comp = true
show.forced_logout_notification = true
show.forced_user_logout_notification = true
show.heartbeat = true
show.heartbeat_notification = true
show.inquire_enrichment_rule_id_list_request = true
show.inquire_enrichment_rule_id_list_response = true
show.inquire_pre_trade_risk_limits_request = true
show.inquire_session_list_request = true
show.inquire_session_list_response = true
show.inquire_user_request = true
show.inquire_user_response = true
show.issuer_notification = true
show.issuer_security_state_change_request = true
show.issuer_security_state_change_response = true
show.legal_notification_broadcast = true
show.logon_request = true
show.logon_request_encrypted = true
show.logon_response = true
show.logout_request = true
show.logout_response = true
show.mass_quote_request = true
show.mass_quote_response = true
show.message = true
show.message_header = true
show.modify_order_nr_response = true
show.modify_order_response = true
show.modify_order_single_request = true
show.modify_order_single_short_request = true
show.modify_tes_trade_request = true
show.new_order_nr_response = true
show.new_order_response = true
show.new_order_single_request = true
show.new_order_single_short_request = true
show.news_broadcast = true
show.not_affected_orders_grp_comp = true
show.not_affected_securities_grp_comp = true
show.notif_header_comp = true
show.nr_response_header_me_comp = true
show.nrbc_header_comp = true
show.order_book_item_grp_comp = true
show.order_event_grp_comp = true
show.order_exec_notification = true
show.order_exec_report_broadcast = true
show.order_exec_response = true
show.packet = true
show.party_action_report = true
show.party_details_grp_comp = true
show.party_entitlements_update_report = true
show.ping_request = true
show.ping_response = true
show.pre_trade_risk_limit_response = true
show.pre_trade_risk_limits_definition_request = true
show.quote_activation_notification = true
show.quote_activation_request = true
show.quote_activation_response = true
show.quote_entry_ack_grp_comp = true
show.quote_entry_grp_comp = true
show.quote_event_grp_comp = true
show.quote_execution_report = true
show.rbc_header_comp = true
show.rbc_header_me_comp = true
show.reject = true
show.request_header_comp = true
show.response_header_comp = true
show.response_header_me_comp = true
show.retransmit_me_message_request = true
show.retransmit_me_message_response = true
show.retransmit_request = true
show.retransmit_response = true
show.rfq_broadcast = true
show.rfq_reject_notification = true
show.rfq_request = true
show.rfq_response = true
show.rfq_specialist_broadcast = true
show.risk_limit_amount_grp_comp = true
show.risk_limits_rpt_grp_comp = true
show.security_status_event_grp_comp = true
show.service_availability_broadcast = true
show.service_availability_market_broadcast = true
show.sessions_grp_comp = true
show.side_alloc_grp_bc_comp = true
show.side_alloc_grp_comp = true
show.single_quote_request = true
show.specialist_delete_all_order_broadcast = true
show.specialist_instrument_event_notification = true
show.specialist_order_book_notification = true
show.specialist_rfq_reject_request = true
show.specialist_rfq_reply_notification = true
show.specialist_rfq_reply_request = true
show.specialist_rfq_reply_response = true
show.specialist_security_state_change_request = true
show.specialist_security_state_change_response = true
show.srqs_quote_entry_grp_comp = true
show.status_broadcast = true
show.subscribe_request = true
show.subscribe_response = true
show.tes_approve_broadcast = true
show.tes_broadcast = true
show.tes_delete_broadcast = true
show.tes_execution_broadcast = true
show.tes_response = true
show.tes_trade_broadcast = true
show.tes_trading_session_status_broadcast = true
show.throttle_update_notification = true
show.tm_trading_session_status_broadcast = true
show.trade_broadcast = true
show.trading_session_status_broadcast = true
show.trailing_stop_update_notification = true
show.unsubscribe_request = true
show.unsubscribe_response = true
show.user_login_request = true
show.user_login_request_encrypted = true
show.user_login_response = true
show.user_logout_request = true
show.user_logout_response = true
show.xetra_en_light_approve_deal_notification = true
show.xetra_en_light_approve_deal_request = true
show.xetra_en_light_create_deal_notification = true
show.xetra_en_light_deal_response = true
show.xetra_en_light_deal_status_notification = true
show.xetra_en_light_delete_all_quote_notification = true
show.xetra_en_light_delete_all_quote_request = true
show.xetra_en_light_enter_quote_request = true
show.xetra_en_light_hit_quote_request = true
show.xetra_en_light_negotiation_notification = true
show.xetra_en_light_negotiation_requester_notification = true
show.xetra_en_light_negotiation_status_notification = true
show.xetra_en_light_open_negotiation_notification = true
show.xetra_en_light_open_negotiation_request = true
show.xetra_en_light_open_negotiation_requester_notification = true
show.xetra_en_light_quote_notification = true
show.xetra_en_light_quote_requester_notification = true
show.xetra_en_light_quote_response = true
show.xetra_en_light_quote_snapshot_notification = true
show.xetra_en_light_quote_snapshot_request = true
show.xetra_en_light_quoting_status_request = true
show.xetra_en_light_response = true
show.xetra_en_light_status_broadcast = true
show.xetra_en_light_target_parties_comp = true
show.xetra_en_light_update_negotiation_request = true
show.payload = false

-- Register Eurex Cash Eti T7 12.0 Show Options
omi_eurex_cash_eti_t7_v12_0.prefs.show_affected_ord_grp_comp = Pref.bool("Show Affected Ord Grp Comp", show.affected_ord_grp_comp, "Parse and add Affected Ord Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_affected_order_requests_grp_comp = Pref.bool("Show Affected Order Requests Grp Comp", show.affected_order_requests_grp_comp, "Parse and add Affected Order Requests Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_approve_tes_trade_request = Pref.bool("Show Approve Tes Trade Request", show.approve_tes_trade_request, "Parse and add Approve Tes Trade Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_broadcast_error_notification = Pref.bool("Show Broadcast Error Notification", show.broadcast_error_notification, "Parse and add Broadcast Error Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_cross_request = Pref.bool("Show Cross Request", show.cross_request, "Parse and add Cross Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_cross_request_response = Pref.bool("Show Cross Request Response", show.cross_request_response, "Parse and add Cross Request Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_broadcast = Pref.bool("Show Delete All Order Broadcast", show.delete_all_order_broadcast, "Parse and add Delete All Order Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_nr_response = Pref.bool("Show Delete All Order Nr Response", show.delete_all_order_nr_response, "Parse and add Delete All Order Nr Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_quote_event_broadcast = Pref.bool("Show Delete All Order Quote Event Broadcast", show.delete_all_order_quote_event_broadcast, "Parse and add Delete All Order Quote Event Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_request = Pref.bool("Show Delete All Order Request", show.delete_all_order_request, "Parse and add Delete All Order Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_response = Pref.bool("Show Delete All Order Response", show.delete_all_order_response, "Parse and add Delete All Order Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_quote_broadcast = Pref.bool("Show Delete All Quote Broadcast", show.delete_all_quote_broadcast, "Parse and add Delete All Quote Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_quote_request = Pref.bool("Show Delete All Quote Request", show.delete_all_quote_request, "Parse and add Delete All Quote Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_quote_response = Pref.bool("Show Delete All Quote Response", show.delete_all_quote_response, "Parse and add Delete All Quote Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_order_broadcast = Pref.bool("Show Delete Order Broadcast", show.delete_order_broadcast, "Parse and add Delete Order Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_order_nr_response = Pref.bool("Show Delete Order Nr Response", show.delete_order_nr_response, "Parse and add Delete Order Nr Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_order_response = Pref.bool("Show Delete Order Response", show.delete_order_response, "Parse and add Delete Order Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_order_single_request = Pref.bool("Show Delete Order Single Request", show.delete_order_single_request, "Parse and add Delete Order Single Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_tes_trade_request = Pref.bool("Show Delete Tes Trade Request", show.delete_tes_trade_request, "Parse and add Delete Tes Trade Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_enrichment_rules_grp_comp = Pref.bool("Show Enrichment Rules Grp Comp", show.enrichment_rules_grp_comp, "Parse and add Enrichment Rules Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_enter_tes_trade_request = Pref.bool("Show Enter Tes Trade Request", show.enter_tes_trade_request, "Parse and add Enter Tes Trade Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_extended_deletion_report = Pref.bool("Show Extended Deletion Report", show.extended_deletion_report, "Parse and add Extended Deletion Report to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_fills_grp_comp = Pref.bool("Show Fills Grp Comp", show.fills_grp_comp, "Parse and add Fills Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_forced_logout_notification = Pref.bool("Show Forced Logout Notification", show.forced_logout_notification, "Parse and add Forced Logout Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_forced_user_logout_notification = Pref.bool("Show Forced User Logout Notification", show.forced_user_logout_notification, "Parse and add Forced User Logout Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_heartbeat = Pref.bool("Show Heartbeat", show.heartbeat, "Parse and add Heartbeat to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_heartbeat_notification = Pref.bool("Show Heartbeat Notification", show.heartbeat_notification, "Parse and add Heartbeat Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_enrichment_rule_id_list_request = Pref.bool("Show Inquire Enrichment Rule Id List Request", show.inquire_enrichment_rule_id_list_request, "Parse and add Inquire Enrichment Rule Id List Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_enrichment_rule_id_list_response = Pref.bool("Show Inquire Enrichment Rule Id List Response", show.inquire_enrichment_rule_id_list_response, "Parse and add Inquire Enrichment Rule Id List Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_pre_trade_risk_limits_request = Pref.bool("Show Inquire Pre Trade Risk Limits Request", show.inquire_pre_trade_risk_limits_request, "Parse and add Inquire Pre Trade Risk Limits Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_session_list_request = Pref.bool("Show Inquire Session List Request", show.inquire_session_list_request, "Parse and add Inquire Session List Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_session_list_response = Pref.bool("Show Inquire Session List Response", show.inquire_session_list_response, "Parse and add Inquire Session List Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_user_request = Pref.bool("Show Inquire User Request", show.inquire_user_request, "Parse and add Inquire User Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_user_response = Pref.bool("Show Inquire User Response", show.inquire_user_response, "Parse and add Inquire User Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_issuer_notification = Pref.bool("Show Issuer Notification", show.issuer_notification, "Parse and add Issuer Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_issuer_security_state_change_request = Pref.bool("Show Issuer Security State Change Request", show.issuer_security_state_change_request, "Parse and add Issuer Security State Change Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_issuer_security_state_change_response = Pref.bool("Show Issuer Security State Change Response", show.issuer_security_state_change_response, "Parse and add Issuer Security State Change Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_legal_notification_broadcast = Pref.bool("Show Legal Notification Broadcast", show.legal_notification_broadcast, "Parse and add Legal Notification Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_logon_request = Pref.bool("Show Logon Request", show.logon_request, "Parse and add Logon Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_logon_request_encrypted = Pref.bool("Show Logon Request Encrypted", show.logon_request_encrypted, "Parse and add Logon Request Encrypted to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_logon_response = Pref.bool("Show Logon Response", show.logon_response, "Parse and add Logon Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_logout_request = Pref.bool("Show Logout Request", show.logout_request, "Parse and add Logout Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_logout_response = Pref.bool("Show Logout Response", show.logout_response, "Parse and add Logout Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_mass_quote_request = Pref.bool("Show Mass Quote Request", show.mass_quote_request, "Parse and add Mass Quote Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_mass_quote_response = Pref.bool("Show Mass Quote Response", show.mass_quote_response, "Parse and add Mass Quote Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_message = Pref.bool("Show Message", show.message, "Parse and add Message to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_message_header = Pref.bool("Show Message Header", show.message_header, "Parse and add Message Header to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_order_nr_response = Pref.bool("Show Modify Order Nr Response", show.modify_order_nr_response, "Parse and add Modify Order Nr Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_order_response = Pref.bool("Show Modify Order Response", show.modify_order_response, "Parse and add Modify Order Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_order_single_request = Pref.bool("Show Modify Order Single Request", show.modify_order_single_request, "Parse and add Modify Order Single Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_order_single_short_request = Pref.bool("Show Modify Order Single Short Request", show.modify_order_single_short_request, "Parse and add Modify Order Single Short Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_tes_trade_request = Pref.bool("Show Modify Tes Trade Request", show.modify_tes_trade_request, "Parse and add Modify Tes Trade Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_new_order_nr_response = Pref.bool("Show New Order Nr Response", show.new_order_nr_response, "Parse and add New Order Nr Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_new_order_response = Pref.bool("Show New Order Response", show.new_order_response, "Parse and add New Order Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_new_order_single_request = Pref.bool("Show New Order Single Request", show.new_order_single_request, "Parse and add New Order Single Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_new_order_single_short_request = Pref.bool("Show New Order Single Short Request", show.new_order_single_short_request, "Parse and add New Order Single Short Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_news_broadcast = Pref.bool("Show News Broadcast", show.news_broadcast, "Parse and add News Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_not_affected_orders_grp_comp = Pref.bool("Show Not Affected Orders Grp Comp", show.not_affected_orders_grp_comp, "Parse and add Not Affected Orders Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_not_affected_securities_grp_comp = Pref.bool("Show Not Affected Securities Grp Comp", show.not_affected_securities_grp_comp, "Parse and add Not Affected Securities Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_notif_header_comp = Pref.bool("Show Notif Header Comp", show.notif_header_comp, "Parse and add Notif Header Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_nr_response_header_me_comp = Pref.bool("Show Nr Response Header Me Comp", show.nr_response_header_me_comp, "Parse and add Nr Response Header Me Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_nrbc_header_comp = Pref.bool("Show Nrbc Header Comp", show.nrbc_header_comp, "Parse and add Nrbc Header Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_order_book_item_grp_comp = Pref.bool("Show Order Book Item Grp Comp", show.order_book_item_grp_comp, "Parse and add Order Book Item Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_order_event_grp_comp = Pref.bool("Show Order Event Grp Comp", show.order_event_grp_comp, "Parse and add Order Event Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_order_exec_notification = Pref.bool("Show Order Exec Notification", show.order_exec_notification, "Parse and add Order Exec Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_order_exec_report_broadcast = Pref.bool("Show Order Exec Report Broadcast", show.order_exec_report_broadcast, "Parse and add Order Exec Report Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_order_exec_response = Pref.bool("Show Order Exec Response", show.order_exec_response, "Parse and add Order Exec Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_packet = Pref.bool("Show Packet", show.packet, "Parse and add Packet to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_party_action_report = Pref.bool("Show Party Action Report", show.party_action_report, "Parse and add Party Action Report to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_party_details_grp_comp = Pref.bool("Show Party Details Grp Comp", show.party_details_grp_comp, "Parse and add Party Details Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_party_entitlements_update_report = Pref.bool("Show Party Entitlements Update Report", show.party_entitlements_update_report, "Parse and add Party Entitlements Update Report to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_ping_request = Pref.bool("Show Ping Request", show.ping_request, "Parse and add Ping Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_ping_response = Pref.bool("Show Ping Response", show.ping_response, "Parse and add Ping Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_pre_trade_risk_limit_response = Pref.bool("Show Pre Trade Risk Limit Response", show.pre_trade_risk_limit_response, "Parse and add Pre Trade Risk Limit Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_pre_trade_risk_limits_definition_request = Pref.bool("Show Pre Trade Risk Limits Definition Request", show.pre_trade_risk_limits_definition_request, "Parse and add Pre Trade Risk Limits Definition Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_activation_notification = Pref.bool("Show Quote Activation Notification", show.quote_activation_notification, "Parse and add Quote Activation Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_activation_request = Pref.bool("Show Quote Activation Request", show.quote_activation_request, "Parse and add Quote Activation Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_activation_response = Pref.bool("Show Quote Activation Response", show.quote_activation_response, "Parse and add Quote Activation Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_entry_ack_grp_comp = Pref.bool("Show Quote Entry Ack Grp Comp", show.quote_entry_ack_grp_comp, "Parse and add Quote Entry Ack Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_entry_grp_comp = Pref.bool("Show Quote Entry Grp Comp", show.quote_entry_grp_comp, "Parse and add Quote Entry Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_event_grp_comp = Pref.bool("Show Quote Event Grp Comp", show.quote_event_grp_comp, "Parse and add Quote Event Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_execution_report = Pref.bool("Show Quote Execution Report", show.quote_execution_report, "Parse and add Quote Execution Report to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_rbc_header_comp = Pref.bool("Show Rbc Header Comp", show.rbc_header_comp, "Parse and add Rbc Header Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_rbc_header_me_comp = Pref.bool("Show Rbc Header Me Comp", show.rbc_header_me_comp, "Parse and add Rbc Header Me Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_reject = Pref.bool("Show Reject", show.reject, "Parse and add Reject to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_request_header_comp = Pref.bool("Show Request Header Comp", show.request_header_comp, "Parse and add Request Header Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_response_header_comp = Pref.bool("Show Response Header Comp", show.response_header_comp, "Parse and add Response Header Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_response_header_me_comp = Pref.bool("Show Response Header Me Comp", show.response_header_me_comp, "Parse and add Response Header Me Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_retransmit_me_message_request = Pref.bool("Show Retransmit Me Message Request", show.retransmit_me_message_request, "Parse and add Retransmit Me Message Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_retransmit_me_message_response = Pref.bool("Show Retransmit Me Message Response", show.retransmit_me_message_response, "Parse and add Retransmit Me Message Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_retransmit_request = Pref.bool("Show Retransmit Request", show.retransmit_request, "Parse and add Retransmit Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_retransmit_response = Pref.bool("Show Retransmit Response", show.retransmit_response, "Parse and add Retransmit Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_broadcast = Pref.bool("Show Rfq Broadcast", show.rfq_broadcast, "Parse and add Rfq Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_reject_notification = Pref.bool("Show Rfq Reject Notification", show.rfq_reject_notification, "Parse and add Rfq Reject Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_request = Pref.bool("Show Rfq Request", show.rfq_request, "Parse and add Rfq Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_response = Pref.bool("Show Rfq Response", show.rfq_response, "Parse and add Rfq Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_specialist_broadcast = Pref.bool("Show Rfq Specialist Broadcast", show.rfq_specialist_broadcast, "Parse and add Rfq Specialist Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_risk_limit_amount_grp_comp = Pref.bool("Show Risk Limit Amount Grp Comp", show.risk_limit_amount_grp_comp, "Parse and add Risk Limit Amount Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_risk_limits_rpt_grp_comp = Pref.bool("Show Risk Limits Rpt Grp Comp", show.risk_limits_rpt_grp_comp, "Parse and add Risk Limits Rpt Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_security_status_event_grp_comp = Pref.bool("Show Security Status Event Grp Comp", show.security_status_event_grp_comp, "Parse and add Security Status Event Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_service_availability_broadcast = Pref.bool("Show Service Availability Broadcast", show.service_availability_broadcast, "Parse and add Service Availability Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_service_availability_market_broadcast = Pref.bool("Show Service Availability Market Broadcast", show.service_availability_market_broadcast, "Parse and add Service Availability Market Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_sessions_grp_comp = Pref.bool("Show Sessions Grp Comp", show.sessions_grp_comp, "Parse and add Sessions Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_side_alloc_grp_bc_comp = Pref.bool("Show Side Alloc Grp Bc Comp", show.side_alloc_grp_bc_comp, "Parse and add Side Alloc Grp Bc Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_side_alloc_grp_comp = Pref.bool("Show Side Alloc Grp Comp", show.side_alloc_grp_comp, "Parse and add Side Alloc Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_single_quote_request = Pref.bool("Show Single Quote Request", show.single_quote_request, "Parse and add Single Quote Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_delete_all_order_broadcast = Pref.bool("Show Specialist Delete All Order Broadcast", show.specialist_delete_all_order_broadcast, "Parse and add Specialist Delete All Order Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_instrument_event_notification = Pref.bool("Show Specialist Instrument Event Notification", show.specialist_instrument_event_notification, "Parse and add Specialist Instrument Event Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_order_book_notification = Pref.bool("Show Specialist Order Book Notification", show.specialist_order_book_notification, "Parse and add Specialist Order Book Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_rfq_reject_request = Pref.bool("Show Specialist Rfq Reject Request", show.specialist_rfq_reject_request, "Parse and add Specialist Rfq Reject Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_rfq_reply_notification = Pref.bool("Show Specialist Rfq Reply Notification", show.specialist_rfq_reply_notification, "Parse and add Specialist Rfq Reply Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_rfq_reply_request = Pref.bool("Show Specialist Rfq Reply Request", show.specialist_rfq_reply_request, "Parse and add Specialist Rfq Reply Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_rfq_reply_response = Pref.bool("Show Specialist Rfq Reply Response", show.specialist_rfq_reply_response, "Parse and add Specialist Rfq Reply Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_security_state_change_request = Pref.bool("Show Specialist Security State Change Request", show.specialist_security_state_change_request, "Parse and add Specialist Security State Change Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_security_state_change_response = Pref.bool("Show Specialist Security State Change Response", show.specialist_security_state_change_response, "Parse and add Specialist Security State Change Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_srqs_quote_entry_grp_comp = Pref.bool("Show Srqs Quote Entry Grp Comp", show.srqs_quote_entry_grp_comp, "Parse and add Srqs Quote Entry Grp Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_status_broadcast = Pref.bool("Show Status Broadcast", show.status_broadcast, "Parse and add Status Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_subscribe_request = Pref.bool("Show Subscribe Request", show.subscribe_request, "Parse and add Subscribe Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_subscribe_response = Pref.bool("Show Subscribe Response", show.subscribe_response, "Parse and add Subscribe Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_approve_broadcast = Pref.bool("Show Tes Approve Broadcast", show.tes_approve_broadcast, "Parse and add Tes Approve Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_broadcast = Pref.bool("Show Tes Broadcast", show.tes_broadcast, "Parse and add Tes Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_delete_broadcast = Pref.bool("Show Tes Delete Broadcast", show.tes_delete_broadcast, "Parse and add Tes Delete Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_execution_broadcast = Pref.bool("Show Tes Execution Broadcast", show.tes_execution_broadcast, "Parse and add Tes Execution Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_response = Pref.bool("Show Tes Response", show.tes_response, "Parse and add Tes Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_trade_broadcast = Pref.bool("Show Tes Trade Broadcast", show.tes_trade_broadcast, "Parse and add Tes Trade Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_trading_session_status_broadcast = Pref.bool("Show Tes Trading Session Status Broadcast", show.tes_trading_session_status_broadcast, "Parse and add Tes Trading Session Status Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_throttle_update_notification = Pref.bool("Show Throttle Update Notification", show.throttle_update_notification, "Parse and add Throttle Update Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_tm_trading_session_status_broadcast = Pref.bool("Show Tm Trading Session Status Broadcast", show.tm_trading_session_status_broadcast, "Parse and add Tm Trading Session Status Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_trade_broadcast = Pref.bool("Show Trade Broadcast", show.trade_broadcast, "Parse and add Trade Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_trading_session_status_broadcast = Pref.bool("Show Trading Session Status Broadcast", show.trading_session_status_broadcast, "Parse and add Trading Session Status Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_trailing_stop_update_notification = Pref.bool("Show Trailing Stop Update Notification", show.trailing_stop_update_notification, "Parse and add Trailing Stop Update Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_unsubscribe_request = Pref.bool("Show Unsubscribe Request", show.unsubscribe_request, "Parse and add Unsubscribe Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_unsubscribe_response = Pref.bool("Show Unsubscribe Response", show.unsubscribe_response, "Parse and add Unsubscribe Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_user_login_request = Pref.bool("Show User Login Request", show.user_login_request, "Parse and add User Login Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_user_login_request_encrypted = Pref.bool("Show User Login Request Encrypted", show.user_login_request_encrypted, "Parse and add User Login Request Encrypted to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_user_login_response = Pref.bool("Show User Login Response", show.user_login_response, "Parse and add User Login Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_user_logout_request = Pref.bool("Show User Logout Request", show.user_logout_request, "Parse and add User Logout Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_user_logout_response = Pref.bool("Show User Logout Response", show.user_logout_response, "Parse and add User Logout Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_approve_deal_notification = Pref.bool("Show Xetra En Light Approve Deal Notification", show.xetra_en_light_approve_deal_notification, "Parse and add Xetra En Light Approve Deal Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_approve_deal_request = Pref.bool("Show Xetra En Light Approve Deal Request", show.xetra_en_light_approve_deal_request, "Parse and add Xetra En Light Approve Deal Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_create_deal_notification = Pref.bool("Show Xetra En Light Create Deal Notification", show.xetra_en_light_create_deal_notification, "Parse and add Xetra En Light Create Deal Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_deal_response = Pref.bool("Show Xetra En Light Deal Response", show.xetra_en_light_deal_response, "Parse and add Xetra En Light Deal Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_deal_status_notification = Pref.bool("Show Xetra En Light Deal Status Notification", show.xetra_en_light_deal_status_notification, "Parse and add Xetra En Light Deal Status Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_delete_all_quote_notification = Pref.bool("Show Xetra En Light Delete All Quote Notification", show.xetra_en_light_delete_all_quote_notification, "Parse and add Xetra En Light Delete All Quote Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_delete_all_quote_request = Pref.bool("Show Xetra En Light Delete All Quote Request", show.xetra_en_light_delete_all_quote_request, "Parse and add Xetra En Light Delete All Quote Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_enter_quote_request = Pref.bool("Show Xetra En Light Enter Quote Request", show.xetra_en_light_enter_quote_request, "Parse and add Xetra En Light Enter Quote Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_hit_quote_request = Pref.bool("Show Xetra En Light Hit Quote Request", show.xetra_en_light_hit_quote_request, "Parse and add Xetra En Light Hit Quote Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_negotiation_notification = Pref.bool("Show Xetra En Light Negotiation Notification", show.xetra_en_light_negotiation_notification, "Parse and add Xetra En Light Negotiation Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_negotiation_requester_notification = Pref.bool("Show Xetra En Light Negotiation Requester Notification", show.xetra_en_light_negotiation_requester_notification, "Parse and add Xetra En Light Negotiation Requester Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_negotiation_status_notification = Pref.bool("Show Xetra En Light Negotiation Status Notification", show.xetra_en_light_negotiation_status_notification, "Parse and add Xetra En Light Negotiation Status Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_open_negotiation_notification = Pref.bool("Show Xetra En Light Open Negotiation Notification", show.xetra_en_light_open_negotiation_notification, "Parse and add Xetra En Light Open Negotiation Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_open_negotiation_request = Pref.bool("Show Xetra En Light Open Negotiation Request", show.xetra_en_light_open_negotiation_request, "Parse and add Xetra En Light Open Negotiation Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_open_negotiation_requester_notification = Pref.bool("Show Xetra En Light Open Negotiation Requester Notification", show.xetra_en_light_open_negotiation_requester_notification, "Parse and add Xetra En Light Open Negotiation Requester Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_notification = Pref.bool("Show Xetra En Light Quote Notification", show.xetra_en_light_quote_notification, "Parse and add Xetra En Light Quote Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_requester_notification = Pref.bool("Show Xetra En Light Quote Requester Notification", show.xetra_en_light_quote_requester_notification, "Parse and add Xetra En Light Quote Requester Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_response = Pref.bool("Show Xetra En Light Quote Response", show.xetra_en_light_quote_response, "Parse and add Xetra En Light Quote Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_snapshot_notification = Pref.bool("Show Xetra En Light Quote Snapshot Notification", show.xetra_en_light_quote_snapshot_notification, "Parse and add Xetra En Light Quote Snapshot Notification to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_snapshot_request = Pref.bool("Show Xetra En Light Quote Snapshot Request", show.xetra_en_light_quote_snapshot_request, "Parse and add Xetra En Light Quote Snapshot Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quoting_status_request = Pref.bool("Show Xetra En Light Quoting Status Request", show.xetra_en_light_quoting_status_request, "Parse and add Xetra En Light Quoting Status Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_response = Pref.bool("Show Xetra En Light Response", show.xetra_en_light_response, "Parse and add Xetra En Light Response to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_status_broadcast = Pref.bool("Show Xetra En Light Status Broadcast", show.xetra_en_light_status_broadcast, "Parse and add Xetra En Light Status Broadcast to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_target_parties_comp = Pref.bool("Show Xetra En Light Target Parties Comp", show.xetra_en_light_target_parties_comp, "Parse and add Xetra En Light Target Parties Comp to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_update_negotiation_request = Pref.bool("Show Xetra En Light Update Negotiation Request", show.xetra_en_light_update_negotiation_request, "Parse and add Xetra En Light Update Negotiation Request to protocol tree")
omi_eurex_cash_eti_t7_v12_0.prefs.show_payload = Pref.bool("Show Payload", show.payload, "Parse and add Payload to protocol tree")

-- Handle changed preferences
function omi_eurex_cash_eti_t7_v12_0.prefs_changed()
  local changed = false

  -- Check if show options have changed
  if show.affected_ord_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_affected_ord_grp_comp then
    show.affected_ord_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_affected_ord_grp_comp
    changed = true
  end
  if show.affected_order_requests_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_affected_order_requests_grp_comp then
    show.affected_order_requests_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_affected_order_requests_grp_comp
    changed = true
  end
  if show.approve_tes_trade_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_approve_tes_trade_request then
    show.approve_tes_trade_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_approve_tes_trade_request
    changed = true
  end
  if show.broadcast_error_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_broadcast_error_notification then
    show.broadcast_error_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_broadcast_error_notification
    changed = true
  end
  if show.cross_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_cross_request then
    show.cross_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_cross_request
    changed = true
  end
  if show.cross_request_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_cross_request_response then
    show.cross_request_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_cross_request_response
    changed = true
  end
  if show.delete_all_order_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_broadcast then
    show.delete_all_order_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_broadcast
    changed = true
  end
  if show.delete_all_order_nr_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_nr_response then
    show.delete_all_order_nr_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_nr_response
    changed = true
  end
  if show.delete_all_order_quote_event_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_quote_event_broadcast then
    show.delete_all_order_quote_event_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_quote_event_broadcast
    changed = true
  end
  if show.delete_all_order_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_request then
    show.delete_all_order_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_request
    changed = true
  end
  if show.delete_all_order_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_response then
    show.delete_all_order_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_order_response
    changed = true
  end
  if show.delete_all_quote_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_quote_broadcast then
    show.delete_all_quote_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_quote_broadcast
    changed = true
  end
  if show.delete_all_quote_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_quote_request then
    show.delete_all_quote_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_quote_request
    changed = true
  end
  if show.delete_all_quote_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_quote_response then
    show.delete_all_quote_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_all_quote_response
    changed = true
  end
  if show.delete_order_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_order_broadcast then
    show.delete_order_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_order_broadcast
    changed = true
  end
  if show.delete_order_nr_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_order_nr_response then
    show.delete_order_nr_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_order_nr_response
    changed = true
  end
  if show.delete_order_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_order_response then
    show.delete_order_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_order_response
    changed = true
  end
  if show.delete_order_single_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_order_single_request then
    show.delete_order_single_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_order_single_request
    changed = true
  end
  if show.delete_tes_trade_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_tes_trade_request then
    show.delete_tes_trade_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_delete_tes_trade_request
    changed = true
  end
  if show.enrichment_rules_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_enrichment_rules_grp_comp then
    show.enrichment_rules_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_enrichment_rules_grp_comp
    changed = true
  end
  if show.enter_tes_trade_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_enter_tes_trade_request then
    show.enter_tes_trade_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_enter_tes_trade_request
    changed = true
  end
  if show.extended_deletion_report ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_extended_deletion_report then
    show.extended_deletion_report = omi_eurex_cash_eti_t7_v12_0.prefs.show_extended_deletion_report
    changed = true
  end
  if show.fills_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_fills_grp_comp then
    show.fills_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_fills_grp_comp
    changed = true
  end
  if show.forced_logout_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_forced_logout_notification then
    show.forced_logout_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_forced_logout_notification
    changed = true
  end
  if show.forced_user_logout_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_forced_user_logout_notification then
    show.forced_user_logout_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_forced_user_logout_notification
    changed = true
  end
  if show.heartbeat ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_heartbeat then
    show.heartbeat = omi_eurex_cash_eti_t7_v12_0.prefs.show_heartbeat
    changed = true
  end
  if show.heartbeat_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_heartbeat_notification then
    show.heartbeat_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_heartbeat_notification
    changed = true
  end
  if show.inquire_enrichment_rule_id_list_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_enrichment_rule_id_list_request then
    show.inquire_enrichment_rule_id_list_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_enrichment_rule_id_list_request
    changed = true
  end
  if show.inquire_enrichment_rule_id_list_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_enrichment_rule_id_list_response then
    show.inquire_enrichment_rule_id_list_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_enrichment_rule_id_list_response
    changed = true
  end
  if show.inquire_pre_trade_risk_limits_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_pre_trade_risk_limits_request then
    show.inquire_pre_trade_risk_limits_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_pre_trade_risk_limits_request
    changed = true
  end
  if show.inquire_session_list_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_session_list_request then
    show.inquire_session_list_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_session_list_request
    changed = true
  end
  if show.inquire_session_list_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_session_list_response then
    show.inquire_session_list_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_session_list_response
    changed = true
  end
  if show.inquire_user_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_user_request then
    show.inquire_user_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_user_request
    changed = true
  end
  if show.inquire_user_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_user_response then
    show.inquire_user_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_inquire_user_response
    changed = true
  end
  if show.issuer_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_issuer_notification then
    show.issuer_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_issuer_notification
    changed = true
  end
  if show.issuer_security_state_change_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_issuer_security_state_change_request then
    show.issuer_security_state_change_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_issuer_security_state_change_request
    changed = true
  end
  if show.issuer_security_state_change_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_issuer_security_state_change_response then
    show.issuer_security_state_change_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_issuer_security_state_change_response
    changed = true
  end
  if show.legal_notification_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_legal_notification_broadcast then
    show.legal_notification_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_legal_notification_broadcast
    changed = true
  end
  if show.logon_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_logon_request then
    show.logon_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_logon_request
    changed = true
  end
  if show.logon_request_encrypted ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_logon_request_encrypted then
    show.logon_request_encrypted = omi_eurex_cash_eti_t7_v12_0.prefs.show_logon_request_encrypted
    changed = true
  end
  if show.logon_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_logon_response then
    show.logon_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_logon_response
    changed = true
  end
  if show.logout_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_logout_request then
    show.logout_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_logout_request
    changed = true
  end
  if show.logout_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_logout_response then
    show.logout_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_logout_response
    changed = true
  end
  if show.mass_quote_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_mass_quote_request then
    show.mass_quote_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_mass_quote_request
    changed = true
  end
  if show.mass_quote_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_mass_quote_response then
    show.mass_quote_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_mass_quote_response
    changed = true
  end
  if show.message ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_message then
    show.message = omi_eurex_cash_eti_t7_v12_0.prefs.show_message
    changed = true
  end
  if show.message_header ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_message_header then
    show.message_header = omi_eurex_cash_eti_t7_v12_0.prefs.show_message_header
    changed = true
  end
  if show.modify_order_nr_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_order_nr_response then
    show.modify_order_nr_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_order_nr_response
    changed = true
  end
  if show.modify_order_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_order_response then
    show.modify_order_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_order_response
    changed = true
  end
  if show.modify_order_single_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_order_single_request then
    show.modify_order_single_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_order_single_request
    changed = true
  end
  if show.modify_order_single_short_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_order_single_short_request then
    show.modify_order_single_short_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_order_single_short_request
    changed = true
  end
  if show.modify_tes_trade_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_tes_trade_request then
    show.modify_tes_trade_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_modify_tes_trade_request
    changed = true
  end
  if show.new_order_nr_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_new_order_nr_response then
    show.new_order_nr_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_new_order_nr_response
    changed = true
  end
  if show.new_order_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_new_order_response then
    show.new_order_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_new_order_response
    changed = true
  end
  if show.new_order_single_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_new_order_single_request then
    show.new_order_single_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_new_order_single_request
    changed = true
  end
  if show.new_order_single_short_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_new_order_single_short_request then
    show.new_order_single_short_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_new_order_single_short_request
    changed = true
  end
  if show.news_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_news_broadcast then
    show.news_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_news_broadcast
    changed = true
  end
  if show.not_affected_orders_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_not_affected_orders_grp_comp then
    show.not_affected_orders_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_not_affected_orders_grp_comp
    changed = true
  end
  if show.not_affected_securities_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_not_affected_securities_grp_comp then
    show.not_affected_securities_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_not_affected_securities_grp_comp
    changed = true
  end
  if show.notif_header_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_notif_header_comp then
    show.notif_header_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_notif_header_comp
    changed = true
  end
  if show.nr_response_header_me_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_nr_response_header_me_comp then
    show.nr_response_header_me_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_nr_response_header_me_comp
    changed = true
  end
  if show.nrbc_header_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_nrbc_header_comp then
    show.nrbc_header_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_nrbc_header_comp
    changed = true
  end
  if show.order_book_item_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_order_book_item_grp_comp then
    show.order_book_item_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_order_book_item_grp_comp
    changed = true
  end
  if show.order_event_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_order_event_grp_comp then
    show.order_event_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_order_event_grp_comp
    changed = true
  end
  if show.order_exec_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_order_exec_notification then
    show.order_exec_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_order_exec_notification
    changed = true
  end
  if show.order_exec_report_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_order_exec_report_broadcast then
    show.order_exec_report_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_order_exec_report_broadcast
    changed = true
  end
  if show.order_exec_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_order_exec_response then
    show.order_exec_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_order_exec_response
    changed = true
  end
  if show.packet ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_packet then
    show.packet = omi_eurex_cash_eti_t7_v12_0.prefs.show_packet
    changed = true
  end
  if show.party_action_report ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_party_action_report then
    show.party_action_report = omi_eurex_cash_eti_t7_v12_0.prefs.show_party_action_report
    changed = true
  end
  if show.party_details_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_party_details_grp_comp then
    show.party_details_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_party_details_grp_comp
    changed = true
  end
  if show.party_entitlements_update_report ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_party_entitlements_update_report then
    show.party_entitlements_update_report = omi_eurex_cash_eti_t7_v12_0.prefs.show_party_entitlements_update_report
    changed = true
  end
  if show.ping_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_ping_request then
    show.ping_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_ping_request
    changed = true
  end
  if show.ping_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_ping_response then
    show.ping_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_ping_response
    changed = true
  end
  if show.pre_trade_risk_limit_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_pre_trade_risk_limit_response then
    show.pre_trade_risk_limit_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_pre_trade_risk_limit_response
    changed = true
  end
  if show.pre_trade_risk_limits_definition_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_pre_trade_risk_limits_definition_request then
    show.pre_trade_risk_limits_definition_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_pre_trade_risk_limits_definition_request
    changed = true
  end
  if show.quote_activation_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_activation_notification then
    show.quote_activation_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_activation_notification
    changed = true
  end
  if show.quote_activation_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_activation_request then
    show.quote_activation_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_activation_request
    changed = true
  end
  if show.quote_activation_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_activation_response then
    show.quote_activation_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_activation_response
    changed = true
  end
  if show.quote_entry_ack_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_entry_ack_grp_comp then
    show.quote_entry_ack_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_entry_ack_grp_comp
    changed = true
  end
  if show.quote_entry_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_entry_grp_comp then
    show.quote_entry_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_entry_grp_comp
    changed = true
  end
  if show.quote_event_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_event_grp_comp then
    show.quote_event_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_event_grp_comp
    changed = true
  end
  if show.quote_execution_report ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_execution_report then
    show.quote_execution_report = omi_eurex_cash_eti_t7_v12_0.prefs.show_quote_execution_report
    changed = true
  end
  if show.rbc_header_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_rbc_header_comp then
    show.rbc_header_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_rbc_header_comp
    changed = true
  end
  if show.rbc_header_me_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_rbc_header_me_comp then
    show.rbc_header_me_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_rbc_header_me_comp
    changed = true
  end
  if show.reject ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_reject then
    show.reject = omi_eurex_cash_eti_t7_v12_0.prefs.show_reject
    changed = true
  end
  if show.request_header_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_request_header_comp then
    show.request_header_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_request_header_comp
    changed = true
  end
  if show.response_header_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_response_header_comp then
    show.response_header_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_response_header_comp
    changed = true
  end
  if show.response_header_me_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_response_header_me_comp then
    show.response_header_me_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_response_header_me_comp
    changed = true
  end
  if show.retransmit_me_message_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_retransmit_me_message_request then
    show.retransmit_me_message_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_retransmit_me_message_request
    changed = true
  end
  if show.retransmit_me_message_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_retransmit_me_message_response then
    show.retransmit_me_message_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_retransmit_me_message_response
    changed = true
  end
  if show.retransmit_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_retransmit_request then
    show.retransmit_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_retransmit_request
    changed = true
  end
  if show.retransmit_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_retransmit_response then
    show.retransmit_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_retransmit_response
    changed = true
  end
  if show.rfq_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_broadcast then
    show.rfq_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_broadcast
    changed = true
  end
  if show.rfq_reject_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_reject_notification then
    show.rfq_reject_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_reject_notification
    changed = true
  end
  if show.rfq_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_request then
    show.rfq_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_request
    changed = true
  end
  if show.rfq_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_response then
    show.rfq_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_response
    changed = true
  end
  if show.rfq_specialist_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_specialist_broadcast then
    show.rfq_specialist_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_rfq_specialist_broadcast
    changed = true
  end
  if show.risk_limit_amount_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_risk_limit_amount_grp_comp then
    show.risk_limit_amount_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_risk_limit_amount_grp_comp
    changed = true
  end
  if show.risk_limits_rpt_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_risk_limits_rpt_grp_comp then
    show.risk_limits_rpt_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_risk_limits_rpt_grp_comp
    changed = true
  end
  if show.security_status_event_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_security_status_event_grp_comp then
    show.security_status_event_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_security_status_event_grp_comp
    changed = true
  end
  if show.service_availability_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_service_availability_broadcast then
    show.service_availability_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_service_availability_broadcast
    changed = true
  end
  if show.service_availability_market_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_service_availability_market_broadcast then
    show.service_availability_market_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_service_availability_market_broadcast
    changed = true
  end
  if show.sessions_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_sessions_grp_comp then
    show.sessions_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_sessions_grp_comp
    changed = true
  end
  if show.side_alloc_grp_bc_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_side_alloc_grp_bc_comp then
    show.side_alloc_grp_bc_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_side_alloc_grp_bc_comp
    changed = true
  end
  if show.side_alloc_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_side_alloc_grp_comp then
    show.side_alloc_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_side_alloc_grp_comp
    changed = true
  end
  if show.single_quote_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_single_quote_request then
    show.single_quote_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_single_quote_request
    changed = true
  end
  if show.specialist_delete_all_order_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_delete_all_order_broadcast then
    show.specialist_delete_all_order_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_delete_all_order_broadcast
    changed = true
  end
  if show.specialist_instrument_event_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_instrument_event_notification then
    show.specialist_instrument_event_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_instrument_event_notification
    changed = true
  end
  if show.specialist_order_book_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_order_book_notification then
    show.specialist_order_book_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_order_book_notification
    changed = true
  end
  if show.specialist_rfq_reject_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_rfq_reject_request then
    show.specialist_rfq_reject_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_rfq_reject_request
    changed = true
  end
  if show.specialist_rfq_reply_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_rfq_reply_notification then
    show.specialist_rfq_reply_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_rfq_reply_notification
    changed = true
  end
  if show.specialist_rfq_reply_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_rfq_reply_request then
    show.specialist_rfq_reply_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_rfq_reply_request
    changed = true
  end
  if show.specialist_rfq_reply_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_rfq_reply_response then
    show.specialist_rfq_reply_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_rfq_reply_response
    changed = true
  end
  if show.specialist_security_state_change_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_security_state_change_request then
    show.specialist_security_state_change_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_security_state_change_request
    changed = true
  end
  if show.specialist_security_state_change_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_security_state_change_response then
    show.specialist_security_state_change_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_specialist_security_state_change_response
    changed = true
  end
  if show.srqs_quote_entry_grp_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_srqs_quote_entry_grp_comp then
    show.srqs_quote_entry_grp_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_srqs_quote_entry_grp_comp
    changed = true
  end
  if show.status_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_status_broadcast then
    show.status_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_status_broadcast
    changed = true
  end
  if show.subscribe_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_subscribe_request then
    show.subscribe_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_subscribe_request
    changed = true
  end
  if show.subscribe_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_subscribe_response then
    show.subscribe_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_subscribe_response
    changed = true
  end
  if show.tes_approve_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_approve_broadcast then
    show.tes_approve_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_approve_broadcast
    changed = true
  end
  if show.tes_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_broadcast then
    show.tes_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_broadcast
    changed = true
  end
  if show.tes_delete_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_delete_broadcast then
    show.tes_delete_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_delete_broadcast
    changed = true
  end
  if show.tes_execution_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_execution_broadcast then
    show.tes_execution_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_execution_broadcast
    changed = true
  end
  if show.tes_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_response then
    show.tes_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_response
    changed = true
  end
  if show.tes_trade_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_trade_broadcast then
    show.tes_trade_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_trade_broadcast
    changed = true
  end
  if show.tes_trading_session_status_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_trading_session_status_broadcast then
    show.tes_trading_session_status_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_tes_trading_session_status_broadcast
    changed = true
  end
  if show.throttle_update_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_throttle_update_notification then
    show.throttle_update_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_throttle_update_notification
    changed = true
  end
  if show.tm_trading_session_status_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_tm_trading_session_status_broadcast then
    show.tm_trading_session_status_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_tm_trading_session_status_broadcast
    changed = true
  end
  if show.trade_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_trade_broadcast then
    show.trade_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_trade_broadcast
    changed = true
  end
  if show.trading_session_status_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_trading_session_status_broadcast then
    show.trading_session_status_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_trading_session_status_broadcast
    changed = true
  end
  if show.trailing_stop_update_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_trailing_stop_update_notification then
    show.trailing_stop_update_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_trailing_stop_update_notification
    changed = true
  end
  if show.unsubscribe_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_unsubscribe_request then
    show.unsubscribe_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_unsubscribe_request
    changed = true
  end
  if show.unsubscribe_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_unsubscribe_response then
    show.unsubscribe_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_unsubscribe_response
    changed = true
  end
  if show.user_login_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_user_login_request then
    show.user_login_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_user_login_request
    changed = true
  end
  if show.user_login_request_encrypted ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_user_login_request_encrypted then
    show.user_login_request_encrypted = omi_eurex_cash_eti_t7_v12_0.prefs.show_user_login_request_encrypted
    changed = true
  end
  if show.user_login_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_user_login_response then
    show.user_login_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_user_login_response
    changed = true
  end
  if show.user_logout_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_user_logout_request then
    show.user_logout_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_user_logout_request
    changed = true
  end
  if show.user_logout_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_user_logout_response then
    show.user_logout_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_user_logout_response
    changed = true
  end
  if show.xetra_en_light_approve_deal_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_approve_deal_notification then
    show.xetra_en_light_approve_deal_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_approve_deal_notification
    changed = true
  end
  if show.xetra_en_light_approve_deal_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_approve_deal_request then
    show.xetra_en_light_approve_deal_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_approve_deal_request
    changed = true
  end
  if show.xetra_en_light_create_deal_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_create_deal_notification then
    show.xetra_en_light_create_deal_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_create_deal_notification
    changed = true
  end
  if show.xetra_en_light_deal_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_deal_response then
    show.xetra_en_light_deal_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_deal_response
    changed = true
  end
  if show.xetra_en_light_deal_status_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_deal_status_notification then
    show.xetra_en_light_deal_status_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_deal_status_notification
    changed = true
  end
  if show.xetra_en_light_delete_all_quote_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_delete_all_quote_notification then
    show.xetra_en_light_delete_all_quote_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_delete_all_quote_notification
    changed = true
  end
  if show.xetra_en_light_delete_all_quote_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_delete_all_quote_request then
    show.xetra_en_light_delete_all_quote_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_delete_all_quote_request
    changed = true
  end
  if show.xetra_en_light_enter_quote_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_enter_quote_request then
    show.xetra_en_light_enter_quote_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_enter_quote_request
    changed = true
  end
  if show.xetra_en_light_hit_quote_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_hit_quote_request then
    show.xetra_en_light_hit_quote_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_hit_quote_request
    changed = true
  end
  if show.xetra_en_light_negotiation_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_negotiation_notification then
    show.xetra_en_light_negotiation_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_negotiation_notification
    changed = true
  end
  if show.xetra_en_light_negotiation_requester_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_negotiation_requester_notification then
    show.xetra_en_light_negotiation_requester_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_negotiation_requester_notification
    changed = true
  end
  if show.xetra_en_light_negotiation_status_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_negotiation_status_notification then
    show.xetra_en_light_negotiation_status_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_negotiation_status_notification
    changed = true
  end
  if show.xetra_en_light_open_negotiation_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_open_negotiation_notification then
    show.xetra_en_light_open_negotiation_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_open_negotiation_notification
    changed = true
  end
  if show.xetra_en_light_open_negotiation_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_open_negotiation_request then
    show.xetra_en_light_open_negotiation_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_open_negotiation_request
    changed = true
  end
  if show.xetra_en_light_open_negotiation_requester_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_open_negotiation_requester_notification then
    show.xetra_en_light_open_negotiation_requester_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_open_negotiation_requester_notification
    changed = true
  end
  if show.xetra_en_light_quote_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_notification then
    show.xetra_en_light_quote_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_notification
    changed = true
  end
  if show.xetra_en_light_quote_requester_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_requester_notification then
    show.xetra_en_light_quote_requester_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_requester_notification
    changed = true
  end
  if show.xetra_en_light_quote_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_response then
    show.xetra_en_light_quote_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_response
    changed = true
  end
  if show.xetra_en_light_quote_snapshot_notification ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_snapshot_notification then
    show.xetra_en_light_quote_snapshot_notification = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_snapshot_notification
    changed = true
  end
  if show.xetra_en_light_quote_snapshot_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_snapshot_request then
    show.xetra_en_light_quote_snapshot_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quote_snapshot_request
    changed = true
  end
  if show.xetra_en_light_quoting_status_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quoting_status_request then
    show.xetra_en_light_quoting_status_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_quoting_status_request
    changed = true
  end
  if show.xetra_en_light_response ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_response then
    show.xetra_en_light_response = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_response
    changed = true
  end
  if show.xetra_en_light_status_broadcast ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_status_broadcast then
    show.xetra_en_light_status_broadcast = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_status_broadcast
    changed = true
  end
  if show.xetra_en_light_target_parties_comp ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_target_parties_comp then
    show.xetra_en_light_target_parties_comp = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_target_parties_comp
    changed = true
  end
  if show.xetra_en_light_update_negotiation_request ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_update_negotiation_request then
    show.xetra_en_light_update_negotiation_request = omi_eurex_cash_eti_t7_v12_0.prefs.show_xetra_en_light_update_negotiation_request
    changed = true
  end
  if show.payload ~= omi_eurex_cash_eti_t7_v12_0.prefs.show_payload then
    show.payload = omi_eurex_cash_eti_t7_v12_0.prefs.show_payload
    changed = true
  end

  -- Reload on changed preference
  if changed then
    reload()
  end
end


-----------------------------------------------------------------------
-- Protocol Functions
-----------------------------------------------------------------------

-- trim trailing spaces
trim_right_spaces = function(str)
  local finish = str:len()

  for i = 1, finish do
    if str:byte(i) == 0x20 then
      return str:sub(1, i - 1)
    end
  end

  return str
end


-----------------------------------------------------------------------
-- Dissect Eurex Cash Eti T7 12.0
-----------------------------------------------------------------------

-- Pad 1
eurex_cash_eti_t7_v12_0.pad_1 = {}

-- Size: Pad 1
eurex_cash_eti_t7_v12_0.pad_1.size = 1

-- Display: Pad 1
eurex_cash_eti_t7_v12_0.pad_1.display = function(value)
  return "Pad 1: "..value
end

-- Dissect: Pad 1
eurex_cash_eti_t7_v12_0.pad_1.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.pad_1.size
  local range = buffer(offset, length)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.pad_1.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.pad_1, range, value, display)

  return offset + length, value
end

-- Target Party Executing Trader
eurex_cash_eti_t7_v12_0.target_party_executing_trader = {}

-- Size: Target Party Executing Trader
eurex_cash_eti_t7_v12_0.target_party_executing_trader.size = 6

-- Display: Target Party Executing Trader
eurex_cash_eti_t7_v12_0.target_party_executing_trader.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Target Party Executing Trader: No Value"
  end

  return "Target Party Executing Trader: "..value
end

-- Dissect: Target Party Executing Trader
eurex_cash_eti_t7_v12_0.target_party_executing_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.target_party_executing_trader.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.target_party_executing_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.target_party_executing_trader, range, value, display)

  return offset + length, value
end

-- Target Party Executing Firm
eurex_cash_eti_t7_v12_0.target_party_executing_firm = {}

-- Size: Target Party Executing Firm
eurex_cash_eti_t7_v12_0.target_party_executing_firm.size = 5

-- Display: Target Party Executing Firm
eurex_cash_eti_t7_v12_0.target_party_executing_firm.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Target Party Executing Firm: No Value"
  end

  return "Target Party Executing Firm: "..value
end

-- Dissect: Target Party Executing Firm
eurex_cash_eti_t7_v12_0.target_party_executing_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.target_party_executing_firm.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.target_party_executing_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.target_party_executing_firm, range, value, display)

  return offset + length, value
end

-- Target Party Id Executing Trader
eurex_cash_eti_t7_v12_0.target_party_id_executing_trader = {}

-- Size: Target Party Id Executing Trader
eurex_cash_eti_t7_v12_0.target_party_id_executing_trader.size = 4

-- Display: Target Party Id Executing Trader
eurex_cash_eti_t7_v12_0.target_party_id_executing_trader.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Target Party Id Executing Trader: No Value"
  end

  return "Target Party Id Executing Trader: "..value
end

-- Dissect: Target Party Id Executing Trader
eurex_cash_eti_t7_v12_0.target_party_id_executing_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.target_party_id_executing_trader.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.target_party_id_executing_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.target_party_id_executing_trader, range, value, display)

  return offset + length, value
end

-- Xetra En Light Target Parties Comp
eurex_cash_eti_t7_v12_0.xetra_en_light_target_parties_comp = {}

-- Size: Xetra En Light Target Parties Comp
eurex_cash_eti_t7_v12_0.xetra_en_light_target_parties_comp.size =
  eurex_cash_eti_t7_v12_0.target_party_id_executing_trader.size + 
  eurex_cash_eti_t7_v12_0.target_party_executing_firm.size + 
  eurex_cash_eti_t7_v12_0.target_party_executing_trader.size + 
  eurex_cash_eti_t7_v12_0.pad_1.size

-- Display: Xetra En Light Target Parties Comp
eurex_cash_eti_t7_v12_0.xetra_en_light_target_parties_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Target Parties Comp
eurex_cash_eti_t7_v12_0.xetra_en_light_target_parties_comp.fields = function(buffer, offset, packet, parent, xetra_en_light_target_parties_comp_index)
  local index = offset

  -- Implicit Xetra En Light Target Parties Comp Index
  if xetra_en_light_target_parties_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_target_parties_comp_index, xetra_en_light_target_parties_comp_index)
    iteration:set_generated()
  end

  -- Target Party Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_executing_trader = eurex_cash_eti_t7_v12_0.target_party_id_executing_trader.dissect(buffer, index, packet, parent)

  -- Target Party Executing Firm: 5 Byte Ascii String Nullable
  index, target_party_executing_firm = eurex_cash_eti_t7_v12_0.target_party_executing_firm.dissect(buffer, index, packet, parent)

  -- Target Party Executing Trader: 6 Byte Ascii String Nullable
  index, target_party_executing_trader = eurex_cash_eti_t7_v12_0.target_party_executing_trader.dissect(buffer, index, packet, parent)

  -- Pad 1: 1 Byte
  index, pad_1 = eurex_cash_eti_t7_v12_0.pad_1.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Target Parties Comp
eurex_cash_eti_t7_v12_0.xetra_en_light_target_parties_comp.dissect = function(buffer, offset, packet, parent, xetra_en_light_target_parties_comp_index)
  if show.xetra_en_light_target_parties_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_target_parties_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.xetra_en_light_target_parties_comp.fields(buffer, offset, packet, parent, xetra_en_light_target_parties_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_target_parties_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.xetra_en_light_target_parties_comp.fields(buffer, offset, packet, parent, xetra_en_light_target_parties_comp_index)
  end
end

-- Pad 3
eurex_cash_eti_t7_v12_0.pad_3 = {}

-- Size: Pad 3
eurex_cash_eti_t7_v12_0.pad_3.size = 3

-- Display: Pad 3
eurex_cash_eti_t7_v12_0.pad_3.display = function(value)
  return "Pad 3: "..value
end

-- Dissect: Pad 3
eurex_cash_eti_t7_v12_0.pad_3.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.pad_3.size
  local range = buffer(offset, length)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.pad_3.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.pad_3, range, value, display)

  return offset + length, value
end

-- Free Text 5
eurex_cash_eti_t7_v12_0.free_text_5 = {}

-- Size: Free Text 5
eurex_cash_eti_t7_v12_0.free_text_5.size = 132

-- Display: Free Text 5
eurex_cash_eti_t7_v12_0.free_text_5.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Free Text 5: No Value"
  end

  return "Free Text 5: "..value
end

-- Dissect: Free Text 5
eurex_cash_eti_t7_v12_0.free_text_5.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.free_text_5.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.free_text_5.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.free_text_5, range, value, display)

  return offset + length, value
end

-- Free Text 4
eurex_cash_eti_t7_v12_0.free_text_4 = {}

-- Size: Free Text 4
eurex_cash_eti_t7_v12_0.free_text_4.size = 16

-- Display: Free Text 4
eurex_cash_eti_t7_v12_0.free_text_4.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Free Text 4: No Value"
  end

  return "Free Text 4: "..value
end

-- Dissect: Free Text 4
eurex_cash_eti_t7_v12_0.free_text_4.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.free_text_4.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.free_text_4.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.free_text_4, range, value, display)

  return offset + length, value
end

-- Free Text 2
eurex_cash_eti_t7_v12_0.free_text_2 = {}

-- Size: Free Text 2
eurex_cash_eti_t7_v12_0.free_text_2.size = 12

-- Display: Free Text 2
eurex_cash_eti_t7_v12_0.free_text_2.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Free Text 2: No Value"
  end

  return "Free Text 2: "..value
end

-- Dissect: Free Text 2
eurex_cash_eti_t7_v12_0.free_text_2.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.free_text_2.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.free_text_2.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.free_text_2, range, value, display)

  return offset + length, value
end

-- Free Text 1
eurex_cash_eti_t7_v12_0.free_text_1 = {}

-- Size: Free Text 1
eurex_cash_eti_t7_v12_0.free_text_1.size = 12

-- Display: Free Text 1
eurex_cash_eti_t7_v12_0.free_text_1.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Free Text 1: No Value"
  end

  return "Free Text 1: "..value
end

-- Dissect: Free Text 1
eurex_cash_eti_t7_v12_0.free_text_1.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.free_text_1.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.free_text_1.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.free_text_1, range, value, display)

  return offset + length, value
end

-- Party Executing Trader
eurex_cash_eti_t7_v12_0.party_executing_trader = {}

-- Size: Party Executing Trader
eurex_cash_eti_t7_v12_0.party_executing_trader.size = 6

-- Display: Party Executing Trader
eurex_cash_eti_t7_v12_0.party_executing_trader.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Party Executing Trader: No Value"
  end

  return "Party Executing Trader: "..value
end

-- Dissect: Party Executing Trader
eurex_cash_eti_t7_v12_0.party_executing_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_executing_trader.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.party_executing_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_executing_trader, range, value, display)

  return offset + length, value
end

-- Party Executing Firm
eurex_cash_eti_t7_v12_0.party_executing_firm = {}

-- Size: Party Executing Firm
eurex_cash_eti_t7_v12_0.party_executing_firm.size = 5

-- Display: Party Executing Firm
eurex_cash_eti_t7_v12_0.party_executing_firm.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Party Executing Firm: No Value"
  end

  return "Party Executing Firm: "..value
end

-- Dissect: Party Executing Firm
eurex_cash_eti_t7_v12_0.party_executing_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_executing_firm.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.party_executing_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_executing_firm, range, value, display)

  return offset + length, value
end

-- Quote Condition
eurex_cash_eti_t7_v12_0.quote_condition = {}

-- Size: Quote Condition
eurex_cash_eti_t7_v12_0.quote_condition.size = 1

-- Display: Quote Condition
eurex_cash_eti_t7_v12_0.quote_condition.display = function(value)
  -- Check if field has value
  if value == nil or value == 0 then
    return "Quote Condition: No Value"
  end

  if value == "A" then
    return "Quote Condition: Active (A)"
  end
  if value == "B" then
    return "Quote Condition: Closed (B)"
  end
  if value == "z" then
    return "Quote Condition: Suspended (z)"
  end
  if value == "8" then
    return "Quote Condition: Expired (8)"
  end
  if value == "E" then
    return "Quote Condition: Locked (E)"
  end

  return "Quote Condition: Unknown("..value..")"
end

-- Dissect: Quote Condition
eurex_cash_eti_t7_v12_0.quote_condition.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_condition.size
  local range = buffer(offset, length)

  -- parse as byte
  local value = range:uint()

  -- check if value is non zero
  if value ~= 0 then
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.quote_condition.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_condition, range, value, display)

  return offset + length, value
end

-- Order Origination
eurex_cash_eti_t7_v12_0.order_origination = {}

-- Size: Order Origination
eurex_cash_eti_t7_v12_0.order_origination.size = 1

-- Display: Order Origination
eurex_cash_eti_t7_v12_0.order_origination.display = function(value)
  if value == 5 then
    return "Order Origination: Directaccessorsponsoredaccesscustomer (5)"
  end
  if value == 0xFF then
    return "Order Origination: No Value"
  end

  return "Order Origination: Unknown("..value..")"
end

-- Dissect: Order Origination
eurex_cash_eti_t7_v12_0.order_origination.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.order_origination.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.order_origination.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_origination, range, value, display)

  return offset + length, value
end

-- Party Id Investment Decision Maker Qualifier
eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier = {}

-- Size: Party Id Investment Decision Maker Qualifier
eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.size = 1

-- Display: Party Id Investment Decision Maker Qualifier
eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.display = function(value)
  if value == 22 then
    return "Party Id Investment Decision Maker Qualifier: Algo (22)"
  end
  if value == 24 then
    return "Party Id Investment Decision Maker Qualifier: Human (24)"
  end
  if value == 0xFF then
    return "Party Id Investment Decision Maker Qualifier: No Value"
  end

  return "Party Id Investment Decision Maker Qualifier: Unknown("..value..")"
end

-- Dissect: Party Id Investment Decision Maker Qualifier
eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_id_investment_decision_maker_qualifier, range, value, display)

  return offset + length, value
end

-- Executing Trader Qualifier
eurex_cash_eti_t7_v12_0.executing_trader_qualifier = {}

-- Size: Executing Trader Qualifier
eurex_cash_eti_t7_v12_0.executing_trader_qualifier.size = 1

-- Display: Executing Trader Qualifier
eurex_cash_eti_t7_v12_0.executing_trader_qualifier.display = function(value)
  if value == 22 then
    return "Executing Trader Qualifier: Algo (22)"
  end
  if value == 24 then
    return "Executing Trader Qualifier: Human (24)"
  end
  if value == 0xFF then
    return "Executing Trader Qualifier: No Value"
  end

  return "Executing Trader Qualifier: Unknown("..value..")"
end

-- Dissect: Executing Trader Qualifier
eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.executing_trader_qualifier, range, value, display)

  return offset + length, value
end

-- Order Attribute Liquidity Provision
eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision = {}

-- Size: Order Attribute Liquidity Provision
eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.size = 1

-- Display: Order Attribute Liquidity Provision
eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.display = function(value)
  if value == 1 then
    return "Order Attribute Liquidity Provision: Y (1)"
  end
  if value == 0 then
    return "Order Attribute Liquidity Provision: N (0)"
  end
  if value == 0xFF then
    return "Order Attribute Liquidity Provision: No Value"
  end

  return "Order Attribute Liquidity Provision: Unknown("..value..")"
end

-- Dissect: Order Attribute Liquidity Provision
eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_attribute_liquidity_provision, range, value, display)

  return offset + length, value
end

-- Side Disclosure Instruction
eurex_cash_eti_t7_v12_0.side_disclosure_instruction = {}

-- Size: Side Disclosure Instruction
eurex_cash_eti_t7_v12_0.side_disclosure_instruction.size = 1

-- Display: Side Disclosure Instruction
eurex_cash_eti_t7_v12_0.side_disclosure_instruction.display = function(value)
  if value == 0 then
    return "Side Disclosure Instruction: No (0)"
  end
  if value == 1 then
    return "Side Disclosure Instruction: Yes (1)"
  end
  if value == 0xFF then
    return "Side Disclosure Instruction: No Value"
  end

  return "Side Disclosure Instruction: Unknown("..value..")"
end

-- Dissect: Side Disclosure Instruction
eurex_cash_eti_t7_v12_0.side_disclosure_instruction.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.side_disclosure_instruction.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.side_disclosure_instruction.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.side_disclosure_instruction, range, value, display)

  return offset + length, value
end

-- Auto Exec Type
eurex_cash_eti_t7_v12_0.auto_exec_type = {}

-- Size: Auto Exec Type
eurex_cash_eti_t7_v12_0.auto_exec_type.size = 1

-- Display: Auto Exec Type
eurex_cash_eti_t7_v12_0.auto_exec_type.display = function(value)
  if value == 1 then
    return "Auto Exec Type: Mid Point Bbo (1)"
  end
  if value == 2 then
    return "Auto Exec Type: Best Bid (2)"
  end
  if value == 3 then
    return "Auto Exec Type: Best Ask (3)"
  end
  if value == 4 then
    return "Auto Exec Type: Limit Price (4)"
  end
  if value == 0xFF then
    return "Auto Exec Type: No Value"
  end

  return "Auto Exec Type: Unknown("..value..")"
end

-- Dissect: Auto Exec Type
eurex_cash_eti_t7_v12_0.auto_exec_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.auto_exec_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.auto_exec_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.auto_exec_type, range, value, display)

  return offset + length, value
end

-- Trading Capacity
eurex_cash_eti_t7_v12_0.trading_capacity = {}

-- Size: Trading Capacity
eurex_cash_eti_t7_v12_0.trading_capacity.size = 1

-- Display: Trading Capacity
eurex_cash_eti_t7_v12_0.trading_capacity.display = function(value)
  if value == 1 then
    return "Trading Capacity: Customer (1)"
  end
  if value == 3 then
    return "Trading Capacity: Brokerdealer (3)"
  end
  if value == 5 then
    return "Trading Capacity: Principal (5)"
  end
  if value == 6 then
    return "Trading Capacity: Market Maker (6)"
  end
  if value == 9 then
    return "Trading Capacity: Riskless Principal (9)"
  end
  if value == 10 then
    return "Trading Capacity: Retail Customer (10)"
  end
  if value == 11 then
    return "Trading Capacity: Retail Market Maker (11)"
  end
  if value == 0xFF then
    return "Trading Capacity: No Value"
  end

  return "Trading Capacity: Unknown("..value..")"
end

-- Dissect: Trading Capacity
eurex_cash_eti_t7_v12_0.trading_capacity.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trading_capacity.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trading_capacity.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trading_capacity, range, value, display)

  return offset + length, value
end

-- Respondent Type
eurex_cash_eti_t7_v12_0.respondent_type = {}

-- Size: Respondent Type
eurex_cash_eti_t7_v12_0.respondent_type.size = 1

-- Display: Respondent Type
eurex_cash_eti_t7_v12_0.respondent_type.display = function(value)
  if value == 2 then
    return "Respondent Type: Specifiedmarketparticipants (2)"
  end
  if value == 100 then
    return "Respondent Type: Specifiedand Smart Rf Qselectedparticipants (100)"
  end
  if value == 101 then
    return "Respondent Type: Smart Rf Qselectedparticipants (101)"
  end
  if value == 0xFF then
    return "Respondent Type: No Value"
  end

  return "Respondent Type: Unknown("..value..")"
end

-- Dissect: Respondent Type
eurex_cash_eti_t7_v12_0.respondent_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.respondent_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.respondent_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.respondent_type, range, value, display)

  return offset + length, value
end

-- Value Check Type Quantity
eurex_cash_eti_t7_v12_0.value_check_type_quantity = {}

-- Size: Value Check Type Quantity
eurex_cash_eti_t7_v12_0.value_check_type_quantity.size = 1

-- Display: Value Check Type Quantity
eurex_cash_eti_t7_v12_0.value_check_type_quantity.display = function(value)
  if value == 0 then
    return "Value Check Type Quantity: Donotcheck (0)"
  end
  if value == 1 then
    return "Value Check Type Quantity: Check (1)"
  end
  if value == 0xFF then
    return "Value Check Type Quantity: No Value"
  end

  return "Value Check Type Quantity: Unknown("..value..")"
end

-- Dissect: Value Check Type Quantity
eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.value_check_type_quantity.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.value_check_type_quantity.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.value_check_type_quantity, range, value, display)

  return offset + length, value
end

-- Value Check Type Value
eurex_cash_eti_t7_v12_0.value_check_type_value = {}

-- Size: Value Check Type Value
eurex_cash_eti_t7_v12_0.value_check_type_value.size = 1

-- Display: Value Check Type Value
eurex_cash_eti_t7_v12_0.value_check_type_value.display = function(value)
  if value == 0 then
    return "Value Check Type Value: Donotcheck (0)"
  end
  if value == 1 then
    return "Value Check Type Value: Check (1)"
  end
  if value == 0xFF then
    return "Value Check Type Value: No Value"
  end

  return "Value Check Type Value: Unknown("..value..")"
end

-- Dissect: Value Check Type Value
eurex_cash_eti_t7_v12_0.value_check_type_value.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.value_check_type_value.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.value_check_type_value.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.value_check_type_value, range, value, display)

  return offset + length, value
end

-- Side
eurex_cash_eti_t7_v12_0.side = {}

-- Size: Side
eurex_cash_eti_t7_v12_0.side.size = 1

-- Display: Side
eurex_cash_eti_t7_v12_0.side.display = function(value)
  if value == 1 then
    return "Side: Buy (1)"
  end
  if value == 2 then
    return "Side: Sell (2)"
  end
  if value == 0xFF then
    return "Side: No Value"
  end

  return "Side: Unknown("..value..")"
end

-- Dissect: Side
eurex_cash_eti_t7_v12_0.side.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.side.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.side.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.side, range, value, display)

  return offset + length, value
end

-- Number Of Resp Disclosure Instruction
eurex_cash_eti_t7_v12_0.number_of_resp_disclosure_instruction = {}

-- Size: Number Of Resp Disclosure Instruction
eurex_cash_eti_t7_v12_0.number_of_resp_disclosure_instruction.size = 1

-- Display: Number Of Resp Disclosure Instruction
eurex_cash_eti_t7_v12_0.number_of_resp_disclosure_instruction.display = function(value)
  if value == 0 then
    return "Number Of Resp Disclosure Instruction: No (0)"
  end
  if value == 1 then
    return "Number Of Resp Disclosure Instruction: Yes (1)"
  end
  if value == 0xFF then
    return "Number Of Resp Disclosure Instruction: No Value"
  end

  return "Number Of Resp Disclosure Instruction: Unknown("..value..")"
end

-- Dissect: Number Of Resp Disclosure Instruction
eurex_cash_eti_t7_v12_0.number_of_resp_disclosure_instruction.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.number_of_resp_disclosure_instruction.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.number_of_resp_disclosure_instruction.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.number_of_resp_disclosure_instruction, range, value, display)

  return offset + length, value
end

-- No Target Party I Ds
eurex_cash_eti_t7_v12_0.no_target_party_i_ds = {}

-- Size: No Target Party I Ds
eurex_cash_eti_t7_v12_0.no_target_party_i_ds.size = 1

-- Display: No Target Party I Ds
eurex_cash_eti_t7_v12_0.no_target_party_i_ds.display = function(value)
  -- Check if field has value
  if value == 0xFF then
    return "No Target Party I Ds: No Value"
  end

  return "No Target Party I Ds: "..value
end

-- Dissect: No Target Party I Ds
eurex_cash_eti_t7_v12_0.no_target_party_i_ds.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_target_party_i_ds.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_target_party_i_ds.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_target_party_i_ds, range, value, display)

  return offset + length, value
end

-- Auto Exec Min No Of Quotes
eurex_cash_eti_t7_v12_0.auto_exec_min_no_of_quotes = {}

-- Size: Auto Exec Min No Of Quotes
eurex_cash_eti_t7_v12_0.auto_exec_min_no_of_quotes.size = 4

-- Display: Auto Exec Min No Of Quotes
eurex_cash_eti_t7_v12_0.auto_exec_min_no_of_quotes.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Auto Exec Min No Of Quotes: No Value"
  end

  return "Auto Exec Min No Of Quotes: "..value
end

-- Dissect: Auto Exec Min No Of Quotes
eurex_cash_eti_t7_v12_0.auto_exec_min_no_of_quotes.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.auto_exec_min_no_of_quotes.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.auto_exec_min_no_of_quotes.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.auto_exec_min_no_of_quotes, range, value, display)

  return offset + length, value
end

-- Auto Exec Exposure Duration
eurex_cash_eti_t7_v12_0.auto_exec_exposure_duration = {}

-- Size: Auto Exec Exposure Duration
eurex_cash_eti_t7_v12_0.auto_exec_exposure_duration.size = 4

-- Display: Auto Exec Exposure Duration
eurex_cash_eti_t7_v12_0.auto_exec_exposure_duration.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Auto Exec Exposure Duration: No Value"
  end

  return "Auto Exec Exposure Duration: "..value
end

-- Dissect: Auto Exec Exposure Duration
eurex_cash_eti_t7_v12_0.auto_exec_exposure_duration.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.auto_exec_exposure_duration.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.auto_exec_exposure_duration.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.auto_exec_exposure_duration, range, value, display)

  return offset + length, value
end

-- Settl Date
eurex_cash_eti_t7_v12_0.settl_date = {}

-- Size: Settl Date
eurex_cash_eti_t7_v12_0.settl_date.size = 4

-- Display: Settl Date
eurex_cash_eti_t7_v12_0.settl_date.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Settl Date: No Value"
  end

  return "Settl Date: "..value
end

-- Dissect: Settl Date
eurex_cash_eti_t7_v12_0.settl_date.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.settl_date.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.settl_date.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.settl_date, range, value, display)

  return offset + length, value
end

-- Negotiation Id
eurex_cash_eti_t7_v12_0.negotiation_id = {}

-- Size: Negotiation Id
eurex_cash_eti_t7_v12_0.negotiation_id.size = 4

-- Display: Negotiation Id
eurex_cash_eti_t7_v12_0.negotiation_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Negotiation Id: No Value"
  end

  return "Negotiation Id: "..value
end

-- Dissect: Negotiation Id
eurex_cash_eti_t7_v12_0.negotiation_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.negotiation_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.negotiation_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.negotiation_id, range, value, display)

  return offset + length, value
end

-- Market Segment Id
eurex_cash_eti_t7_v12_0.market_segment_id = {}

-- Size: Market Segment Id
eurex_cash_eti_t7_v12_0.market_segment_id.size = 4

-- Display: Market Segment Id
eurex_cash_eti_t7_v12_0.market_segment_id.display = function(value)
  -- Check if field has value
  if value == 0x80000000 then
    return "Market Segment Id: No Value"
  end

  return "Market Segment Id: "..value
end

-- Dissect: Market Segment Id
eurex_cash_eti_t7_v12_0.market_segment_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.market_segment_id.size
  local range = buffer(offset, length)
  local value = range:le_int()
  local display = eurex_cash_eti_t7_v12_0.market_segment_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.market_segment_id, range, value, display)

  return offset + length, value
end

-- Auto Exec Reference Price Offset
eurex_cash_eti_t7_v12_0.auto_exec_reference_price_offset = {}

-- Size: Auto Exec Reference Price Offset
eurex_cash_eti_t7_v12_0.auto_exec_reference_price_offset.size = 4

-- Display: Auto Exec Reference Price Offset
eurex_cash_eti_t7_v12_0.auto_exec_reference_price_offset.display = function(value)
  -- Check if field has value
  if value == 0x80000000 then
    return "Auto Exec Reference Price Offset: No Value"
  end

  return "Auto Exec Reference Price Offset: "..value
end

-- Dissect: Auto Exec Reference Price Offset
eurex_cash_eti_t7_v12_0.auto_exec_reference_price_offset.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.auto_exec_reference_price_offset.size
  local range = buffer(offset, length)
  local value = range:le_int()
  local display = eurex_cash_eti_t7_v12_0.auto_exec_reference_price_offset.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.auto_exec_reference_price_offset, range, value, display)

  return offset + length, value
end

-- Auto Exec Limit Price
eurex_cash_eti_t7_v12_0.auto_exec_limit_price = {}

-- Size: Auto Exec Limit Price
eurex_cash_eti_t7_v12_0.auto_exec_limit_price.size = 8

-- Display: Auto Exec Limit Price
eurex_cash_eti_t7_v12_0.auto_exec_limit_price.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Auto Exec Limit Price: No Value"
  end

  return "Auto Exec Limit Price: "..value
end

-- Translate: Auto Exec Limit Price
eurex_cash_eti_t7_v12_0.auto_exec_limit_price.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Auto Exec Limit Price
eurex_cash_eti_t7_v12_0.auto_exec_limit_price.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.auto_exec_limit_price.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.auto_exec_limit_price.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.auto_exec_limit_price.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.auto_exec_limit_price, range, value, display)

  return offset + length, value
end

-- Executing Trader
eurex_cash_eti_t7_v12_0.executing_trader = {}

-- Size: Executing Trader
eurex_cash_eti_t7_v12_0.executing_trader.size = 8

-- Display: Executing Trader
eurex_cash_eti_t7_v12_0.executing_trader.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Executing Trader: No Value"
  end

  return "Executing Trader: "..value
end

-- Dissect: Executing Trader
eurex_cash_eti_t7_v12_0.executing_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.executing_trader.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.executing_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.executing_trader, range, value, display)

  return offset + length, value
end

-- Party Id Investment Decision Maker
eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker = {}

-- Size: Party Id Investment Decision Maker
eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.size = 8

-- Display: Party Id Investment Decision Maker
eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Party Id Investment Decision Maker: No Value"
  end

  return "Party Id Investment Decision Maker: "..value
end

-- Dissect: Party Id Investment Decision Maker
eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_id_investment_decision_maker, range, value, display)

  return offset + length, value
end

-- Party Id Client Id
eurex_cash_eti_t7_v12_0.party_id_client_id = {}

-- Size: Party Id Client Id
eurex_cash_eti_t7_v12_0.party_id_client_id.size = 8

-- Display: Party Id Client Id
eurex_cash_eti_t7_v12_0.party_id_client_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Party Id Client Id: No Value"
  end

  return "Party Id Client Id: "..value
end

-- Dissect: Party Id Client Id
eurex_cash_eti_t7_v12_0.party_id_client_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_id_client_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.party_id_client_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_id_client_id, range, value, display)

  return offset + length, value
end

-- Order Qty
eurex_cash_eti_t7_v12_0.order_qty = {}

-- Size: Order Qty
eurex_cash_eti_t7_v12_0.order_qty.size = 8

-- Display: Order Qty
eurex_cash_eti_t7_v12_0.order_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Order Qty: No Value"
  end

  return "Order Qty: "..value
end

-- Translate: Order Qty
eurex_cash_eti_t7_v12_0.order_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Order Qty
eurex_cash_eti_t7_v12_0.order_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.order_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.order_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.order_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_qty, range, value, display)

  return offset + length, value
end

-- Offer Px
eurex_cash_eti_t7_v12_0.offer_px = {}

-- Size: Offer Px
eurex_cash_eti_t7_v12_0.offer_px.size = 8

-- Display: Offer Px
eurex_cash_eti_t7_v12_0.offer_px.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Offer Px: No Value"
  end

  return "Offer Px: "..value
end

-- Translate: Offer Px
eurex_cash_eti_t7_v12_0.offer_px.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Offer Px
eurex_cash_eti_t7_v12_0.offer_px.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.offer_px.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.offer_px.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.offer_px.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.offer_px, range, value, display)

  return offset + length, value
end

-- Bid Px
eurex_cash_eti_t7_v12_0.bid_px = {}

-- Size: Bid Px
eurex_cash_eti_t7_v12_0.bid_px.size = 8

-- Display: Bid Px
eurex_cash_eti_t7_v12_0.bid_px.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Bid Px: No Value"
  end

  return "Bid Px: "..value
end

-- Translate: Bid Px
eurex_cash_eti_t7_v12_0.bid_px.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Bid Px
eurex_cash_eti_t7_v12_0.bid_px.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.bid_px.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.bid_px.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.bid_px.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.bid_px, range, value, display)

  return offset + length, value
end

-- Sender Sub Id
eurex_cash_eti_t7_v12_0.sender_sub_id = {}

-- Size: Sender Sub Id
eurex_cash_eti_t7_v12_0.sender_sub_id.size = 4

-- Display: Sender Sub Id
eurex_cash_eti_t7_v12_0.sender_sub_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Sender Sub Id: No Value"
  end

  return "Sender Sub Id: "..value
end

-- Dissect: Sender Sub Id
eurex_cash_eti_t7_v12_0.sender_sub_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.sender_sub_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.sender_sub_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.sender_sub_id, range, value, display)

  return offset + length, value
end

-- Msg Seq Num
eurex_cash_eti_t7_v12_0.msg_seq_num = {}

-- Size: Msg Seq Num
eurex_cash_eti_t7_v12_0.msg_seq_num.size = 4

-- Display: Msg Seq Num
eurex_cash_eti_t7_v12_0.msg_seq_num.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Msg Seq Num: No Value"
  end

  return "Msg Seq Num: "..value
end

-- Dissect: Msg Seq Num
eurex_cash_eti_t7_v12_0.msg_seq_num.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.msg_seq_num.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.msg_seq_num.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.msg_seq_num, range, value, display)

  return offset + length, value
end

-- Request Header Comp
eurex_cash_eti_t7_v12_0.request_header_comp = {}

-- Size: Request Header Comp
eurex_cash_eti_t7_v12_0.request_header_comp.size =
  eurex_cash_eti_t7_v12_0.msg_seq_num.size + 
  eurex_cash_eti_t7_v12_0.sender_sub_id.size

-- Display: Request Header Comp
eurex_cash_eti_t7_v12_0.request_header_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Request Header Comp
eurex_cash_eti_t7_v12_0.request_header_comp.fields = function(buffer, offset, packet, parent)
  local index = offset

  -- Msg Seq Num: 4 Byte Unsigned Fixed Width Integer Nullable
  index, msg_seq_num = eurex_cash_eti_t7_v12_0.msg_seq_num.dissect(buffer, index, packet, parent)

  -- Sender Sub Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, sender_sub_id = eurex_cash_eti_t7_v12_0.sender_sub_id.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Request Header Comp
eurex_cash_eti_t7_v12_0.request_header_comp.dissect = function(buffer, offset, packet, parent)
  if show.request_header_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.request_header_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.request_header_comp.fields(buffer, offset, packet, parent)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.request_header_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.request_header_comp.fields(buffer, offset, packet, parent)
  end
end

-- Pad 2
eurex_cash_eti_t7_v12_0.pad_2 = {}

-- Size: Pad 2
eurex_cash_eti_t7_v12_0.pad_2.size = 2

-- Display: Pad 2
eurex_cash_eti_t7_v12_0.pad_2.display = function(value)
  return "Pad 2: "..value
end

-- Dissect: Pad 2
eurex_cash_eti_t7_v12_0.pad_2.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.pad_2.size
  local range = buffer(offset, length)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.pad_2.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.pad_2, range, value, display)

  return offset + length, value
end

-- Network Msg Id
eurex_cash_eti_t7_v12_0.network_msg_id = {}

-- Size: Network Msg Id
eurex_cash_eti_t7_v12_0.network_msg_id.size = 8

-- Display: Network Msg Id
eurex_cash_eti_t7_v12_0.network_msg_id.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Network Msg Id: No Value"
  end

  return "Network Msg Id: "..value
end

-- Dissect: Network Msg Id
eurex_cash_eti_t7_v12_0.network_msg_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.network_msg_id.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.network_msg_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.network_msg_id, range, value, display)

  return offset + length, value
end

-- Xetra En Light Update Negotiation Request
eurex_cash_eti_t7_v12_0.xetra_en_light_update_negotiation_request = {}

-- Read runtime size of: Xetra En Light Update Negotiation Request
eurex_cash_eti_t7_v12_0.xetra_en_light_update_negotiation_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Update Negotiation Request
eurex_cash_eti_t7_v12_0.xetra_en_light_update_negotiation_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Update Negotiation Request
eurex_cash_eti_t7_v12_0.xetra_en_light_update_negotiation_request.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_update_negotiation_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_client_id = eurex_cash_eti_t7_v12_0.party_id_client_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Auto Exec Limit Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, auto_exec_limit_price = eurex_cash_eti_t7_v12_0.auto_exec_limit_price.dissect(buffer, index, packet, parent)

  -- Auto Exec Reference Price Offset: 4 Byte Signed Fixed Width Integer Nullable
  index, auto_exec_reference_price_offset = eurex_cash_eti_t7_v12_0.auto_exec_reference_price_offset.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Auto Exec Exposure Duration: 4 Byte Unsigned Fixed Width Integer Nullable
  index, auto_exec_exposure_duration = eurex_cash_eti_t7_v12_0.auto_exec_exposure_duration.dissect(buffer, index, packet, parent)

  -- Auto Exec Min No Of Quotes: 4 Byte Unsigned Fixed Width Integer Nullable
  index, auto_exec_min_no_of_quotes = eurex_cash_eti_t7_v12_0.auto_exec_min_no_of_quotes.dissect(buffer, index, packet, parent)

  -- No Target Party I Ds: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_target_party_i_ds = eurex_cash_eti_t7_v12_0.no_target_party_i_ds.dissect(buffer, index, packet, parent)

  -- Number Of Resp Disclosure Instruction: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, number_of_resp_disclosure_instruction = eurex_cash_eti_t7_v12_0.number_of_resp_disclosure_instruction.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Respondent Type: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, respondent_type = eurex_cash_eti_t7_v12_0.respondent_type.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Auto Exec Type: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, auto_exec_type = eurex_cash_eti_t7_v12_0.auto_exec_type.dissect(buffer, index, packet, parent)

  -- Side Disclosure Instruction: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side_disclosure_instruction = eurex_cash_eti_t7_v12_0.side_disclosure_instruction.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Quote Condition: 1 Byte Ascii String Enum with 5 values
  index, quote_condition = eurex_cash_eti_t7_v12_0.quote_condition.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Free Text 5: 132 Byte Ascii String Nullable
  index, free_text_5 = eurex_cash_eti_t7_v12_0.free_text_5.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  -- Repeating: Xetra En Light Target Parties Comp
  for xetra_en_light_target_parties_comp_index = 1, no_target_party_i_ds do
    index, xetra_en_light_target_parties_comp = eurex_cash_eti_t7_v12_0.xetra_en_light_target_parties_comp.dissect(buffer, index, packet, parent, xetra_en_light_target_parties_comp_index)
  end

  return index
end

-- Dissect: Xetra En Light Update Negotiation Request
eurex_cash_eti_t7_v12_0.xetra_en_light_update_negotiation_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_update_negotiation_request = eurex_cash_eti_t7_v12_0.xetra_en_light_update_negotiation_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_update_negotiation_request then
    local range = buffer(offset, size_of_xetra_en_light_update_negotiation_request)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_update_negotiation_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_update_negotiation_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_update_negotiation_request.fields(buffer, offset, packet, parent, size_of_xetra_en_light_update_negotiation_request)

  return offset + size_of_xetra_en_light_update_negotiation_request
end

-- Trad Ses Event
eurex_cash_eti_t7_v12_0.trad_ses_event = {}

-- Size: Trad Ses Event
eurex_cash_eti_t7_v12_0.trad_ses_event.size = 1

-- Display: Trad Ses Event
eurex_cash_eti_t7_v12_0.trad_ses_event.display = function(value)
  if value == 101 then
    return "Trad Ses Event: Startof Service (101)"
  end
  if value == 102 then
    return "Trad Ses Event: Market Reset (102)"
  end
  if value == 103 then
    return "Trad Ses Event: Endof Restatement (103)"
  end
  if value == 104 then
    return "Trad Ses Event: Endof Day Service (104)"
  end
  if value == 105 then
    return "Trad Ses Event: Service Resumed (105)"
  end
  if value == 0xFF then
    return "Trad Ses Event: No Value"
  end

  return "Trad Ses Event: Unknown("..value..")"
end

-- Dissect: Trad Ses Event
eurex_cash_eti_t7_v12_0.trad_ses_event.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trad_ses_event.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trad_ses_event.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trad_ses_event, range, value, display)

  return offset + length, value
end

-- Trade Date
eurex_cash_eti_t7_v12_0.trade_date = {}

-- Size: Trade Date
eurex_cash_eti_t7_v12_0.trade_date.size = 4

-- Display: Trade Date
eurex_cash_eti_t7_v12_0.trade_date.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Trade Date: No Value"
  end

  return "Trade Date: "..value
end

-- Dissect: Trade Date
eurex_cash_eti_t7_v12_0.trade_date.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trade_date.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trade_date.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trade_date, range, value, display)

  return offset + length, value
end

-- Pad 7
eurex_cash_eti_t7_v12_0.pad_7 = {}

-- Size: Pad 7
eurex_cash_eti_t7_v12_0.pad_7.size = 7

-- Display: Pad 7
eurex_cash_eti_t7_v12_0.pad_7.display = function(value)
  return "Pad 7: "..value
end

-- Dissect: Pad 7
eurex_cash_eti_t7_v12_0.pad_7.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.pad_7.size
  local range = buffer(offset, length)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.pad_7.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.pad_7, range, value, display)

  return offset + length, value
end

-- Last Fragment
eurex_cash_eti_t7_v12_0.last_fragment = {}

-- Size: Last Fragment
eurex_cash_eti_t7_v12_0.last_fragment.size = 1

-- Display: Last Fragment
eurex_cash_eti_t7_v12_0.last_fragment.display = function(value)
  if value == 0 then
    return "Last Fragment: Not Last Message (0)"
  end
  if value == 1 then
    return "Last Fragment: Last Message (1)"
  end
  if value == 0xFF then
    return "Last Fragment: No Value"
  end

  return "Last Fragment: Unknown("..value..")"
end

-- Dissect: Last Fragment
eurex_cash_eti_t7_v12_0.last_fragment.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.last_fragment.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.last_fragment.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.last_fragment, range, value, display)

  return offset + length, value
end

-- Appl Id
eurex_cash_eti_t7_v12_0.appl_id = {}

-- Size: Appl Id
eurex_cash_eti_t7_v12_0.appl_id.size = 1

-- Display: Appl Id
eurex_cash_eti_t7_v12_0.appl_id.display = function(value)
  if value == 1 then
    return "Appl Id: Trade (1)"
  end
  if value == 2 then
    return "Appl Id: News (2)"
  end
  if value == 3 then
    return "Appl Id: Serviceavailability (3)"
  end
  if value == 4 then
    return "Appl Id: Sessiondata (4)"
  end
  if value == 5 then
    return "Appl Id: Listenerdata (5)"
  end
  if value == 6 then
    return "Appl Id: Risk Control (6)"
  end
  if value == 7 then
    return "Appl Id: Tes Maintenance (7)"
  end
  if value == 8 then
    return "Appl Id: Tes Trade (8)"
  end
  if value == 9 then
    return "Appl Id: Srqs Maintenance (9)"
  end
  if value == 10 then
    return "Appl Id: Service Availability Market (10)"
  end
  if value == 11 then
    return "Appl Id: Specialist Data (11)"
  end
  if value == 0xFF then
    return "Appl Id: No Value"
  end

  return "Appl Id: Unknown("..value..")"
end

-- Dissect: Appl Id
eurex_cash_eti_t7_v12_0.appl_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.appl_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_id, range, value, display)

  return offset + length, value
end

-- Appl Resend Flag
eurex_cash_eti_t7_v12_0.appl_resend_flag = {}

-- Size: Appl Resend Flag
eurex_cash_eti_t7_v12_0.appl_resend_flag.size = 1

-- Display: Appl Resend Flag
eurex_cash_eti_t7_v12_0.appl_resend_flag.display = function(value)
  if value == 0 then
    return "Appl Resend Flag: False (0)"
  end
  if value == 1 then
    return "Appl Resend Flag: True (1)"
  end
  if value == 0xFF then
    return "Appl Resend Flag: No Value"
  end

  return "Appl Resend Flag: Unknown("..value..")"
end

-- Dissect: Appl Resend Flag
eurex_cash_eti_t7_v12_0.appl_resend_flag.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_resend_flag.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.appl_resend_flag.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_resend_flag, range, value, display)

  return offset + length, value
end

-- Partition Id
eurex_cash_eti_t7_v12_0.partition_id = {}

-- Size: Partition Id
eurex_cash_eti_t7_v12_0.partition_id.size = 2

-- Display: Partition Id
eurex_cash_eti_t7_v12_0.partition_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFF then
    return "Partition Id: No Value"
  end

  return "Partition Id: "..value
end

-- Dissect: Partition Id
eurex_cash_eti_t7_v12_0.partition_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.partition_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.partition_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.partition_id, range, value, display)

  return offset + length, value
end

-- Appl Sub Id
eurex_cash_eti_t7_v12_0.appl_sub_id = {}

-- Size: Appl Sub Id
eurex_cash_eti_t7_v12_0.appl_sub_id.size = 4

-- Display: Appl Sub Id
eurex_cash_eti_t7_v12_0.appl_sub_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Appl Sub Id: No Value"
  end

  return "Appl Sub Id: "..value
end

-- Dissect: Appl Sub Id
eurex_cash_eti_t7_v12_0.appl_sub_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_sub_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.appl_sub_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_sub_id, range, value, display)

  return offset + length, value
end

-- Appl Seq Num
eurex_cash_eti_t7_v12_0.appl_seq_num = {}

-- Size: Appl Seq Num
eurex_cash_eti_t7_v12_0.appl_seq_num.size = 8

-- Display: Appl Seq Num
eurex_cash_eti_t7_v12_0.appl_seq_num.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Appl Seq Num: No Value"
  end

  return "Appl Seq Num: "..value
end

-- Dissect: Appl Seq Num
eurex_cash_eti_t7_v12_0.appl_seq_num.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_seq_num.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.appl_seq_num.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_seq_num, range, value, display)

  return offset + length, value
end

-- Sending Time
eurex_cash_eti_t7_v12_0.sending_time = {}

-- Size: Sending Time
eurex_cash_eti_t7_v12_0.sending_time.size = 8

-- Display: Sending Time
eurex_cash_eti_t7_v12_0.sending_time.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Sending Time: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Sending Time: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Sending Time
eurex_cash_eti_t7_v12_0.sending_time.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.sending_time.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.sending_time.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.sending_time, range, value, display)

  return offset + length, value
end

-- Rbc Header Comp
eurex_cash_eti_t7_v12_0.rbc_header_comp = {}

-- Size: Rbc Header Comp
eurex_cash_eti_t7_v12_0.rbc_header_comp.size =
  eurex_cash_eti_t7_v12_0.sending_time.size + 
  eurex_cash_eti_t7_v12_0.appl_seq_num.size + 
  eurex_cash_eti_t7_v12_0.appl_sub_id.size + 
  eurex_cash_eti_t7_v12_0.partition_id.size + 
  eurex_cash_eti_t7_v12_0.appl_resend_flag.size + 
  eurex_cash_eti_t7_v12_0.appl_id.size + 
  eurex_cash_eti_t7_v12_0.last_fragment.size + 
  eurex_cash_eti_t7_v12_0.pad_7.size

-- Display: Rbc Header Comp
eurex_cash_eti_t7_v12_0.rbc_header_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Rbc Header Comp
eurex_cash_eti_t7_v12_0.rbc_header_comp.fields = function(buffer, offset, packet, parent)
  local index = offset

  -- Sending Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, sending_time = eurex_cash_eti_t7_v12_0.sending_time.dissect(buffer, index, packet, parent)

  -- Appl Seq Num: 8 Byte Unsigned Fixed Width Integer Nullable
  index, appl_seq_num = eurex_cash_eti_t7_v12_0.appl_seq_num.dissect(buffer, index, packet, parent)

  -- Appl Sub Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, appl_sub_id = eurex_cash_eti_t7_v12_0.appl_sub_id.dissect(buffer, index, packet, parent)

  -- Partition Id: 2 Byte Unsigned Fixed Width Integer Nullable
  index, partition_id = eurex_cash_eti_t7_v12_0.partition_id.dissect(buffer, index, packet, parent)

  -- Appl Resend Flag: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, appl_resend_flag = eurex_cash_eti_t7_v12_0.appl_resend_flag.dissect(buffer, index, packet, parent)

  -- Appl Id: 1 Byte Unsigned Fixed Width Integer Enum with 12 values
  index, appl_id = eurex_cash_eti_t7_v12_0.appl_id.dissect(buffer, index, packet, parent)

  -- Last Fragment: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, last_fragment = eurex_cash_eti_t7_v12_0.last_fragment.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Rbc Header Comp
eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect = function(buffer, offset, packet, parent)
  if show.rbc_header_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.rbc_header_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.rbc_header_comp.fields(buffer, offset, packet, parent)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.rbc_header_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.rbc_header_comp.fields(buffer, offset, packet, parent)
  end
end

-- Xetra En Light Status Broadcast
eurex_cash_eti_t7_v12_0.xetra_en_light_status_broadcast = {}

-- Read runtime size of: Xetra En Light Status Broadcast
eurex_cash_eti_t7_v12_0.xetra_en_light_status_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Status Broadcast
eurex_cash_eti_t7_v12_0.xetra_en_light_status_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Status Broadcast
eurex_cash_eti_t7_v12_0.xetra_en_light_status_broadcast.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_status_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_date = eurex_cash_eti_t7_v12_0.trade_date.dissect(buffer, index, packet, parent)

  -- Trad Ses Event: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trad_ses_event = eurex_cash_eti_t7_v12_0.trad_ses_event.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Status Broadcast
eurex_cash_eti_t7_v12_0.xetra_en_light_status_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_status_broadcast = eurex_cash_eti_t7_v12_0.xetra_en_light_status_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_status_broadcast then
    local range = buffer(offset, size_of_xetra_en_light_status_broadcast)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_status_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_status_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_status_broadcast.fields(buffer, offset, packet, parent, size_of_xetra_en_light_status_broadcast)

  return offset + size_of_xetra_en_light_status_broadcast
end

-- Pad 4
eurex_cash_eti_t7_v12_0.pad_4 = {}

-- Size: Pad 4
eurex_cash_eti_t7_v12_0.pad_4.size = 4

-- Display: Pad 4
eurex_cash_eti_t7_v12_0.pad_4.display = function(value)
  return "Pad 4: "..value
end

-- Dissect: Pad 4
eurex_cash_eti_t7_v12_0.pad_4.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.pad_4.size
  local range = buffer(offset, length)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.pad_4.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.pad_4, range, value, display)

  return offset + length, value
end

-- Request Time
eurex_cash_eti_t7_v12_0.request_time = {}

-- Size: Request Time
eurex_cash_eti_t7_v12_0.request_time.size = 8

-- Display: Request Time
eurex_cash_eti_t7_v12_0.request_time.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Request Time: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Request Time: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Request Time
eurex_cash_eti_t7_v12_0.request_time.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.request_time.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.request_time.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.request_time, range, value, display)

  return offset + length, value
end

-- Response Header Comp
eurex_cash_eti_t7_v12_0.response_header_comp = {}

-- Size: Response Header Comp
eurex_cash_eti_t7_v12_0.response_header_comp.size =
  eurex_cash_eti_t7_v12_0.request_time.size + 
  eurex_cash_eti_t7_v12_0.sending_time.size + 
  eurex_cash_eti_t7_v12_0.msg_seq_num.size + 
  eurex_cash_eti_t7_v12_0.pad_4.size

-- Display: Response Header Comp
eurex_cash_eti_t7_v12_0.response_header_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Response Header Comp
eurex_cash_eti_t7_v12_0.response_header_comp.fields = function(buffer, offset, packet, parent)
  local index = offset

  -- Request Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, request_time = eurex_cash_eti_t7_v12_0.request_time.dissect(buffer, index, packet, parent)

  -- Sending Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, sending_time = eurex_cash_eti_t7_v12_0.sending_time.dissect(buffer, index, packet, parent)

  -- Msg Seq Num: 4 Byte Unsigned Fixed Width Integer Nullable
  index, msg_seq_num = eurex_cash_eti_t7_v12_0.msg_seq_num.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Response Header Comp
eurex_cash_eti_t7_v12_0.response_header_comp.dissect = function(buffer, offset, packet, parent)
  if show.response_header_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.response_header_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.response_header_comp.fields(buffer, offset, packet, parent)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.response_header_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.response_header_comp.fields(buffer, offset, packet, parent)
  end
end

-- Xetra En Light Response
eurex_cash_eti_t7_v12_0.xetra_en_light_response = {}

-- Read runtime size of: Xetra En Light Response
eurex_cash_eti_t7_v12_0.xetra_en_light_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Response
eurex_cash_eti_t7_v12_0.xetra_en_light_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Response
eurex_cash_eti_t7_v12_0.xetra_en_light_response.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Response
eurex_cash_eti_t7_v12_0.xetra_en_light_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_response = eurex_cash_eti_t7_v12_0.xetra_en_light_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_response then
    local range = buffer(offset, size_of_xetra_en_light_response)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_response.fields(buffer, offset, packet, parent, size_of_xetra_en_light_response)

  return offset + size_of_xetra_en_light_response
end

-- Quoting Status
eurex_cash_eti_t7_v12_0.quoting_status = {}

-- Size: Quoting Status
eurex_cash_eti_t7_v12_0.quoting_status.size = 1

-- Display: Quoting Status
eurex_cash_eti_t7_v12_0.quoting_status.display = function(value)
  if value == 1 then
    return "Quoting Status: Open Active (1)"
  end
  if value == 2 then
    return "Quoting Status: Open Idle (2)"
  end
  if value == 3 then
    return "Quoting Status: Closed Inactive (3)"
  end
  if value == 4 then
    return "Quoting Status: Open Not Responded (4)"
  end
  if value == 5 then
    return "Quoting Status: Pre Fundingnotsufficient (5)"
  end
  if value == 0xFF then
    return "Quoting Status: No Value"
  end

  return "Quoting Status: Unknown("..value..")"
end

-- Dissect: Quoting Status
eurex_cash_eti_t7_v12_0.quoting_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quoting_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quoting_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quoting_status, range, value, display)

  return offset + length, value
end

-- Xetra En Light Quoting Status Request
eurex_cash_eti_t7_v12_0.xetra_en_light_quoting_status_request = {}

-- Read runtime size of: Xetra En Light Quoting Status Request
eurex_cash_eti_t7_v12_0.xetra_en_light_quoting_status_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Quoting Status Request
eurex_cash_eti_t7_v12_0.xetra_en_light_quoting_status_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Quoting Status Request
eurex_cash_eti_t7_v12_0.xetra_en_light_quoting_status_request.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_quoting_status_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Quoting Status: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, quoting_status = eurex_cash_eti_t7_v12_0.quoting_status.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Quoting Status Request
eurex_cash_eti_t7_v12_0.xetra_en_light_quoting_status_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_quoting_status_request = eurex_cash_eti_t7_v12_0.xetra_en_light_quoting_status_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_quoting_status_request then
    local range = buffer(offset, size_of_xetra_en_light_quoting_status_request)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_quoting_status_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_quoting_status_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_quoting_status_request.fields(buffer, offset, packet, parent, size_of_xetra_en_light_quoting_status_request)

  return offset + size_of_xetra_en_light_quoting_status_request
end

-- Xetra En Light Quote Snapshot Request
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_request = {}

-- Read runtime size of: Xetra En Light Quote Snapshot Request
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Quote Snapshot Request
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Quote Snapshot Request
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_request.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_quote_snapshot_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Quote Snapshot Request
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_quote_snapshot_request = eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_quote_snapshot_request then
    local range = buffer(offset, size_of_xetra_en_light_quote_snapshot_request)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_quote_snapshot_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_request.fields(buffer, offset, packet, parent, size_of_xetra_en_light_quote_snapshot_request)

  return offset + size_of_xetra_en_light_quote_snapshot_request
end

-- Party Entering Trader
eurex_cash_eti_t7_v12_0.party_entering_trader = {}

-- Size: Party Entering Trader
eurex_cash_eti_t7_v12_0.party_entering_trader.size = 6

-- Display: Party Entering Trader
eurex_cash_eti_t7_v12_0.party_entering_trader.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Party Entering Trader: No Value"
  end

  return "Party Entering Trader: "..value
end

-- Dissect: Party Entering Trader
eurex_cash_eti_t7_v12_0.party_entering_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_entering_trader.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.party_entering_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_entering_trader, range, value, display)

  return offset + length, value
end

-- Firm Negotiation Id
eurex_cash_eti_t7_v12_0.firm_negotiation_id = {}

-- Size: Firm Negotiation Id
eurex_cash_eti_t7_v12_0.firm_negotiation_id.size = 20

-- Display: Firm Negotiation Id
eurex_cash_eti_t7_v12_0.firm_negotiation_id.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Firm Negotiation Id: No Value"
  end

  return "Firm Negotiation Id: "..value
end

-- Dissect: Firm Negotiation Id
eurex_cash_eti_t7_v12_0.firm_negotiation_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.firm_negotiation_id.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.firm_negotiation_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.firm_negotiation_id, range, value, display)

  return offset + length, value
end

-- Quoting Frequency
eurex_cash_eti_t7_v12_0.quoting_frequency = {}

-- Size: Quoting Frequency
eurex_cash_eti_t7_v12_0.quoting_frequency.size = 1

-- Display: Quoting Frequency
eurex_cash_eti_t7_v12_0.quoting_frequency.display = function(value)
  if value == 0 then
    return "Quoting Frequency: Hf (0)"
  end
  if value == 1 then
    return "Quoting Frequency: Lf (1)"
  end
  if value == 0xFF then
    return "Quoting Frequency: No Value"
  end

  return "Quoting Frequency: Unknown("..value..")"
end

-- Dissect: Quoting Frequency
eurex_cash_eti_t7_v12_0.quoting_frequency.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quoting_frequency.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quoting_frequency.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quoting_frequency, range, value, display)

  return offset + length, value
end

-- Party Id Executing Trader
eurex_cash_eti_t7_v12_0.party_id_executing_trader = {}

-- Size: Party Id Executing Trader
eurex_cash_eti_t7_v12_0.party_id_executing_trader.size = 4

-- Display: Party Id Executing Trader
eurex_cash_eti_t7_v12_0.party_id_executing_trader.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Party Id Executing Trader: No Value"
  end

  return "Party Id Executing Trader: "..value
end

-- Dissect: Party Id Executing Trader
eurex_cash_eti_t7_v12_0.party_id_executing_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_id_executing_trader.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.party_id_executing_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_id_executing_trader, range, value, display)

  return offset + length, value
end

-- Offer Size
eurex_cash_eti_t7_v12_0.offer_size = {}

-- Size: Offer Size
eurex_cash_eti_t7_v12_0.offer_size.size = 8

-- Display: Offer Size
eurex_cash_eti_t7_v12_0.offer_size.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Offer Size: No Value"
  end

  return "Offer Size: "..value
end

-- Translate: Offer Size
eurex_cash_eti_t7_v12_0.offer_size.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Offer Size
eurex_cash_eti_t7_v12_0.offer_size.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.offer_size.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.offer_size.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.offer_size.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.offer_size, range, value, display)

  return offset + length, value
end

-- Bid Size
eurex_cash_eti_t7_v12_0.bid_size = {}

-- Size: Bid Size
eurex_cash_eti_t7_v12_0.bid_size.size = 8

-- Display: Bid Size
eurex_cash_eti_t7_v12_0.bid_size.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Bid Size: No Value"
  end

  return "Bid Size: "..value
end

-- Translate: Bid Size
eurex_cash_eti_t7_v12_0.bid_size.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Bid Size
eurex_cash_eti_t7_v12_0.bid_size.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.bid_size.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.bid_size.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.bid_size.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.bid_size, range, value, display)

  return offset + length, value
end

-- Secondary Quote Id
eurex_cash_eti_t7_v12_0.secondary_quote_id = {}

-- Size: Secondary Quote Id
eurex_cash_eti_t7_v12_0.secondary_quote_id.size = 8

-- Display: Secondary Quote Id
eurex_cash_eti_t7_v12_0.secondary_quote_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Secondary Quote Id: No Value"
  end

  return "Secondary Quote Id: "..value
end

-- Dissect: Secondary Quote Id
eurex_cash_eti_t7_v12_0.secondary_quote_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.secondary_quote_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.secondary_quote_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.secondary_quote_id, range, value, display)

  return offset + length, value
end

-- Quote Id
eurex_cash_eti_t7_v12_0.quote_id = {}

-- Size: Quote Id
eurex_cash_eti_t7_v12_0.quote_id.size = 8

-- Display: Quote Id
eurex_cash_eti_t7_v12_0.quote_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Quote Id: No Value"
  end

  return "Quote Id: "..value
end

-- Dissect: Quote Id
eurex_cash_eti_t7_v12_0.quote_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.quote_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_id, range, value, display)

  return offset + length, value
end

-- Expire Time
eurex_cash_eti_t7_v12_0.expire_time = {}

-- Size: Expire Time
eurex_cash_eti_t7_v12_0.expire_time.size = 8

-- Display: Expire Time
eurex_cash_eti_t7_v12_0.expire_time.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Expire Time: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Expire Time: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Expire Time
eurex_cash_eti_t7_v12_0.expire_time.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.expire_time.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.expire_time.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.expire_time, range, value, display)

  return offset + length, value
end

-- Transact Time
eurex_cash_eti_t7_v12_0.transact_time = {}

-- Size: Transact Time
eurex_cash_eti_t7_v12_0.transact_time.size = 8

-- Display: Transact Time
eurex_cash_eti_t7_v12_0.transact_time.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Transact Time: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Transact Time: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Transact Time
eurex_cash_eti_t7_v12_0.transact_time.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.transact_time.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.transact_time.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.transact_time, range, value, display)

  return offset + length, value
end

-- Srqs Quote Entry Grp Comp
eurex_cash_eti_t7_v12_0.srqs_quote_entry_grp_comp = {}

-- Size: Srqs Quote Entry Grp Comp
eurex_cash_eti_t7_v12_0.srqs_quote_entry_grp_comp.size =
  eurex_cash_eti_t7_v12_0.transact_time.size + 
  eurex_cash_eti_t7_v12_0.expire_time.size + 
  eurex_cash_eti_t7_v12_0.quote_id.size + 
  eurex_cash_eti_t7_v12_0.secondary_quote_id.size + 
  eurex_cash_eti_t7_v12_0.bid_px.size + 
  eurex_cash_eti_t7_v12_0.bid_size.size + 
  eurex_cash_eti_t7_v12_0.offer_px.size + 
  eurex_cash_eti_t7_v12_0.offer_size.size + 
  eurex_cash_eti_t7_v12_0.party_id_executing_trader.size + 
  eurex_cash_eti_t7_v12_0.negotiation_id.size + 
  eurex_cash_eti_t7_v12_0.quoting_status.size + 
  eurex_cash_eti_t7_v12_0.quoting_frequency.size + 
  eurex_cash_eti_t7_v12_0.firm_negotiation_id.size + 
  eurex_cash_eti_t7_v12_0.party_executing_firm.size + 
  eurex_cash_eti_t7_v12_0.party_executing_trader.size + 
  eurex_cash_eti_t7_v12_0.party_entering_trader.size + 
  eurex_cash_eti_t7_v12_0.pad_1.size

-- Display: Srqs Quote Entry Grp Comp
eurex_cash_eti_t7_v12_0.srqs_quote_entry_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Srqs Quote Entry Grp Comp
eurex_cash_eti_t7_v12_0.srqs_quote_entry_grp_comp.fields = function(buffer, offset, packet, parent, srqs_quote_entry_grp_comp_index)
  local index = offset

  -- Implicit Srqs Quote Entry Grp Comp Index
  if srqs_quote_entry_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.srqs_quote_entry_grp_comp_index, srqs_quote_entry_grp_comp_index)
    iteration:set_generated()
  end

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Expire Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, expire_time = eurex_cash_eti_t7_v12_0.expire_time.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Secondary Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, secondary_quote_id = eurex_cash_eti_t7_v12_0.secondary_quote_id.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Bid Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_size = eurex_cash_eti_t7_v12_0.bid_size.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Offer Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_size = eurex_cash_eti_t7_v12_0.offer_size.dissect(buffer, index, packet, parent)

  -- Party Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_executing_trader = eurex_cash_eti_t7_v12_0.party_id_executing_trader.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Quoting Status: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, quoting_status = eurex_cash_eti_t7_v12_0.quoting_status.dissect(buffer, index, packet, parent)

  -- Quoting Frequency: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, quoting_frequency = eurex_cash_eti_t7_v12_0.quoting_frequency.dissect(buffer, index, packet, parent)

  -- Firm Negotiation Id: 20 Byte Ascii String Nullable
  index, firm_negotiation_id = eurex_cash_eti_t7_v12_0.firm_negotiation_id.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Entering Trader: 6 Byte Ascii String Nullable
  index, party_entering_trader = eurex_cash_eti_t7_v12_0.party_entering_trader.dissect(buffer, index, packet, parent)

  -- Pad 1: 1 Byte
  index, pad_1 = eurex_cash_eti_t7_v12_0.pad_1.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Srqs Quote Entry Grp Comp
eurex_cash_eti_t7_v12_0.srqs_quote_entry_grp_comp.dissect = function(buffer, offset, packet, parent, srqs_quote_entry_grp_comp_index)
  if show.srqs_quote_entry_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.srqs_quote_entry_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.srqs_quote_entry_grp_comp.fields(buffer, offset, packet, parent, srqs_quote_entry_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.srqs_quote_entry_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.srqs_quote_entry_grp_comp.fields(buffer, offset, packet, parent, srqs_quote_entry_grp_comp_index)
  end
end

-- Pad 6
eurex_cash_eti_t7_v12_0.pad_6 = {}

-- Size: Pad 6
eurex_cash_eti_t7_v12_0.pad_6.size = 6

-- Display: Pad 6
eurex_cash_eti_t7_v12_0.pad_6.display = function(value)
  return "Pad 6: "..value
end

-- Dissect: Pad 6
eurex_cash_eti_t7_v12_0.pad_6.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.pad_6.size
  local range = buffer(offset, length)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.pad_6.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.pad_6, range, value, display)

  return offset + length, value
end

-- Message Event Source
eurex_cash_eti_t7_v12_0.message_event_source = {}

-- Size: Message Event Source
eurex_cash_eti_t7_v12_0.message_event_source.size = 1

-- Display: Message Event Source
eurex_cash_eti_t7_v12_0.message_event_source.display = function(value)
  -- Check if field has value
  if value == nil or value == 0 then
    return "Message Event Source: No Value"
  end

  if value == "I" then
    return "Message Event Source: Broadcastto Initiator (I)"
  end
  if value == "A" then
    return "Message Event Source: Broadcastto Approver (A)"
  end
  if value == "R" then
    return "Message Event Source: Broadcastto Requester (R)"
  end
  if value == "Q" then
    return "Message Event Source: Broadcastto Quote Submitter (Q)"
  end

  return "Message Event Source: Unknown("..value..")"
end

-- Dissect: Message Event Source
eurex_cash_eti_t7_v12_0.message_event_source.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.message_event_source.size
  local range = buffer(offset, length)

  -- parse as byte
  local value = range:uint()

  -- check if value is non zero
  if value ~= 0 then
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.message_event_source.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.message_event_source, range, value, display)

  return offset + length, value
end

-- No Quote Entries
eurex_cash_eti_t7_v12_0.no_quote_entries = {}

-- Size: No Quote Entries
eurex_cash_eti_t7_v12_0.no_quote_entries.size = 1

-- Display: No Quote Entries
eurex_cash_eti_t7_v12_0.no_quote_entries.display = function(value)
  -- Check if field has value
  if value == 0xFF then
    return "No Quote Entries: No Value"
  end

  return "No Quote Entries: "..value
end

-- Dissect: No Quote Entries
eurex_cash_eti_t7_v12_0.no_quote_entries.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_quote_entries.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_quote_entries.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_quote_entries, range, value, display)

  return offset + length, value
end

-- Xetra En Light Quote Snapshot Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_notification = {}

-- Read runtime size of: Xetra En Light Quote Snapshot Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Quote Snapshot Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Quote Snapshot Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_notification.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_quote_snapshot_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- No Quote Entries: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_quote_entries = eurex_cash_eti_t7_v12_0.no_quote_entries.dissect(buffer, index, packet, parent)

  -- Message Event Source: 1 Byte Ascii String Enum with 4 values
  index, message_event_source = eurex_cash_eti_t7_v12_0.message_event_source.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  -- Repeating: Srqs Quote Entry Grp Comp
  for srqs_quote_entry_grp_comp_index = 1, no_quote_entries do
    index, srqs_quote_entry_grp_comp = eurex_cash_eti_t7_v12_0.srqs_quote_entry_grp_comp.dissect(buffer, index, packet, parent, srqs_quote_entry_grp_comp_index)
  end

  return index
end

-- Dissect: Xetra En Light Quote Snapshot Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_quote_snapshot_notification = eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_quote_snapshot_notification then
    local range = buffer(offset, size_of_xetra_en_light_quote_snapshot_notification)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_quote_snapshot_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_notification.fields(buffer, offset, packet, parent, size_of_xetra_en_light_quote_snapshot_notification)

  return offset + size_of_xetra_en_light_quote_snapshot_notification
end

-- Quote Req Id
eurex_cash_eti_t7_v12_0.quote_req_id = {}

-- Size: Quote Req Id
eurex_cash_eti_t7_v12_0.quote_req_id.size = 20

-- Display: Quote Req Id
eurex_cash_eti_t7_v12_0.quote_req_id.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Quote Req Id: No Value"
  end

  return "Quote Req Id: "..value
end

-- Dissect: Quote Req Id
eurex_cash_eti_t7_v12_0.quote_req_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_req_id.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.quote_req_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_req_id, range, value, display)

  return offset + length, value
end

-- Xetra En Light Quote Response
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_response = {}

-- Read runtime size of: Xetra En Light Quote Response
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Quote Response
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Quote Response
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_response.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_quote_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Quote Req Id: 20 Byte Ascii String Nullable
  index, quote_req_id = eurex_cash_eti_t7_v12_0.quote_req_id.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Quote Response
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_quote_response = eurex_cash_eti_t7_v12_0.xetra_en_light_quote_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_quote_response then
    local range = buffer(offset, size_of_xetra_en_light_quote_response)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_quote_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_quote_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_quote_response.fields(buffer, offset, packet, parent, size_of_xetra_en_light_quote_response)

  return offset + size_of_xetra_en_light_quote_response
end

-- Trade Id
eurex_cash_eti_t7_v12_0.trade_id = {}

-- Size: Trade Id
eurex_cash_eti_t7_v12_0.trade_id.size = 4

-- Display: Trade Id
eurex_cash_eti_t7_v12_0.trade_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Trade Id: No Value"
  end

  return "Trade Id: "..value
end

-- Dissect: Trade Id
eurex_cash_eti_t7_v12_0.trade_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trade_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trade_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trade_id, range, value, display)

  return offset + length, value
end

-- Xetra En Light Quote Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_requester_notification = {}

-- Read runtime size of: Xetra En Light Quote Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_requester_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Quote Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_requester_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Quote Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_requester_notification.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_quote_requester_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_id = eurex_cash_eti_t7_v12_0.trade_id.dissect(buffer, index, packet, parent)

  -- Quote Req Id: 20 Byte Ascii String Nullable
  index, quote_req_id = eurex_cash_eti_t7_v12_0.quote_req_id.dissect(buffer, index, packet, parent)

  -- No Quote Entries: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_quote_entries = eurex_cash_eti_t7_v12_0.no_quote_entries.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  -- Repeating: Srqs Quote Entry Grp Comp
  for srqs_quote_entry_grp_comp_index = 1, no_quote_entries do
    index, srqs_quote_entry_grp_comp = eurex_cash_eti_t7_v12_0.srqs_quote_entry_grp_comp.dissect(buffer, index, packet, parent, srqs_quote_entry_grp_comp_index)
  end

  return index
end

-- Dissect: Xetra En Light Quote Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_requester_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_quote_requester_notification = eurex_cash_eti_t7_v12_0.xetra_en_light_quote_requester_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_quote_requester_notification then
    local range = buffer(offset, size_of_xetra_en_light_quote_requester_notification)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_quote_requester_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_quote_requester_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_quote_requester_notification.fields(buffer, offset, packet, parent, size_of_xetra_en_light_quote_requester_notification)

  return offset + size_of_xetra_en_light_quote_requester_notification
end

-- Quote Cancel Reason
eurex_cash_eti_t7_v12_0.quote_cancel_reason = {}

-- Size: Quote Cancel Reason
eurex_cash_eti_t7_v12_0.quote_cancel_reason.size = 1

-- Display: Quote Cancel Reason
eurex_cash_eti_t7_v12_0.quote_cancel_reason.display = function(value)
  if value == 5 then
    return "Quote Cancel Reason: Expired (5)"
  end
  if value == 0xFF then
    return "Quote Cancel Reason: No Value"
  end

  return "Quote Cancel Reason: Unknown("..value..")"
end

-- Dissect: Quote Cancel Reason
eurex_cash_eti_t7_v12_0.quote_cancel_reason.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_cancel_reason.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quote_cancel_reason.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_cancel_reason, range, value, display)

  return offset + length, value
end

-- Quote Event Reason
eurex_cash_eti_t7_v12_0.quote_event_reason = {}

-- Size: Quote Event Reason
eurex_cash_eti_t7_v12_0.quote_event_reason.size = 1

-- Display: Quote Event Reason
eurex_cash_eti_t7_v12_0.quote_event_reason.display = function(value)
  if value == 14 then
    return "Quote Event Reason: Pendingcancellationexecuted (14)"
  end
  if value == 15 then
    return "Quote Event Reason: Invalidprice (15)"
  end
  if value == 16 then
    return "Quote Event Reason: Crossrejected (16)"
  end
  if value == 18 then
    return "Quote Event Reason: Plp (18)"
  end
  if value == 19 then
    return "Quote Event Reason: Pricenot Topof Book (19)"
  end
  if value == 20 then
    return "Quote Event Reason: Random Selection (20)"
  end
  if value == 21 then
    return "Quote Event Reason: Manual Selection (21)"
  end
  if value == 0xFF then
    return "Quote Event Reason: No Value"
  end

  return "Quote Event Reason: Unknown("..value..")"
end

-- Dissect: Quote Event Reason
eurex_cash_eti_t7_v12_0.quote_event_reason.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_event_reason.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quote_event_reason.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_event_reason, range, value, display)

  return offset + length, value
end

-- Xetra En Light Quote Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_notification = {}

-- Read runtime size of: Xetra En Light Quote Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Quote Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Quote Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_notification.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_quote_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Secondary Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, secondary_quote_id = eurex_cash_eti_t7_v12_0.secondary_quote_id.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Bid Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_size = eurex_cash_eti_t7_v12_0.bid_size.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Offer Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_size = eurex_cash_eti_t7_v12_0.offer_size.dissect(buffer, index, packet, parent)

  -- Expire Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, expire_time = eurex_cash_eti_t7_v12_0.expire_time.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Quoting Status: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, quoting_status = eurex_cash_eti_t7_v12_0.quoting_status.dissect(buffer, index, packet, parent)

  -- Quote Event Reason: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, quote_event_reason = eurex_cash_eti_t7_v12_0.quote_event_reason.dissect(buffer, index, packet, parent)

  -- Quote Cancel Reason: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, quote_cancel_reason = eurex_cash_eti_t7_v12_0.quote_cancel_reason.dissect(buffer, index, packet, parent)

  -- Quoting Frequency: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, quoting_frequency = eurex_cash_eti_t7_v12_0.quoting_frequency.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Entering Trader: 6 Byte Ascii String Nullable
  index, party_entering_trader = eurex_cash_eti_t7_v12_0.party_entering_trader.dissect(buffer, index, packet, parent)

  -- Quote Req Id: 20 Byte Ascii String Nullable
  index, quote_req_id = eurex_cash_eti_t7_v12_0.quote_req_id.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Quote Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_quote_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_quote_notification = eurex_cash_eti_t7_v12_0.xetra_en_light_quote_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_quote_notification then
    local range = buffer(offset, size_of_xetra_en_light_quote_notification)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_quote_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_quote_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_quote_notification.fields(buffer, offset, packet, parent, size_of_xetra_en_light_quote_notification)

  return offset + size_of_xetra_en_light_quote_notification
end

-- Pad 5
eurex_cash_eti_t7_v12_0.pad_5 = {}

-- Size: Pad 5
eurex_cash_eti_t7_v12_0.pad_5.size = 5

-- Display: Pad 5
eurex_cash_eti_t7_v12_0.pad_5.display = function(value)
  return "Pad 5: "..value
end

-- Dissect: Pad 5
eurex_cash_eti_t7_v12_0.pad_5.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.pad_5.size
  local range = buffer(offset, length)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.pad_5.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.pad_5, range, value, display)

  return offset + length, value
end

-- Side Is Locked
eurex_cash_eti_t7_v12_0.side_is_locked = {}

-- Size: Side Is Locked
eurex_cash_eti_t7_v12_0.side_is_locked.size = 1

-- Display: Side Is Locked
eurex_cash_eti_t7_v12_0.side_is_locked.display = function(value)
  if value == 0 then
    return "Side Is Locked: No (0)"
  end
  if value == 1 then
    return "Side Is Locked: Yes (1)"
  end
  if value == 0xFF then
    return "Side Is Locked: No Value"
  end

  return "Side Is Locked: Unknown("..value..")"
end

-- Dissect: Side Is Locked
eurex_cash_eti_t7_v12_0.side_is_locked.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.side_is_locked.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.side_is_locked.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.side_is_locked, range, value, display)

  return offset + length, value
end

-- Offer Px Is Locked
eurex_cash_eti_t7_v12_0.offer_px_is_locked = {}

-- Size: Offer Px Is Locked
eurex_cash_eti_t7_v12_0.offer_px_is_locked.size = 1

-- Display: Offer Px Is Locked
eurex_cash_eti_t7_v12_0.offer_px_is_locked.display = function(value)
  if value == 0 then
    return "Offer Px Is Locked: No (0)"
  end
  if value == 1 then
    return "Offer Px Is Locked: Yes (1)"
  end
  if value == 0xFF then
    return "Offer Px Is Locked: No Value"
  end

  return "Offer Px Is Locked: Unknown("..value..")"
end

-- Dissect: Offer Px Is Locked
eurex_cash_eti_t7_v12_0.offer_px_is_locked.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.offer_px_is_locked.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.offer_px_is_locked.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.offer_px_is_locked, range, value, display)

  return offset + length, value
end

-- Bid Px Is Locked
eurex_cash_eti_t7_v12_0.bid_px_is_locked = {}

-- Size: Bid Px Is Locked
eurex_cash_eti_t7_v12_0.bid_px_is_locked.size = 1

-- Display: Bid Px Is Locked
eurex_cash_eti_t7_v12_0.bid_px_is_locked.display = function(value)
  if value == 0 then
    return "Bid Px Is Locked: No (0)"
  end
  if value == 1 then
    return "Bid Px Is Locked: Yes (1)"
  end
  if value == 0xFF then
    return "Bid Px Is Locked: No Value"
  end

  return "Bid Px Is Locked: Unknown("..value..")"
end

-- Dissect: Bid Px Is Locked
eurex_cash_eti_t7_v12_0.bid_px_is_locked.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.bid_px_is_locked.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.bid_px_is_locked.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.bid_px_is_locked, range, value, display)

  return offset + length, value
end

-- Quote Type
eurex_cash_eti_t7_v12_0.quote_type = {}

-- Size: Quote Type
eurex_cash_eti_t7_v12_0.quote_type.size = 1

-- Display: Quote Type
eurex_cash_eti_t7_v12_0.quote_type.display = function(value)
  if value == 0 then
    return "Quote Type: Indicative (0)"
  end
  if value == 1 then
    return "Quote Type: Tradeable (1)"
  end
  if value == 101 then
    return "Quote Type: Tradeable Matching (101)"
  end
  if value == 102 then
    return "Quote Type: Tradeable Pwt (102)"
  end
  if value == 103 then
    return "Quote Type: Special Auction (103)"
  end
  if value == 104 then
    return "Quote Type: Pw Twithin Special Auction (104)"
  end
  if value == 0xFF then
    return "Quote Type: No Value"
  end

  return "Quote Type: Unknown("..value..")"
end

-- Dissect: Quote Type
eurex_cash_eti_t7_v12_0.quote_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quote_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_type, range, value, display)

  return offset + length, value
end

-- Number Of Respondents
eurex_cash_eti_t7_v12_0.number_of_respondents = {}

-- Size: Number Of Respondents
eurex_cash_eti_t7_v12_0.number_of_respondents.size = 4

-- Display: Number Of Respondents
eurex_cash_eti_t7_v12_0.number_of_respondents.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Number Of Respondents: No Value"
  end

  return "Number Of Respondents: "..value
end

-- Dissect: Number Of Respondents
eurex_cash_eti_t7_v12_0.number_of_respondents.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.number_of_respondents.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.number_of_respondents.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.number_of_respondents, range, value, display)

  return offset + length, value
end

-- Auto Exec Expiry Time
eurex_cash_eti_t7_v12_0.auto_exec_expiry_time = {}

-- Size: Auto Exec Expiry Time
eurex_cash_eti_t7_v12_0.auto_exec_expiry_time.size = 8

-- Display: Auto Exec Expiry Time
eurex_cash_eti_t7_v12_0.auto_exec_expiry_time.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Auto Exec Expiry Time: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Auto Exec Expiry Time: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Auto Exec Expiry Time
eurex_cash_eti_t7_v12_0.auto_exec_expiry_time.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.auto_exec_expiry_time.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.auto_exec_expiry_time.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.auto_exec_expiry_time, range, value, display)

  return offset + length, value
end

-- Last Qty
eurex_cash_eti_t7_v12_0.last_qty = {}

-- Size: Last Qty
eurex_cash_eti_t7_v12_0.last_qty.size = 8

-- Display: Last Qty
eurex_cash_eti_t7_v12_0.last_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Last Qty: No Value"
  end

  return "Last Qty: "..value
end

-- Translate: Last Qty
eurex_cash_eti_t7_v12_0.last_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Last Qty
eurex_cash_eti_t7_v12_0.last_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.last_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.last_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.last_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.last_qty, range, value, display)

  return offset + length, value
end

-- Last Px
eurex_cash_eti_t7_v12_0.last_px = {}

-- Size: Last Px
eurex_cash_eti_t7_v12_0.last_px.size = 8

-- Display: Last Px
eurex_cash_eti_t7_v12_0.last_px.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Last Px: No Value"
  end

  return "Last Px: "..value
end

-- Translate: Last Px
eurex_cash_eti_t7_v12_0.last_px.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Last Px
eurex_cash_eti_t7_v12_0.last_px.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.last_px.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.last_px.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.last_px.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.last_px, range, value, display)

  return offset + length, value
end

-- Security Id
eurex_cash_eti_t7_v12_0.security_id = {}

-- Size: Security Id
eurex_cash_eti_t7_v12_0.security_id.size = 8

-- Display: Security Id
eurex_cash_eti_t7_v12_0.security_id.display = function(value)
  -- Check if field has value
  if value == Int64(0x00000000, 0x80000000) then
    return "Security Id: No Value"
  end

  return "Security Id: "..value
end

-- Dissect: Security Id
eurex_cash_eti_t7_v12_0.security_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.security_id.size
  local range = buffer(offset, length)
  local value = range:le_int64()
  local display = eurex_cash_eti_t7_v12_0.security_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.security_id, range, value, display)

  return offset + length, value
end

-- Xetra En Light Open Negotiation Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_requester_notification = {}

-- Read runtime size of: Xetra En Light Open Negotiation Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_requester_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Open Negotiation Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_requester_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Open Negotiation Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_requester_notification.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_open_negotiation_requester_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Last Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_px = eurex_cash_eti_t7_v12_0.last_px.dissect(buffer, index, packet, parent)

  -- Last Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_qty = eurex_cash_eti_t7_v12_0.last_qty.dissect(buffer, index, packet, parent)

  -- Expire Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, expire_time = eurex_cash_eti_t7_v12_0.expire_time.dissect(buffer, index, packet, parent)

  -- Auto Exec Expiry Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, auto_exec_expiry_time = eurex_cash_eti_t7_v12_0.auto_exec_expiry_time.dissect(buffer, index, packet, parent)

  -- Auto Exec Limit Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, auto_exec_limit_price = eurex_cash_eti_t7_v12_0.auto_exec_limit_price.dissect(buffer, index, packet, parent)

  -- Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_client_id = eurex_cash_eti_t7_v12_0.party_id_client_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Number Of Respondents: 4 Byte Unsigned Fixed Width Integer Nullable
  index, number_of_respondents = eurex_cash_eti_t7_v12_0.number_of_respondents.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Auto Exec Reference Price Offset: 4 Byte Signed Fixed Width Integer Nullable
  index, auto_exec_reference_price_offset = eurex_cash_eti_t7_v12_0.auto_exec_reference_price_offset.dissect(buffer, index, packet, parent)

  -- Auto Exec Min No Of Quotes: 4 Byte Unsigned Fixed Width Integer Nullable
  index, auto_exec_min_no_of_quotes = eurex_cash_eti_t7_v12_0.auto_exec_min_no_of_quotes.dissect(buffer, index, packet, parent)

  -- No Target Party I Ds: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_target_party_i_ds = eurex_cash_eti_t7_v12_0.no_target_party_i_ds.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Quote Type: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, quote_type = eurex_cash_eti_t7_v12_0.quote_type.dissect(buffer, index, packet, parent)

  -- Number Of Resp Disclosure Instruction: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, number_of_resp_disclosure_instruction = eurex_cash_eti_t7_v12_0.number_of_resp_disclosure_instruction.dissect(buffer, index, packet, parent)

  -- Respondent Type: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, respondent_type = eurex_cash_eti_t7_v12_0.respondent_type.dissect(buffer, index, packet, parent)

  -- Bid Px Is Locked: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, bid_px_is_locked = eurex_cash_eti_t7_v12_0.bid_px_is_locked.dissect(buffer, index, packet, parent)

  -- Offer Px Is Locked: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, offer_px_is_locked = eurex_cash_eti_t7_v12_0.offer_px_is_locked.dissect(buffer, index, packet, parent)

  -- Side Is Locked: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side_is_locked = eurex_cash_eti_t7_v12_0.side_is_locked.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Auto Exec Type: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, auto_exec_type = eurex_cash_eti_t7_v12_0.auto_exec_type.dissect(buffer, index, packet, parent)

  -- Side Disclosure Instruction: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side_disclosure_instruction = eurex_cash_eti_t7_v12_0.side_disclosure_instruction.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Quote Condition: 1 Byte Ascii String Enum with 5 values
  index, quote_condition = eurex_cash_eti_t7_v12_0.quote_condition.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Entering Trader: 6 Byte Ascii String Nullable
  index, party_entering_trader = eurex_cash_eti_t7_v12_0.party_entering_trader.dissect(buffer, index, packet, parent)

  -- Firm Negotiation Id: 20 Byte Ascii String Nullable
  index, firm_negotiation_id = eurex_cash_eti_t7_v12_0.firm_negotiation_id.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Free Text 5: 132 Byte Ascii String Nullable
  index, free_text_5 = eurex_cash_eti_t7_v12_0.free_text_5.dissect(buffer, index, packet, parent)

  -- Pad 5: 5 Byte
  index, pad_5 = eurex_cash_eti_t7_v12_0.pad_5.dissect(buffer, index, packet, parent)

  -- Repeating: Xetra En Light Target Parties Comp
  for xetra_en_light_target_parties_comp_index = 1, no_target_party_i_ds do
    index, xetra_en_light_target_parties_comp = eurex_cash_eti_t7_v12_0.xetra_en_light_target_parties_comp.dissect(buffer, index, packet, parent, xetra_en_light_target_parties_comp_index)
  end

  return index
end

-- Dissect: Xetra En Light Open Negotiation Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_requester_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_open_negotiation_requester_notification = eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_requester_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_open_negotiation_requester_notification then
    local range = buffer(offset, size_of_xetra_en_light_open_negotiation_requester_notification)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_requester_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_open_negotiation_requester_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_requester_notification.fields(buffer, offset, packet, parent, size_of_xetra_en_light_open_negotiation_requester_notification)

  return offset + size_of_xetra_en_light_open_negotiation_requester_notification
end

-- Valid Until Time
eurex_cash_eti_t7_v12_0.valid_until_time = {}

-- Size: Valid Until Time
eurex_cash_eti_t7_v12_0.valid_until_time.size = 8

-- Display: Valid Until Time
eurex_cash_eti_t7_v12_0.valid_until_time.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Valid Until Time: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Valid Until Time: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Valid Until Time
eurex_cash_eti_t7_v12_0.valid_until_time.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.valid_until_time.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.valid_until_time.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.valid_until_time, range, value, display)

  return offset + length, value
end

-- Xetra En Light Open Negotiation Request
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_request = {}

-- Read runtime size of: Xetra En Light Open Negotiation Request
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Open Negotiation Request
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Open Negotiation Request
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_request.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_open_negotiation_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Valid Until Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, valid_until_time = eurex_cash_eti_t7_v12_0.valid_until_time.dissect(buffer, index, packet, parent)

  -- Auto Exec Limit Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, auto_exec_limit_price = eurex_cash_eti_t7_v12_0.auto_exec_limit_price.dissect(buffer, index, packet, parent)

  -- Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_client_id = eurex_cash_eti_t7_v12_0.party_id_client_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Auto Exec Exposure Duration: 4 Byte Unsigned Fixed Width Integer Nullable
  index, auto_exec_exposure_duration = eurex_cash_eti_t7_v12_0.auto_exec_exposure_duration.dissect(buffer, index, packet, parent)

  -- Auto Exec Reference Price Offset: 4 Byte Signed Fixed Width Integer Nullable
  index, auto_exec_reference_price_offset = eurex_cash_eti_t7_v12_0.auto_exec_reference_price_offset.dissect(buffer, index, packet, parent)

  -- Auto Exec Min No Of Quotes: 4 Byte Unsigned Fixed Width Integer Nullable
  index, auto_exec_min_no_of_quotes = eurex_cash_eti_t7_v12_0.auto_exec_min_no_of_quotes.dissect(buffer, index, packet, parent)

  -- No Target Party I Ds: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_target_party_i_ds = eurex_cash_eti_t7_v12_0.no_target_party_i_ds.dissect(buffer, index, packet, parent)

  -- Number Of Resp Disclosure Instruction: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, number_of_resp_disclosure_instruction = eurex_cash_eti_t7_v12_0.number_of_resp_disclosure_instruction.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Respondent Type: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, respondent_type = eurex_cash_eti_t7_v12_0.respondent_type.dissect(buffer, index, packet, parent)

  -- Bid Px Is Locked: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, bid_px_is_locked = eurex_cash_eti_t7_v12_0.bid_px_is_locked.dissect(buffer, index, packet, parent)

  -- Offer Px Is Locked: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, offer_px_is_locked = eurex_cash_eti_t7_v12_0.offer_px_is_locked.dissect(buffer, index, packet, parent)

  -- Side Is Locked: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side_is_locked = eurex_cash_eti_t7_v12_0.side_is_locked.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Auto Exec Type: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, auto_exec_type = eurex_cash_eti_t7_v12_0.auto_exec_type.dissect(buffer, index, packet, parent)

  -- Side Disclosure Instruction: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side_disclosure_instruction = eurex_cash_eti_t7_v12_0.side_disclosure_instruction.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Quote Condition: 1 Byte Ascii String Enum with 5 values
  index, quote_condition = eurex_cash_eti_t7_v12_0.quote_condition.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Free Text 5: 132 Byte Ascii String Nullable
  index, free_text_5 = eurex_cash_eti_t7_v12_0.free_text_5.dissect(buffer, index, packet, parent)

  -- Quote Req Id: 20 Byte Ascii String Nullable
  index, quote_req_id = eurex_cash_eti_t7_v12_0.quote_req_id.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Repeating: Xetra En Light Target Parties Comp
  for xetra_en_light_target_parties_comp_index = 1, no_target_party_i_ds do
    index, xetra_en_light_target_parties_comp = eurex_cash_eti_t7_v12_0.xetra_en_light_target_parties_comp.dissect(buffer, index, packet, parent, xetra_en_light_target_parties_comp_index)
  end

  return index
end

-- Dissect: Xetra En Light Open Negotiation Request
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_open_negotiation_request = eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_open_negotiation_request then
    local range = buffer(offset, size_of_xetra_en_light_open_negotiation_request)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_open_negotiation_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_request.fields(buffer, offset, packet, parent, size_of_xetra_en_light_open_negotiation_request)

  return offset + size_of_xetra_en_light_open_negotiation_request
end

-- Leaves Qty
eurex_cash_eti_t7_v12_0.leaves_qty = {}

-- Size: Leaves Qty
eurex_cash_eti_t7_v12_0.leaves_qty.size = 8

-- Display: Leaves Qty
eurex_cash_eti_t7_v12_0.leaves_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Leaves Qty: No Value"
  end

  return "Leaves Qty: "..value
end

-- Translate: Leaves Qty
eurex_cash_eti_t7_v12_0.leaves_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Leaves Qty
eurex_cash_eti_t7_v12_0.leaves_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.leaves_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.leaves_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.leaves_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.leaves_qty, range, value, display)

  return offset + length, value
end

-- Negotiation Start Time
eurex_cash_eti_t7_v12_0.negotiation_start_time = {}

-- Size: Negotiation Start Time
eurex_cash_eti_t7_v12_0.negotiation_start_time.size = 8

-- Display: Negotiation Start Time
eurex_cash_eti_t7_v12_0.negotiation_start_time.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Negotiation Start Time: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Negotiation Start Time: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Negotiation Start Time
eurex_cash_eti_t7_v12_0.negotiation_start_time.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.negotiation_start_time.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.negotiation_start_time.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.negotiation_start_time, range, value, display)

  return offset + length, value
end

-- Xetra En Light Open Negotiation Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_notification = {}

-- Read runtime size of: Xetra En Light Open Negotiation Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Open Negotiation Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Open Negotiation Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_notification.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_open_negotiation_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Negotiation Start Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_start_time = eurex_cash_eti_t7_v12_0.negotiation_start_time.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Expire Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, expire_time = eurex_cash_eti_t7_v12_0.expire_time.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Number Of Respondents: 4 Byte Unsigned Fixed Width Integer Nullable
  index, number_of_respondents = eurex_cash_eti_t7_v12_0.number_of_respondents.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Quote Type: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, quote_type = eurex_cash_eti_t7_v12_0.quote_type.dissect(buffer, index, packet, parent)

  -- Respondent Type: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, respondent_type = eurex_cash_eti_t7_v12_0.respondent_type.dissect(buffer, index, packet, parent)

  -- Quote Condition: 1 Byte Ascii String Enum with 5 values
  index, quote_condition = eurex_cash_eti_t7_v12_0.quote_condition.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Entering Trader: 6 Byte Ascii String Nullable
  index, party_entering_trader = eurex_cash_eti_t7_v12_0.party_entering_trader.dissect(buffer, index, packet, parent)

  -- Target Party Executing Firm: 5 Byte Ascii String Nullable
  index, target_party_executing_firm = eurex_cash_eti_t7_v12_0.target_party_executing_firm.dissect(buffer, index, packet, parent)

  -- Target Party Executing Trader: 6 Byte Ascii String Nullable
  index, target_party_executing_trader = eurex_cash_eti_t7_v12_0.target_party_executing_trader.dissect(buffer, index, packet, parent)

  -- Firm Negotiation Id: 20 Byte Ascii String Nullable
  index, firm_negotiation_id = eurex_cash_eti_t7_v12_0.firm_negotiation_id.dissect(buffer, index, packet, parent)

  -- Free Text 5: 132 Byte Ascii String Nullable
  index, free_text_5 = eurex_cash_eti_t7_v12_0.free_text_5.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Open Negotiation Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_open_negotiation_notification = eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_open_negotiation_notification then
    local range = buffer(offset, size_of_xetra_en_light_open_negotiation_notification)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_open_negotiation_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_notification.fields(buffer, offset, packet, parent, size_of_xetra_en_light_open_negotiation_notification)

  return offset + size_of_xetra_en_light_open_negotiation_notification
end

-- Xetra En Light Negotiation Status Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_status_notification = {}

-- Read runtime size of: Xetra En Light Negotiation Status Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_status_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Negotiation Status Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_status_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Negotiation Status Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_status_notification.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_negotiation_status_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Quote Condition: 1 Byte Ascii String Enum with 5 values
  index, quote_condition = eurex_cash_eti_t7_v12_0.quote_condition.dissect(buffer, index, packet, parent)

  -- Firm Negotiation Id: 20 Byte Ascii String Nullable
  index, firm_negotiation_id = eurex_cash_eti_t7_v12_0.firm_negotiation_id.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Negotiation Status Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_status_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_negotiation_status_notification = eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_status_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_negotiation_status_notification then
    local range = buffer(offset, size_of_xetra_en_light_negotiation_status_notification)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_status_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_negotiation_status_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_status_notification.fields(buffer, offset, packet, parent, size_of_xetra_en_light_negotiation_status_notification)

  return offset + size_of_xetra_en_light_negotiation_status_notification
end

-- Closure Reason
eurex_cash_eti_t7_v12_0.closure_reason = {}

-- Size: Closure Reason
eurex_cash_eti_t7_v12_0.closure_reason.size = 132

-- Display: Closure Reason
eurex_cash_eti_t7_v12_0.closure_reason.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Closure Reason: No Value"
  end

  return "Closure Reason: "..value
end

-- Dissect: Closure Reason
eurex_cash_eti_t7_v12_0.closure_reason.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.closure_reason.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.closure_reason.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.closure_reason, range, value, display)

  return offset + length, value
end

-- Trd Reg Ts Execution Time
eurex_cash_eti_t7_v12_0.trd_reg_ts_execution_time = {}

-- Size: Trd Reg Ts Execution Time
eurex_cash_eti_t7_v12_0.trd_reg_ts_execution_time.size = 8

-- Display: Trd Reg Ts Execution Time
eurex_cash_eti_t7_v12_0.trd_reg_ts_execution_time.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Trd Reg Ts Execution Time: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Trd Reg Ts Execution Time: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Trd Reg Ts Execution Time
eurex_cash_eti_t7_v12_0.trd_reg_ts_execution_time.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trd_reg_ts_execution_time.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.trd_reg_ts_execution_time.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trd_reg_ts_execution_time, range, value, display)

  return offset + length, value
end

-- Xetra En Light Negotiation Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_requester_notification = {}

-- Read runtime size of: Xetra En Light Negotiation Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_requester_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Negotiation Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_requester_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Negotiation Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_requester_notification.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_negotiation_requester_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Execution Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_execution_time = eurex_cash_eti_t7_v12_0.trd_reg_ts_execution_time.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Last Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_px = eurex_cash_eti_t7_v12_0.last_px.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Last Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_qty = eurex_cash_eti_t7_v12_0.last_qty.dissect(buffer, index, packet, parent)

  -- Auto Exec Limit Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, auto_exec_limit_price = eurex_cash_eti_t7_v12_0.auto_exec_limit_price.dissect(buffer, index, packet, parent)

  -- Expire Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, expire_time = eurex_cash_eti_t7_v12_0.expire_time.dissect(buffer, index, packet, parent)

  -- Auto Exec Expiry Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, auto_exec_expiry_time = eurex_cash_eti_t7_v12_0.auto_exec_expiry_time.dissect(buffer, index, packet, parent)

  -- Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_client_id = eurex_cash_eti_t7_v12_0.party_id_client_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Number Of Respondents: 4 Byte Unsigned Fixed Width Integer Nullable
  index, number_of_respondents = eurex_cash_eti_t7_v12_0.number_of_respondents.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Auto Exec Reference Price Offset: 4 Byte Signed Fixed Width Integer Nullable
  index, auto_exec_reference_price_offset = eurex_cash_eti_t7_v12_0.auto_exec_reference_price_offset.dissect(buffer, index, packet, parent)

  -- Auto Exec Min No Of Quotes: 4 Byte Unsigned Fixed Width Integer Nullable
  index, auto_exec_min_no_of_quotes = eurex_cash_eti_t7_v12_0.auto_exec_min_no_of_quotes.dissect(buffer, index, packet, parent)

  -- No Target Party I Ds: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_target_party_i_ds = eurex_cash_eti_t7_v12_0.no_target_party_i_ds.dissect(buffer, index, packet, parent)

  -- Number Of Resp Disclosure Instruction: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, number_of_resp_disclosure_instruction = eurex_cash_eti_t7_v12_0.number_of_resp_disclosure_instruction.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Quote Type: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, quote_type = eurex_cash_eti_t7_v12_0.quote_type.dissect(buffer, index, packet, parent)

  -- Respondent Type: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, respondent_type = eurex_cash_eti_t7_v12_0.respondent_type.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Auto Exec Type: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, auto_exec_type = eurex_cash_eti_t7_v12_0.auto_exec_type.dissect(buffer, index, packet, parent)

  -- Side Disclosure Instruction: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side_disclosure_instruction = eurex_cash_eti_t7_v12_0.side_disclosure_instruction.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Quote Condition: 1 Byte Ascii String Enum with 5 values
  index, quote_condition = eurex_cash_eti_t7_v12_0.quote_condition.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Entering Trader: 6 Byte Ascii String Nullable
  index, party_entering_trader = eurex_cash_eti_t7_v12_0.party_entering_trader.dissect(buffer, index, packet, parent)

  -- Firm Negotiation Id: 20 Byte Ascii String Nullable
  index, firm_negotiation_id = eurex_cash_eti_t7_v12_0.firm_negotiation_id.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Free Text 5: 132 Byte Ascii String Nullable
  index, free_text_5 = eurex_cash_eti_t7_v12_0.free_text_5.dissect(buffer, index, packet, parent)

  -- Closure Reason: 132 Byte Ascii String Nullable
  index, closure_reason = eurex_cash_eti_t7_v12_0.closure_reason.dissect(buffer, index, packet, parent)

  -- Repeating: Xetra En Light Target Parties Comp
  for xetra_en_light_target_parties_comp_index = 1, no_target_party_i_ds do
    index, xetra_en_light_target_parties_comp = eurex_cash_eti_t7_v12_0.xetra_en_light_target_parties_comp.dissect(buffer, index, packet, parent, xetra_en_light_target_parties_comp_index)
  end

  return index
end

-- Dissect: Xetra En Light Negotiation Requester Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_requester_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_negotiation_requester_notification = eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_requester_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_negotiation_requester_notification then
    local range = buffer(offset, size_of_xetra_en_light_negotiation_requester_notification)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_requester_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_negotiation_requester_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_requester_notification.fields(buffer, offset, packet, parent, size_of_xetra_en_light_negotiation_requester_notification)

  return offset + size_of_xetra_en_light_negotiation_requester_notification
end

-- Xetra En Light Negotiation Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_notification = {}

-- Read runtime size of: Xetra En Light Negotiation Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Negotiation Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Negotiation Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_notification.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_negotiation_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Number Of Respondents: 4 Byte Unsigned Fixed Width Integer Nullable
  index, number_of_respondents = eurex_cash_eti_t7_v12_0.number_of_respondents.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Quote Type: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, quote_type = eurex_cash_eti_t7_v12_0.quote_type.dissect(buffer, index, packet, parent)

  -- Quote Condition: 1 Byte Ascii String Enum with 5 values
  index, quote_condition = eurex_cash_eti_t7_v12_0.quote_condition.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Entering Trader: 6 Byte Ascii String Nullable
  index, party_entering_trader = eurex_cash_eti_t7_v12_0.party_entering_trader.dissect(buffer, index, packet, parent)

  -- Target Party Executing Firm: 5 Byte Ascii String Nullable
  index, target_party_executing_firm = eurex_cash_eti_t7_v12_0.target_party_executing_firm.dissect(buffer, index, packet, parent)

  -- Target Party Executing Trader: 6 Byte Ascii String Nullable
  index, target_party_executing_trader = eurex_cash_eti_t7_v12_0.target_party_executing_trader.dissect(buffer, index, packet, parent)

  -- Firm Negotiation Id: 20 Byte Ascii String Nullable
  index, firm_negotiation_id = eurex_cash_eti_t7_v12_0.firm_negotiation_id.dissect(buffer, index, packet, parent)

  -- Free Text 5: 132 Byte Ascii String Nullable
  index, free_text_5 = eurex_cash_eti_t7_v12_0.free_text_5.dissect(buffer, index, packet, parent)

  -- Pad 5: 5 Byte
  index, pad_5 = eurex_cash_eti_t7_v12_0.pad_5.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Negotiation Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_negotiation_notification = eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_negotiation_notification then
    local range = buffer(offset, size_of_xetra_en_light_negotiation_notification)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_negotiation_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_notification.fields(buffer, offset, packet, parent, size_of_xetra_en_light_negotiation_notification)

  return offset + size_of_xetra_en_light_negotiation_notification
end

-- Firm Trade Id
eurex_cash_eti_t7_v12_0.firm_trade_id = {}

-- Size: Firm Trade Id
eurex_cash_eti_t7_v12_0.firm_trade_id.size = 20

-- Display: Firm Trade Id
eurex_cash_eti_t7_v12_0.firm_trade_id.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Firm Trade Id: No Value"
  end

  return "Firm Trade Id: "..value
end

-- Dissect: Firm Trade Id
eurex_cash_eti_t7_v12_0.firm_trade_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.firm_trade_id.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.firm_trade_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.firm_trade_id, range, value, display)

  return offset + length, value
end

-- Alloc Method
eurex_cash_eti_t7_v12_0.alloc_method = {}

-- Size: Alloc Method
eurex_cash_eti_t7_v12_0.alloc_method.size = 1

-- Display: Alloc Method
eurex_cash_eti_t7_v12_0.alloc_method.display = function(value)
  if value == 1 then
    return "Alloc Method: Automatic Random (1)"
  end
  if value == 3 then
    return "Alloc Method: Manual (3)"
  end
  if value == 0xFF then
    return "Alloc Method: No Value"
  end

  return "Alloc Method: Unknown("..value..")"
end

-- Dissect: Alloc Method
eurex_cash_eti_t7_v12_0.alloc_method.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.alloc_method.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.alloc_method.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.alloc_method, range, value, display)

  return offset + length, value
end

-- Price
eurex_cash_eti_t7_v12_0.price = {}

-- Size: Price
eurex_cash_eti_t7_v12_0.price.size = 8

-- Display: Price
eurex_cash_eti_t7_v12_0.price.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Price: No Value"
  end

  return "Price: "..value
end

-- Translate: Price
eurex_cash_eti_t7_v12_0.price.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Price
eurex_cash_eti_t7_v12_0.price.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.price.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.price.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.price.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.price, range, value, display)

  return offset + length, value
end

-- Xetra En Light Hit Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_hit_quote_request = {}

-- Read runtime size of: Xetra En Light Hit Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_hit_quote_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Hit Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_hit_quote_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Hit Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_hit_quote_request.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_hit_quote_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, price = eurex_cash_eti_t7_v12_0.price.dissect(buffer, index, packet, parent)

  -- Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_client_id = eurex_cash_eti_t7_v12_0.party_id_client_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Alloc Method: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, alloc_method = eurex_cash_eti_t7_v12_0.alloc_method.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Firm Trade Id: 20 Byte Ascii String Nullable
  index, firm_trade_id = eurex_cash_eti_t7_v12_0.firm_trade_id.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Hit Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_hit_quote_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_hit_quote_request = eurex_cash_eti_t7_v12_0.xetra_en_light_hit_quote_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_hit_quote_request then
    local range = buffer(offset, size_of_xetra_en_light_hit_quote_request)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_hit_quote_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_hit_quote_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_hit_quote_request.fields(buffer, offset, packet, parent, size_of_xetra_en_light_hit_quote_request)

  return offset + size_of_xetra_en_light_hit_quote_request
end

-- Xetra En Light Enter Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_enter_quote_request = {}

-- Read runtime size of: Xetra En Light Enter Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_enter_quote_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Enter Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_enter_quote_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Enter Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_enter_quote_request.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_enter_quote_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Bid Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_size = eurex_cash_eti_t7_v12_0.bid_size.dissect(buffer, index, packet, parent)

  -- Offer Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_size = eurex_cash_eti_t7_v12_0.offer_size.dissect(buffer, index, packet, parent)

  -- Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_client_id = eurex_cash_eti_t7_v12_0.party_id_client_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Valid Until Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, valid_until_time = eurex_cash_eti_t7_v12_0.valid_until_time.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Quoting Frequency: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, quoting_frequency = eurex_cash_eti_t7_v12_0.quoting_frequency.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Enter Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_enter_quote_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_enter_quote_request = eurex_cash_eti_t7_v12_0.xetra_en_light_enter_quote_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_enter_quote_request then
    local range = buffer(offset, size_of_xetra_en_light_enter_quote_request)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_enter_quote_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_enter_quote_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_enter_quote_request.fields(buffer, offset, packet, parent, size_of_xetra_en_light_enter_quote_request)

  return offset + size_of_xetra_en_light_enter_quote_request
end

-- Target Party Id Session Id
eurex_cash_eti_t7_v12_0.target_party_id_session_id = {}

-- Size: Target Party Id Session Id
eurex_cash_eti_t7_v12_0.target_party_id_session_id.size = 4

-- Display: Target Party Id Session Id
eurex_cash_eti_t7_v12_0.target_party_id_session_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Target Party Id Session Id: No Value"
  end

  return "Target Party Id Session Id: "..value
end

-- Dissect: Target Party Id Session Id
eurex_cash_eti_t7_v12_0.target_party_id_session_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.target_party_id_session_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.target_party_id_session_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.target_party_id_session_id, range, value, display)

  return offset + length, value
end

-- Xetra En Light Delete All Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_request = {}

-- Read runtime size of: Xetra En Light Delete All Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Delete All Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Delete All Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_request.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_delete_all_quote_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Target Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_session_id = eurex_cash_eti_t7_v12_0.target_party_id_session_id.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Delete All Quote Request
eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_delete_all_quote_request = eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_delete_all_quote_request then
    local range = buffer(offset, size_of_xetra_en_light_delete_all_quote_request)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_delete_all_quote_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_request.fields(buffer, offset, packet, parent, size_of_xetra_en_light_delete_all_quote_request)

  return offset + size_of_xetra_en_light_delete_all_quote_request
end

-- Xetra En Light Delete All Quote Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_notification = {}

-- Read runtime size of: Xetra En Light Delete All Quote Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Delete All Quote Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Delete All Quote Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_notification.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_delete_all_quote_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Target Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_session_id = eurex_cash_eti_t7_v12_0.target_party_id_session_id.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Delete All Quote Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_delete_all_quote_notification = eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_delete_all_quote_notification then
    local range = buffer(offset, size_of_xetra_en_light_delete_all_quote_notification)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_delete_all_quote_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_notification.fields(buffer, offset, packet, parent, size_of_xetra_en_light_delete_all_quote_notification)

  return offset + size_of_xetra_en_light_delete_all_quote_notification
end

-- Trd Rpt Status
eurex_cash_eti_t7_v12_0.trd_rpt_status = {}

-- Size: Trd Rpt Status
eurex_cash_eti_t7_v12_0.trd_rpt_status.size = 1

-- Display: Trd Rpt Status
eurex_cash_eti_t7_v12_0.trd_rpt_status.display = function(value)
  if value == 0 then
    return "Trd Rpt Status: Accepted (0)"
  end
  if value == 1 then
    return "Trd Rpt Status: Rejected (1)"
  end
  if value == 2 then
    return "Trd Rpt Status: Cancelled (2)"
  end
  if value == 4 then
    return "Trd Rpt Status: Pending New (4)"
  end
  if value == 7 then
    return "Trd Rpt Status: Terminated (7)"
  end
  if value == 9 then
    return "Trd Rpt Status: Deemed Verified (9)"
  end
  if value == 0xFF then
    return "Trd Rpt Status: No Value"
  end

  return "Trd Rpt Status: Unknown("..value..")"
end

-- Dissect: Trd Rpt Status
eurex_cash_eti_t7_v12_0.trd_rpt_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trd_rpt_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trd_rpt_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trd_rpt_status, range, value, display)

  return offset + length, value
end

-- Xetra En Light Deal Status Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_deal_status_notification = {}

-- Read runtime size of: Xetra En Light Deal Status Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_deal_status_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Deal Status Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_deal_status_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Deal Status Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_deal_status_notification.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_deal_status_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_id = eurex_cash_eti_t7_v12_0.trade_id.dissect(buffer, index, packet, parent)

  -- Message Event Source: 1 Byte Ascii String Enum with 4 values
  index, message_event_source = eurex_cash_eti_t7_v12_0.message_event_source.dissect(buffer, index, packet, parent)

  -- Trd Rpt Status: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, trd_rpt_status = eurex_cash_eti_t7_v12_0.trd_rpt_status.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Deal Status Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_deal_status_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_deal_status_notification = eurex_cash_eti_t7_v12_0.xetra_en_light_deal_status_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_deal_status_notification then
    local range = buffer(offset, size_of_xetra_en_light_deal_status_notification)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_deal_status_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_deal_status_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_deal_status_notification.fields(buffer, offset, packet, parent, size_of_xetra_en_light_deal_status_notification)

  return offset + size_of_xetra_en_light_deal_status_notification
end

-- Secondary Trade Id
eurex_cash_eti_t7_v12_0.secondary_trade_id = {}

-- Size: Secondary Trade Id
eurex_cash_eti_t7_v12_0.secondary_trade_id.size = 4

-- Display: Secondary Trade Id
eurex_cash_eti_t7_v12_0.secondary_trade_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Secondary Trade Id: No Value"
  end

  return "Secondary Trade Id: "..value
end

-- Dissect: Secondary Trade Id
eurex_cash_eti_t7_v12_0.secondary_trade_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.secondary_trade_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.secondary_trade_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.secondary_trade_id, range, value, display)

  return offset + length, value
end

-- Xetra En Light Deal Response
eurex_cash_eti_t7_v12_0.xetra_en_light_deal_response = {}

-- Read runtime size of: Xetra En Light Deal Response
eurex_cash_eti_t7_v12_0.xetra_en_light_deal_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Deal Response
eurex_cash_eti_t7_v12_0.xetra_en_light_deal_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Deal Response
eurex_cash_eti_t7_v12_0.xetra_en_light_deal_response.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_deal_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_id = eurex_cash_eti_t7_v12_0.trade_id.dissect(buffer, index, packet, parent)

  -- Secondary Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, secondary_trade_id = eurex_cash_eti_t7_v12_0.secondary_trade_id.dissect(buffer, index, packet, parent)

  -- Firm Trade Id: 20 Byte Ascii String Nullable
  index, firm_trade_id = eurex_cash_eti_t7_v12_0.firm_trade_id.dissect(buffer, index, packet, parent)

  -- Firm Negotiation Id: 20 Byte Ascii String Nullable
  index, firm_negotiation_id = eurex_cash_eti_t7_v12_0.firm_negotiation_id.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Deal Response
eurex_cash_eti_t7_v12_0.xetra_en_light_deal_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_deal_response = eurex_cash_eti_t7_v12_0.xetra_en_light_deal_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_deal_response then
    local range = buffer(offset, size_of_xetra_en_light_deal_response)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_deal_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_deal_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_deal_response.fields(buffer, offset, packet, parent, size_of_xetra_en_light_deal_response)

  return offset + size_of_xetra_en_light_deal_response
end

-- Md Sub Book Type
eurex_cash_eti_t7_v12_0.md_sub_book_type = {}

-- Size: Md Sub Book Type
eurex_cash_eti_t7_v12_0.md_sub_book_type.size = 1

-- Display: Md Sub Book Type
eurex_cash_eti_t7_v12_0.md_sub_book_type.display = function(value)
  if value == 2 then
    return "Md Sub Book Type: Volume Weighted Average (2)"
  end
  if value == 0xFF then
    return "Md Sub Book Type: No Value"
  end

  return "Md Sub Book Type: Unknown("..value..")"
end

-- Dissect: Md Sub Book Type
eurex_cash_eti_t7_v12_0.md_sub_book_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.md_sub_book_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.md_sub_book_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.md_sub_book_type, range, value, display)

  return offset + length, value
end

-- Md Book Type
eurex_cash_eti_t7_v12_0.md_book_type = {}

-- Size: Md Book Type
eurex_cash_eti_t7_v12_0.md_book_type.size = 1

-- Display: Md Book Type
eurex_cash_eti_t7_v12_0.md_book_type.display = function(value)
  if value == 1 then
    return "Md Book Type: Top Of Book (1)"
  end
  if value == 2 then
    return "Md Book Type: Price Depth (2)"
  end
  if value == 0xFF then
    return "Md Book Type: No Value"
  end

  return "Md Book Type: Unknown("..value..")"
end

-- Dissect: Md Book Type
eurex_cash_eti_t7_v12_0.md_book_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.md_book_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.md_book_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.md_book_type, range, value, display)

  return offset + length, value
end

-- Best Offer Size
eurex_cash_eti_t7_v12_0.best_offer_size = {}

-- Size: Best Offer Size
eurex_cash_eti_t7_v12_0.best_offer_size.size = 8

-- Display: Best Offer Size
eurex_cash_eti_t7_v12_0.best_offer_size.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Best Offer Size: No Value"
  end

  return "Best Offer Size: "..value
end

-- Translate: Best Offer Size
eurex_cash_eti_t7_v12_0.best_offer_size.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Best Offer Size
eurex_cash_eti_t7_v12_0.best_offer_size.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.best_offer_size.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.best_offer_size.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.best_offer_size.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.best_offer_size, range, value, display)

  return offset + length, value
end

-- Best Offer Px
eurex_cash_eti_t7_v12_0.best_offer_px = {}

-- Size: Best Offer Px
eurex_cash_eti_t7_v12_0.best_offer_px.size = 8

-- Display: Best Offer Px
eurex_cash_eti_t7_v12_0.best_offer_px.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Best Offer Px: No Value"
  end

  return "Best Offer Px: "..value
end

-- Translate: Best Offer Px
eurex_cash_eti_t7_v12_0.best_offer_px.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Best Offer Px
eurex_cash_eti_t7_v12_0.best_offer_px.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.best_offer_px.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.best_offer_px.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.best_offer_px.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.best_offer_px, range, value, display)

  return offset + length, value
end

-- Best Bid Size
eurex_cash_eti_t7_v12_0.best_bid_size = {}

-- Size: Best Bid Size
eurex_cash_eti_t7_v12_0.best_bid_size.size = 8

-- Display: Best Bid Size
eurex_cash_eti_t7_v12_0.best_bid_size.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Best Bid Size: No Value"
  end

  return "Best Bid Size: "..value
end

-- Translate: Best Bid Size
eurex_cash_eti_t7_v12_0.best_bid_size.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Best Bid Size
eurex_cash_eti_t7_v12_0.best_bid_size.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.best_bid_size.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.best_bid_size.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.best_bid_size.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.best_bid_size, range, value, display)

  return offset + length, value
end

-- Best Bid Px
eurex_cash_eti_t7_v12_0.best_bid_px = {}

-- Size: Best Bid Px
eurex_cash_eti_t7_v12_0.best_bid_px.size = 8

-- Display: Best Bid Px
eurex_cash_eti_t7_v12_0.best_bid_px.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Best Bid Px: No Value"
  end

  return "Best Bid Px: "..value
end

-- Translate: Best Bid Px
eurex_cash_eti_t7_v12_0.best_bid_px.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Best Bid Px
eurex_cash_eti_t7_v12_0.best_bid_px.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.best_bid_px.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.best_bid_px.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.best_bid_px.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.best_bid_px, range, value, display)

  return offset + length, value
end

-- Order Book Item Grp Comp
eurex_cash_eti_t7_v12_0.order_book_item_grp_comp = {}

-- Size: Order Book Item Grp Comp
eurex_cash_eti_t7_v12_0.order_book_item_grp_comp.size =
  eurex_cash_eti_t7_v12_0.best_bid_px.size + 
  eurex_cash_eti_t7_v12_0.best_bid_size.size + 
  eurex_cash_eti_t7_v12_0.best_offer_px.size + 
  eurex_cash_eti_t7_v12_0.best_offer_size.size + 
  eurex_cash_eti_t7_v12_0.md_book_type.size + 
  eurex_cash_eti_t7_v12_0.md_sub_book_type.size + 
  eurex_cash_eti_t7_v12_0.pad_6.size

-- Display: Order Book Item Grp Comp
eurex_cash_eti_t7_v12_0.order_book_item_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Order Book Item Grp Comp
eurex_cash_eti_t7_v12_0.order_book_item_grp_comp.fields = function(buffer, offset, packet, parent, order_book_item_grp_comp_index)
  local index = offset

  -- Implicit Order Book Item Grp Comp Index
  if order_book_item_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_book_item_grp_comp_index, order_book_item_grp_comp_index)
    iteration:set_generated()
  end

  -- Best Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, best_bid_px = eurex_cash_eti_t7_v12_0.best_bid_px.dissect(buffer, index, packet, parent)

  -- Best Bid Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, best_bid_size = eurex_cash_eti_t7_v12_0.best_bid_size.dissect(buffer, index, packet, parent)

  -- Best Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, best_offer_px = eurex_cash_eti_t7_v12_0.best_offer_px.dissect(buffer, index, packet, parent)

  -- Best Offer Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, best_offer_size = eurex_cash_eti_t7_v12_0.best_offer_size.dissect(buffer, index, packet, parent)

  -- Md Book Type: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, md_book_type = eurex_cash_eti_t7_v12_0.md_book_type.dissect(buffer, index, packet, parent)

  -- Md Sub Book Type: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, md_sub_book_type = eurex_cash_eti_t7_v12_0.md_sub_book_type.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Order Book Item Grp Comp
eurex_cash_eti_t7_v12_0.order_book_item_grp_comp.dissect = function(buffer, offset, packet, parent, order_book_item_grp_comp_index)
  if show.order_book_item_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_book_item_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.order_book_item_grp_comp.fields(buffer, offset, packet, parent, order_book_item_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.order_book_item_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.order_book_item_grp_comp.fields(buffer, offset, packet, parent, order_book_item_grp_comp_index)
  end
end

-- Target Party Entering Trader
eurex_cash_eti_t7_v12_0.target_party_entering_trader = {}

-- Size: Target Party Entering Trader
eurex_cash_eti_t7_v12_0.target_party_entering_trader.size = 6

-- Display: Target Party Entering Trader
eurex_cash_eti_t7_v12_0.target_party_entering_trader.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Target Party Entering Trader: No Value"
  end

  return "Target Party Entering Trader: "..value
end

-- Dissect: Target Party Entering Trader
eurex_cash_eti_t7_v12_0.target_party_entering_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.target_party_entering_trader.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.target_party_entering_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.target_party_entering_trader, range, value, display)

  return offset + length, value
end

-- Root Party Entering Trader
eurex_cash_eti_t7_v12_0.root_party_entering_trader = {}

-- Size: Root Party Entering Trader
eurex_cash_eti_t7_v12_0.root_party_entering_trader.size = 6

-- Display: Root Party Entering Trader
eurex_cash_eti_t7_v12_0.root_party_entering_trader.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Root Party Entering Trader: No Value"
  end

  return "Root Party Entering Trader: "..value
end

-- Dissect: Root Party Entering Trader
eurex_cash_eti_t7_v12_0.root_party_entering_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_entering_trader.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_entering_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_entering_trader, range, value, display)

  return offset + length, value
end

-- Root Party Executing Trader
eurex_cash_eti_t7_v12_0.root_party_executing_trader = {}

-- Size: Root Party Executing Trader
eurex_cash_eti_t7_v12_0.root_party_executing_trader.size = 6

-- Display: Root Party Executing Trader
eurex_cash_eti_t7_v12_0.root_party_executing_trader.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Root Party Executing Trader: No Value"
  end

  return "Root Party Executing Trader: "..value
end

-- Dissect: Root Party Executing Trader
eurex_cash_eti_t7_v12_0.root_party_executing_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_executing_trader.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_executing_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_executing_trader, range, value, display)

  return offset + length, value
end

-- Root Party Executing Firm
eurex_cash_eti_t7_v12_0.root_party_executing_firm = {}

-- Size: Root Party Executing Firm
eurex_cash_eti_t7_v12_0.root_party_executing_firm.size = 5

-- Display: Root Party Executing Firm
eurex_cash_eti_t7_v12_0.root_party_executing_firm.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Root Party Executing Firm: No Value"
  end

  return "Root Party Executing Firm: "..value
end

-- Dissect: Root Party Executing Firm
eurex_cash_eti_t7_v12_0.root_party_executing_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_executing_firm.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_executing_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_executing_firm, range, value, display)

  return offset + length, value
end

-- No Order Book Items
eurex_cash_eti_t7_v12_0.no_order_book_items = {}

-- Size: No Order Book Items
eurex_cash_eti_t7_v12_0.no_order_book_items.size = 1

-- Display: No Order Book Items
eurex_cash_eti_t7_v12_0.no_order_book_items.display = function(value)
  -- Check if field has value
  if value == 0xFF then
    return "No Order Book Items: No Value"
  end

  return "No Order Book Items: "..value
end

-- Dissect: No Order Book Items
eurex_cash_eti_t7_v12_0.no_order_book_items.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_order_book_items.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_order_book_items.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_order_book_items, range, value, display)

  return offset + length, value
end

-- Xetra En Light Create Deal Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_create_deal_notification = {}

-- Read runtime size of: Xetra En Light Create Deal Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_create_deal_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Create Deal Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_create_deal_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Create Deal Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_create_deal_notification.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_create_deal_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Last Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_px = eurex_cash_eti_t7_v12_0.last_px.dissect(buffer, index, packet, parent)

  -- Last Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_qty = eurex_cash_eti_t7_v12_0.last_qty.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_client_id = eurex_cash_eti_t7_v12_0.party_id_client_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_id = eurex_cash_eti_t7_v12_0.trade_id.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Trd Rpt Status: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, trd_rpt_status = eurex_cash_eti_t7_v12_0.trd_rpt_status.dissect(buffer, index, packet, parent)

  -- Message Event Source: 1 Byte Ascii String Enum with 4 values
  index, message_event_source = eurex_cash_eti_t7_v12_0.message_event_source.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Alloc Method: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, alloc_method = eurex_cash_eti_t7_v12_0.alloc_method.dissect(buffer, index, packet, parent)

  -- Auto Exec Type: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, auto_exec_type = eurex_cash_eti_t7_v12_0.auto_exec_type.dissect(buffer, index, packet, parent)

  -- No Order Book Items: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_order_book_items = eurex_cash_eti_t7_v12_0.no_order_book_items.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Root Party Executing Firm: 5 Byte Ascii String Nullable
  index, root_party_executing_firm = eurex_cash_eti_t7_v12_0.root_party_executing_firm.dissect(buffer, index, packet, parent)

  -- Root Party Executing Trader: 6 Byte Ascii String Nullable
  index, root_party_executing_trader = eurex_cash_eti_t7_v12_0.root_party_executing_trader.dissect(buffer, index, packet, parent)

  -- Root Party Entering Trader: 6 Byte Ascii String Nullable
  index, root_party_entering_trader = eurex_cash_eti_t7_v12_0.root_party_entering_trader.dissect(buffer, index, packet, parent)

  -- Target Party Executing Firm: 5 Byte Ascii String Nullable
  index, target_party_executing_firm = eurex_cash_eti_t7_v12_0.target_party_executing_firm.dissect(buffer, index, packet, parent)

  -- Target Party Executing Trader: 6 Byte Ascii String Nullable
  index, target_party_executing_trader = eurex_cash_eti_t7_v12_0.target_party_executing_trader.dissect(buffer, index, packet, parent)

  -- Target Party Entering Trader: 6 Byte Ascii String Nullable
  index, target_party_entering_trader = eurex_cash_eti_t7_v12_0.target_party_entering_trader.dissect(buffer, index, packet, parent)

  -- Firm Trade Id: 20 Byte Ascii String Nullable
  index, firm_trade_id = eurex_cash_eti_t7_v12_0.firm_trade_id.dissect(buffer, index, packet, parent)

  -- Firm Negotiation Id: 20 Byte Ascii String Nullable
  index, firm_negotiation_id = eurex_cash_eti_t7_v12_0.firm_negotiation_id.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Repeating: Order Book Item Grp Comp
  for order_book_item_grp_comp_index = 1, no_order_book_items do
    index, order_book_item_grp_comp = eurex_cash_eti_t7_v12_0.order_book_item_grp_comp.dissect(buffer, index, packet, parent, order_book_item_grp_comp_index)
  end

  return index
end

-- Dissect: Xetra En Light Create Deal Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_create_deal_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_create_deal_notification = eurex_cash_eti_t7_v12_0.xetra_en_light_create_deal_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_create_deal_notification then
    local range = buffer(offset, size_of_xetra_en_light_create_deal_notification)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_create_deal_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_create_deal_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_create_deal_notification.fields(buffer, offset, packet, parent, size_of_xetra_en_light_create_deal_notification)

  return offset + size_of_xetra_en_light_create_deal_notification
end

-- Trade Report Type
eurex_cash_eti_t7_v12_0.trade_report_type = {}

-- Size: Trade Report Type
eurex_cash_eti_t7_v12_0.trade_report_type.size = 1

-- Display: Trade Report Type
eurex_cash_eti_t7_v12_0.trade_report_type.display = function(value)
  if value == 0 then
    return "Trade Report Type: Submit (0)"
  end
  if value == 2 then
    return "Trade Report Type: Accept (2)"
  end
  if value == 3 then
    return "Trade Report Type: Decline (3)"
  end
  if value == 5 then
    return "Trade Report Type: No Was Replaced (5)"
  end
  if value == 6 then
    return "Trade Report Type: Trade Report Cancel (6)"
  end
  if value == 7 then
    return "Trade Report Type: Trade Break (7)"
  end
  if value == 11 then
    return "Trade Report Type: Alleged New (11)"
  end
  if value == 13 then
    return "Trade Report Type: Alleged No Was (13)"
  end
  if value == 0xFF then
    return "Trade Report Type: No Value"
  end

  return "Trade Report Type: Unknown("..value..")"
end

-- Dissect: Trade Report Type
eurex_cash_eti_t7_v12_0.trade_report_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trade_report_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trade_report_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trade_report_type, range, value, display)

  return offset + length, value
end

-- Xetra En Light Approve Deal Request
eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_request = {}

-- Read runtime size of: Xetra En Light Approve Deal Request
eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Approve Deal Request
eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Approve Deal Request
eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_request.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_approve_deal_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_id = eurex_cash_eti_t7_v12_0.trade_id.dissect(buffer, index, packet, parent)

  -- Trade Report Type: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, trade_report_type = eurex_cash_eti_t7_v12_0.trade_report_type.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Approve Deal Request
eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_approve_deal_request = eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_approve_deal_request then
    local range = buffer(offset, size_of_xetra_en_light_approve_deal_request)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_approve_deal_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_request.fields(buffer, offset, packet, parent, size_of_xetra_en_light_approve_deal_request)

  return offset + size_of_xetra_en_light_approve_deal_request
end

-- Requesting Party Executing Trader
eurex_cash_eti_t7_v12_0.requesting_party_executing_trader = {}

-- Size: Requesting Party Executing Trader
eurex_cash_eti_t7_v12_0.requesting_party_executing_trader.size = 6

-- Display: Requesting Party Executing Trader
eurex_cash_eti_t7_v12_0.requesting_party_executing_trader.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Requesting Party Executing Trader: No Value"
  end

  return "Requesting Party Executing Trader: "..value
end

-- Dissect: Requesting Party Executing Trader
eurex_cash_eti_t7_v12_0.requesting_party_executing_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.requesting_party_executing_trader.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.requesting_party_executing_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_executing_trader, range, value, display)

  return offset + length, value
end

-- Requesting Party Executing Firm
eurex_cash_eti_t7_v12_0.requesting_party_executing_firm = {}

-- Size: Requesting Party Executing Firm
eurex_cash_eti_t7_v12_0.requesting_party_executing_firm.size = 5

-- Display: Requesting Party Executing Firm
eurex_cash_eti_t7_v12_0.requesting_party_executing_firm.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Requesting Party Executing Firm: No Value"
  end

  return "Requesting Party Executing Firm: "..value
end

-- Dissect: Requesting Party Executing Firm
eurex_cash_eti_t7_v12_0.requesting_party_executing_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.requesting_party_executing_firm.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.requesting_party_executing_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_executing_firm, range, value, display)

  return offset + length, value
end

-- Target Side
eurex_cash_eti_t7_v12_0.target_side = {}

-- Size: Target Side
eurex_cash_eti_t7_v12_0.target_side.size = 1

-- Display: Target Side
eurex_cash_eti_t7_v12_0.target_side.display = function(value)
  if value == 1 then
    return "Target Side: Buy (1)"
  end
  if value == 2 then
    return "Target Side: Sell (2)"
  end
  if value == 0xFF then
    return "Target Side: No Value"
  end

  return "Target Side: Unknown("..value..")"
end

-- Dissect: Target Side
eurex_cash_eti_t7_v12_0.target_side.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.target_side.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.target_side.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.target_side, range, value, display)

  return offset + length, value
end

-- Requesting Side
eurex_cash_eti_t7_v12_0.requesting_side = {}

-- Size: Requesting Side
eurex_cash_eti_t7_v12_0.requesting_side.size = 1

-- Display: Requesting Side
eurex_cash_eti_t7_v12_0.requesting_side.display = function(value)
  if value == 1 then
    return "Requesting Side: Buy (1)"
  end
  if value == 2 then
    return "Requesting Side: Sell (2)"
  end
  if value == 0xFF then
    return "Requesting Side: No Value"
  end

  return "Requesting Side: Unknown("..value..")"
end

-- Dissect: Requesting Side
eurex_cash_eti_t7_v12_0.requesting_side.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.requesting_side.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.requesting_side.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.requesting_side, range, value, display)

  return offset + length, value
end

-- Xetra En Light Approve Deal Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_notification = {}

-- Read runtime size of: Xetra En Light Approve Deal Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Xetra En Light Approve Deal Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Xetra En Light Approve Deal Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_notification.fields = function(buffer, offset, packet, parent, size_of_xetra_en_light_approve_deal_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Last Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_px = eurex_cash_eti_t7_v12_0.last_px.dissect(buffer, index, packet, parent)

  -- Last Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_qty = eurex_cash_eti_t7_v12_0.last_qty.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_id = eurex_cash_eti_t7_v12_0.trade_id.dissect(buffer, index, packet, parent)

  -- Trd Rpt Status: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, trd_rpt_status = eurex_cash_eti_t7_v12_0.trd_rpt_status.dissect(buffer, index, packet, parent)

  -- Requesting Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, requesting_side = eurex_cash_eti_t7_v12_0.requesting_side.dissect(buffer, index, packet, parent)

  -- Target Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, target_side = eurex_cash_eti_t7_v12_0.target_side.dissect(buffer, index, packet, parent)

  -- Message Event Source: 1 Byte Ascii String Enum with 4 values
  index, message_event_source = eurex_cash_eti_t7_v12_0.message_event_source.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Requesting Party Executing Firm: 5 Byte Ascii String Nullable
  index, requesting_party_executing_firm = eurex_cash_eti_t7_v12_0.requesting_party_executing_firm.dissect(buffer, index, packet, parent)

  -- Requesting Party Executing Trader: 6 Byte Ascii String Nullable
  index, requesting_party_executing_trader = eurex_cash_eti_t7_v12_0.requesting_party_executing_trader.dissect(buffer, index, packet, parent)

  -- Target Party Executing Firm: 5 Byte Ascii String Nullable
  index, target_party_executing_firm = eurex_cash_eti_t7_v12_0.target_party_executing_firm.dissect(buffer, index, packet, parent)

  -- Target Party Executing Trader: 6 Byte Ascii String Nullable
  index, target_party_executing_trader = eurex_cash_eti_t7_v12_0.target_party_executing_trader.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Xetra En Light Approve Deal Notification
eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_xetra_en_light_approve_deal_notification = eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.xetra_en_light_approve_deal_notification then
    local range = buffer(offset, size_of_xetra_en_light_approve_deal_notification)
    local display = eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.xetra_en_light_approve_deal_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_notification.fields(buffer, offset, packet, parent, size_of_xetra_en_light_approve_deal_notification)

  return offset + size_of_xetra_en_light_approve_deal_notification
end

-- User Logout Response
eurex_cash_eti_t7_v12_0.user_logout_response = {}

-- Read runtime size of: User Logout Response
eurex_cash_eti_t7_v12_0.user_logout_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: User Logout Response
eurex_cash_eti_t7_v12_0.user_logout_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: User Logout Response
eurex_cash_eti_t7_v12_0.user_logout_response.fields = function(buffer, offset, packet, parent, size_of_user_logout_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: User Logout Response
eurex_cash_eti_t7_v12_0.user_logout_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_user_logout_response = eurex_cash_eti_t7_v12_0.user_logout_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.user_logout_response then
    local range = buffer(offset, size_of_user_logout_response)
    local display = eurex_cash_eti_t7_v12_0.user_logout_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.user_logout_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.user_logout_response.fields(buffer, offset, packet, parent, size_of_user_logout_response)

  return offset + size_of_user_logout_response
end

-- Username
eurex_cash_eti_t7_v12_0.username = {}

-- Size: Username
eurex_cash_eti_t7_v12_0.username.size = 4

-- Display: Username
eurex_cash_eti_t7_v12_0.username.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Username: No Value"
  end

  return "Username: "..value
end

-- Dissect: Username
eurex_cash_eti_t7_v12_0.username.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.username.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.username.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.username, range, value, display)

  return offset + length, value
end

-- User Logout Request
eurex_cash_eti_t7_v12_0.user_logout_request = {}

-- Read runtime size of: User Logout Request
eurex_cash_eti_t7_v12_0.user_logout_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: User Logout Request
eurex_cash_eti_t7_v12_0.user_logout_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: User Logout Request
eurex_cash_eti_t7_v12_0.user_logout_request.fields = function(buffer, offset, packet, parent, size_of_user_logout_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Username: 4 Byte Unsigned Fixed Width Integer Nullable
  index, username = eurex_cash_eti_t7_v12_0.username.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: User Logout Request
eurex_cash_eti_t7_v12_0.user_logout_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_user_logout_request = eurex_cash_eti_t7_v12_0.user_logout_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.user_logout_request then
    local range = buffer(offset, size_of_user_logout_request)
    local display = eurex_cash_eti_t7_v12_0.user_logout_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.user_logout_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.user_logout_request.fields(buffer, offset, packet, parent, size_of_user_logout_request)

  return offset + size_of_user_logout_request
end

-- User Login Response
eurex_cash_eti_t7_v12_0.user_login_response = {}

-- Read runtime size of: User Login Response
eurex_cash_eti_t7_v12_0.user_login_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: User Login Response
eurex_cash_eti_t7_v12_0.user_login_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: User Login Response
eurex_cash_eti_t7_v12_0.user_login_response.fields = function(buffer, offset, packet, parent, size_of_user_login_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: User Login Response
eurex_cash_eti_t7_v12_0.user_login_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_user_login_response = eurex_cash_eti_t7_v12_0.user_login_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.user_login_response then
    local range = buffer(offset, size_of_user_login_response)
    local display = eurex_cash_eti_t7_v12_0.user_login_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.user_login_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.user_login_response.fields(buffer, offset, packet, parent, size_of_user_login_response)

  return offset + size_of_user_login_response
end

-- Encrypted Password
eurex_cash_eti_t7_v12_0.encrypted_password = {}

-- Size: Encrypted Password
eurex_cash_eti_t7_v12_0.encrypted_password.size = 684

-- Display: Encrypted Password
eurex_cash_eti_t7_v12_0.encrypted_password.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Encrypted Password: No Value"
  end

  return "Encrypted Password: "..value
end

-- Dissect: Encrypted Password
eurex_cash_eti_t7_v12_0.encrypted_password.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.encrypted_password.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.encrypted_password.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.encrypted_password, range, value, display)

  return offset + length, value
end

-- User Login Request Encrypted
eurex_cash_eti_t7_v12_0.user_login_request_encrypted = {}

-- Read runtime size of: User Login Request Encrypted
eurex_cash_eti_t7_v12_0.user_login_request_encrypted.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: User Login Request Encrypted
eurex_cash_eti_t7_v12_0.user_login_request_encrypted.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: User Login Request Encrypted
eurex_cash_eti_t7_v12_0.user_login_request_encrypted.fields = function(buffer, offset, packet, parent, size_of_user_login_request_encrypted)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Username: 4 Byte Unsigned Fixed Width Integer Nullable
  index, username = eurex_cash_eti_t7_v12_0.username.dissect(buffer, index, packet, parent)

  -- Encrypted Password: 684 Byte Ascii String Nullable
  index, encrypted_password = eurex_cash_eti_t7_v12_0.encrypted_password.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: User Login Request Encrypted
eurex_cash_eti_t7_v12_0.user_login_request_encrypted.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_user_login_request_encrypted = eurex_cash_eti_t7_v12_0.user_login_request_encrypted.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.user_login_request_encrypted then
    local range = buffer(offset, size_of_user_login_request_encrypted)
    local display = eurex_cash_eti_t7_v12_0.user_login_request_encrypted.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.user_login_request_encrypted, range, display)
  end

  eurex_cash_eti_t7_v12_0.user_login_request_encrypted.fields(buffer, offset, packet, parent, size_of_user_login_request_encrypted)

  return offset + size_of_user_login_request_encrypted
end

-- Password
eurex_cash_eti_t7_v12_0.password = {}

-- Size: Password
eurex_cash_eti_t7_v12_0.password.size = 32

-- Display: Password
eurex_cash_eti_t7_v12_0.password.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Password: No Value"
  end

  return "Password: "..value
end

-- Dissect: Password
eurex_cash_eti_t7_v12_0.password.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.password.size
  local range = buffer(offset, length)

  -- parse last octet
  local last = buffer(offset + length - 1, 1):uint()

  -- read full string or up to first zero
  local value = ''
  if last == 0 then
    value = range:stringz()
  else
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.password.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.password, range, value, display)

  return offset + length, value
end

-- User Login Request
eurex_cash_eti_t7_v12_0.user_login_request = {}

-- Read runtime size of: User Login Request
eurex_cash_eti_t7_v12_0.user_login_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: User Login Request
eurex_cash_eti_t7_v12_0.user_login_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: User Login Request
eurex_cash_eti_t7_v12_0.user_login_request.fields = function(buffer, offset, packet, parent, size_of_user_login_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Username: 4 Byte Unsigned Fixed Width Integer Nullable
  index, username = eurex_cash_eti_t7_v12_0.username.dissect(buffer, index, packet, parent)

  -- Password: 32 Byte Ascii String Nullable
  index, password = eurex_cash_eti_t7_v12_0.password.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: User Login Request
eurex_cash_eti_t7_v12_0.user_login_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_user_login_request = eurex_cash_eti_t7_v12_0.user_login_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.user_login_request then
    local range = buffer(offset, size_of_user_login_request)
    local display = eurex_cash_eti_t7_v12_0.user_login_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.user_login_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.user_login_request.fields(buffer, offset, packet, parent, size_of_user_login_request)

  return offset + size_of_user_login_request
end

-- Unsubscribe Response
eurex_cash_eti_t7_v12_0.unsubscribe_response = {}

-- Read runtime size of: Unsubscribe Response
eurex_cash_eti_t7_v12_0.unsubscribe_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Unsubscribe Response
eurex_cash_eti_t7_v12_0.unsubscribe_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Unsubscribe Response
eurex_cash_eti_t7_v12_0.unsubscribe_response.fields = function(buffer, offset, packet, parent, size_of_unsubscribe_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Unsubscribe Response
eurex_cash_eti_t7_v12_0.unsubscribe_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_unsubscribe_response = eurex_cash_eti_t7_v12_0.unsubscribe_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.unsubscribe_response then
    local range = buffer(offset, size_of_unsubscribe_response)
    local display = eurex_cash_eti_t7_v12_0.unsubscribe_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.unsubscribe_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.unsubscribe_response.fields(buffer, offset, packet, parent, size_of_unsubscribe_response)

  return offset + size_of_unsubscribe_response
end

-- Ref Appl Sub Id
eurex_cash_eti_t7_v12_0.ref_appl_sub_id = {}

-- Size: Ref Appl Sub Id
eurex_cash_eti_t7_v12_0.ref_appl_sub_id.size = 4

-- Display: Ref Appl Sub Id
eurex_cash_eti_t7_v12_0.ref_appl_sub_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Ref Appl Sub Id: No Value"
  end

  return "Ref Appl Sub Id: "..value
end

-- Dissect: Ref Appl Sub Id
eurex_cash_eti_t7_v12_0.ref_appl_sub_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.ref_appl_sub_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.ref_appl_sub_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.ref_appl_sub_id, range, value, display)

  return offset + length, value
end

-- Unsubscribe Request
eurex_cash_eti_t7_v12_0.unsubscribe_request = {}

-- Read runtime size of: Unsubscribe Request
eurex_cash_eti_t7_v12_0.unsubscribe_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Unsubscribe Request
eurex_cash_eti_t7_v12_0.unsubscribe_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Unsubscribe Request
eurex_cash_eti_t7_v12_0.unsubscribe_request.fields = function(buffer, offset, packet, parent, size_of_unsubscribe_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Ref Appl Sub Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, ref_appl_sub_id = eurex_cash_eti_t7_v12_0.ref_appl_sub_id.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Unsubscribe Request
eurex_cash_eti_t7_v12_0.unsubscribe_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_unsubscribe_request = eurex_cash_eti_t7_v12_0.unsubscribe_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.unsubscribe_request then
    local range = buffer(offset, size_of_unsubscribe_request)
    local display = eurex_cash_eti_t7_v12_0.unsubscribe_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.unsubscribe_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.unsubscribe_request.fields(buffer, offset, packet, parent, size_of_unsubscribe_request)

  return offset + size_of_unsubscribe_request
end

-- Fix Cl Ord Id
eurex_cash_eti_t7_v12_0.fix_cl_ord_id = {}

-- Size: Fix Cl Ord Id
eurex_cash_eti_t7_v12_0.fix_cl_ord_id.size = 20

-- Display: Fix Cl Ord Id
eurex_cash_eti_t7_v12_0.fix_cl_ord_id.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Fix Cl Ord Id: No Value"
  end

  return "Fix Cl Ord Id: "..value
end

-- Dissect: Fix Cl Ord Id
eurex_cash_eti_t7_v12_0.fix_cl_ord_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.fix_cl_ord_id.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.fix_cl_ord_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.fix_cl_ord_id, range, value, display)

  return offset + length, value
end

-- Exec Type
eurex_cash_eti_t7_v12_0.exec_type = {}

-- Size: Exec Type
eurex_cash_eti_t7_v12_0.exec_type.size = 1

-- Display: Exec Type
eurex_cash_eti_t7_v12_0.exec_type.display = function(value)
  -- Check if field has value
  if value == nil or value == 0 then
    return "Exec Type: No Value"
  end

  if value == "0" then
    return "Exec Type: New (0)"
  end
  if value == "4" then
    return "Exec Type: Canceled (4)"
  end
  if value == "5" then
    return "Exec Type: Replaced (5)"
  end
  if value == "6" then
    return "Exec Type: Pending Cancele (6)"
  end
  if value == "9" then
    return "Exec Type: Suspended (9)"
  end
  if value == "D" then
    return "Exec Type: Restated (D)"
  end
  if value == "L" then
    return "Exec Type: Triggered (L)"
  end
  if value == "F" then
    return "Exec Type: Trade (F)"
  end
  if value == "A" then
    return "Exec Type: Pending New (A)"
  end
  if value == "E" then
    return "Exec Type: Pending Replace (E)"
  end

  return "Exec Type: Unknown("..value..")"
end

-- Dissect: Exec Type
eurex_cash_eti_t7_v12_0.exec_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.exec_type.size
  local range = buffer(offset, length)

  -- parse as byte
  local value = range:uint()

  -- check if value is non zero
  if value ~= 0 then
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.exec_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.exec_type, range, value, display)

  return offset + length, value
end

-- Ord Status
eurex_cash_eti_t7_v12_0.ord_status = {}

-- Size: Ord Status
eurex_cash_eti_t7_v12_0.ord_status.size = 1

-- Display: Ord Status
eurex_cash_eti_t7_v12_0.ord_status.display = function(value)
  -- Check if field has value
  if value == nil or value == 0 then
    return "Ord Status: No Value"
  end

  if value == "0" then
    return "Ord Status: New (0)"
  end
  if value == "1" then
    return "Ord Status: Partiallyfilled (1)"
  end
  if value == "2" then
    return "Ord Status: Filled (2)"
  end
  if value == "4" then
    return "Ord Status: Canceled (4)"
  end
  if value == "6" then
    return "Ord Status: Pending Cancel (6)"
  end
  if value == "9" then
    return "Ord Status: Suspended (9)"
  end
  if value == "A" then
    return "Ord Status: Pending New (A)"
  end
  if value == "E" then
    return "Ord Status: Pending Replace (E)"
  end

  return "Ord Status: Unknown("..value..")"
end

-- Dissect: Ord Status
eurex_cash_eti_t7_v12_0.ord_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.ord_status.size
  local range = buffer(offset, length)

  -- parse as byte
  local value = range:uint()

  -- check if value is non zero
  if value ~= 0 then
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.ord_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.ord_status, range, value, display)

  return offset + length, value
end

-- Exec Restatement Reason
eurex_cash_eti_t7_v12_0.exec_restatement_reason = {}

-- Size: Exec Restatement Reason
eurex_cash_eti_t7_v12_0.exec_restatement_reason.size = 2

-- Display: Exec Restatement Reason
eurex_cash_eti_t7_v12_0.exec_restatement_reason.display = function(value)
  if value == 0 then
    return "Exec Restatement Reason: Corporate Action (0)"
  end
  if value == 1 then
    return "Exec Restatement Reason: Order Book Restatement (1)"
  end
  if value == 8 then
    return "Exec Restatement Reason: Exchange Option (8)"
  end
  if value == 101 then
    return "Exec Restatement Reason: Order Added (101)"
  end
  if value == 102 then
    return "Exec Restatement Reason: Order Modified (102)"
  end
  if value == 103 then
    return "Exec Restatement Reason: Order Cancelled (103)"
  end
  if value == 105 then
    return "Exec Restatement Reason: Ioc Order Cancelled (105)"
  end
  if value == 107 then
    return "Exec Restatement Reason: Fok Order Cancelled (107)"
  end
  if value == 108 then
    return "Exec Restatement Reason: Book Order Executed (108)"
  end
  if value == 114 then
    return "Exec Restatement Reason: Changedto Ioc (114)"
  end
  if value == 119 then
    return "Exec Restatement Reason: Changeof Specialist (119)"
  end
  if value == 122 then
    return "Exec Restatement Reason: Instrument State Change (122)"
  end
  if value == 138 then
    return "Exec Restatement Reason: Pending New (138)"
  end
  if value == 141 then
    return "Exec Restatement Reason: Pending New Applied (141)"
  end
  if value == 139 then
    return "Exec Restatement Reason: Pending Replace (139)"
  end
  if value == 142 then
    return "Exec Restatement Reason: Pending Replace Applied (142)"
  end
  if value == 146 then
    return "Exec Restatement Reason: End Of Day Processing (146)"
  end
  if value == 148 then
    return "Exec Restatement Reason: Order Expiration (148)"
  end
  if value == 149 then
    return "Exec Restatement Reason: Cao Order Activated (149)"
  end
  if value == 150 then
    return "Exec Restatement Reason: Cao Order Inactivated (150)"
  end
  if value == 151 then
    return "Exec Restatement Reason: Oao Order Activated (151)"
  end
  if value == 152 then
    return "Exec Restatement Reason: Oao Order Inactivated (152)"
  end
  if value == 153 then
    return "Exec Restatement Reason: Aao Order Activated (153)"
  end
  if value == 154 then
    return "Exec Restatement Reason: Aao Order Inactivated (154)"
  end
  if value == 159 then
    return "Exec Restatement Reason: Iao Order Activated (159)"
  end
  if value == 160 then
    return "Exec Restatement Reason: Iao Order Inactivated (160)"
  end
  if value == 155 then
    return "Exec Restatement Reason: Order Refreshed (155)"
  end
  if value == 164 then
    return "Exec Restatement Reason: Oco Order Triggered (164)"
  end
  if value == 172 then
    return "Exec Restatement Reason: Stop Order Triggered (172)"
  end
  if value == 181 then
    return "Exec Restatement Reason: Ownership Changed (181)"
  end
  if value == 197 then
    return "Exec Restatement Reason: Order Cancellation Pending (197)"
  end
  if value == 199 then
    return "Exec Restatement Reason: Pending Cancellation Executed (199)"
  end
  if value == 212 then
    return "Exec Restatement Reason: Boc Order Cancelled (212)"
  end
  if value == 213 then
    return "Exec Restatement Reason: Trailing Stop Update (213)"
  end
  if value == 237 then
    return "Exec Restatement Reason: Exceeds Maximum Quantity (237)"
  end
  if value == 238 then
    return "Exec Restatement Reason: Invalid Limit Price (238)"
  end
  if value == 241 then
    return "Exec Restatement Reason: User Does Not Exist (241)"
  end
  if value == 242 then
    return "Exec Restatement Reason: Session Does Not Exist (242)"
  end
  if value == 243 then
    return "Exec Restatement Reason: Invalid Stop Price (243)"
  end
  if value == 245 then
    return "Exec Restatement Reason: Instrument Does Not Exist (245)"
  end
  if value == 246 then
    return "Exec Restatement Reason: Business Unit Risk Event (246)"
  end
  if value == 261 then
    return "Exec Restatement Reason: Panic Cancel (261)"
  end
  if value == 292 then
    return "Exec Restatement Reason: Dividend Payment (292)"
  end
  if value == 294 then
    return "Exec Restatement Reason: Last Trading Day (294)"
  end
  if value == 295 then
    return "Exec Restatement Reason: Trading Parameter Change (295)"
  end
  if value == 296 then
    return "Exec Restatement Reason: Currency Change (296)"
  end
  if value == 297 then
    return "Exec Restatement Reason: Product Assignment Change (297)"
  end
  if value == 298 then
    return "Exec Restatement Reason: Reference Price Change (298)"
  end
  if value == 300 then
    return "Exec Restatement Reason: Tick Rule Change (300)"
  end
  if value == 316 then
    return "Exec Restatement Reason: Qrs Expiry (316)"
  end
  if value == 320 then
    return "Exec Restatement Reason: Rlp Order Quote Cleanup (320)"
  end
  if value == 0xFFFF then
    return "Exec Restatement Reason: No Value"
  end

  return "Exec Restatement Reason: Unknown("..value..")"
end

-- Dissect: Exec Restatement Reason
eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.exec_restatement_reason.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.exec_restatement_reason.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.exec_restatement_reason, range, value, display)

  return offset + length, value
end

-- Order Id Sfx
eurex_cash_eti_t7_v12_0.order_id_sfx = {}

-- Size: Order Id Sfx
eurex_cash_eti_t7_v12_0.order_id_sfx.size = 4

-- Display: Order Id Sfx
eurex_cash_eti_t7_v12_0.order_id_sfx.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Order Id Sfx: No Value"
  end

  return "Order Id Sfx: "..value
end

-- Dissect: Order Id Sfx
eurex_cash_eti_t7_v12_0.order_id_sfx.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.order_id_sfx.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.order_id_sfx.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_id_sfx, range, value, display)

  return offset + length, value
end

-- Stop Px
eurex_cash_eti_t7_v12_0.stop_px = {}

-- Size: Stop Px
eurex_cash_eti_t7_v12_0.stop_px.size = 8

-- Display: Stop Px
eurex_cash_eti_t7_v12_0.stop_px.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Stop Px: No Value"
  end

  return "Stop Px: "..value
end

-- Translate: Stop Px
eurex_cash_eti_t7_v12_0.stop_px.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Stop Px
eurex_cash_eti_t7_v12_0.stop_px.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.stop_px.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.stop_px.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.stop_px.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.stop_px, range, value, display)

  return offset + length, value
end

-- Exec Id
eurex_cash_eti_t7_v12_0.exec_id = {}

-- Size: Exec Id
eurex_cash_eti_t7_v12_0.exec_id.size = 8

-- Display: Exec Id
eurex_cash_eti_t7_v12_0.exec_id.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Exec Id: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Exec Id: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Exec Id
eurex_cash_eti_t7_v12_0.exec_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.exec_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.exec_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.exec_id, range, value, display)

  return offset + length, value
end

-- Orig Cl Ord Id
eurex_cash_eti_t7_v12_0.orig_cl_ord_id = {}

-- Size: Orig Cl Ord Id
eurex_cash_eti_t7_v12_0.orig_cl_ord_id.size = 8

-- Display: Orig Cl Ord Id
eurex_cash_eti_t7_v12_0.orig_cl_ord_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Orig Cl Ord Id: No Value"
  end

  return "Orig Cl Ord Id: "..value
end

-- Dissect: Orig Cl Ord Id
eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.orig_cl_ord_id, range, value, display)

  return offset + length, value
end

-- Cl Ord Id
eurex_cash_eti_t7_v12_0.cl_ord_id = {}

-- Size: Cl Ord Id
eurex_cash_eti_t7_v12_0.cl_ord_id.size = 8

-- Display: Cl Ord Id
eurex_cash_eti_t7_v12_0.cl_ord_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Cl Ord Id: No Value"
  end

  return "Cl Ord Id: "..value
end

-- Dissect: Cl Ord Id
eurex_cash_eti_t7_v12_0.cl_ord_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.cl_ord_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.cl_ord_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.cl_ord_id, range, value, display)

  return offset + length, value
end

-- Order Id
eurex_cash_eti_t7_v12_0.order_id = {}

-- Size: Order Id
eurex_cash_eti_t7_v12_0.order_id.size = 8

-- Display: Order Id
eurex_cash_eti_t7_v12_0.order_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Order Id: No Value"
  end

  return "Order Id: "..value
end

-- Dissect: Order Id
eurex_cash_eti_t7_v12_0.order_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.order_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.order_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_id, range, value, display)

  return offset + length, value
end

-- Appl Msg Id
eurex_cash_eti_t7_v12_0.appl_msg_id = {}

-- Size: Appl Msg Id
eurex_cash_eti_t7_v12_0.appl_msg_id.size = 16

-- Display: Appl Msg Id
eurex_cash_eti_t7_v12_0.appl_msg_id.display = function(value)
  return "Appl Msg Id: "..value
end

-- Dissect: Appl Msg Id
eurex_cash_eti_t7_v12_0.appl_msg_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_msg_id.size
  local range = buffer(offset, length)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.appl_msg_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_msg_id, range, value, display)

  return offset + length, value
end

-- Notification In
eurex_cash_eti_t7_v12_0.notification_in = {}

-- Size: Notification In
eurex_cash_eti_t7_v12_0.notification_in.size = 8

-- Display: Notification In
eurex_cash_eti_t7_v12_0.notification_in.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Notification In: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Notification In: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Notification In
eurex_cash_eti_t7_v12_0.notification_in.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.notification_in.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.notification_in.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.notification_in, range, value, display)

  return offset + length, value
end

-- Trd Reg Ts Time Out
eurex_cash_eti_t7_v12_0.trd_reg_ts_time_out = {}

-- Size: Trd Reg Ts Time Out
eurex_cash_eti_t7_v12_0.trd_reg_ts_time_out.size = 8

-- Display: Trd Reg Ts Time Out
eurex_cash_eti_t7_v12_0.trd_reg_ts_time_out.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Trd Reg Ts Time Out: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Trd Reg Ts Time Out: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Trd Reg Ts Time Out
eurex_cash_eti_t7_v12_0.trd_reg_ts_time_out.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_out.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_out.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trd_reg_ts_time_out, range, value, display)

  return offset + length, value
end

-- Rbc Header Me Comp
eurex_cash_eti_t7_v12_0.rbc_header_me_comp = {}

-- Size: Rbc Header Me Comp
eurex_cash_eti_t7_v12_0.rbc_header_me_comp.size =
  eurex_cash_eti_t7_v12_0.trd_reg_ts_time_out.size + 
  eurex_cash_eti_t7_v12_0.notification_in.size + 
  eurex_cash_eti_t7_v12_0.sending_time.size + 
  eurex_cash_eti_t7_v12_0.appl_sub_id.size + 
  eurex_cash_eti_t7_v12_0.partition_id.size + 
  eurex_cash_eti_t7_v12_0.appl_msg_id.size + 
  eurex_cash_eti_t7_v12_0.appl_id.size + 
  eurex_cash_eti_t7_v12_0.appl_resend_flag.size + 
  eurex_cash_eti_t7_v12_0.last_fragment.size + 
  eurex_cash_eti_t7_v12_0.pad_7.size

-- Display: Rbc Header Me Comp
eurex_cash_eti_t7_v12_0.rbc_header_me_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Rbc Header Me Comp
eurex_cash_eti_t7_v12_0.rbc_header_me_comp.fields = function(buffer, offset, packet, parent)
  local index = offset

  -- Trd Reg Ts Time Out: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_time_out = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_out.dissect(buffer, index, packet, parent)

  -- Notification In: 8 Byte Unsigned Fixed Width Integer Nullable
  index, notification_in = eurex_cash_eti_t7_v12_0.notification_in.dissect(buffer, index, packet, parent)

  -- Sending Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, sending_time = eurex_cash_eti_t7_v12_0.sending_time.dissect(buffer, index, packet, parent)

  -- Appl Sub Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, appl_sub_id = eurex_cash_eti_t7_v12_0.appl_sub_id.dissect(buffer, index, packet, parent)

  -- Partition Id: 2 Byte Unsigned Fixed Width Integer Nullable
  index, partition_id = eurex_cash_eti_t7_v12_0.partition_id.dissect(buffer, index, packet, parent)

  -- Appl Msg Id: 16 Byte
  index, appl_msg_id = eurex_cash_eti_t7_v12_0.appl_msg_id.dissect(buffer, index, packet, parent)

  -- Appl Id: 1 Byte Unsigned Fixed Width Integer Enum with 12 values
  index, appl_id = eurex_cash_eti_t7_v12_0.appl_id.dissect(buffer, index, packet, parent)

  -- Appl Resend Flag: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, appl_resend_flag = eurex_cash_eti_t7_v12_0.appl_resend_flag.dissect(buffer, index, packet, parent)

  -- Last Fragment: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, last_fragment = eurex_cash_eti_t7_v12_0.last_fragment.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Rbc Header Me Comp
eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect = function(buffer, offset, packet, parent)
  if show.rbc_header_me_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.rbc_header_me_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.fields(buffer, offset, packet, parent)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.rbc_header_me_comp.fields(buffer, offset, packet, parent)
  end
end

-- Trailing Stop Update Notification
eurex_cash_eti_t7_v12_0.trailing_stop_update_notification = {}

-- Read runtime size of: Trailing Stop Update Notification
eurex_cash_eti_t7_v12_0.trailing_stop_update_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Trailing Stop Update Notification
eurex_cash_eti_t7_v12_0.trailing_stop_update_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Trailing Stop Update Notification
eurex_cash_eti_t7_v12_0.trailing_stop_update_notification.fields = function(buffer, offset, packet, parent, size_of_trailing_stop_update_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Stop Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, stop_px = eurex_cash_eti_t7_v12_0.stop_px.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Fix Cl Ord Id: 20 Byte Ascii String Nullable
  index, fix_cl_ord_id = eurex_cash_eti_t7_v12_0.fix_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Trailing Stop Update Notification
eurex_cash_eti_t7_v12_0.trailing_stop_update_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_trailing_stop_update_notification = eurex_cash_eti_t7_v12_0.trailing_stop_update_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.trailing_stop_update_notification then
    local range = buffer(offset, size_of_trailing_stop_update_notification)
    local display = eurex_cash_eti_t7_v12_0.trailing_stop_update_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trailing_stop_update_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.trailing_stop_update_notification.fields(buffer, offset, packet, parent, size_of_trailing_stop_update_notification)

  return offset + size_of_trailing_stop_update_notification
end

-- Ref Appl Last Msg Id
eurex_cash_eti_t7_v12_0.ref_appl_last_msg_id = {}

-- Size: Ref Appl Last Msg Id
eurex_cash_eti_t7_v12_0.ref_appl_last_msg_id.size = 16

-- Display: Ref Appl Last Msg Id
eurex_cash_eti_t7_v12_0.ref_appl_last_msg_id.display = function(value)
  return "Ref Appl Last Msg Id: "..value
end

-- Dissect: Ref Appl Last Msg Id
eurex_cash_eti_t7_v12_0.ref_appl_last_msg_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.ref_appl_last_msg_id.size
  local range = buffer(offset, length)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.ref_appl_last_msg_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.ref_appl_last_msg_id, range, value, display)

  return offset + length, value
end

-- Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.trading_session_status_broadcast = {}

-- Read runtime size of: Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.trading_session_status_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.trading_session_status_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.trading_session_status_broadcast.fields = function(buffer, offset, packet, parent, size_of_trading_session_status_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_date = eurex_cash_eti_t7_v12_0.trade_date.dissect(buffer, index, packet, parent)

  -- Trad Ses Event: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trad_ses_event = eurex_cash_eti_t7_v12_0.trad_ses_event.dissect(buffer, index, packet, parent)

  -- Ref Appl Last Msg Id: 16 Byte
  index, ref_appl_last_msg_id = eurex_cash_eti_t7_v12_0.ref_appl_last_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.trading_session_status_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_trading_session_status_broadcast = eurex_cash_eti_t7_v12_0.trading_session_status_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.trading_session_status_broadcast then
    local range = buffer(offset, size_of_trading_session_status_broadcast)
    local display = eurex_cash_eti_t7_v12_0.trading_session_status_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trading_session_status_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.trading_session_status_broadcast.fields(buffer, offset, packet, parent, size_of_trading_session_status_broadcast)

  return offset + size_of_trading_session_status_broadcast
end

-- Root Party Id Execution Venue
eurex_cash_eti_t7_v12_0.root_party_id_execution_venue = {}

-- Size: Root Party Id Execution Venue
eurex_cash_eti_t7_v12_0.root_party_id_execution_venue.size = 4

-- Display: Root Party Id Execution Venue
eurex_cash_eti_t7_v12_0.root_party_id_execution_venue.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Root Party Id Execution Venue: No Value"
  end

  return "Root Party Id Execution Venue: "..value
end

-- Dissect: Root Party Id Execution Venue
eurex_cash_eti_t7_v12_0.root_party_id_execution_venue.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_id_execution_venue.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_id_execution_venue.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_execution_venue, range, value, display)

  return offset + length, value
end

-- Regulatory Trade Id
eurex_cash_eti_t7_v12_0.regulatory_trade_id = {}

-- Size: Regulatory Trade Id
eurex_cash_eti_t7_v12_0.regulatory_trade_id.size = 52

-- Display: Regulatory Trade Id
eurex_cash_eti_t7_v12_0.regulatory_trade_id.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Regulatory Trade Id: No Value"
  end

  return "Regulatory Trade Id: "..value
end

-- Dissect: Regulatory Trade Id
eurex_cash_eti_t7_v12_0.regulatory_trade_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.regulatory_trade_id.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.regulatory_trade_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.regulatory_trade_id, range, value, display)

  return offset + length, value
end

-- Party Specialist Trader
eurex_cash_eti_t7_v12_0.party_specialist_trader = {}

-- Size: Party Specialist Trader
eurex_cash_eti_t7_v12_0.party_specialist_trader.size = 6

-- Display: Party Specialist Trader
eurex_cash_eti_t7_v12_0.party_specialist_trader.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Party Specialist Trader: No Value"
  end

  return "Party Specialist Trader: "..value
end

-- Dissect: Party Specialist Trader
eurex_cash_eti_t7_v12_0.party_specialist_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_specialist_trader.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.party_specialist_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_specialist_trader, range, value, display)

  return offset + length, value
end

-- Party Specialist Firm
eurex_cash_eti_t7_v12_0.party_specialist_firm = {}

-- Size: Party Specialist Firm
eurex_cash_eti_t7_v12_0.party_specialist_firm.size = 5

-- Display: Party Specialist Firm
eurex_cash_eti_t7_v12_0.party_specialist_firm.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Party Specialist Firm: No Value"
  end

  return "Party Specialist Firm: "..value
end

-- Dissect: Party Specialist Firm
eurex_cash_eti_t7_v12_0.party_specialist_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_specialist_firm.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.party_specialist_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_specialist_firm, range, value, display)

  return offset + length, value
end

-- Root Party Contra Settlement Location
eurex_cash_eti_t7_v12_0.root_party_contra_settlement_location = {}

-- Size: Root Party Contra Settlement Location
eurex_cash_eti_t7_v12_0.root_party_contra_settlement_location.size = 3

-- Display: Root Party Contra Settlement Location
eurex_cash_eti_t7_v12_0.root_party_contra_settlement_location.display = function(value)
  if value == "APK" then
    return "Root Party Contra Settlement Location: Apk (APK)"
  end
  if value == "CBF" then
    return "Root Party Contra Settlement Location: Cbf (CBF)"
  end
  if value == "CBL" then
    return "Root Party Contra Settlement Location: Cbl (CBL)"
  end
  if value == "CCO" then
    return "Root Party Contra Settlement Location: Cco (CCO)"
  end
  if value == "CIK" then
    return "Root Party Contra Settlement Location: Cik (CIK)"
  end
  if value == "EOC" then
    return "Root Party Contra Settlement Location: Eoc (EOC)"
  end
  if value == "HEL" then
    return "Root Party Contra Settlement Location: Hel (HEL)"
  end
  if value == "IBC" then
    return "Root Party Contra Settlement Location: Ibc (IBC)"
  end
  if value == "INT" then
    return "Root Party Contra Settlement Location: Int (INT)"
  end
  if value == "KDP" then
    return "Root Party Contra Settlement Location: Kdp (KDP)"
  end
  if value == "MOT" then
    return "Root Party Contra Settlement Location: Mot (MOT)"
  end
  if value == "NEC" then
    return "Root Party Contra Settlement Location: Nec (NEC)"
  end
  if value == "OEB" then
    return "Root Party Contra Settlement Location: Oeb (OEB)"
  end
  if value == "SIC" then
    return "Root Party Contra Settlement Location: Sic (SIC)"
  end
  if value == "SIS" then
    return "Root Party Contra Settlement Location: Sis (SIS)"
  end
  if value == "VPC" then
    return "Root Party Contra Settlement Location: Vpc (VPC)"
  end
  if value == "VPD" then
    return "Root Party Contra Settlement Location: Vpd (VPD)"
  end
  if value == "VPS" then
    return "Root Party Contra Settlement Location: Vps (VPS)"
  end
  if value == "CFG" then
    return "Root Party Contra Settlement Location: Cfg (CFG)"
  end

  return "Root Party Contra Settlement Location: Unknown("..value..")"
end

-- Dissect: Root Party Contra Settlement Location
eurex_cash_eti_t7_v12_0.root_party_contra_settlement_location.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_contra_settlement_location.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_contra_settlement_location.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_contra_settlement_location, range, value, display)

  return offset + length, value
end

-- Root Party Contra Settlement Account
eurex_cash_eti_t7_v12_0.root_party_contra_settlement_account = {}

-- Size: Root Party Contra Settlement Account
eurex_cash_eti_t7_v12_0.root_party_contra_settlement_account.size = 35

-- Display: Root Party Contra Settlement Account
eurex_cash_eti_t7_v12_0.root_party_contra_settlement_account.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Root Party Contra Settlement Account: No Value"
  end

  return "Root Party Contra Settlement Account: "..value
end

-- Dissect: Root Party Contra Settlement Account
eurex_cash_eti_t7_v12_0.root_party_contra_settlement_account.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_contra_settlement_account.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_contra_settlement_account.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_contra_settlement_account, range, value, display)

  return offset + length, value
end

-- Root Party Contra Firm Kv Number
eurex_cash_eti_t7_v12_0.root_party_contra_firm_kv_number = {}

-- Size: Root Party Contra Firm Kv Number
eurex_cash_eti_t7_v12_0.root_party_contra_firm_kv_number.size = 4

-- Display: Root Party Contra Firm Kv Number
eurex_cash_eti_t7_v12_0.root_party_contra_firm_kv_number.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Root Party Contra Firm Kv Number: No Value"
  end

  return "Root Party Contra Firm Kv Number: "..value
end

-- Dissect: Root Party Contra Firm Kv Number
eurex_cash_eti_t7_v12_0.root_party_contra_firm_kv_number.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_contra_firm_kv_number.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_contra_firm_kv_number.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_contra_firm_kv_number, range, value, display)

  return offset + length, value
end

-- Root Party Contra Settlement Firm
eurex_cash_eti_t7_v12_0.root_party_contra_settlement_firm = {}

-- Size: Root Party Contra Settlement Firm
eurex_cash_eti_t7_v12_0.root_party_contra_settlement_firm.size = 5

-- Display: Root Party Contra Settlement Firm
eurex_cash_eti_t7_v12_0.root_party_contra_settlement_firm.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Root Party Contra Settlement Firm: No Value"
  end

  return "Root Party Contra Settlement Firm: "..value
end

-- Dissect: Root Party Contra Settlement Firm
eurex_cash_eti_t7_v12_0.root_party_contra_settlement_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_contra_settlement_firm.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_contra_settlement_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_contra_settlement_firm, range, value, display)

  return offset + length, value
end

-- Root Party Contra Firm
eurex_cash_eti_t7_v12_0.root_party_contra_firm = {}

-- Size: Root Party Contra Firm
eurex_cash_eti_t7_v12_0.root_party_contra_firm.size = 5

-- Display: Root Party Contra Firm
eurex_cash_eti_t7_v12_0.root_party_contra_firm.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Root Party Contra Firm: No Value"
  end

  return "Root Party Contra Firm: "..value
end

-- Dissect: Root Party Contra Firm
eurex_cash_eti_t7_v12_0.root_party_contra_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_contra_firm.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_contra_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_contra_firm, range, value, display)

  return offset + length, value
end

-- Root Party Settlement Firm
eurex_cash_eti_t7_v12_0.root_party_settlement_firm = {}

-- Size: Root Party Settlement Firm
eurex_cash_eti_t7_v12_0.root_party_settlement_firm.size = 5

-- Display: Root Party Settlement Firm
eurex_cash_eti_t7_v12_0.root_party_settlement_firm.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Root Party Settlement Firm: No Value"
  end

  return "Root Party Settlement Firm: "..value
end

-- Dissect: Root Party Settlement Firm
eurex_cash_eti_t7_v12_0.root_party_settlement_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_settlement_firm.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_settlement_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_settlement_firm, range, value, display)

  return offset + length, value
end

-- Root Party Settlement Location
eurex_cash_eti_t7_v12_0.root_party_settlement_location = {}

-- Size: Root Party Settlement Location
eurex_cash_eti_t7_v12_0.root_party_settlement_location.size = 3

-- Display: Root Party Settlement Location
eurex_cash_eti_t7_v12_0.root_party_settlement_location.display = function(value)
  if value == "APK" then
    return "Root Party Settlement Location: Apk (APK)"
  end
  if value == "CBF" then
    return "Root Party Settlement Location: Cbf (CBF)"
  end
  if value == "CBL" then
    return "Root Party Settlement Location: Cbl (CBL)"
  end
  if value == "CCO" then
    return "Root Party Settlement Location: Cco (CCO)"
  end
  if value == "CIK" then
    return "Root Party Settlement Location: Cik (CIK)"
  end
  if value == "EOC" then
    return "Root Party Settlement Location: Eoc (EOC)"
  end
  if value == "HEL" then
    return "Root Party Settlement Location: Hel (HEL)"
  end
  if value == "IBC" then
    return "Root Party Settlement Location: Ibc (IBC)"
  end
  if value == "INT" then
    return "Root Party Settlement Location: Int (INT)"
  end
  if value == "KDP" then
    return "Root Party Settlement Location: Kdp (KDP)"
  end
  if value == "MOT" then
    return "Root Party Settlement Location: Mot (MOT)"
  end
  if value == "NEC" then
    return "Root Party Settlement Location: Nec (NEC)"
  end
  if value == "OEB" then
    return "Root Party Settlement Location: Oeb (OEB)"
  end
  if value == "SIC" then
    return "Root Party Settlement Location: Sic (SIC)"
  end
  if value == "SIS" then
    return "Root Party Settlement Location: Sis (SIS)"
  end
  if value == "VPC" then
    return "Root Party Settlement Location: Vpc (VPC)"
  end
  if value == "VPD" then
    return "Root Party Settlement Location: Vpd (VPD)"
  end
  if value == "VPS" then
    return "Root Party Settlement Location: Vps (VPS)"
  end
  if value == "CFG" then
    return "Root Party Settlement Location: Cfg (CFG)"
  end

  return "Root Party Settlement Location: Unknown("..value..")"
end

-- Dissect: Root Party Settlement Location
eurex_cash_eti_t7_v12_0.root_party_settlement_location.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_settlement_location.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_settlement_location.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_settlement_location, range, value, display)

  return offset + length, value
end

-- Root Party Settlement Account
eurex_cash_eti_t7_v12_0.root_party_settlement_account = {}

-- Size: Root Party Settlement Account
eurex_cash_eti_t7_v12_0.root_party_settlement_account.size = 35

-- Display: Root Party Settlement Account
eurex_cash_eti_t7_v12_0.root_party_settlement_account.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Root Party Settlement Account: No Value"
  end

  return "Root Party Settlement Account: "..value
end

-- Dissect: Root Party Settlement Account
eurex_cash_eti_t7_v12_0.root_party_settlement_account.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_settlement_account.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_settlement_account.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_settlement_account, range, value, display)

  return offset + length, value
end

-- Root Party Executing Firm Kv Number
eurex_cash_eti_t7_v12_0.root_party_executing_firm_kv_number = {}

-- Size: Root Party Executing Firm Kv Number
eurex_cash_eti_t7_v12_0.root_party_executing_firm_kv_number.size = 4

-- Display: Root Party Executing Firm Kv Number
eurex_cash_eti_t7_v12_0.root_party_executing_firm_kv_number.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Root Party Executing Firm Kv Number: No Value"
  end

  return "Root Party Executing Firm Kv Number: "..value
end

-- Dissect: Root Party Executing Firm Kv Number
eurex_cash_eti_t7_v12_0.root_party_executing_firm_kv_number.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_executing_firm_kv_number.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_executing_firm_kv_number.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_executing_firm_kv_number, range, value, display)

  return offset + length, value
end

-- Root Party Clearing Firm
eurex_cash_eti_t7_v12_0.root_party_clearing_firm = {}

-- Size: Root Party Clearing Firm
eurex_cash_eti_t7_v12_0.root_party_clearing_firm.size = 5

-- Display: Root Party Clearing Firm
eurex_cash_eti_t7_v12_0.root_party_clearing_firm.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Root Party Clearing Firm: No Value"
  end

  return "Root Party Clearing Firm: "..value
end

-- Dissect: Root Party Clearing Firm
eurex_cash_eti_t7_v12_0.root_party_clearing_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_clearing_firm.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.root_party_clearing_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_clearing_firm, range, value, display)

  return offset + length, value
end

-- Ord Type
eurex_cash_eti_t7_v12_0.ord_type = {}

-- Size: Ord Type
eurex_cash_eti_t7_v12_0.ord_type.size = 1

-- Display: Ord Type
eurex_cash_eti_t7_v12_0.ord_type.display = function(value)
  if value == 1 then
    return "Ord Type: Market (1)"
  end
  if value == 2 then
    return "Ord Type: Limit (2)"
  end
  if value == 3 then
    return "Ord Type: Stop (3)"
  end
  if value == 4 then
    return "Ord Type: Stop Limit (4)"
  end
  if value == 0xFF then
    return "Ord Type: No Value"
  end

  return "Ord Type: Unknown("..value..")"
end

-- Dissect: Ord Type
eurex_cash_eti_t7_v12_0.ord_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.ord_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.ord_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.ord_type, range, value, display)

  return offset + length, value
end

-- Order Category
eurex_cash_eti_t7_v12_0.order_category = {}

-- Size: Order Category
eurex_cash_eti_t7_v12_0.order_category.size = 1

-- Display: Order Category
eurex_cash_eti_t7_v12_0.order_category.display = function(value)
  -- Check if field has value
  if value == nil or value == 0 then
    return "Order Category: No Value"
  end

  if value == "1" then
    return "Order Category: Order (1)"
  end
  if value == "2" then
    return "Order Category: Quote (2)"
  end

  return "Order Category: Unknown("..value..")"
end

-- Dissect: Order Category
eurex_cash_eti_t7_v12_0.order_category.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.order_category.size
  local range = buffer(offset, length)

  -- parse as byte
  local value = range:uint()

  -- check if value is non zero
  if value ~= 0 then
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.order_category.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_category, range, value, display)

  return offset + length, value
end

-- Currency
eurex_cash_eti_t7_v12_0.currency = {}

-- Size: Currency
eurex_cash_eti_t7_v12_0.currency.size = 3

-- Display: Currency
eurex_cash_eti_t7_v12_0.currency.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Currency: No Value"
  end

  return "Currency: "..value
end

-- Dissect: Currency
eurex_cash_eti_t7_v12_0.currency.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.currency.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.currency.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.currency, range, value, display)

  return offset + length, value
end

-- Settl Currency
eurex_cash_eti_t7_v12_0.settl_currency = {}

-- Size: Settl Currency
eurex_cash_eti_t7_v12_0.settl_currency.size = 3

-- Display: Settl Currency
eurex_cash_eti_t7_v12_0.settl_currency.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Settl Currency: No Value"
  end

  return "Settl Currency: "..value
end

-- Dissect: Settl Currency
eurex_cash_eti_t7_v12_0.settl_currency.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.settl_currency.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.settl_currency.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.settl_currency, range, value, display)

  return offset + length, value
end

-- Account
eurex_cash_eti_t7_v12_0.account = {}

-- Size: Account
eurex_cash_eti_t7_v12_0.account.size = 2

-- Display: Account
eurex_cash_eti_t7_v12_0.account.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Account: No Value"
  end

  return "Account: "..value
end

-- Dissect: Account
eurex_cash_eti_t7_v12_0.account.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.account.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.account.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.account, range, value, display)

  return offset + length, value
end

-- Root Party Id Investment Decision Maker Qualifier
eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker_qualifier = {}

-- Size: Root Party Id Investment Decision Maker Qualifier
eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker_qualifier.size = 1

-- Display: Root Party Id Investment Decision Maker Qualifier
eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker_qualifier.display = function(value)
  if value == 22 then
    return "Root Party Id Investment Decision Maker Qualifier: Algo (22)"
  end
  if value == 24 then
    return "Root Party Id Investment Decision Maker Qualifier: Human (24)"
  end
  if value == 0xFF then
    return "Root Party Id Investment Decision Maker Qualifier: No Value"
  end

  return "Root Party Id Investment Decision Maker Qualifier: Unknown("..value..")"
end

-- Dissect: Root Party Id Investment Decision Maker Qualifier
eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker_qualifier.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker_qualifier.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker_qualifier.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_investment_decision_maker_qualifier, range, value, display)

  return offset + length, value
end

-- Clearing Instruction
eurex_cash_eti_t7_v12_0.clearing_instruction = {}

-- Size: Clearing Instruction
eurex_cash_eti_t7_v12_0.clearing_instruction.size = 1

-- Display: Clearing Instruction
eurex_cash_eti_t7_v12_0.clearing_instruction.display = function(value)
  if value == 2 then
    return "Clearing Instruction: Bilateralnettingonly (2)"
  end
  if value == 13 then
    return "Clearing Instruction: Selfclearing (13)"
  end
  if value == 0xFF then
    return "Clearing Instruction: No Value"
  end

  return "Clearing Instruction: Unknown("..value..")"
end

-- Dissect: Clearing Instruction
eurex_cash_eti_t7_v12_0.clearing_instruction.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.clearing_instruction.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.clearing_instruction.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.clearing_instruction, range, value, display)

  return offset + length, value
end

-- Refinancing Eligibility Indicator
eurex_cash_eti_t7_v12_0.refinancing_eligibility_indicator = {}

-- Size: Refinancing Eligibility Indicator
eurex_cash_eti_t7_v12_0.refinancing_eligibility_indicator.size = 1

-- Display: Refinancing Eligibility Indicator
eurex_cash_eti_t7_v12_0.refinancing_eligibility_indicator.display = function(value)
  if value == 0 then
    return "Refinancing Eligibility Indicator: No (0)"
  end
  if value == 1 then
    return "Refinancing Eligibility Indicator: Yes (1)"
  end
  if value == 0xFF then
    return "Refinancing Eligibility Indicator: No Value"
  end

  return "Refinancing Eligibility Indicator: Unknown("..value..")"
end

-- Dissect: Refinancing Eligibility Indicator
eurex_cash_eti_t7_v12_0.refinancing_eligibility_indicator.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.refinancing_eligibility_indicator.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.refinancing_eligibility_indicator.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.refinancing_eligibility_indicator, range, value, display)

  return offset + length, value
end

-- Last Coupon Deviation Indicator
eurex_cash_eti_t7_v12_0.last_coupon_deviation_indicator = {}

-- Size: Last Coupon Deviation Indicator
eurex_cash_eti_t7_v12_0.last_coupon_deviation_indicator.size = 1

-- Display: Last Coupon Deviation Indicator
eurex_cash_eti_t7_v12_0.last_coupon_deviation_indicator.display = function(value)
  if value == 0 then
    return "Last Coupon Deviation Indicator: None (0)"
  end
  if value == 1 then
    return "Last Coupon Deviation Indicator: Shortperiod (1)"
  end
  if value == 2 then
    return "Last Coupon Deviation Indicator: Longperiod (2)"
  end
  if value == 3 then
    return "Last Coupon Deviation Indicator: Onlyonecoupon (3)"
  end
  if value == 4 then
    return "Last Coupon Deviation Indicator: Shorttwointerestpaymentsdue (4)"
  end
  if value == 5 then
    return "Last Coupon Deviation Indicator: Longtwointerestpaymentsdue (5)"
  end
  if value == 6 then
    return "Last Coupon Deviation Indicator: Perpetual (6)"
  end
  if value == 0xFF then
    return "Last Coupon Deviation Indicator: No Value"
  end

  return "Last Coupon Deviation Indicator: Unknown("..value..")"
end

-- Dissect: Last Coupon Deviation Indicator
eurex_cash_eti_t7_v12_0.last_coupon_deviation_indicator.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.last_coupon_deviation_indicator.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.last_coupon_deviation_indicator.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.last_coupon_deviation_indicator, range, value, display)

  return offset + length, value
end

-- Delivery Type
eurex_cash_eti_t7_v12_0.delivery_type = {}

-- Size: Delivery Type
eurex_cash_eti_t7_v12_0.delivery_type.size = 1

-- Display: Delivery Type
eurex_cash_eti_t7_v12_0.delivery_type.display = function(value)
  if value == 1 then
    return "Delivery Type: Akv (1)"
  end
  if value == 2 then
    return "Delivery Type: Gs (2)"
  end
  if value == 3 then
    return "Delivery Type: Str (3)"
  end
  if value == 4 then
    return "Delivery Type: Wpr (4)"
  end
  if value == 5 then
    return "Delivery Type: Akt (5)"
  end
  if value == 0xFF then
    return "Delivery Type: No Value"
  end

  return "Delivery Type: Unknown("..value..")"
end

-- Dissect: Delivery Type
eurex_cash_eti_t7_v12_0.delivery_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.delivery_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.delivery_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delivery_type, range, value, display)

  return offset + length, value
end

-- Side Liquidity Ind
eurex_cash_eti_t7_v12_0.side_liquidity_ind = {}

-- Size: Side Liquidity Ind
eurex_cash_eti_t7_v12_0.side_liquidity_ind.size = 1

-- Display: Side Liquidity Ind
eurex_cash_eti_t7_v12_0.side_liquidity_ind.display = function(value)
  if value == 1 then
    return "Side Liquidity Ind: Added Liquidity (1)"
  end
  if value == 2 then
    return "Side Liquidity Ind: Removed Liquidity (2)"
  end
  if value == 4 then
    return "Side Liquidity Ind: Auction (4)"
  end
  if value == 0xFF then
    return "Side Liquidity Ind: No Value"
  end

  return "Side Liquidity Ind: Unknown("..value..")"
end

-- Dissect: Side Liquidity Ind
eurex_cash_eti_t7_v12_0.side_liquidity_ind.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.side_liquidity_ind.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.side_liquidity_ind.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.side_liquidity_ind, range, value, display)

  return offset + length, value
end

-- Match Sub Type
eurex_cash_eti_t7_v12_0.match_sub_type = {}

-- Size: Match Sub Type
eurex_cash_eti_t7_v12_0.match_sub_type.size = 1

-- Display: Match Sub Type
eurex_cash_eti_t7_v12_0.match_sub_type.display = function(value)
  if value == 1 then
    return "Match Sub Type: Opening Auction (1)"
  end
  if value == 2 then
    return "Match Sub Type: Closing Auction (2)"
  end
  if value == 3 then
    return "Match Sub Type: Intraday Auction (3)"
  end
  if value == 4 then
    return "Match Sub Type: Circuit Breaker Auction (4)"
  end
  if value == 5 then
    return "Match Sub Type: Tradeatclose (5)"
  end
  if value == 0xFF then
    return "Match Sub Type: No Value"
  end

  return "Match Sub Type: Unknown("..value..")"
end

-- Dissect: Match Sub Type
eurex_cash_eti_t7_v12_0.match_sub_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.match_sub_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.match_sub_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.match_sub_type, range, value, display)

  return offset + length, value
end

-- Match Type
eurex_cash_eti_t7_v12_0.match_type = {}

-- Size: Match Type
eurex_cash_eti_t7_v12_0.match_type.size = 1

-- Display: Match Type
eurex_cash_eti_t7_v12_0.match_type.display = function(value)
  if value == 3 then
    return "Match Type: Confirmed Trade Report (3)"
  end
  if value == 4 then
    return "Match Type: Automatchincoming (4)"
  end
  if value == 5 then
    return "Match Type: Cross Auction (5)"
  end
  if value == 7 then
    return "Match Type: Call Auction (7)"
  end
  if value == 11 then
    return "Match Type: Automatchresting (11)"
  end
  if value == 14 then
    return "Match Type: Continuous Auction (14)"
  end
  if value == 15 then
    return "Match Type: Retail (15)"
  end
  if value == 0xFF then
    return "Match Type: No Value"
  end

  return "Match Type: Unknown("..value..")"
end

-- Dissect: Match Type
eurex_cash_eti_t7_v12_0.match_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.match_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.match_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.match_type, range, value, display)

  return offset + length, value
end

-- Transfer Reason
eurex_cash_eti_t7_v12_0.transfer_reason = {}

-- Size: Transfer Reason
eurex_cash_eti_t7_v12_0.transfer_reason.size = 1

-- Display: Transfer Reason
eurex_cash_eti_t7_v12_0.transfer_reason.display = function(value)
  if value == 1 then
    return "Transfer Reason: Owner (1)"
  end
  if value == 2 then
    return "Transfer Reason: Clearer (2)"
  end
  if value == 0xFF then
    return "Transfer Reason: No Value"
  end

  return "Transfer Reason: Unknown("..value..")"
end

-- Dissect: Transfer Reason
eurex_cash_eti_t7_v12_0.transfer_reason.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.transfer_reason.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.transfer_reason.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.transfer_reason, range, value, display)

  return offset + length, value
end

-- Last Mkt
eurex_cash_eti_t7_v12_0.last_mkt = {}

-- Size: Last Mkt
eurex_cash_eti_t7_v12_0.last_mkt.size = 2

-- Display: Last Mkt
eurex_cash_eti_t7_v12_0.last_mkt.display = function(value)
  if value == 3 then
    return "Last Mkt: Xetr (3)"
  end
  if value == 4 then
    return "Last Mkt: Xvie (4)"
  end
  if value == 6 then
    return "Last Mkt: Xmal (6)"
  end
  if value == 7 then
    return "Last Mkt: Xbul (7)"
  end
  if value == 8 then
    return "Last Mkt: Xbud (8)"
  end
  if value == 9 then
    return "Last Mkt: Xlju (9)"
  end
  if value == 10 then
    return "Last Mkt: Xpra (10)"
  end
  if value == 11 then
    return "Last Mkt: Xzag (11)"
  end
  if value == 13 then
    return "Last Mkt: Xfra (13)"
  end
  if value == 0xFFFF then
    return "Last Mkt: No Value"
  end

  return "Last Mkt: Unknown("..value..")"
end

-- Dissect: Last Mkt
eurex_cash_eti_t7_v12_0.last_mkt.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.last_mkt.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.last_mkt.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.last_mkt, range, value, display)

  return offset + length, value
end

-- Num Days Interest
eurex_cash_eti_t7_v12_0.num_days_interest = {}

-- Size: Num Days Interest
eurex_cash_eti_t7_v12_0.num_days_interest.size = 4

-- Display: Num Days Interest
eurex_cash_eti_t7_v12_0.num_days_interest.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Num Days Interest: No Value"
  end

  return "Num Days Interest: "..value
end

-- Dissect: Num Days Interest
eurex_cash_eti_t7_v12_0.num_days_interest.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.num_days_interest.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.num_days_interest.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.num_days_interest, range, value, display)

  return offset + length, value
end

-- Trd Match Id
eurex_cash_eti_t7_v12_0.trd_match_id = {}

-- Size: Trd Match Id
eurex_cash_eti_t7_v12_0.trd_match_id.size = 4

-- Display: Trd Match Id
eurex_cash_eti_t7_v12_0.trd_match_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Trd Match Id: No Value"
  end

  return "Trd Match Id: "..value
end

-- Dissect: Trd Match Id
eurex_cash_eti_t7_v12_0.trd_match_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trd_match_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trd_match_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trd_match_id, range, value, display)

  return offset + length, value
end

-- Match Date
eurex_cash_eti_t7_v12_0.match_date = {}

-- Size: Match Date
eurex_cash_eti_t7_v12_0.match_date.size = 4

-- Display: Match Date
eurex_cash_eti_t7_v12_0.match_date.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Match Date: No Value"
  end

  return "Match Date: "..value
end

-- Dissect: Match Date
eurex_cash_eti_t7_v12_0.match_date.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.match_date.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.match_date.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.match_date, range, value, display)

  return offset + length, value
end

-- Trade Number
eurex_cash_eti_t7_v12_0.trade_number = {}

-- Size: Trade Number
eurex_cash_eti_t7_v12_0.trade_number.size = 4

-- Display: Trade Number
eurex_cash_eti_t7_v12_0.trade_number.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Trade Number: No Value"
  end

  return "Trade Number: "..value
end

-- Dissect: Trade Number
eurex_cash_eti_t7_v12_0.trade_number.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trade_number.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trade_number.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trade_number, range, value, display)

  return offset + length, value
end

-- Side Trade Report Id
eurex_cash_eti_t7_v12_0.side_trade_report_id = {}

-- Size: Side Trade Report Id
eurex_cash_eti_t7_v12_0.side_trade_report_id.size = 4

-- Display: Side Trade Report Id
eurex_cash_eti_t7_v12_0.side_trade_report_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Side Trade Report Id: No Value"
  end

  return "Side Trade Report Id: "..value
end

-- Dissect: Side Trade Report Id
eurex_cash_eti_t7_v12_0.side_trade_report_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.side_trade_report_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.side_trade_report_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.side_trade_report_id, range, value, display)

  return offset + length, value
end

-- Side Trade Id
eurex_cash_eti_t7_v12_0.side_trade_id = {}

-- Size: Side Trade Id
eurex_cash_eti_t7_v12_0.side_trade_id.size = 4

-- Display: Side Trade Id
eurex_cash_eti_t7_v12_0.side_trade_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Side Trade Id: No Value"
  end

  return "Side Trade Id: "..value
end

-- Dissect: Side Trade Id
eurex_cash_eti_t7_v12_0.side_trade_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.side_trade_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.side_trade_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.side_trade_id, range, value, display)

  return offset + length, value
end

-- Party Id Specialist Trader
eurex_cash_eti_t7_v12_0.party_id_specialist_trader = {}

-- Size: Party Id Specialist Trader
eurex_cash_eti_t7_v12_0.party_id_specialist_trader.size = 4

-- Display: Party Id Specialist Trader
eurex_cash_eti_t7_v12_0.party_id_specialist_trader.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Party Id Specialist Trader: No Value"
  end

  return "Party Id Specialist Trader: "..value
end

-- Dissect: Party Id Specialist Trader
eurex_cash_eti_t7_v12_0.party_id_specialist_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_id_specialist_trader.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.party_id_specialist_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_id_specialist_trader, range, value, display)

  return offset + length, value
end

-- Root Party Id Contra Settlement Unit
eurex_cash_eti_t7_v12_0.root_party_id_contra_settlement_unit = {}

-- Size: Root Party Id Contra Settlement Unit
eurex_cash_eti_t7_v12_0.root_party_id_contra_settlement_unit.size = 4

-- Display: Root Party Id Contra Settlement Unit
eurex_cash_eti_t7_v12_0.root_party_id_contra_settlement_unit.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Root Party Id Contra Settlement Unit: No Value"
  end

  return "Root Party Id Contra Settlement Unit: "..value
end

-- Dissect: Root Party Id Contra Settlement Unit
eurex_cash_eti_t7_v12_0.root_party_id_contra_settlement_unit.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_id_contra_settlement_unit.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.root_party_id_contra_settlement_unit.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_contra_settlement_unit, range, value, display)

  return offset + length, value
end

-- Root Party Id Contra Unit
eurex_cash_eti_t7_v12_0.root_party_id_contra_unit = {}

-- Size: Root Party Id Contra Unit
eurex_cash_eti_t7_v12_0.root_party_id_contra_unit.size = 4

-- Display: Root Party Id Contra Unit
eurex_cash_eti_t7_v12_0.root_party_id_contra_unit.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Root Party Id Contra Unit: No Value"
  end

  return "Root Party Id Contra Unit: "..value
end

-- Dissect: Root Party Id Contra Unit
eurex_cash_eti_t7_v12_0.root_party_id_contra_unit.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_id_contra_unit.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.root_party_id_contra_unit.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_contra_unit, range, value, display)

  return offset + length, value
end

-- Root Party Id Clearing Unit
eurex_cash_eti_t7_v12_0.root_party_id_clearing_unit = {}

-- Size: Root Party Id Clearing Unit
eurex_cash_eti_t7_v12_0.root_party_id_clearing_unit.size = 4

-- Display: Root Party Id Clearing Unit
eurex_cash_eti_t7_v12_0.root_party_id_clearing_unit.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Root Party Id Clearing Unit: No Value"
  end

  return "Root Party Id Clearing Unit: "..value
end

-- Dissect: Root Party Id Clearing Unit
eurex_cash_eti_t7_v12_0.root_party_id_clearing_unit.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_id_clearing_unit.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.root_party_id_clearing_unit.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_clearing_unit, range, value, display)

  return offset + length, value
end

-- Root Party Id Settlement Unit
eurex_cash_eti_t7_v12_0.root_party_id_settlement_unit = {}

-- Size: Root Party Id Settlement Unit
eurex_cash_eti_t7_v12_0.root_party_id_settlement_unit.size = 4

-- Display: Root Party Id Settlement Unit
eurex_cash_eti_t7_v12_0.root_party_id_settlement_unit.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Root Party Id Settlement Unit: No Value"
  end

  return "Root Party Id Settlement Unit: "..value
end

-- Dissect: Root Party Id Settlement Unit
eurex_cash_eti_t7_v12_0.root_party_id_settlement_unit.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_id_settlement_unit.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.root_party_id_settlement_unit.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_settlement_unit, range, value, display)

  return offset + length, value
end

-- Root Party Id Executing Trader
eurex_cash_eti_t7_v12_0.root_party_id_executing_trader = {}

-- Size: Root Party Id Executing Trader
eurex_cash_eti_t7_v12_0.root_party_id_executing_trader.size = 4

-- Display: Root Party Id Executing Trader
eurex_cash_eti_t7_v12_0.root_party_id_executing_trader.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Root Party Id Executing Trader: No Value"
  end

  return "Root Party Id Executing Trader: "..value
end

-- Dissect: Root Party Id Executing Trader
eurex_cash_eti_t7_v12_0.root_party_id_executing_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_id_executing_trader.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.root_party_id_executing_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_executing_trader, range, value, display)

  return offset + length, value
end

-- Root Party Id Session Id
eurex_cash_eti_t7_v12_0.root_party_id_session_id = {}

-- Size: Root Party Id Session Id
eurex_cash_eti_t7_v12_0.root_party_id_session_id.size = 4

-- Display: Root Party Id Session Id
eurex_cash_eti_t7_v12_0.root_party_id_session_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Root Party Id Session Id: No Value"
  end

  return "Root Party Id Session Id: "..value
end

-- Dissect: Root Party Id Session Id
eurex_cash_eti_t7_v12_0.root_party_id_session_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_id_session_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.root_party_id_session_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_session_id, range, value, display)

  return offset + length, value
end

-- Root Party Id Executing Unit
eurex_cash_eti_t7_v12_0.root_party_id_executing_unit = {}

-- Size: Root Party Id Executing Unit
eurex_cash_eti_t7_v12_0.root_party_id_executing_unit.size = 4

-- Display: Root Party Id Executing Unit
eurex_cash_eti_t7_v12_0.root_party_id_executing_unit.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Root Party Id Executing Unit: No Value"
  end

  return "Root Party Id Executing Unit: "..value
end

-- Dissect: Root Party Id Executing Unit
eurex_cash_eti_t7_v12_0.root_party_id_executing_unit.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_id_executing_unit.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.root_party_id_executing_unit.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_executing_unit, range, value, display)

  return offset + length, value
end

-- Orig Trade Id
eurex_cash_eti_t7_v12_0.orig_trade_id = {}

-- Size: Orig Trade Id
eurex_cash_eti_t7_v12_0.orig_trade_id.size = 4

-- Display: Orig Trade Id
eurex_cash_eti_t7_v12_0.orig_trade_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Orig Trade Id: No Value"
  end

  return "Orig Trade Id: "..value
end

-- Dissect: Orig Trade Id
eurex_cash_eti_t7_v12_0.orig_trade_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.orig_trade_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.orig_trade_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.orig_trade_id, range, value, display)

  return offset + length, value
end

-- Root Party Id Investment Decision Maker
eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker = {}

-- Size: Root Party Id Investment Decision Maker
eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker.size = 8

-- Display: Root Party Id Investment Decision Maker
eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Root Party Id Investment Decision Maker: No Value"
  end

  return "Root Party Id Investment Decision Maker: "..value
end

-- Dissect: Root Party Id Investment Decision Maker
eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_investment_decision_maker, range, value, display)

  return offset + length, value
end

-- Root Party Id Client Id
eurex_cash_eti_t7_v12_0.root_party_id_client_id = {}

-- Size: Root Party Id Client Id
eurex_cash_eti_t7_v12_0.root_party_id_client_id.size = 8

-- Display: Root Party Id Client Id
eurex_cash_eti_t7_v12_0.root_party_id_client_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Root Party Id Client Id: No Value"
  end

  return "Root Party Id Client Id: "..value
end

-- Dissect: Root Party Id Client Id
eurex_cash_eti_t7_v12_0.root_party_id_client_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.root_party_id_client_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.root_party_id_client_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.root_party_id_client_id, range, value, display)

  return offset + length, value
end

-- Coupon Rate
eurex_cash_eti_t7_v12_0.coupon_rate = {}

-- Size: Coupon Rate
eurex_cash_eti_t7_v12_0.coupon_rate.size = 8

-- Display: Coupon Rate
eurex_cash_eti_t7_v12_0.coupon_rate.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Coupon Rate: No Value"
  end

  return "Coupon Rate: "..value
end

-- Translate: Coupon Rate
eurex_cash_eti_t7_v12_0.coupon_rate.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000000
end

-- Dissect: Coupon Rate
eurex_cash_eti_t7_v12_0.coupon_rate.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.coupon_rate.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.coupon_rate.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.coupon_rate.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.coupon_rate, range, value, display)

  return offset + length, value
end

-- Accrued Interes Amt
eurex_cash_eti_t7_v12_0.accrued_interes_amt = {}

-- Size: Accrued Interes Amt
eurex_cash_eti_t7_v12_0.accrued_interes_amt.size = 8

-- Display: Accrued Interes Amt
eurex_cash_eti_t7_v12_0.accrued_interes_amt.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Accrued Interes Amt: No Value"
  end

  return "Accrued Interes Amt: "..value
end

-- Translate: Accrued Interes Amt
eurex_cash_eti_t7_v12_0.accrued_interes_amt.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Accrued Interes Amt
eurex_cash_eti_t7_v12_0.accrued_interes_amt.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.accrued_interes_amt.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.accrued_interes_amt.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.accrued_interes_amt.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.accrued_interes_amt, range, value, display)

  return offset + length, value
end

-- Side Gross Trade Amt
eurex_cash_eti_t7_v12_0.side_gross_trade_amt = {}

-- Size: Side Gross Trade Amt
eurex_cash_eti_t7_v12_0.side_gross_trade_amt.size = 8

-- Display: Side Gross Trade Amt
eurex_cash_eti_t7_v12_0.side_gross_trade_amt.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Side Gross Trade Amt: No Value"
  end

  return "Side Gross Trade Amt: "..value
end

-- Translate: Side Gross Trade Amt
eurex_cash_eti_t7_v12_0.side_gross_trade_amt.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Side Gross Trade Amt
eurex_cash_eti_t7_v12_0.side_gross_trade_amt.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.side_gross_trade_amt.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.side_gross_trade_amt.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.side_gross_trade_amt.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.side_gross_trade_amt, range, value, display)

  return offset + length, value
end

-- Cum Qty
eurex_cash_eti_t7_v12_0.cum_qty = {}

-- Size: Cum Qty
eurex_cash_eti_t7_v12_0.cum_qty.size = 8

-- Display: Cum Qty
eurex_cash_eti_t7_v12_0.cum_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Cum Qty: No Value"
  end

  return "Cum Qty: "..value
end

-- Translate: Cum Qty
eurex_cash_eti_t7_v12_0.cum_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Cum Qty
eurex_cash_eti_t7_v12_0.cum_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.cum_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.cum_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.cum_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.cum_qty, range, value, display)

  return offset + length, value
end

-- Settl Curr Fx Rate
eurex_cash_eti_t7_v12_0.settl_curr_fx_rate = {}

-- Size: Settl Curr Fx Rate
eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.size = 8

-- Display: Settl Curr Fx Rate
eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Settl Curr Fx Rate: No Value"
  end

  return "Settl Curr Fx Rate: "..value
end

-- Translate: Settl Curr Fx Rate
eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Settl Curr Fx Rate
eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.settl_curr_fx_rate, range, value, display)

  return offset + length, value
end

-- Settl Curr Amt
eurex_cash_eti_t7_v12_0.settl_curr_amt = {}

-- Size: Settl Curr Amt
eurex_cash_eti_t7_v12_0.settl_curr_amt.size = 8

-- Display: Settl Curr Amt
eurex_cash_eti_t7_v12_0.settl_curr_amt.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Settl Curr Amt: No Value"
  end

  return "Settl Curr Amt: "..value
end

-- Translate: Settl Curr Amt
eurex_cash_eti_t7_v12_0.settl_curr_amt.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Settl Curr Amt
eurex_cash_eti_t7_v12_0.settl_curr_amt.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.settl_curr_amt.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.settl_curr_amt.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.settl_curr_amt.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.settl_curr_amt, range, value, display)

  return offset + length, value
end

-- Trade Broadcast
eurex_cash_eti_t7_v12_0.trade_broadcast = {}

-- Read runtime size of: Trade Broadcast
eurex_cash_eti_t7_v12_0.trade_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Trade Broadcast
eurex_cash_eti_t7_v12_0.trade_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Trade Broadcast
eurex_cash_eti_t7_v12_0.trade_broadcast.fields = function(buffer, offset, packet, parent, size_of_trade_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, price = eurex_cash_eti_t7_v12_0.price.dissect(buffer, index, packet, parent)

  -- Last Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_px = eurex_cash_eti_t7_v12_0.last_px.dissect(buffer, index, packet, parent)

  -- Last Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_qty = eurex_cash_eti_t7_v12_0.last_qty.dissect(buffer, index, packet, parent)

  -- Settl Curr Amt: 8 Byte Unsigned Fixed Width Integer Nullable
  index, settl_curr_amt = eurex_cash_eti_t7_v12_0.settl_curr_amt.dissect(buffer, index, packet, parent)

  -- Settl Curr Fx Rate: 8 Byte Unsigned Fixed Width Integer Nullable
  index, settl_curr_fx_rate = eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Cum Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cum_qty = eurex_cash_eti_t7_v12_0.cum_qty.dissect(buffer, index, packet, parent)

  -- Side Gross Trade Amt: 8 Byte Unsigned Fixed Width Integer Nullable
  index, side_gross_trade_amt = eurex_cash_eti_t7_v12_0.side_gross_trade_amt.dissect(buffer, index, packet, parent)

  -- Accrued Interes Amt: 8 Byte Unsigned Fixed Width Integer Nullable
  index, accrued_interes_amt = eurex_cash_eti_t7_v12_0.accrued_interes_amt.dissect(buffer, index, packet, parent)

  -- Coupon Rate: 8 Byte Unsigned Fixed Width Integer Nullable
  index, coupon_rate = eurex_cash_eti_t7_v12_0.coupon_rate.dissect(buffer, index, packet, parent)

  -- Root Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_client_id = eurex_cash_eti_t7_v12_0.root_party_id_client_id.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Root Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_id = eurex_cash_eti_t7_v12_0.trade_id.dissect(buffer, index, packet, parent)

  -- Orig Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, orig_trade_id = eurex_cash_eti_t7_v12_0.orig_trade_id.dissect(buffer, index, packet, parent)

  -- Root Party Id Executing Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_executing_unit = eurex_cash_eti_t7_v12_0.root_party_id_executing_unit.dissect(buffer, index, packet, parent)

  -- Root Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_session_id = eurex_cash_eti_t7_v12_0.root_party_id_session_id.dissect(buffer, index, packet, parent)

  -- Root Party Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_executing_trader = eurex_cash_eti_t7_v12_0.root_party_id_executing_trader.dissect(buffer, index, packet, parent)

  -- Root Party Id Settlement Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_settlement_unit = eurex_cash_eti_t7_v12_0.root_party_id_settlement_unit.dissect(buffer, index, packet, parent)

  -- Root Party Id Clearing Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_clearing_unit = eurex_cash_eti_t7_v12_0.root_party_id_clearing_unit.dissect(buffer, index, packet, parent)

  -- Root Party Id Contra Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_contra_unit = eurex_cash_eti_t7_v12_0.root_party_id_contra_unit.dissect(buffer, index, packet, parent)

  -- Root Party Id Contra Settlement Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_contra_settlement_unit = eurex_cash_eti_t7_v12_0.root_party_id_contra_settlement_unit.dissect(buffer, index, packet, parent)

  -- Party Id Specialist Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_specialist_trader = eurex_cash_eti_t7_v12_0.party_id_specialist_trader.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Side Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, side_trade_id = eurex_cash_eti_t7_v12_0.side_trade_id.dissect(buffer, index, packet, parent)

  -- Side Trade Report Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, side_trade_report_id = eurex_cash_eti_t7_v12_0.side_trade_report_id.dissect(buffer, index, packet, parent)

  -- Trade Number: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_number = eurex_cash_eti_t7_v12_0.trade_number.dissect(buffer, index, packet, parent)

  -- Match Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, match_date = eurex_cash_eti_t7_v12_0.match_date.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Trd Match Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trd_match_id = eurex_cash_eti_t7_v12_0.trd_match_id.dissect(buffer, index, packet, parent)

  -- Num Days Interest: 4 Byte Unsigned Fixed Width Integer Nullable
  index, num_days_interest = eurex_cash_eti_t7_v12_0.num_days_interest.dissect(buffer, index, packet, parent)

  -- Last Mkt: 2 Byte Unsigned Fixed Width Integer Enum with 10 values
  index, last_mkt = eurex_cash_eti_t7_v12_0.last_mkt.dissect(buffer, index, packet, parent)

  -- Trade Report Type: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, trade_report_type = eurex_cash_eti_t7_v12_0.trade_report_type.dissect(buffer, index, packet, parent)

  -- Transfer Reason: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, transfer_reason = eurex_cash_eti_t7_v12_0.transfer_reason.dissect(buffer, index, packet, parent)

  -- Match Type: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, match_type = eurex_cash_eti_t7_v12_0.match_type.dissect(buffer, index, packet, parent)

  -- Match Sub Type: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, match_sub_type = eurex_cash_eti_t7_v12_0.match_sub_type.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Side Liquidity Ind: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, side_liquidity_ind = eurex_cash_eti_t7_v12_0.side_liquidity_ind.dissect(buffer, index, packet, parent)

  -- Delivery Type: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, delivery_type = eurex_cash_eti_t7_v12_0.delivery_type.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Last Coupon Deviation Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, last_coupon_deviation_indicator = eurex_cash_eti_t7_v12_0.last_coupon_deviation_indicator.dissect(buffer, index, packet, parent)

  -- Refinancing Eligibility Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, refinancing_eligibility_indicator = eurex_cash_eti_t7_v12_0.refinancing_eligibility_indicator.dissect(buffer, index, packet, parent)

  -- Clearing Instruction: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, clearing_instruction = eurex_cash_eti_t7_v12_0.clearing_instruction.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Root Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, root_party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Account: 2 Byte Ascii String Nullable
  index, account = eurex_cash_eti_t7_v12_0.account.dissect(buffer, index, packet, parent)

  -- Settl Currency: 3 Byte Ascii String Nullable
  index, settl_currency = eurex_cash_eti_t7_v12_0.settl_currency.dissect(buffer, index, packet, parent)

  -- Currency: 3 Byte Ascii String Nullable
  index, currency = eurex_cash_eti_t7_v12_0.currency.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Order Category: 1 Byte Ascii String Enum with 2 values
  index, order_category = eurex_cash_eti_t7_v12_0.order_category.dissect(buffer, index, packet, parent)

  -- Ord Type: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, ord_type = eurex_cash_eti_t7_v12_0.ord_type.dissect(buffer, index, packet, parent)

  -- Root Party Executing Firm: 5 Byte Ascii String Nullable
  index, root_party_executing_firm = eurex_cash_eti_t7_v12_0.root_party_executing_firm.dissect(buffer, index, packet, parent)

  -- Root Party Executing Trader: 6 Byte Ascii String Nullable
  index, root_party_executing_trader = eurex_cash_eti_t7_v12_0.root_party_executing_trader.dissect(buffer, index, packet, parent)

  -- Root Party Clearing Firm: 5 Byte Ascii String Nullable
  index, root_party_clearing_firm = eurex_cash_eti_t7_v12_0.root_party_clearing_firm.dissect(buffer, index, packet, parent)

  -- Root Party Executing Firm Kv Number: 4 Byte Ascii String Nullable
  index, root_party_executing_firm_kv_number = eurex_cash_eti_t7_v12_0.root_party_executing_firm_kv_number.dissect(buffer, index, packet, parent)

  -- Root Party Settlement Account: 35 Byte Ascii String Nullable
  index, root_party_settlement_account = eurex_cash_eti_t7_v12_0.root_party_settlement_account.dissect(buffer, index, packet, parent)

  -- Root Party Settlement Location: 3 Byte Ascii String Enum with 19 values
  index, root_party_settlement_location = eurex_cash_eti_t7_v12_0.root_party_settlement_location.dissect(buffer, index, packet, parent)

  -- Root Party Settlement Firm: 5 Byte Ascii String Nullable
  index, root_party_settlement_firm = eurex_cash_eti_t7_v12_0.root_party_settlement_firm.dissect(buffer, index, packet, parent)

  -- Root Party Contra Firm: 5 Byte Ascii String Nullable
  index, root_party_contra_firm = eurex_cash_eti_t7_v12_0.root_party_contra_firm.dissect(buffer, index, packet, parent)

  -- Root Party Contra Settlement Firm: 5 Byte Ascii String Nullable
  index, root_party_contra_settlement_firm = eurex_cash_eti_t7_v12_0.root_party_contra_settlement_firm.dissect(buffer, index, packet, parent)

  -- Root Party Contra Firm Kv Number: 4 Byte Ascii String Nullable
  index, root_party_contra_firm_kv_number = eurex_cash_eti_t7_v12_0.root_party_contra_firm_kv_number.dissect(buffer, index, packet, parent)

  -- Root Party Contra Settlement Account: 35 Byte Ascii String Nullable
  index, root_party_contra_settlement_account = eurex_cash_eti_t7_v12_0.root_party_contra_settlement_account.dissect(buffer, index, packet, parent)

  -- Root Party Contra Settlement Location: 3 Byte Ascii String Enum with 19 values
  index, root_party_contra_settlement_location = eurex_cash_eti_t7_v12_0.root_party_contra_settlement_location.dissect(buffer, index, packet, parent)

  -- Party Specialist Firm: 5 Byte Ascii String Nullable
  index, party_specialist_firm = eurex_cash_eti_t7_v12_0.party_specialist_firm.dissect(buffer, index, packet, parent)

  -- Party Specialist Trader: 6 Byte Ascii String Nullable
  index, party_specialist_trader = eurex_cash_eti_t7_v12_0.party_specialist_trader.dissect(buffer, index, packet, parent)

  -- Regulatory Trade Id: 52 Byte Ascii String Nullable
  index, regulatory_trade_id = eurex_cash_eti_t7_v12_0.regulatory_trade_id.dissect(buffer, index, packet, parent)

  -- Root Party Id Execution Venue: 4 Byte Ascii String Nullable
  index, root_party_id_execution_venue = eurex_cash_eti_t7_v12_0.root_party_id_execution_venue.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Trade Broadcast
eurex_cash_eti_t7_v12_0.trade_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_trade_broadcast = eurex_cash_eti_t7_v12_0.trade_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.trade_broadcast then
    local range = buffer(offset, size_of_trade_broadcast)
    local display = eurex_cash_eti_t7_v12_0.trade_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trade_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.trade_broadcast.fields(buffer, offset, packet, parent, size_of_trade_broadcast)

  return offset + size_of_trade_broadcast
end

-- Throttle Disconnect Limit
eurex_cash_eti_t7_v12_0.throttle_disconnect_limit = {}

-- Size: Throttle Disconnect Limit
eurex_cash_eti_t7_v12_0.throttle_disconnect_limit.size = 4

-- Display: Throttle Disconnect Limit
eurex_cash_eti_t7_v12_0.throttle_disconnect_limit.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Throttle Disconnect Limit: No Value"
  end

  return "Throttle Disconnect Limit: "..value
end

-- Dissect: Throttle Disconnect Limit
eurex_cash_eti_t7_v12_0.throttle_disconnect_limit.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.throttle_disconnect_limit.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.throttle_disconnect_limit.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.throttle_disconnect_limit, range, value, display)

  return offset + length, value
end

-- Throttle No Msgs
eurex_cash_eti_t7_v12_0.throttle_no_msgs = {}

-- Size: Throttle No Msgs
eurex_cash_eti_t7_v12_0.throttle_no_msgs.size = 4

-- Display: Throttle No Msgs
eurex_cash_eti_t7_v12_0.throttle_no_msgs.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Throttle No Msgs: No Value"
  end

  return "Throttle No Msgs: "..value
end

-- Dissect: Throttle No Msgs
eurex_cash_eti_t7_v12_0.throttle_no_msgs.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.throttle_no_msgs.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.throttle_no_msgs.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.throttle_no_msgs, range, value, display)

  return offset + length, value
end

-- Throttle Time Interval
eurex_cash_eti_t7_v12_0.throttle_time_interval = {}

-- Size: Throttle Time Interval
eurex_cash_eti_t7_v12_0.throttle_time_interval.size = 8

-- Display: Throttle Time Interval
eurex_cash_eti_t7_v12_0.throttle_time_interval.display = function(value)
  -- Check if field has value
  if value == Int64(0x00000000, 0x80000000) then
    return "Throttle Time Interval: No Value"
  end

  return "Throttle Time Interval: "..value
end

-- Dissect: Throttle Time Interval
eurex_cash_eti_t7_v12_0.throttle_time_interval.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.throttle_time_interval.size
  local range = buffer(offset, length)
  local value = range:le_int64()
  local display = eurex_cash_eti_t7_v12_0.throttle_time_interval.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.throttle_time_interval, range, value, display)

  return offset + length, value
end

-- Notif Header Comp
eurex_cash_eti_t7_v12_0.notif_header_comp = {}

-- Size: Notif Header Comp
eurex_cash_eti_t7_v12_0.notif_header_comp.size =
  eurex_cash_eti_t7_v12_0.sending_time.size

-- Display: Notif Header Comp
eurex_cash_eti_t7_v12_0.notif_header_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Notif Header Comp
eurex_cash_eti_t7_v12_0.notif_header_comp.fields = function(buffer, offset, packet, parent)
  local index = offset

  -- Sending Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, sending_time = eurex_cash_eti_t7_v12_0.sending_time.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Notif Header Comp
eurex_cash_eti_t7_v12_0.notif_header_comp.dissect = function(buffer, offset, packet, parent)
  if show.notif_header_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.notif_header_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.notif_header_comp.fields(buffer, offset, packet, parent)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.notif_header_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.notif_header_comp.fields(buffer, offset, packet, parent)
  end
end

-- Throttle Update Notification
eurex_cash_eti_t7_v12_0.throttle_update_notification = {}

-- Read runtime size of: Throttle Update Notification
eurex_cash_eti_t7_v12_0.throttle_update_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Throttle Update Notification
eurex_cash_eti_t7_v12_0.throttle_update_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Throttle Update Notification
eurex_cash_eti_t7_v12_0.throttle_update_notification.fields = function(buffer, offset, packet, parent, size_of_throttle_update_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Notif Header Comp: Struct of 1 fields
  index, notif_header_comp = eurex_cash_eti_t7_v12_0.notif_header_comp.dissect(buffer, index, packet, parent)

  -- Throttle Time Interval: 8 Byte Signed Fixed Width Integer Nullable
  index, throttle_time_interval = eurex_cash_eti_t7_v12_0.throttle_time_interval.dissect(buffer, index, packet, parent)

  -- Throttle No Msgs: 4 Byte Unsigned Fixed Width Integer Nullable
  index, throttle_no_msgs = eurex_cash_eti_t7_v12_0.throttle_no_msgs.dissect(buffer, index, packet, parent)

  -- Throttle Disconnect Limit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, throttle_disconnect_limit = eurex_cash_eti_t7_v12_0.throttle_disconnect_limit.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Throttle Update Notification
eurex_cash_eti_t7_v12_0.throttle_update_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_throttle_update_notification = eurex_cash_eti_t7_v12_0.throttle_update_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.throttle_update_notification then
    local range = buffer(offset, size_of_throttle_update_notification)
    local display = eurex_cash_eti_t7_v12_0.throttle_update_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.throttle_update_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.throttle_update_notification.fields(buffer, offset, packet, parent, size_of_throttle_update_notification)

  return offset + size_of_throttle_update_notification
end

-- Tm Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.tm_trading_session_status_broadcast = {}

-- Read runtime size of: Tm Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.tm_trading_session_status_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Tm Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.tm_trading_session_status_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Tm Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.tm_trading_session_status_broadcast.fields = function(buffer, offset, packet, parent, size_of_tm_trading_session_status_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Trad Ses Event: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trad_ses_event = eurex_cash_eti_t7_v12_0.trad_ses_event.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Tm Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.tm_trading_session_status_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_tm_trading_session_status_broadcast = eurex_cash_eti_t7_v12_0.tm_trading_session_status_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.tm_trading_session_status_broadcast then
    local range = buffer(offset, size_of_tm_trading_session_status_broadcast)
    local display = eurex_cash_eti_t7_v12_0.tm_trading_session_status_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.tm_trading_session_status_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.tm_trading_session_status_broadcast.fields(buffer, offset, packet, parent, size_of_tm_trading_session_status_broadcast)

  return offset + size_of_tm_trading_session_status_broadcast
end

-- Tes Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.tes_trading_session_status_broadcast = {}

-- Read runtime size of: Tes Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.tes_trading_session_status_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Tes Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.tes_trading_session_status_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Tes Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.tes_trading_session_status_broadcast.fields = function(buffer, offset, packet, parent, size_of_tes_trading_session_status_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_date = eurex_cash_eti_t7_v12_0.trade_date.dissect(buffer, index, packet, parent)

  -- Trad Ses Event: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trad_ses_event = eurex_cash_eti_t7_v12_0.trad_ses_event.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Tes Trading Session Status Broadcast
eurex_cash_eti_t7_v12_0.tes_trading_session_status_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_tes_trading_session_status_broadcast = eurex_cash_eti_t7_v12_0.tes_trading_session_status_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.tes_trading_session_status_broadcast then
    local range = buffer(offset, size_of_tes_trading_session_status_broadcast)
    local display = eurex_cash_eti_t7_v12_0.tes_trading_session_status_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.tes_trading_session_status_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.tes_trading_session_status_broadcast.fields(buffer, offset, packet, parent, size_of_tes_trading_session_status_broadcast)

  return offset + size_of_tes_trading_session_status_broadcast
end

-- Trade Publish Indicator
eurex_cash_eti_t7_v12_0.trade_publish_indicator = {}

-- Size: Trade Publish Indicator
eurex_cash_eti_t7_v12_0.trade_publish_indicator.size = 1

-- Display: Trade Publish Indicator
eurex_cash_eti_t7_v12_0.trade_publish_indicator.display = function(value)
  if value == 0 then
    return "Trade Publish Indicator: Do Not Publish Trade (0)"
  end
  if value == 1 then
    return "Trade Publish Indicator: Publish Trade (1)"
  end
  if value == 2 then
    return "Trade Publish Indicator: Deferred Publication (2)"
  end
  if value == 3 then
    return "Trade Publish Indicator: Published (3)"
  end
  if value == 0xFF then
    return "Trade Publish Indicator: No Value"
  end

  return "Trade Publish Indicator: Unknown("..value..")"
end

-- Dissect: Trade Publish Indicator
eurex_cash_eti_t7_v12_0.trade_publish_indicator.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trade_publish_indicator.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trade_publish_indicator.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trade_publish_indicator, range, value, display)

  return offset + length, value
end

-- Trd Type
eurex_cash_eti_t7_v12_0.trd_type = {}

-- Size: Trd Type
eurex_cash_eti_t7_v12_0.trd_type.size = 2

-- Display: Trd Type
eurex_cash_eti_t7_v12_0.trd_type.display = function(value)
  if value == 54 then
    return "Trd Type: Otc (54)"
  end
  if value == 1005 then
    return "Trd Type: Lis (1005)"
  end
  if value == 1006 then
    return "Trd Type: Enlight (1006)"
  end
  if value == 0xFFFF then
    return "Trd Type: No Value"
  end

  return "Trd Type: Unknown("..value..")"
end

-- Dissect: Trd Type
eurex_cash_eti_t7_v12_0.trd_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trd_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trd_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trd_type, range, value, display)

  return offset + length, value
end

-- Srqs Related Trade Id
eurex_cash_eti_t7_v12_0.srqs_related_trade_id = {}

-- Size: Srqs Related Trade Id
eurex_cash_eti_t7_v12_0.srqs_related_trade_id.size = 4

-- Display: Srqs Related Trade Id
eurex_cash_eti_t7_v12_0.srqs_related_trade_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Srqs Related Trade Id: No Value"
  end

  return "Srqs Related Trade Id: "..value
end

-- Dissect: Srqs Related Trade Id
eurex_cash_eti_t7_v12_0.srqs_related_trade_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.srqs_related_trade_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.srqs_related_trade_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.srqs_related_trade_id, range, value, display)

  return offset + length, value
end

-- Package Id
eurex_cash_eti_t7_v12_0.package_id = {}

-- Size: Package Id
eurex_cash_eti_t7_v12_0.package_id.size = 4

-- Display: Package Id
eurex_cash_eti_t7_v12_0.package_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Package Id: No Value"
  end

  return "Package Id: "..value
end

-- Dissect: Package Id
eurex_cash_eti_t7_v12_0.package_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.package_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.package_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.package_id, range, value, display)

  return offset + length, value
end

-- Tes Trade Broadcast
eurex_cash_eti_t7_v12_0.tes_trade_broadcast = {}

-- Read runtime size of: Tes Trade Broadcast
eurex_cash_eti_t7_v12_0.tes_trade_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Tes Trade Broadcast
eurex_cash_eti_t7_v12_0.tes_trade_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Tes Trade Broadcast
eurex_cash_eti_t7_v12_0.tes_trade_broadcast.fields = function(buffer, offset, packet, parent, size_of_tes_trade_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Last Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_px = eurex_cash_eti_t7_v12_0.last_px.dissect(buffer, index, packet, parent)

  -- Last Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_qty = eurex_cash_eti_t7_v12_0.last_qty.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Settl Curr Amt: 8 Byte Unsigned Fixed Width Integer Nullable
  index, settl_curr_amt = eurex_cash_eti_t7_v12_0.settl_curr_amt.dissect(buffer, index, packet, parent)

  -- Side Gross Trade Amt: 8 Byte Unsigned Fixed Width Integer Nullable
  index, side_gross_trade_amt = eurex_cash_eti_t7_v12_0.side_gross_trade_amt.dissect(buffer, index, packet, parent)

  -- Settl Curr Fx Rate: 8 Byte Unsigned Fixed Width Integer Nullable
  index, settl_curr_fx_rate = eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.dissect(buffer, index, packet, parent)

  -- Accrued Interes Amt: 8 Byte Unsigned Fixed Width Integer Nullable
  index, accrued_interes_amt = eurex_cash_eti_t7_v12_0.accrued_interes_amt.dissect(buffer, index, packet, parent)

  -- Coupon Rate: 8 Byte Unsigned Fixed Width Integer Nullable
  index, coupon_rate = eurex_cash_eti_t7_v12_0.coupon_rate.dissect(buffer, index, packet, parent)

  -- Root Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_client_id = eurex_cash_eti_t7_v12_0.root_party_id_client_id.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Root Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Package Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, package_id = eurex_cash_eti_t7_v12_0.package_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_id = eurex_cash_eti_t7_v12_0.trade_id.dissect(buffer, index, packet, parent)

  -- Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_date = eurex_cash_eti_t7_v12_0.trade_date.dissect(buffer, index, packet, parent)

  -- Side Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, side_trade_id = eurex_cash_eti_t7_v12_0.side_trade_id.dissect(buffer, index, packet, parent)

  -- Root Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_session_id = eurex_cash_eti_t7_v12_0.root_party_id_session_id.dissect(buffer, index, packet, parent)

  -- Root Party Id Settlement Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_settlement_unit = eurex_cash_eti_t7_v12_0.root_party_id_settlement_unit.dissect(buffer, index, packet, parent)

  -- Root Party Id Contra Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_contra_unit = eurex_cash_eti_t7_v12_0.root_party_id_contra_unit.dissect(buffer, index, packet, parent)

  -- Root Party Id Contra Settlement Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_contra_settlement_unit = eurex_cash_eti_t7_v12_0.root_party_id_contra_settlement_unit.dissect(buffer, index, packet, parent)

  -- Orig Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, orig_trade_id = eurex_cash_eti_t7_v12_0.orig_trade_id.dissect(buffer, index, packet, parent)

  -- Root Party Id Executing Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_executing_unit = eurex_cash_eti_t7_v12_0.root_party_id_executing_unit.dissect(buffer, index, packet, parent)

  -- Root Party Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_executing_trader = eurex_cash_eti_t7_v12_0.root_party_id_executing_trader.dissect(buffer, index, packet, parent)

  -- Root Party Id Clearing Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, root_party_id_clearing_unit = eurex_cash_eti_t7_v12_0.root_party_id_clearing_unit.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Num Days Interest: 4 Byte Unsigned Fixed Width Integer Nullable
  index, num_days_interest = eurex_cash_eti_t7_v12_0.num_days_interest.dissect(buffer, index, packet, parent)

  -- Negotiation Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, negotiation_id = eurex_cash_eti_t7_v12_0.negotiation_id.dissect(buffer, index, packet, parent)

  -- Srqs Related Trade Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, srqs_related_trade_id = eurex_cash_eti_t7_v12_0.srqs_related_trade_id.dissect(buffer, index, packet, parent)

  -- Trd Type: 2 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, trd_type = eurex_cash_eti_t7_v12_0.trd_type.dissect(buffer, index, packet, parent)

  -- Last Mkt: 2 Byte Unsigned Fixed Width Integer Enum with 10 values
  index, last_mkt = eurex_cash_eti_t7_v12_0.last_mkt.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Trade Report Type: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, trade_report_type = eurex_cash_eti_t7_v12_0.trade_report_type.dissect(buffer, index, packet, parent)

  -- Transfer Reason: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, transfer_reason = eurex_cash_eti_t7_v12_0.transfer_reason.dissect(buffer, index, packet, parent)

  -- Trade Publish Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, trade_publish_indicator = eurex_cash_eti_t7_v12_0.trade_publish_indicator.dissect(buffer, index, packet, parent)

  -- Delivery Type: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, delivery_type = eurex_cash_eti_t7_v12_0.delivery_type.dissect(buffer, index, packet, parent)

  -- Last Coupon Deviation Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, last_coupon_deviation_indicator = eurex_cash_eti_t7_v12_0.last_coupon_deviation_indicator.dissect(buffer, index, packet, parent)

  -- Refinancing Eligibility Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, refinancing_eligibility_indicator = eurex_cash_eti_t7_v12_0.refinancing_eligibility_indicator.dissect(buffer, index, packet, parent)

  -- Clearing Instruction: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, clearing_instruction = eurex_cash_eti_t7_v12_0.clearing_instruction.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Root Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, root_party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.root_party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Account: 2 Byte Ascii String Nullable
  index, account = eurex_cash_eti_t7_v12_0.account.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Settl Currency: 3 Byte Ascii String Nullable
  index, settl_currency = eurex_cash_eti_t7_v12_0.settl_currency.dissect(buffer, index, packet, parent)

  -- Root Party Executing Firm: 5 Byte Ascii String Nullable
  index, root_party_executing_firm = eurex_cash_eti_t7_v12_0.root_party_executing_firm.dissect(buffer, index, packet, parent)

  -- Root Party Executing Trader: 6 Byte Ascii String Nullable
  index, root_party_executing_trader = eurex_cash_eti_t7_v12_0.root_party_executing_trader.dissect(buffer, index, packet, parent)

  -- Root Party Clearing Firm: 5 Byte Ascii String Nullable
  index, root_party_clearing_firm = eurex_cash_eti_t7_v12_0.root_party_clearing_firm.dissect(buffer, index, packet, parent)

  -- Root Party Executing Firm Kv Number: 4 Byte Ascii String Nullable
  index, root_party_executing_firm_kv_number = eurex_cash_eti_t7_v12_0.root_party_executing_firm_kv_number.dissect(buffer, index, packet, parent)

  -- Root Party Settlement Account: 35 Byte Ascii String Nullable
  index, root_party_settlement_account = eurex_cash_eti_t7_v12_0.root_party_settlement_account.dissect(buffer, index, packet, parent)

  -- Root Party Settlement Location: 3 Byte Ascii String Enum with 19 values
  index, root_party_settlement_location = eurex_cash_eti_t7_v12_0.root_party_settlement_location.dissect(buffer, index, packet, parent)

  -- Root Party Settlement Firm: 5 Byte Ascii String Nullable
  index, root_party_settlement_firm = eurex_cash_eti_t7_v12_0.root_party_settlement_firm.dissect(buffer, index, packet, parent)

  -- Root Party Contra Firm: 5 Byte Ascii String Nullable
  index, root_party_contra_firm = eurex_cash_eti_t7_v12_0.root_party_contra_firm.dissect(buffer, index, packet, parent)

  -- Root Party Contra Settlement Firm: 5 Byte Ascii String Nullable
  index, root_party_contra_settlement_firm = eurex_cash_eti_t7_v12_0.root_party_contra_settlement_firm.dissect(buffer, index, packet, parent)

  -- Root Party Contra Firm Kv Number: 4 Byte Ascii String Nullable
  index, root_party_contra_firm_kv_number = eurex_cash_eti_t7_v12_0.root_party_contra_firm_kv_number.dissect(buffer, index, packet, parent)

  -- Root Party Contra Settlement Account: 35 Byte Ascii String Nullable
  index, root_party_contra_settlement_account = eurex_cash_eti_t7_v12_0.root_party_contra_settlement_account.dissect(buffer, index, packet, parent)

  -- Root Party Contra Settlement Location: 3 Byte Ascii String Enum with 19 values
  index, root_party_contra_settlement_location = eurex_cash_eti_t7_v12_0.root_party_contra_settlement_location.dissect(buffer, index, packet, parent)

  -- Root Party Id Execution Venue: 4 Byte Ascii String Nullable
  index, root_party_id_execution_venue = eurex_cash_eti_t7_v12_0.root_party_id_execution_venue.dissect(buffer, index, packet, parent)

  -- Regulatory Trade Id: 52 Byte Ascii String Nullable
  index, regulatory_trade_id = eurex_cash_eti_t7_v12_0.regulatory_trade_id.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Tes Trade Broadcast
eurex_cash_eti_t7_v12_0.tes_trade_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_tes_trade_broadcast = eurex_cash_eti_t7_v12_0.tes_trade_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.tes_trade_broadcast then
    local range = buffer(offset, size_of_tes_trade_broadcast)
    local display = eurex_cash_eti_t7_v12_0.tes_trade_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.tes_trade_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.tes_trade_broadcast.fields(buffer, offset, packet, parent, size_of_tes_trade_broadcast)

  return offset + size_of_tes_trade_broadcast
end

-- Trade Report Id
eurex_cash_eti_t7_v12_0.trade_report_id = {}

-- Size: Trade Report Id
eurex_cash_eti_t7_v12_0.trade_report_id.size = 20

-- Display: Trade Report Id
eurex_cash_eti_t7_v12_0.trade_report_id.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Trade Report Id: No Value"
  end

  return "Trade Report Id: "..value
end

-- Dissect: Trade Report Id
eurex_cash_eti_t7_v12_0.trade_report_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trade_report_id.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.trade_report_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trade_report_id, range, value, display)

  return offset + length, value
end

-- Tes Exec Id
eurex_cash_eti_t7_v12_0.tes_exec_id = {}

-- Size: Tes Exec Id
eurex_cash_eti_t7_v12_0.tes_exec_id.size = 4

-- Display: Tes Exec Id
eurex_cash_eti_t7_v12_0.tes_exec_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Tes Exec Id: No Value"
  end

  return "Tes Exec Id: "..value
end

-- Dissect: Tes Exec Id
eurex_cash_eti_t7_v12_0.tes_exec_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.tes_exec_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.tes_exec_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.tes_exec_id, range, value, display)

  return offset + length, value
end

-- Tes Response
eurex_cash_eti_t7_v12_0.tes_response = {}

-- Read runtime size of: Tes Response
eurex_cash_eti_t7_v12_0.tes_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Tes Response
eurex_cash_eti_t7_v12_0.tes_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Tes Response
eurex_cash_eti_t7_v12_0.tes_response.fields = function(buffer, offset, packet, parent, size_of_tes_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  -- Tes Exec Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, tes_exec_id = eurex_cash_eti_t7_v12_0.tes_exec_id.dissect(buffer, index, packet, parent)

  -- Trade Report Id: 20 Byte Ascii String Nullable
  index, trade_report_id = eurex_cash_eti_t7_v12_0.trade_report_id.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Tes Response
eurex_cash_eti_t7_v12_0.tes_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_tes_response = eurex_cash_eti_t7_v12_0.tes_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.tes_response then
    local range = buffer(offset, size_of_tes_response)
    local display = eurex_cash_eti_t7_v12_0.tes_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.tes_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.tes_response.fields(buffer, offset, packet, parent, size_of_tes_response)

  return offset + size_of_tes_response
end

-- Alloc Id
eurex_cash_eti_t7_v12_0.alloc_id = {}

-- Size: Alloc Id
eurex_cash_eti_t7_v12_0.alloc_id.size = 4

-- Display: Alloc Id
eurex_cash_eti_t7_v12_0.alloc_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Alloc Id: No Value"
  end

  return "Alloc Id: "..value
end

-- Dissect: Alloc Id
eurex_cash_eti_t7_v12_0.alloc_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.alloc_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.alloc_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.alloc_id, range, value, display)

  return offset + length, value
end

-- Tes Execution Broadcast
eurex_cash_eti_t7_v12_0.tes_execution_broadcast = {}

-- Read runtime size of: Tes Execution Broadcast
eurex_cash_eti_t7_v12_0.tes_execution_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Tes Execution Broadcast
eurex_cash_eti_t7_v12_0.tes_execution_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Tes Execution Broadcast
eurex_cash_eti_t7_v12_0.tes_execution_broadcast.fields = function(buffer, offset, packet, parent, size_of_tes_execution_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Package Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, package_id = eurex_cash_eti_t7_v12_0.package_id.dissect(buffer, index, packet, parent)

  -- Tes Exec Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, tes_exec_id = eurex_cash_eti_t7_v12_0.tes_exec_id.dissect(buffer, index, packet, parent)

  -- Alloc Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, alloc_id = eurex_cash_eti_t7_v12_0.alloc_id.dissect(buffer, index, packet, parent)

  -- Trd Type: 2 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, trd_type = eurex_cash_eti_t7_v12_0.trd_type.dissect(buffer, index, packet, parent)

  -- Trade Report Type: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, trade_report_type = eurex_cash_eti_t7_v12_0.trade_report_type.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Trd Rpt Status: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, trd_rpt_status = eurex_cash_eti_t7_v12_0.trd_rpt_status.dissect(buffer, index, packet, parent)

  -- Message Event Source: 1 Byte Ascii String Enum with 4 values
  index, message_event_source = eurex_cash_eti_t7_v12_0.message_event_source.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Tes Execution Broadcast
eurex_cash_eti_t7_v12_0.tes_execution_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_tes_execution_broadcast = eurex_cash_eti_t7_v12_0.tes_execution_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.tes_execution_broadcast then
    local range = buffer(offset, size_of_tes_execution_broadcast)
    local display = eurex_cash_eti_t7_v12_0.tes_execution_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.tes_execution_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.tes_execution_broadcast.fields(buffer, offset, packet, parent, size_of_tes_execution_broadcast)

  return offset + size_of_tes_execution_broadcast
end

-- Delete Reason
eurex_cash_eti_t7_v12_0.delete_reason = {}

-- Size: Delete Reason
eurex_cash_eti_t7_v12_0.delete_reason.size = 1

-- Display: Delete Reason
eurex_cash_eti_t7_v12_0.delete_reason.display = function(value)
  if value == 100 then
    return "Delete Reason: Nospecialreason (100)"
  end
  if value == 101 then
    return "Delete Reason: Tas Change (101)"
  end
  if value == 102 then
    return "Delete Reason: Intraday Expiration (102)"
  end
  if value == 103 then
    return "Delete Reason: Risk Event (103)"
  end
  if value == 104 then
    return "Delete Reason: Stop Trading (104)"
  end
  if value == 0xFF then
    return "Delete Reason: No Value"
  end

  return "Delete Reason: Unknown("..value..")"
end

-- Dissect: Delete Reason
eurex_cash_eti_t7_v12_0.delete_reason.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.delete_reason.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.delete_reason.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_reason, range, value, display)

  return offset + length, value
end

-- Tes Delete Broadcast
eurex_cash_eti_t7_v12_0.tes_delete_broadcast = {}

-- Read runtime size of: Tes Delete Broadcast
eurex_cash_eti_t7_v12_0.tes_delete_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Tes Delete Broadcast
eurex_cash_eti_t7_v12_0.tes_delete_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Tes Delete Broadcast
eurex_cash_eti_t7_v12_0.tes_delete_broadcast.fields = function(buffer, offset, packet, parent, size_of_tes_delete_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Package Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, package_id = eurex_cash_eti_t7_v12_0.package_id.dissect(buffer, index, packet, parent)

  -- Tes Exec Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, tes_exec_id = eurex_cash_eti_t7_v12_0.tes_exec_id.dissect(buffer, index, packet, parent)

  -- Trd Type: 2 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, trd_type = eurex_cash_eti_t7_v12_0.trd_type.dissect(buffer, index, packet, parent)

  -- Delete Reason: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, delete_reason = eurex_cash_eti_t7_v12_0.delete_reason.dissect(buffer, index, packet, parent)

  -- Trade Report Type: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, trade_report_type = eurex_cash_eti_t7_v12_0.trade_report_type.dissect(buffer, index, packet, parent)

  -- Trd Rpt Status: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, trd_rpt_status = eurex_cash_eti_t7_v12_0.trd_rpt_status.dissect(buffer, index, packet, parent)

  -- Message Event Source: 1 Byte Ascii String Enum with 4 values
  index, message_event_source = eurex_cash_eti_t7_v12_0.message_event_source.dissect(buffer, index, packet, parent)

  -- Trade Report Id: 20 Byte Ascii String Nullable
  index, trade_report_id = eurex_cash_eti_t7_v12_0.trade_report_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Tes Delete Broadcast
eurex_cash_eti_t7_v12_0.tes_delete_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_tes_delete_broadcast = eurex_cash_eti_t7_v12_0.tes_delete_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.tes_delete_broadcast then
    local range = buffer(offset, size_of_tes_delete_broadcast)
    local display = eurex_cash_eti_t7_v12_0.tes_delete_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.tes_delete_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.tes_delete_broadcast.fields(buffer, offset, packet, parent, size_of_tes_delete_broadcast)

  return offset + size_of_tes_delete_broadcast
end

-- Alignment Padding
eurex_cash_eti_t7_v12_0.alignment_padding = {}

-- Display: Alignment Padding
eurex_cash_eti_t7_v12_0.alignment_padding.display = function(value)
  return "Alignment Padding: "..value
end

-- Dissect runtime sized field: Alignment Padding
eurex_cash_eti_t7_v12_0.alignment_padding.dissect = function(buffer, offset, packet, parent, size)
  local range = buffer(offset, size)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.alignment_padding.display(value, packet, parent, size)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.alignment_padding, range, value, display)

  return offset + size, value
end

-- Var Text
eurex_cash_eti_t7_v12_0.var_text = {}

-- Display: Var Text
eurex_cash_eti_t7_v12_0.var_text.display = function(value)
  return "Var Text: "..value
end

-- Dissect runtime sized field: Var Text
eurex_cash_eti_t7_v12_0.var_text.dissect = function(buffer, offset, packet, parent, size)
  local range = buffer(offset, size)
  local value = range:string()
  local display = eurex_cash_eti_t7_v12_0.var_text.display(value, packet, parent, size)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.var_text, range, value, display)

  return offset + size, value
end

-- Trade Alloc Status
eurex_cash_eti_t7_v12_0.trade_alloc_status = {}

-- Size: Trade Alloc Status
eurex_cash_eti_t7_v12_0.trade_alloc_status.size = 1

-- Display: Trade Alloc Status
eurex_cash_eti_t7_v12_0.trade_alloc_status.display = function(value)
  if value == 1 then
    return "Trade Alloc Status: Pending (1)"
  end
  if value == 2 then
    return "Trade Alloc Status: Approved (2)"
  end
  if value == 3 then
    return "Trade Alloc Status: Auto Approved (3)"
  end
  if value == 4 then
    return "Trade Alloc Status: Uploaded (4)"
  end
  if value == 5 then
    return "Trade Alloc Status: Canceled (5)"
  end
  if value == 0xFF then
    return "Trade Alloc Status: No Value"
  end

  return "Trade Alloc Status: Unknown("..value..")"
end

-- Dissect: Trade Alloc Status
eurex_cash_eti_t7_v12_0.trade_alloc_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trade_alloc_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trade_alloc_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trade_alloc_status, range, value, display)

  return offset + length, value
end

-- Tes Enrichment Rule Id
eurex_cash_eti_t7_v12_0.tes_enrichment_rule_id = {}

-- Size: Tes Enrichment Rule Id
eurex_cash_eti_t7_v12_0.tes_enrichment_rule_id.size = 4

-- Display: Tes Enrichment Rule Id
eurex_cash_eti_t7_v12_0.tes_enrichment_rule_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Tes Enrichment Rule Id: No Value"
  end

  return "Tes Enrichment Rule Id: "..value
end

-- Dissect: Tes Enrichment Rule Id
eurex_cash_eti_t7_v12_0.tes_enrichment_rule_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.tes_enrichment_rule_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.tes_enrichment_rule_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.tes_enrichment_rule_id, range, value, display)

  return offset + length, value
end

-- Individual Alloc Id
eurex_cash_eti_t7_v12_0.individual_alloc_id = {}

-- Size: Individual Alloc Id
eurex_cash_eti_t7_v12_0.individual_alloc_id.size = 4

-- Display: Individual Alloc Id
eurex_cash_eti_t7_v12_0.individual_alloc_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Individual Alloc Id: No Value"
  end

  return "Individual Alloc Id: "..value
end

-- Dissect: Individual Alloc Id
eurex_cash_eti_t7_v12_0.individual_alloc_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.individual_alloc_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.individual_alloc_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.individual_alloc_id, range, value, display)

  return offset + length, value
end

-- Alloc Qty
eurex_cash_eti_t7_v12_0.alloc_qty = {}

-- Size: Alloc Qty
eurex_cash_eti_t7_v12_0.alloc_qty.size = 8

-- Display: Alloc Qty
eurex_cash_eti_t7_v12_0.alloc_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Alloc Qty: No Value"
  end

  return "Alloc Qty: "..value
end

-- Translate: Alloc Qty
eurex_cash_eti_t7_v12_0.alloc_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Alloc Qty
eurex_cash_eti_t7_v12_0.alloc_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.alloc_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.alloc_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.alloc_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.alloc_qty, range, value, display)

  return offset + length, value
end

-- Side Alloc Grp Bc Comp
eurex_cash_eti_t7_v12_0.side_alloc_grp_bc_comp = {}

-- Size: Side Alloc Grp Bc Comp
eurex_cash_eti_t7_v12_0.side_alloc_grp_bc_comp.size =
  eurex_cash_eti_t7_v12_0.alloc_qty.size + 
  eurex_cash_eti_t7_v12_0.individual_alloc_id.size + 
  eurex_cash_eti_t7_v12_0.tes_enrichment_rule_id.size + 
  eurex_cash_eti_t7_v12_0.party_executing_firm.size + 
  eurex_cash_eti_t7_v12_0.party_executing_trader.size + 
  eurex_cash_eti_t7_v12_0.side.size + 
  eurex_cash_eti_t7_v12_0.trade_alloc_status.size + 
  eurex_cash_eti_t7_v12_0.pad_3.size

-- Display: Side Alloc Grp Bc Comp
eurex_cash_eti_t7_v12_0.side_alloc_grp_bc_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Side Alloc Grp Bc Comp
eurex_cash_eti_t7_v12_0.side_alloc_grp_bc_comp.fields = function(buffer, offset, packet, parent, side_alloc_grp_bc_comp_index)
  local index = offset

  -- Implicit Side Alloc Grp Bc Comp Index
  if side_alloc_grp_bc_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.side_alloc_grp_bc_comp_index, side_alloc_grp_bc_comp_index)
    iteration:set_generated()
  end

  -- Alloc Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, alloc_qty = eurex_cash_eti_t7_v12_0.alloc_qty.dissect(buffer, index, packet, parent)

  -- Individual Alloc Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, individual_alloc_id = eurex_cash_eti_t7_v12_0.individual_alloc_id.dissect(buffer, index, packet, parent)

  -- Tes Enrichment Rule Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, tes_enrichment_rule_id = eurex_cash_eti_t7_v12_0.tes_enrichment_rule_id.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Trade Alloc Status: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trade_alloc_status = eurex_cash_eti_t7_v12_0.trade_alloc_status.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Side Alloc Grp Bc Comp
eurex_cash_eti_t7_v12_0.side_alloc_grp_bc_comp.dissect = function(buffer, offset, packet, parent, side_alloc_grp_bc_comp_index)
  if show.side_alloc_grp_bc_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.side_alloc_grp_bc_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.side_alloc_grp_bc_comp.fields(buffer, offset, packet, parent, side_alloc_grp_bc_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.side_alloc_grp_bc_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.side_alloc_grp_bc_comp.fields(buffer, offset, packet, parent, side_alloc_grp_bc_comp_index)
  end
end

-- Trade Report Text
eurex_cash_eti_t7_v12_0.trade_report_text = {}

-- Size: Trade Report Text
eurex_cash_eti_t7_v12_0.trade_report_text.size = 20

-- Display: Trade Report Text
eurex_cash_eti_t7_v12_0.trade_report_text.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Trade Report Text: No Value"
  end

  return "Trade Report Text: "..value
end

-- Dissect: Trade Report Text
eurex_cash_eti_t7_v12_0.trade_report_text.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trade_report_text.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.trade_report_text.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trade_report_text, range, value, display)

  return offset + length, value
end

-- No Side Allocs
eurex_cash_eti_t7_v12_0.no_side_allocs = {}

-- Size: No Side Allocs
eurex_cash_eti_t7_v12_0.no_side_allocs.size = 1

-- Display: No Side Allocs
eurex_cash_eti_t7_v12_0.no_side_allocs.display = function(value)
  -- Check if field has value
  if value == 0xFF then
    return "No Side Allocs: No Value"
  end

  return "No Side Allocs: "..value
end

-- Dissect: No Side Allocs
eurex_cash_eti_t7_v12_0.no_side_allocs.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_side_allocs.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_side_allocs.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_side_allocs, range, value, display)

  return offset + length, value
end

-- Var Text Len
eurex_cash_eti_t7_v12_0.var_text_len = {}

-- Size: Var Text Len
eurex_cash_eti_t7_v12_0.var_text_len.size = 2

-- Display: Var Text Len
eurex_cash_eti_t7_v12_0.var_text_len.display = function(value)
  -- Check if field has value
  if value == 0xFFFF then
    return "Var Text Len: No Value"
  end

  return "Var Text Len: "..value
end

-- Dissect: Var Text Len
eurex_cash_eti_t7_v12_0.var_text_len.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.var_text_len.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.var_text_len.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.var_text_len, range, value, display)

  return offset + length, value
end

-- Auto Approval Rule Id
eurex_cash_eti_t7_v12_0.auto_approval_rule_id = {}

-- Size: Auto Approval Rule Id
eurex_cash_eti_t7_v12_0.auto_approval_rule_id.size = 4

-- Display: Auto Approval Rule Id
eurex_cash_eti_t7_v12_0.auto_approval_rule_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Auto Approval Rule Id: No Value"
  end

  return "Auto Approval Rule Id: "..value
end

-- Dissect: Auto Approval Rule Id
eurex_cash_eti_t7_v12_0.auto_approval_rule_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.auto_approval_rule_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.auto_approval_rule_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.auto_approval_rule_id, range, value, display)

  return offset + length, value
end

-- Trans Bkd Time
eurex_cash_eti_t7_v12_0.trans_bkd_time = {}

-- Size: Trans Bkd Time
eurex_cash_eti_t7_v12_0.trans_bkd_time.size = 8

-- Display: Trans Bkd Time
eurex_cash_eti_t7_v12_0.trans_bkd_time.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Trans Bkd Time: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Trans Bkd Time: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Trans Bkd Time
eurex_cash_eti_t7_v12_0.trans_bkd_time.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trans_bkd_time.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.trans_bkd_time.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trans_bkd_time, range, value, display)

  return offset + length, value
end

-- Tes Broadcast
eurex_cash_eti_t7_v12_0.tes_broadcast = {}

-- Read runtime size of: Tes Broadcast
eurex_cash_eti_t7_v12_0.tes_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Tes Broadcast
eurex_cash_eti_t7_v12_0.tes_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Tes Broadcast
eurex_cash_eti_t7_v12_0.tes_broadcast.fields = function(buffer, offset, packet, parent, size_of_tes_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Last Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_px = eurex_cash_eti_t7_v12_0.last_px.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Trans Bkd Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trans_bkd_time = eurex_cash_eti_t7_v12_0.trans_bkd_time.dissect(buffer, index, packet, parent)

  -- Settl Curr Fx Rate: 8 Byte Unsigned Fixed Width Integer Nullable
  index, settl_curr_fx_rate = eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Package Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, package_id = eurex_cash_eti_t7_v12_0.package_id.dissect(buffer, index, packet, parent)

  -- Tes Exec Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, tes_exec_id = eurex_cash_eti_t7_v12_0.tes_exec_id.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Auto Approval Rule Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, auto_approval_rule_id = eurex_cash_eti_t7_v12_0.auto_approval_rule_id.dissect(buffer, index, packet, parent)

  -- Trd Type: 2 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, trd_type = eurex_cash_eti_t7_v12_0.trd_type.dissect(buffer, index, packet, parent)

  -- Var Text Len: 2 Byte Unsigned Fixed Width Integer Nullable
  index, var_text_len = eurex_cash_eti_t7_v12_0.var_text_len.dissect(buffer, index, packet, parent)

  -- Trade Report Type: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, trade_report_type = eurex_cash_eti_t7_v12_0.trade_report_type.dissect(buffer, index, packet, parent)

  -- Trd Rpt Status: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, trd_rpt_status = eurex_cash_eti_t7_v12_0.trd_rpt_status.dissect(buffer, index, packet, parent)

  -- Trade Publish Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, trade_publish_indicator = eurex_cash_eti_t7_v12_0.trade_publish_indicator.dissect(buffer, index, packet, parent)

  -- No Side Allocs: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_side_allocs = eurex_cash_eti_t7_v12_0.no_side_allocs.dissect(buffer, index, packet, parent)

  -- Message Event Source: 1 Byte Ascii String Enum with 4 values
  index, message_event_source = eurex_cash_eti_t7_v12_0.message_event_source.dissect(buffer, index, packet, parent)

  -- Trade Report Text: 20 Byte Ascii String Nullable
  index, trade_report_text = eurex_cash_eti_t7_v12_0.trade_report_text.dissect(buffer, index, packet, parent)

  -- Trade Report Id: 20 Byte Ascii String Nullable
  index, trade_report_id = eurex_cash_eti_t7_v12_0.trade_report_id.dissect(buffer, index, packet, parent)

  -- Root Party Executing Firm: 5 Byte Ascii String Nullable
  index, root_party_executing_firm = eurex_cash_eti_t7_v12_0.root_party_executing_firm.dissect(buffer, index, packet, parent)

  -- Root Party Executing Trader: 6 Byte Ascii String Nullable
  index, root_party_executing_trader = eurex_cash_eti_t7_v12_0.root_party_executing_trader.dissect(buffer, index, packet, parent)

  -- Repeating: Side Alloc Grp Bc Comp
  for side_alloc_grp_bc_comp_index = 1, no_side_allocs do
    index, side_alloc_grp_bc_comp = eurex_cash_eti_t7_v12_0.side_alloc_grp_bc_comp.dissect(buffer, index, packet, parent, side_alloc_grp_bc_comp_index)
  end

  -- Runtime Size Of: Var Text
  index, var_text = eurex_cash_eti_t7_v12_0.var_text.dissect(buffer, index, packet, parent, var_text_len)

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  -- Runtime optional field: Alignment Padding
  local alignment_padding = nil

  local alignment_padding_exists = body_len ~= index

  if alignment_padding_exists then

    -- Runtime Size Of: Alignment Padding
    local size_of_alignment_padding = body_len - index

    -- Alignment Padding: 0 Byte
    index, alignment_padding = eurex_cash_eti_t7_v12_0.alignment_padding.dissect(buffer, index, packet, parent, size_of_alignment_padding)
  end

  return index
end

-- Dissect: Tes Broadcast
eurex_cash_eti_t7_v12_0.tes_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_tes_broadcast = eurex_cash_eti_t7_v12_0.tes_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.tes_broadcast then
    local range = buffer(offset, size_of_tes_broadcast)
    local display = eurex_cash_eti_t7_v12_0.tes_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.tes_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.tes_broadcast.fields(buffer, offset, packet, parent, size_of_tes_broadcast)

  return offset + size_of_tes_broadcast
end

-- Party Id Entering Firm
eurex_cash_eti_t7_v12_0.party_id_entering_firm = {}

-- Size: Party Id Entering Firm
eurex_cash_eti_t7_v12_0.party_id_entering_firm.size = 1

-- Display: Party Id Entering Firm
eurex_cash_eti_t7_v12_0.party_id_entering_firm.display = function(value)
  if value == 1 then
    return "Party Id Entering Firm: Participant (1)"
  end
  if value == 2 then
    return "Party Id Entering Firm: Market Supervision (2)"
  end
  if value == 0xFF then
    return "Party Id Entering Firm: No Value"
  end

  return "Party Id Entering Firm: Unknown("..value..")"
end

-- Dissect: Party Id Entering Firm
eurex_cash_eti_t7_v12_0.party_id_entering_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_id_entering_firm.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.party_id_entering_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_id_entering_firm, range, value, display)

  return offset + length, value
end

-- Tes Approve Broadcast
eurex_cash_eti_t7_v12_0.tes_approve_broadcast = {}

-- Read runtime size of: Tes Approve Broadcast
eurex_cash_eti_t7_v12_0.tes_approve_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Tes Approve Broadcast
eurex_cash_eti_t7_v12_0.tes_approve_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Tes Approve Broadcast
eurex_cash_eti_t7_v12_0.tes_approve_broadcast.fields = function(buffer, offset, packet, parent, size_of_tes_approve_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Last Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_px = eurex_cash_eti_t7_v12_0.last_px.dissect(buffer, index, packet, parent)

  -- Alloc Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, alloc_qty = eurex_cash_eti_t7_v12_0.alloc_qty.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Trans Bkd Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trans_bkd_time = eurex_cash_eti_t7_v12_0.trans_bkd_time.dissect(buffer, index, packet, parent)

  -- Settl Curr Fx Rate: 8 Byte Unsigned Fixed Width Integer Nullable
  index, settl_curr_fx_rate = eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Package Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, package_id = eurex_cash_eti_t7_v12_0.package_id.dissect(buffer, index, packet, parent)

  -- Tes Exec Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, tes_exec_id = eurex_cash_eti_t7_v12_0.tes_exec_id.dissect(buffer, index, packet, parent)

  -- Alloc Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, alloc_id = eurex_cash_eti_t7_v12_0.alloc_id.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Tes Enrichment Rule Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, tes_enrichment_rule_id = eurex_cash_eti_t7_v12_0.tes_enrichment_rule_id.dissect(buffer, index, packet, parent)

  -- Auto Approval Rule Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, auto_approval_rule_id = eurex_cash_eti_t7_v12_0.auto_approval_rule_id.dissect(buffer, index, packet, parent)

  -- Trd Type: 2 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, trd_type = eurex_cash_eti_t7_v12_0.trd_type.dissect(buffer, index, packet, parent)

  -- Var Text Len: 2 Byte Unsigned Fixed Width Integer Nullable
  index, var_text_len = eurex_cash_eti_t7_v12_0.var_text_len.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Trade Publish Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, trade_publish_indicator = eurex_cash_eti_t7_v12_0.trade_publish_indicator.dissect(buffer, index, packet, parent)

  -- Trade Report Type: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, trade_report_type = eurex_cash_eti_t7_v12_0.trade_report_type.dissect(buffer, index, packet, parent)

  -- Trd Rpt Status: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, trd_rpt_status = eurex_cash_eti_t7_v12_0.trd_rpt_status.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Trade Alloc Status: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trade_alloc_status = eurex_cash_eti_t7_v12_0.trade_alloc_status.dissect(buffer, index, packet, parent)

  -- Message Event Source: 1 Byte Ascii String Enum with 4 values
  index, message_event_source = eurex_cash_eti_t7_v12_0.message_event_source.dissect(buffer, index, packet, parent)

  -- Trade Report Id: 20 Byte Ascii String Nullable
  index, trade_report_id = eurex_cash_eti_t7_v12_0.trade_report_id.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Id Entering Firm: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_entering_firm = eurex_cash_eti_t7_v12_0.party_id_entering_firm.dissect(buffer, index, packet, parent)

  -- Party Entering Trader: 6 Byte Ascii String Nullable
  index, party_entering_trader = eurex_cash_eti_t7_v12_0.party_entering_trader.dissect(buffer, index, packet, parent)

  -- Root Party Executing Firm: 5 Byte Ascii String Nullable
  index, root_party_executing_firm = eurex_cash_eti_t7_v12_0.root_party_executing_firm.dissect(buffer, index, packet, parent)

  -- Root Party Executing Trader: 6 Byte Ascii String Nullable
  index, root_party_executing_trader = eurex_cash_eti_t7_v12_0.root_party_executing_trader.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Runtime Size Of: Var Text
  index, var_text = eurex_cash_eti_t7_v12_0.var_text.dissect(buffer, index, packet, parent, var_text_len)

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  -- Runtime optional field: Alignment Padding
  local alignment_padding = nil

  local alignment_padding_exists = body_len ~= index

  if alignment_padding_exists then

    -- Runtime Size Of: Alignment Padding
    local size_of_alignment_padding = body_len - index

    -- Alignment Padding: 0 Byte
    index, alignment_padding = eurex_cash_eti_t7_v12_0.alignment_padding.dissect(buffer, index, packet, parent, size_of_alignment_padding)
  end

  return index
end

-- Dissect: Tes Approve Broadcast
eurex_cash_eti_t7_v12_0.tes_approve_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_tes_approve_broadcast = eurex_cash_eti_t7_v12_0.tes_approve_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.tes_approve_broadcast then
    local range = buffer(offset, size_of_tes_approve_broadcast)
    local display = eurex_cash_eti_t7_v12_0.tes_approve_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.tes_approve_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.tes_approve_broadcast.fields(buffer, offset, packet, parent, size_of_tes_approve_broadcast)

  return offset + size_of_tes_approve_broadcast
end

-- Subscribe Response
eurex_cash_eti_t7_v12_0.subscribe_response = {}

-- Read runtime size of: Subscribe Response
eurex_cash_eti_t7_v12_0.subscribe_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Subscribe Response
eurex_cash_eti_t7_v12_0.subscribe_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Subscribe Response
eurex_cash_eti_t7_v12_0.subscribe_response.fields = function(buffer, offset, packet, parent, size_of_subscribe_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  -- Appl Sub Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, appl_sub_id = eurex_cash_eti_t7_v12_0.appl_sub_id.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Subscribe Response
eurex_cash_eti_t7_v12_0.subscribe_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_subscribe_response = eurex_cash_eti_t7_v12_0.subscribe_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.subscribe_response then
    local range = buffer(offset, size_of_subscribe_response)
    local display = eurex_cash_eti_t7_v12_0.subscribe_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.subscribe_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.subscribe_response.fields(buffer, offset, packet, parent, size_of_subscribe_response)

  return offset + size_of_subscribe_response
end

-- Ref Appl Id
eurex_cash_eti_t7_v12_0.ref_appl_id = {}

-- Size: Ref Appl Id
eurex_cash_eti_t7_v12_0.ref_appl_id.size = 1

-- Display: Ref Appl Id
eurex_cash_eti_t7_v12_0.ref_appl_id.display = function(value)
  if value == 1 then
    return "Ref Appl Id: Trade (1)"
  end
  if value == 2 then
    return "Ref Appl Id: News (2)"
  end
  if value == 3 then
    return "Ref Appl Id: Serviceavailability (3)"
  end
  if value == 4 then
    return "Ref Appl Id: Sessiondata (4)"
  end
  if value == 5 then
    return "Ref Appl Id: Listenerdata (5)"
  end
  if value == 6 then
    return "Ref Appl Id: Risk Control (6)"
  end
  if value == 7 then
    return "Ref Appl Id: Tes Maintenance (7)"
  end
  if value == 8 then
    return "Ref Appl Id: Tes Trade (8)"
  end
  if value == 9 then
    return "Ref Appl Id: Srqs Maintenance (9)"
  end
  if value == 10 then
    return "Ref Appl Id: Service Availability Market (10)"
  end
  if value == 11 then
    return "Ref Appl Id: Specialist Data (11)"
  end
  if value == 0xFF then
    return "Ref Appl Id: No Value"
  end

  return "Ref Appl Id: Unknown("..value..")"
end

-- Dissect: Ref Appl Id
eurex_cash_eti_t7_v12_0.ref_appl_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.ref_appl_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.ref_appl_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.ref_appl_id, range, value, display)

  return offset + length, value
end

-- Subscription Scope
eurex_cash_eti_t7_v12_0.subscription_scope = {}

-- Size: Subscription Scope
eurex_cash_eti_t7_v12_0.subscription_scope.size = 4

-- Display: Subscription Scope
eurex_cash_eti_t7_v12_0.subscription_scope.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Subscription Scope: No Value"
  end

  return "Subscription Scope: "..value
end

-- Dissect: Subscription Scope
eurex_cash_eti_t7_v12_0.subscription_scope.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.subscription_scope.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.subscription_scope.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.subscription_scope, range, value, display)

  return offset + length, value
end

-- Subscribe Request
eurex_cash_eti_t7_v12_0.subscribe_request = {}

-- Read runtime size of: Subscribe Request
eurex_cash_eti_t7_v12_0.subscribe_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Subscribe Request
eurex_cash_eti_t7_v12_0.subscribe_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Subscribe Request
eurex_cash_eti_t7_v12_0.subscribe_request.fields = function(buffer, offset, packet, parent, size_of_subscribe_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Subscription Scope: 4 Byte Unsigned Fixed Width Integer Nullable
  index, subscription_scope = eurex_cash_eti_t7_v12_0.subscription_scope.dissect(buffer, index, packet, parent)

  -- Ref Appl Id: 1 Byte Unsigned Fixed Width Integer Enum with 12 values
  index, ref_appl_id = eurex_cash_eti_t7_v12_0.ref_appl_id.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Subscribe Request
eurex_cash_eti_t7_v12_0.subscribe_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_subscribe_request = eurex_cash_eti_t7_v12_0.subscribe_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.subscribe_request then
    local range = buffer(offset, size_of_subscribe_request)
    local display = eurex_cash_eti_t7_v12_0.subscribe_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.subscribe_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.subscribe_request.fields(buffer, offset, packet, parent, size_of_subscribe_request)

  return offset + size_of_subscribe_request
end

-- Status Broadcast
eurex_cash_eti_t7_v12_0.status_broadcast = {}

-- Read runtime size of: Status Broadcast
eurex_cash_eti_t7_v12_0.status_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Status Broadcast
eurex_cash_eti_t7_v12_0.status_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Status Broadcast
eurex_cash_eti_t7_v12_0.status_broadcast.fields = function(buffer, offset, packet, parent, size_of_status_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_date = eurex_cash_eti_t7_v12_0.trade_date.dissect(buffer, index, packet, parent)

  -- Trad Ses Event: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trad_ses_event = eurex_cash_eti_t7_v12_0.trad_ses_event.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Status Broadcast
eurex_cash_eti_t7_v12_0.status_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_status_broadcast = eurex_cash_eti_t7_v12_0.status_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.status_broadcast then
    local range = buffer(offset, size_of_status_broadcast)
    local display = eurex_cash_eti_t7_v12_0.status_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.status_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.status_broadcast.fields(buffer, offset, packet, parent, size_of_status_broadcast)

  return offset + size_of_status_broadcast
end

-- Security Status Report Id
eurex_cash_eti_t7_v12_0.security_status_report_id = {}

-- Size: Security Status Report Id
eurex_cash_eti_t7_v12_0.security_status_report_id.size = 8

-- Display: Security Status Report Id
eurex_cash_eti_t7_v12_0.security_status_report_id.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Security Status Report Id: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Security Status Report Id: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Security Status Report Id
eurex_cash_eti_t7_v12_0.security_status_report_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.security_status_report_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.security_status_report_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.security_status_report_id, range, value, display)

  return offset + length, value
end

-- Response In
eurex_cash_eti_t7_v12_0.response_in = {}

-- Size: Response In
eurex_cash_eti_t7_v12_0.response_in.size = 8

-- Display: Response In
eurex_cash_eti_t7_v12_0.response_in.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Response In: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Response In: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Response In
eurex_cash_eti_t7_v12_0.response_in.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.response_in.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.response_in.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.response_in, range, value, display)

  return offset + length, value
end

-- Trd Reg Ts Time In
eurex_cash_eti_t7_v12_0.trd_reg_ts_time_in = {}

-- Size: Trd Reg Ts Time In
eurex_cash_eti_t7_v12_0.trd_reg_ts_time_in.size = 8

-- Display: Trd Reg Ts Time In
eurex_cash_eti_t7_v12_0.trd_reg_ts_time_in.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Trd Reg Ts Time In: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Trd Reg Ts Time In: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Trd Reg Ts Time In
eurex_cash_eti_t7_v12_0.trd_reg_ts_time_in.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_in.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_in.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trd_reg_ts_time_in, range, value, display)

  return offset + length, value
end

-- Nr Response Header Me Comp
eurex_cash_eti_t7_v12_0.nr_response_header_me_comp = {}

-- Size: Nr Response Header Me Comp
eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.size =
  eurex_cash_eti_t7_v12_0.request_time.size + 
  eurex_cash_eti_t7_v12_0.trd_reg_ts_time_in.size + 
  eurex_cash_eti_t7_v12_0.trd_reg_ts_time_out.size + 
  eurex_cash_eti_t7_v12_0.response_in.size + 
  eurex_cash_eti_t7_v12_0.sending_time.size + 
  eurex_cash_eti_t7_v12_0.msg_seq_num.size + 
  eurex_cash_eti_t7_v12_0.last_fragment.size + 
  eurex_cash_eti_t7_v12_0.pad_3.size

-- Display: Nr Response Header Me Comp
eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Nr Response Header Me Comp
eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.fields = function(buffer, offset, packet, parent)
  local index = offset

  -- Request Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, request_time = eurex_cash_eti_t7_v12_0.request_time.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Time In: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_time_in = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_in.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Time Out: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_time_out = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_out.dissect(buffer, index, packet, parent)

  -- Response In: 8 Byte Unsigned Fixed Width Integer Nullable
  index, response_in = eurex_cash_eti_t7_v12_0.response_in.dissect(buffer, index, packet, parent)

  -- Sending Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, sending_time = eurex_cash_eti_t7_v12_0.sending_time.dissect(buffer, index, packet, parent)

  -- Msg Seq Num: 4 Byte Unsigned Fixed Width Integer Nullable
  index, msg_seq_num = eurex_cash_eti_t7_v12_0.msg_seq_num.dissect(buffer, index, packet, parent)

  -- Last Fragment: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, last_fragment = eurex_cash_eti_t7_v12_0.last_fragment.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Nr Response Header Me Comp
eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect = function(buffer, offset, packet, parent)
  if show.nr_response_header_me_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.nr_response_header_me_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.fields(buffer, offset, packet, parent)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.fields(buffer, offset, packet, parent)
  end
end

-- Specialist Security State Change Response
eurex_cash_eti_t7_v12_0.specialist_security_state_change_response = {}

-- Read runtime size of: Specialist Security State Change Response
eurex_cash_eti_t7_v12_0.specialist_security_state_change_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Specialist Security State Change Response
eurex_cash_eti_t7_v12_0.specialist_security_state_change_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Specialist Security State Change Response
eurex_cash_eti_t7_v12_0.specialist_security_state_change_response.fields = function(buffer, offset, packet, parent, size_of_specialist_security_state_change_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Security Status Report Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, security_status_report_id = eurex_cash_eti_t7_v12_0.security_status_report_id.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Specialist Security State Change Response
eurex_cash_eti_t7_v12_0.specialist_security_state_change_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_specialist_security_state_change_response = eurex_cash_eti_t7_v12_0.specialist_security_state_change_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.specialist_security_state_change_response then
    local range = buffer(offset, size_of_specialist_security_state_change_response)
    local display = eurex_cash_eti_t7_v12_0.specialist_security_state_change_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.specialist_security_state_change_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.specialist_security_state_change_response.fields(buffer, offset, packet, parent, size_of_specialist_security_state_change_response)

  return offset + size_of_specialist_security_state_change_response
end

-- Event Type
eurex_cash_eti_t7_v12_0.event_type = {}

-- Size: Event Type
eurex_cash_eti_t7_v12_0.event_type.size = 1

-- Display: Event Type
eurex_cash_eti_t7_v12_0.event_type.display = function(value)
  if value == 26 then
    return "Event Type: Redemption (26)"
  end
  if value == 100 then
    return "Event Type: Delisting (100)"
  end
  if value == 104 then
    return "Event Type: Instrument Assignment Added (104)"
  end
  if value == 105 then
    return "Event Type: Instrument Assignment Removed (105)"
  end
  if value == 106 then
    return "Event Type: Closed (106)"
  end
  if value == 107 then
    return "Event Type: Restricted (107)"
  end
  if value == 108 then
    return "Event Type: Book (108)"
  end
  if value == 109 then
    return "Event Type: Continuous (109)"
  end
  if value == 110 then
    return "Event Type: Auction (110)"
  end
  if value == 111 then
    return "Event Type: Freeze (111)"
  end
  if value == 112 then
    return "Event Type: Cancel Freeze (112)"
  end
  if value == 113 then
    return "Event Type: Pre Call (113)"
  end
  if value == 114 then
    return "Event Type: Endof Restatement (114)"
  end
  if value == 0xFF then
    return "Event Type: No Value"
  end

  return "Event Type: Unknown("..value..")"
end

-- Dissect: Event Type
eurex_cash_eti_t7_v12_0.event_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.event_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.event_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.event_type, range, value, display)

  return offset + length, value
end

-- Specialist Security State Change Request
eurex_cash_eti_t7_v12_0.specialist_security_state_change_request = {}

-- Read runtime size of: Specialist Security State Change Request
eurex_cash_eti_t7_v12_0.specialist_security_state_change_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Specialist Security State Change Request
eurex_cash_eti_t7_v12_0.specialist_security_state_change_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Specialist Security State Change Request
eurex_cash_eti_t7_v12_0.specialist_security_state_change_request.fields = function(buffer, offset, packet, parent, size_of_specialist_security_state_change_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Event Type: 1 Byte Unsigned Fixed Width Integer Enum with 14 values
  index, event_type = eurex_cash_eti_t7_v12_0.event_type.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Specialist Security State Change Request
eurex_cash_eti_t7_v12_0.specialist_security_state_change_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_specialist_security_state_change_request = eurex_cash_eti_t7_v12_0.specialist_security_state_change_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.specialist_security_state_change_request then
    local range = buffer(offset, size_of_specialist_security_state_change_request)
    local display = eurex_cash_eti_t7_v12_0.specialist_security_state_change_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.specialist_security_state_change_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.specialist_security_state_change_request.fields(buffer, offset, packet, parent, size_of_specialist_security_state_change_request)

  return offset + size_of_specialist_security_state_change_request
end

-- Specialist Rfq Reply Response
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_response = {}

-- Read runtime size of: Specialist Rfq Reply Response
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Specialist Rfq Reply Response
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Specialist Rfq Reply Response
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_response.fields = function(buffer, offset, packet, parent, size_of_specialist_rfq_reply_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Specialist Rfq Reply Response
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_specialist_rfq_reply_response = eurex_cash_eti_t7_v12_0.specialist_rfq_reply_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.specialist_rfq_reply_response then
    local range = buffer(offset, size_of_specialist_rfq_reply_response)
    local display = eurex_cash_eti_t7_v12_0.specialist_rfq_reply_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.specialist_rfq_reply_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.specialist_rfq_reply_response.fields(buffer, offset, packet, parent, size_of_specialist_rfq_reply_response)

  return offset + size_of_specialist_rfq_reply_response
end

-- Specialist Rfq Reply Request
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_request = {}

-- Read runtime size of: Specialist Rfq Reply Request
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Specialist Rfq Reply Request
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Specialist Rfq Reply Request
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_request.fields = function(buffer, offset, packet, parent, size_of_specialist_rfq_reply_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Bid Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_size = eurex_cash_eti_t7_v12_0.bid_size.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Offer Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_size = eurex_cash_eti_t7_v12_0.offer_size.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Specialist Rfq Reply Request
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_specialist_rfq_reply_request = eurex_cash_eti_t7_v12_0.specialist_rfq_reply_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.specialist_rfq_reply_request then
    local range = buffer(offset, size_of_specialist_rfq_reply_request)
    local display = eurex_cash_eti_t7_v12_0.specialist_rfq_reply_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.specialist_rfq_reply_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.specialist_rfq_reply_request.fields(buffer, offset, packet, parent, size_of_specialist_rfq_reply_request)

  return offset + size_of_specialist_rfq_reply_request
end

-- Specialist Rfq Reply Notification
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_notification = {}

-- Read runtime size of: Specialist Rfq Reply Notification
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Specialist Rfq Reply Notification
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Specialist Rfq Reply Notification
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_notification.fields = function(buffer, offset, packet, parent, size_of_specialist_rfq_reply_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Bid Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_size = eurex_cash_eti_t7_v12_0.bid_size.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Offer Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_size = eurex_cash_eti_t7_v12_0.offer_size.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Specialist Rfq Reply Notification
eurex_cash_eti_t7_v12_0.specialist_rfq_reply_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_specialist_rfq_reply_notification = eurex_cash_eti_t7_v12_0.specialist_rfq_reply_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.specialist_rfq_reply_notification then
    local range = buffer(offset, size_of_specialist_rfq_reply_notification)
    local display = eurex_cash_eti_t7_v12_0.specialist_rfq_reply_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.specialist_rfq_reply_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.specialist_rfq_reply_notification.fields(buffer, offset, packet, parent, size_of_specialist_rfq_reply_notification)

  return offset + size_of_specialist_rfq_reply_notification
end

-- Quote Request Reject Reason
eurex_cash_eti_t7_v12_0.quote_request_reject_reason = {}

-- Size: Quote Request Reject Reason
eurex_cash_eti_t7_v12_0.quote_request_reject_reason.size = 1

-- Display: Quote Request Reject Reason
eurex_cash_eti_t7_v12_0.quote_request_reject_reason.display = function(value)
  if value == 2 then
    return "Quote Request Reject Reason: Exchangeclosed (2)"
  end
  if value == 99 then
    return "Quote Request Reject Reason: Other (99)"
  end
  if value == 100 then
    return "Quote Request Reject Reason: Requestedsizetoosmall (100)"
  end
  if value == 101 then
    return "Quote Request Reject Reason: Requestedsizetoobig (101)"
  end
  if value == 102 then
    return "Quote Request Reject Reason: Novalidquotefromissuer (102)"
  end
  if value == 103 then
    return "Quote Request Reject Reason: Soldout (103)"
  end
  if value == 104 then
    return "Quote Request Reject Reason: Tradingrestriction (104)"
  end
  if value == 105 then
    return "Quote Request Reject Reason: Pendingrequesttimedout (105)"
  end
  if value == 0xFF then
    return "Quote Request Reject Reason: No Value"
  end

  return "Quote Request Reject Reason: Unknown("..value..")"
end

-- Dissect: Quote Request Reject Reason
eurex_cash_eti_t7_v12_0.quote_request_reject_reason.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_request_reject_reason.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quote_request_reject_reason.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_request_reject_reason, range, value, display)

  return offset + length, value
end

-- Specialist Rfq Reject Request
eurex_cash_eti_t7_v12_0.specialist_rfq_reject_request = {}

-- Read runtime size of: Specialist Rfq Reject Request
eurex_cash_eti_t7_v12_0.specialist_rfq_reject_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Specialist Rfq Reject Request
eurex_cash_eti_t7_v12_0.specialist_rfq_reject_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Specialist Rfq Reject Request
eurex_cash_eti_t7_v12_0.specialist_rfq_reject_request.fields = function(buffer, offset, packet, parent, size_of_specialist_rfq_reject_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Quote Request Reject Reason: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, quote_request_reject_reason = eurex_cash_eti_t7_v12_0.quote_request_reject_reason.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Specialist Rfq Reject Request
eurex_cash_eti_t7_v12_0.specialist_rfq_reject_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_specialist_rfq_reject_request = eurex_cash_eti_t7_v12_0.specialist_rfq_reject_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.specialist_rfq_reject_request then
    local range = buffer(offset, size_of_specialist_rfq_reject_request)
    local display = eurex_cash_eti_t7_v12_0.specialist_rfq_reject_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.specialist_rfq_reject_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.specialist_rfq_reject_request.fields(buffer, offset, packet, parent, size_of_specialist_rfq_reject_request)

  return offset + size_of_specialist_rfq_reject_request
end

-- Fill Liquidity Ind
eurex_cash_eti_t7_v12_0.fill_liquidity_ind = {}

-- Size: Fill Liquidity Ind
eurex_cash_eti_t7_v12_0.fill_liquidity_ind.size = 1

-- Display: Fill Liquidity Ind
eurex_cash_eti_t7_v12_0.fill_liquidity_ind.display = function(value)
  if value == 1 then
    return "Fill Liquidity Ind: Added Liquidity (1)"
  end
  if value == 2 then
    return "Fill Liquidity Ind: Removed Liquidity (2)"
  end
  if value == 4 then
    return "Fill Liquidity Ind: Auction (4)"
  end
  if value == 5 then
    return "Fill Liquidity Ind: Triggered Stop Order (5)"
  end
  if value == 6 then
    return "Fill Liquidity Ind: Triggered Oco Order (6)"
  end
  if value == 7 then
    return "Fill Liquidity Ind: Triggered Market Order (7)"
  end
  if value == 0xFF then
    return "Fill Liquidity Ind: No Value"
  end

  return "Fill Liquidity Ind: Unknown("..value..")"
end

-- Dissect: Fill Liquidity Ind
eurex_cash_eti_t7_v12_0.fill_liquidity_ind.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.fill_liquidity_ind.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.fill_liquidity_ind.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.fill_liquidity_ind, range, value, display)

  return offset + length, value
end

-- Fill Exec Id
eurex_cash_eti_t7_v12_0.fill_exec_id = {}

-- Size: Fill Exec Id
eurex_cash_eti_t7_v12_0.fill_exec_id.size = 4

-- Display: Fill Exec Id
eurex_cash_eti_t7_v12_0.fill_exec_id.display = function(value)
  -- Check if field has value
  if value == 0x80000000 then
    return "Fill Exec Id: No Value"
  end

  return "Fill Exec Id: "..value
end

-- Dissect: Fill Exec Id
eurex_cash_eti_t7_v12_0.fill_exec_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.fill_exec_id.size
  local range = buffer(offset, length)
  local value = range:le_int()
  local display = eurex_cash_eti_t7_v12_0.fill_exec_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.fill_exec_id, range, value, display)

  return offset + length, value
end

-- Fill Match Id
eurex_cash_eti_t7_v12_0.fill_match_id = {}

-- Size: Fill Match Id
eurex_cash_eti_t7_v12_0.fill_match_id.size = 4

-- Display: Fill Match Id
eurex_cash_eti_t7_v12_0.fill_match_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Fill Match Id: No Value"
  end

  return "Fill Match Id: "..value
end

-- Dissect: Fill Match Id
eurex_cash_eti_t7_v12_0.fill_match_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.fill_match_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.fill_match_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.fill_match_id, range, value, display)

  return offset + length, value
end

-- Fill Qty
eurex_cash_eti_t7_v12_0.fill_qty = {}

-- Size: Fill Qty
eurex_cash_eti_t7_v12_0.fill_qty.size = 8

-- Display: Fill Qty
eurex_cash_eti_t7_v12_0.fill_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Fill Qty: No Value"
  end

  return "Fill Qty: "..value
end

-- Translate: Fill Qty
eurex_cash_eti_t7_v12_0.fill_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Fill Qty
eurex_cash_eti_t7_v12_0.fill_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.fill_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.fill_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.fill_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.fill_qty, range, value, display)

  return offset + length, value
end

-- Fill Px
eurex_cash_eti_t7_v12_0.fill_px = {}

-- Size: Fill Px
eurex_cash_eti_t7_v12_0.fill_px.size = 8

-- Display: Fill Px
eurex_cash_eti_t7_v12_0.fill_px.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Fill Px: No Value"
  end

  return "Fill Px: "..value
end

-- Translate: Fill Px
eurex_cash_eti_t7_v12_0.fill_px.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Fill Px
eurex_cash_eti_t7_v12_0.fill_px.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.fill_px.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.fill_px.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.fill_px.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.fill_px, range, value, display)

  return offset + length, value
end

-- Fills Grp Comp
eurex_cash_eti_t7_v12_0.fills_grp_comp = {}

-- Size: Fills Grp Comp
eurex_cash_eti_t7_v12_0.fills_grp_comp.size =
  eurex_cash_eti_t7_v12_0.fill_px.size + 
  eurex_cash_eti_t7_v12_0.fill_qty.size + 
  eurex_cash_eti_t7_v12_0.fill_match_id.size + 
  eurex_cash_eti_t7_v12_0.fill_exec_id.size + 
  eurex_cash_eti_t7_v12_0.fill_liquidity_ind.size + 
  eurex_cash_eti_t7_v12_0.pad_7.size

-- Display: Fills Grp Comp
eurex_cash_eti_t7_v12_0.fills_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Fills Grp Comp
eurex_cash_eti_t7_v12_0.fills_grp_comp.fields = function(buffer, offset, packet, parent, fills_grp_comp_index)
  local index = offset

  -- Implicit Fills Grp Comp Index
  if fills_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.fills_grp_comp_index, fills_grp_comp_index)
    iteration:set_generated()
  end

  -- Fill Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, fill_px = eurex_cash_eti_t7_v12_0.fill_px.dissect(buffer, index, packet, parent)

  -- Fill Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, fill_qty = eurex_cash_eti_t7_v12_0.fill_qty.dissect(buffer, index, packet, parent)

  -- Fill Match Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, fill_match_id = eurex_cash_eti_t7_v12_0.fill_match_id.dissect(buffer, index, packet, parent)

  -- Fill Exec Id: 4 Byte Signed Fixed Width Integer Nullable
  index, fill_exec_id = eurex_cash_eti_t7_v12_0.fill_exec_id.dissect(buffer, index, packet, parent)

  -- Fill Liquidity Ind: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, fill_liquidity_ind = eurex_cash_eti_t7_v12_0.fill_liquidity_ind.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Fills Grp Comp
eurex_cash_eti_t7_v12_0.fills_grp_comp.dissect = function(buffer, offset, packet, parent, fills_grp_comp_index)
  if show.fills_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.fills_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.fills_grp_comp.fields(buffer, offset, packet, parent, fills_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.fills_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.fills_grp_comp.fields(buffer, offset, packet, parent, fills_grp_comp_index)
  end
end

-- Party Entering Firm
eurex_cash_eti_t7_v12_0.party_entering_firm = {}

-- Size: Party Entering Firm
eurex_cash_eti_t7_v12_0.party_entering_firm.size = 5

-- Display: Party Entering Firm
eurex_cash_eti_t7_v12_0.party_entering_firm.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Party Entering Firm: No Value"
  end

  return "Party Entering Firm: "..value
end

-- Dissect: Party Entering Firm
eurex_cash_eti_t7_v12_0.party_entering_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_entering_firm.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.party_entering_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_entering_firm, range, value, display)

  return offset + length, value
end

-- Triggered
eurex_cash_eti_t7_v12_0.triggered = {}

-- Size: Triggered
eurex_cash_eti_t7_v12_0.triggered.size = 1

-- Display: Triggered
eurex_cash_eti_t7_v12_0.triggered.display = function(value)
  if value == 0 then
    return "Triggered: Nottriggered (0)"
  end
  if value == 1 then
    return "Triggered: Triggered Stop (1)"
  end
  if value == 2 then
    return "Triggered: Triggered Oco (2)"
  end
  if value == 0xFF then
    return "Triggered: No Value"
  end

  return "Triggered: Unknown("..value..")"
end

-- Dissect: Triggered
eurex_cash_eti_t7_v12_0.triggered.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.triggered.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.triggered.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.triggered, range, value, display)

  return offset + length, value
end

-- Appl Seq Indicator
eurex_cash_eti_t7_v12_0.appl_seq_indicator = {}

-- Size: Appl Seq Indicator
eurex_cash_eti_t7_v12_0.appl_seq_indicator.size = 1

-- Display: Appl Seq Indicator
eurex_cash_eti_t7_v12_0.appl_seq_indicator.display = function(value)
  if value == 0 then
    return "Appl Seq Indicator: No Recovery Required (0)"
  end
  if value == 1 then
    return "Appl Seq Indicator: Recovery Required (1)"
  end
  if value == 0xFF then
    return "Appl Seq Indicator: No Value"
  end

  return "Appl Seq Indicator: Unknown("..value..")"
end

-- Dissect: Appl Seq Indicator
eurex_cash_eti_t7_v12_0.appl_seq_indicator.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_seq_indicator.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.appl_seq_indicator.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_seq_indicator, range, value, display)

  return offset + length, value
end

-- Trading Session Sub Id
eurex_cash_eti_t7_v12_0.trading_session_sub_id = {}

-- Size: Trading Session Sub Id
eurex_cash_eti_t7_v12_0.trading_session_sub_id.size = 1

-- Display: Trading Session Sub Id
eurex_cash_eti_t7_v12_0.trading_session_sub_id.display = function(value)
  if value == 2 then
    return "Trading Session Sub Id: Openingauction (2)"
  end
  if value == 4 then
    return "Trading Session Sub Id: Closingauction (4)"
  end
  if value == 6 then
    return "Trading Session Sub Id: Intraday Auction (6)"
  end
  if value == 8 then
    return "Trading Session Sub Id: Any Auction (8)"
  end
  if value == 105 then
    return "Trading Session Sub Id: Special Auction (105)"
  end
  if value == 0xFF then
    return "Trading Session Sub Id: No Value"
  end

  return "Trading Session Sub Id: Unknown("..value..")"
end

-- Dissect: Trading Session Sub Id
eurex_cash_eti_t7_v12_0.trading_session_sub_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trading_session_sub_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trading_session_sub_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trading_session_sub_id, range, value, display)

  return offset + length, value
end

-- Exec Inst
eurex_cash_eti_t7_v12_0.exec_inst = {}

-- Size: Exec Inst
eurex_cash_eti_t7_v12_0.exec_inst.size = 1

-- Display: Exec Inst
eurex_cash_eti_t7_v12_0.exec_inst.display = function(value)
  if value == 1 then
    return "Exec Inst: H (1)"
  end
  if value == 2 then
    return "Exec Inst: Q (2)"
  end
  if value == 3 then
    return "Exec Inst: Hq (3)"
  end
  if value == 5 then
    return "Exec Inst: H 6 (5)"
  end
  if value == 6 then
    return "Exec Inst: Q 6 (6)"
  end
  if value == 0xFF then
    return "Exec Inst: No Value"
  end

  return "Exec Inst: Unknown("..value..")"
end

-- Dissect: Exec Inst
eurex_cash_eti_t7_v12_0.exec_inst.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.exec_inst.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.exec_inst.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.exec_inst, range, value, display)

  return offset + length, value
end

-- Time In Force
eurex_cash_eti_t7_v12_0.time_in_force = {}

-- Size: Time In Force
eurex_cash_eti_t7_v12_0.time_in_force.size = 1

-- Display: Time In Force
eurex_cash_eti_t7_v12_0.time_in_force.display = function(value)
  if value == 0 then
    return "Time In Force: Day (0)"
  end
  if value == 1 then
    return "Time In Force: Gtc (1)"
  end
  if value == 3 then
    return "Time In Force: Ioc (3)"
  end
  if value == 4 then
    return "Time In Force: Fok (4)"
  end
  if value == 6 then
    return "Time In Force: Gtd (6)"
  end
  if value == 0xFF then
    return "Time In Force: No Value"
  end

  return "Time In Force: Unknown("..value..")"
end

-- Dissect: Time In Force
eurex_cash_eti_t7_v12_0.time_in_force.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.time_in_force.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.time_in_force.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.time_in_force, range, value, display)

  return offset + length, value
end

-- Order Event Type
eurex_cash_eti_t7_v12_0.order_event_type = {}

-- Size: Order Event Type
eurex_cash_eti_t7_v12_0.order_event_type.size = 1

-- Display: Order Event Type
eurex_cash_eti_t7_v12_0.order_event_type.display = function(value)
  if value == 100 then
    return "Order Event Type: Pendingrequestsdiscarded (100)"
  end
  if value == 0xFF then
    return "Order Event Type: No Value"
  end

  return "Order Event Type: Unknown("..value..")"
end

-- Dissect: Order Event Type
eurex_cash_eti_t7_v12_0.order_event_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.order_event_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.order_event_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_event_type, range, value, display)

  return offset + length, value
end

-- No Fills
eurex_cash_eti_t7_v12_0.no_fills = {}

-- Size: No Fills
eurex_cash_eti_t7_v12_0.no_fills.size = 1

-- Display: No Fills
eurex_cash_eti_t7_v12_0.no_fills.display = function(value)
  -- Check if field has value
  if value == 0xFF then
    return "No Fills: No Value"
  end

  return "No Fills: "..value
end

-- Dissect: No Fills
eurex_cash_eti_t7_v12_0.no_fills.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_fills.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_fills.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_fills, range, value, display)

  return offset + length, value
end

-- Party Id Entering Trader
eurex_cash_eti_t7_v12_0.party_id_entering_trader = {}

-- Size: Party Id Entering Trader
eurex_cash_eti_t7_v12_0.party_id_entering_trader.size = 4

-- Display: Party Id Entering Trader
eurex_cash_eti_t7_v12_0.party_id_entering_trader.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Party Id Entering Trader: No Value"
  end

  return "Party Id Entering Trader: "..value
end

-- Dissect: Party Id Entering Trader
eurex_cash_eti_t7_v12_0.party_id_entering_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_id_entering_trader.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.party_id_entering_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_id_entering_trader, range, value, display)

  return offset + length, value
end

-- Party Id Session Id
eurex_cash_eti_t7_v12_0.party_id_session_id = {}

-- Size: Party Id Session Id
eurex_cash_eti_t7_v12_0.party_id_session_id.size = 4

-- Display: Party Id Session Id
eurex_cash_eti_t7_v12_0.party_id_session_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Party Id Session Id: No Value"
  end

  return "Party Id Session Id: "..value
end

-- Dissect: Party Id Session Id
eurex_cash_eti_t7_v12_0.party_id_session_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_id_session_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.party_id_session_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_id_session_id, range, value, display)

  return offset + length, value
end

-- Party Id Executing Unit
eurex_cash_eti_t7_v12_0.party_id_executing_unit = {}

-- Size: Party Id Executing Unit
eurex_cash_eti_t7_v12_0.party_id_executing_unit.size = 4

-- Display: Party Id Executing Unit
eurex_cash_eti_t7_v12_0.party_id_executing_unit.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Party Id Executing Unit: No Value"
  end

  return "Party Id Executing Unit: "..value
end

-- Dissect: Party Id Executing Unit
eurex_cash_eti_t7_v12_0.party_id_executing_unit.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_id_executing_unit.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.party_id_executing_unit.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_id_executing_unit, range, value, display)

  return offset + length, value
end

-- Expire Date
eurex_cash_eti_t7_v12_0.expire_date = {}

-- Size: Expire Date
eurex_cash_eti_t7_v12_0.expire_date.size = 4

-- Display: Expire Date
eurex_cash_eti_t7_v12_0.expire_date.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Expire Date: No Value"
  end

  return "Expire Date: "..value
end

-- Dissect: Expire Date
eurex_cash_eti_t7_v12_0.expire_date.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.expire_date.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.expire_date.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.expire_date, range, value, display)

  return offset + length, value
end

-- Cxl Qty
eurex_cash_eti_t7_v12_0.cxl_qty = {}

-- Size: Cxl Qty
eurex_cash_eti_t7_v12_0.cxl_qty.size = 8

-- Display: Cxl Qty
eurex_cash_eti_t7_v12_0.cxl_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Cxl Qty: No Value"
  end

  return "Cxl Qty: "..value
end

-- Translate: Cxl Qty
eurex_cash_eti_t7_v12_0.cxl_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Cxl Qty
eurex_cash_eti_t7_v12_0.cxl_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.cxl_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.cxl_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.cxl_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.cxl_qty, range, value, display)

  return offset + length, value
end

-- Trd Reg Ts Time Priority
eurex_cash_eti_t7_v12_0.trd_reg_ts_time_priority = {}

-- Size: Trd Reg Ts Time Priority
eurex_cash_eti_t7_v12_0.trd_reg_ts_time_priority.size = 8

-- Display: Trd Reg Ts Time Priority
eurex_cash_eti_t7_v12_0.trd_reg_ts_time_priority.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Trd Reg Ts Time Priority: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Trd Reg Ts Time Priority: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Trd Reg Ts Time Priority
eurex_cash_eti_t7_v12_0.trd_reg_ts_time_priority.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_priority.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_priority.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trd_reg_ts_time_priority, range, value, display)

  return offset + length, value
end

-- Trd Reg Ts Entry Time
eurex_cash_eti_t7_v12_0.trd_reg_ts_entry_time = {}

-- Size: Trd Reg Ts Entry Time
eurex_cash_eti_t7_v12_0.trd_reg_ts_entry_time.size = 8

-- Display: Trd Reg Ts Entry Time
eurex_cash_eti_t7_v12_0.trd_reg_ts_entry_time.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Trd Reg Ts Entry Time: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Trd Reg Ts Entry Time: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Trd Reg Ts Entry Time
eurex_cash_eti_t7_v12_0.trd_reg_ts_entry_time.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trd_reg_ts_entry_time.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.trd_reg_ts_entry_time.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trd_reg_ts_entry_time, range, value, display)

  return offset + length, value
end

-- Specialist Order Book Notification
eurex_cash_eti_t7_v12_0.specialist_order_book_notification = {}

-- Read runtime size of: Specialist Order Book Notification
eurex_cash_eti_t7_v12_0.specialist_order_book_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Specialist Order Book Notification
eurex_cash_eti_t7_v12_0.specialist_order_book_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Specialist Order Book Notification
eurex_cash_eti_t7_v12_0.specialist_order_book_notification.fields = function(buffer, offset, packet, parent, size_of_specialist_order_book_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Entry Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_entry_time = eurex_cash_eti_t7_v12_0.trd_reg_ts_entry_time.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Time Priority: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_time_priority = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_priority.dissect(buffer, index, packet, parent)

  -- Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, price = eurex_cash_eti_t7_v12_0.price.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Cum Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cum_qty = eurex_cash_eti_t7_v12_0.cum_qty.dissect(buffer, index, packet, parent)

  -- Cxl Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_qty = eurex_cash_eti_t7_v12_0.cxl_qty.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Stop Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, stop_px = eurex_cash_eti_t7_v12_0.stop_px.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Expire Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, expire_date = eurex_cash_eti_t7_v12_0.expire_date.dissect(buffer, index, packet, parent)

  -- Party Id Executing Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_executing_unit = eurex_cash_eti_t7_v12_0.party_id_executing_unit.dissect(buffer, index, packet, parent)

  -- Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_session_id = eurex_cash_eti_t7_v12_0.party_id_session_id.dissect(buffer, index, packet, parent)

  -- Party Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_executing_trader = eurex_cash_eti_t7_v12_0.party_id_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Id Entering Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_entering_trader = eurex_cash_eti_t7_v12_0.party_id_entering_trader.dissect(buffer, index, packet, parent)

  -- No Fills: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_fills = eurex_cash_eti_t7_v12_0.no_fills.dissect(buffer, index, packet, parent)

  -- Pad 1: 1 Byte
  index, pad_1 = eurex_cash_eti_t7_v12_0.pad_1.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Party Id Entering Firm: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_entering_firm = eurex_cash_eti_t7_v12_0.party_id_entering_firm.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Order Event Type: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_event_type = eurex_cash_eti_t7_v12_0.order_event_type.dissect(buffer, index, packet, parent)

  -- Match Type: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, match_type = eurex_cash_eti_t7_v12_0.match_type.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Ord Type: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, ord_type = eurex_cash_eti_t7_v12_0.ord_type.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Time In Force: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, time_in_force = eurex_cash_eti_t7_v12_0.time_in_force.dissect(buffer, index, packet, parent)

  -- Exec Inst: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, exec_inst = eurex_cash_eti_t7_v12_0.exec_inst.dissect(buffer, index, packet, parent)

  -- Trading Session Sub Id: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trading_session_sub_id = eurex_cash_eti_t7_v12_0.trading_session_sub_id.dissect(buffer, index, packet, parent)

  -- Appl Seq Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, appl_seq_indicator = eurex_cash_eti_t7_v12_0.appl_seq_indicator.dissect(buffer, index, packet, parent)

  -- Triggered: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, triggered = eurex_cash_eti_t7_v12_0.triggered.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Party Entering Firm: 5 Byte Ascii String Nullable
  index, party_entering_firm = eurex_cash_eti_t7_v12_0.party_entering_firm.dissect(buffer, index, packet, parent)

  -- Party Entering Trader: 6 Byte Ascii String Nullable
  index, party_entering_trader = eurex_cash_eti_t7_v12_0.party_entering_trader.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Fix Cl Ord Id: 20 Byte Ascii String Nullable
  index, fix_cl_ord_id = eurex_cash_eti_t7_v12_0.fix_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Repeating: Fills Grp Comp
  for fills_grp_comp_index = 1, no_fills do
    index, fills_grp_comp = eurex_cash_eti_t7_v12_0.fills_grp_comp.dissect(buffer, index, packet, parent, fills_grp_comp_index)
  end

  return index
end

-- Dissect: Specialist Order Book Notification
eurex_cash_eti_t7_v12_0.specialist_order_book_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_specialist_order_book_notification = eurex_cash_eti_t7_v12_0.specialist_order_book_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.specialist_order_book_notification then
    local range = buffer(offset, size_of_specialist_order_book_notification)
    local display = eurex_cash_eti_t7_v12_0.specialist_order_book_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.specialist_order_book_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.specialist_order_book_notification.fields(buffer, offset, packet, parent, size_of_specialist_order_book_notification)

  return offset + size_of_specialist_order_book_notification
end

-- Specialist Instrument Event Notification
eurex_cash_eti_t7_v12_0.specialist_instrument_event_notification = {}

-- Read runtime size of: Specialist Instrument Event Notification
eurex_cash_eti_t7_v12_0.specialist_instrument_event_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Specialist Instrument Event Notification
eurex_cash_eti_t7_v12_0.specialist_instrument_event_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Specialist Instrument Event Notification
eurex_cash_eti_t7_v12_0.specialist_instrument_event_notification.fields = function(buffer, offset, packet, parent, size_of_specialist_instrument_event_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Event Type: 1 Byte Unsigned Fixed Width Integer Enum with 14 values
  index, event_type = eurex_cash_eti_t7_v12_0.event_type.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Specialist Instrument Event Notification
eurex_cash_eti_t7_v12_0.specialist_instrument_event_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_specialist_instrument_event_notification = eurex_cash_eti_t7_v12_0.specialist_instrument_event_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.specialist_instrument_event_notification then
    local range = buffer(offset, size_of_specialist_instrument_event_notification)
    local display = eurex_cash_eti_t7_v12_0.specialist_instrument_event_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.specialist_instrument_event_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.specialist_instrument_event_notification.fields(buffer, offset, packet, parent, size_of_specialist_instrument_event_notification)

  return offset + size_of_specialist_instrument_event_notification
end

-- Not Aff Orig Cl Ord Id
eurex_cash_eti_t7_v12_0.not_aff_orig_cl_ord_id = {}

-- Size: Not Aff Orig Cl Ord Id
eurex_cash_eti_t7_v12_0.not_aff_orig_cl_ord_id.size = 8

-- Display: Not Aff Orig Cl Ord Id
eurex_cash_eti_t7_v12_0.not_aff_orig_cl_ord_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Not Aff Orig Cl Ord Id: No Value"
  end

  return "Not Aff Orig Cl Ord Id: "..value
end

-- Dissect: Not Aff Orig Cl Ord Id
eurex_cash_eti_t7_v12_0.not_aff_orig_cl_ord_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.not_aff_orig_cl_ord_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.not_aff_orig_cl_ord_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.not_aff_orig_cl_ord_id, range, value, display)

  return offset + length, value
end

-- Not Affected Order Id
eurex_cash_eti_t7_v12_0.not_affected_order_id = {}

-- Size: Not Affected Order Id
eurex_cash_eti_t7_v12_0.not_affected_order_id.size = 8

-- Display: Not Affected Order Id
eurex_cash_eti_t7_v12_0.not_affected_order_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Not Affected Order Id: No Value"
  end

  return "Not Affected Order Id: "..value
end

-- Dissect: Not Affected Order Id
eurex_cash_eti_t7_v12_0.not_affected_order_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.not_affected_order_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.not_affected_order_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.not_affected_order_id, range, value, display)

  return offset + length, value
end

-- Not Affected Orders Grp Comp
eurex_cash_eti_t7_v12_0.not_affected_orders_grp_comp = {}

-- Size: Not Affected Orders Grp Comp
eurex_cash_eti_t7_v12_0.not_affected_orders_grp_comp.size =
  eurex_cash_eti_t7_v12_0.not_affected_order_id.size + 
  eurex_cash_eti_t7_v12_0.not_aff_orig_cl_ord_id.size

-- Display: Not Affected Orders Grp Comp
eurex_cash_eti_t7_v12_0.not_affected_orders_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Not Affected Orders Grp Comp
eurex_cash_eti_t7_v12_0.not_affected_orders_grp_comp.fields = function(buffer, offset, packet, parent, not_affected_orders_grp_comp_index)
  local index = offset

  -- Implicit Not Affected Orders Grp Comp Index
  if not_affected_orders_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.not_affected_orders_grp_comp_index, not_affected_orders_grp_comp_index)
    iteration:set_generated()
  end

  -- Not Affected Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, not_affected_order_id = eurex_cash_eti_t7_v12_0.not_affected_order_id.dissect(buffer, index, packet, parent)

  -- Not Aff Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, not_aff_orig_cl_ord_id = eurex_cash_eti_t7_v12_0.not_aff_orig_cl_ord_id.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Not Affected Orders Grp Comp
eurex_cash_eti_t7_v12_0.not_affected_orders_grp_comp.dissect = function(buffer, offset, packet, parent, not_affected_orders_grp_comp_index)
  if show.not_affected_orders_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.not_affected_orders_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.not_affected_orders_grp_comp.fields(buffer, offset, packet, parent, not_affected_orders_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.not_affected_orders_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.not_affected_orders_grp_comp.fields(buffer, offset, packet, parent, not_affected_orders_grp_comp_index)
  end
end

-- Affected Orig Cl Ord Id
eurex_cash_eti_t7_v12_0.affected_orig_cl_ord_id = {}

-- Size: Affected Orig Cl Ord Id
eurex_cash_eti_t7_v12_0.affected_orig_cl_ord_id.size = 8

-- Display: Affected Orig Cl Ord Id
eurex_cash_eti_t7_v12_0.affected_orig_cl_ord_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Affected Orig Cl Ord Id: No Value"
  end

  return "Affected Orig Cl Ord Id: "..value
end

-- Dissect: Affected Orig Cl Ord Id
eurex_cash_eti_t7_v12_0.affected_orig_cl_ord_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.affected_orig_cl_ord_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.affected_orig_cl_ord_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.affected_orig_cl_ord_id, range, value, display)

  return offset + length, value
end

-- Affected Order Id
eurex_cash_eti_t7_v12_0.affected_order_id = {}

-- Size: Affected Order Id
eurex_cash_eti_t7_v12_0.affected_order_id.size = 8

-- Display: Affected Order Id
eurex_cash_eti_t7_v12_0.affected_order_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Affected Order Id: No Value"
  end

  return "Affected Order Id: "..value
end

-- Dissect: Affected Order Id
eurex_cash_eti_t7_v12_0.affected_order_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.affected_order_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.affected_order_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.affected_order_id, range, value, display)

  return offset + length, value
end

-- Affected Ord Grp Comp
eurex_cash_eti_t7_v12_0.affected_ord_grp_comp = {}

-- Size: Affected Ord Grp Comp
eurex_cash_eti_t7_v12_0.affected_ord_grp_comp.size =
  eurex_cash_eti_t7_v12_0.affected_order_id.size + 
  eurex_cash_eti_t7_v12_0.affected_orig_cl_ord_id.size

-- Display: Affected Ord Grp Comp
eurex_cash_eti_t7_v12_0.affected_ord_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Affected Ord Grp Comp
eurex_cash_eti_t7_v12_0.affected_ord_grp_comp.fields = function(buffer, offset, packet, parent, affected_ord_grp_comp_index)
  local index = offset

  -- Implicit Affected Ord Grp Comp Index
  if affected_ord_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.affected_ord_grp_comp_index, affected_ord_grp_comp_index)
    iteration:set_generated()
  end

  -- Affected Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, affected_order_id = eurex_cash_eti_t7_v12_0.affected_order_id.dissect(buffer, index, packet, parent)

  -- Affected Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, affected_orig_cl_ord_id = eurex_cash_eti_t7_v12_0.affected_orig_cl_ord_id.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Affected Ord Grp Comp
eurex_cash_eti_t7_v12_0.affected_ord_grp_comp.dissect = function(buffer, offset, packet, parent, affected_ord_grp_comp_index)
  if show.affected_ord_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.affected_ord_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.affected_ord_grp_comp.fields(buffer, offset, packet, parent, affected_ord_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.affected_ord_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.affected_ord_grp_comp.fields(buffer, offset, packet, parent, affected_ord_grp_comp_index)
  end
end

-- Mass Action Reason
eurex_cash_eti_t7_v12_0.mass_action_reason = {}

-- Size: Mass Action Reason
eurex_cash_eti_t7_v12_0.mass_action_reason.size = 1

-- Display: Mass Action Reason
eurex_cash_eti_t7_v12_0.mass_action_reason.display = function(value)
  if value == 0 then
    return "Mass Action Reason: No Special Reason (0)"
  end
  if value == 1 then
    return "Mass Action Reason: Stop Trading (1)"
  end
  if value == 2 then
    return "Mass Action Reason: Emergency (2)"
  end
  if value == 6 then
    return "Mass Action Reason: Session Loss (6)"
  end
  if value == 7 then
    return "Mass Action Reason: Duplicate Session Login (7)"
  end
  if value == 8 then
    return "Mass Action Reason: Clearing Risk Control (8)"
  end
  if value == 100 then
    return "Mass Action Reason: Internal Connection Loss (100)"
  end
  if value == 105 then
    return "Mass Action Reason: Product State Halt (105)"
  end
  if value == 106 then
    return "Mass Action Reason: Product State Holiday (106)"
  end
  if value == 107 then
    return "Mass Action Reason: Instrument Suspended (107)"
  end
  if value == 110 then
    return "Mass Action Reason: Volatility Interruption (110)"
  end
  if value == 111 then
    return "Mass Action Reason: Producttemporarilynottradeable (111)"
  end
  if value == 113 then
    return "Mass Action Reason: Instrument Stopped (113)"
  end
  if value == 115 then
    return "Mass Action Reason: Instrument Knock Out (115)"
  end
  if value == 116 then
    return "Mass Action Reason: Instrument Sold Out (116)"
  end
  if value == 117 then
    return "Mass Action Reason: Memberdisable (117)"
  end
  if value == 118 then
    return "Mass Action Reason: Instrument Knock Out Reverted (118)"
  end
  if value == 119 then
    return "Mass Action Reason: Automatic Quote Deletion (119)"
  end
  if value == 120 then
    return "Mass Action Reason: Outside Quoting Period (120)"
  end
  if value == 0xFF then
    return "Mass Action Reason: No Value"
  end

  return "Mass Action Reason: Unknown("..value..")"
end

-- Dissect: Mass Action Reason
eurex_cash_eti_t7_v12_0.mass_action_reason.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.mass_action_reason.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.mass_action_reason.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.mass_action_reason, range, value, display)

  return offset + length, value
end

-- No Not Affected Orders
eurex_cash_eti_t7_v12_0.no_not_affected_orders = {}

-- Size: No Not Affected Orders
eurex_cash_eti_t7_v12_0.no_not_affected_orders.size = 2

-- Display: No Not Affected Orders
eurex_cash_eti_t7_v12_0.no_not_affected_orders.display = function(value)
  -- Check if field has value
  if value == 0xFFFF then
    return "No Not Affected Orders: No Value"
  end

  return "No Not Affected Orders: "..value
end

-- Dissect: No Not Affected Orders
eurex_cash_eti_t7_v12_0.no_not_affected_orders.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_not_affected_orders.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_not_affected_orders.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_not_affected_orders, range, value, display)

  return offset + length, value
end

-- No Affected Orders
eurex_cash_eti_t7_v12_0.no_affected_orders = {}

-- Size: No Affected Orders
eurex_cash_eti_t7_v12_0.no_affected_orders.size = 2

-- Display: No Affected Orders
eurex_cash_eti_t7_v12_0.no_affected_orders.display = function(value)
  -- Check if field has value
  if value == 0xFFFF then
    return "No Affected Orders: No Value"
  end

  return "No Affected Orders: "..value
end

-- Dissect: No Affected Orders
eurex_cash_eti_t7_v12_0.no_affected_orders.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_affected_orders.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_affected_orders.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_affected_orders, range, value, display)

  return offset + length, value
end

-- Mass Action Report Id
eurex_cash_eti_t7_v12_0.mass_action_report_id = {}

-- Size: Mass Action Report Id
eurex_cash_eti_t7_v12_0.mass_action_report_id.size = 8

-- Display: Mass Action Report Id
eurex_cash_eti_t7_v12_0.mass_action_report_id.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Mass Action Report Id: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Mass Action Report Id: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Mass Action Report Id
eurex_cash_eti_t7_v12_0.mass_action_report_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.mass_action_report_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.mass_action_report_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.mass_action_report_id, range, value, display)

  return offset + length, value
end

-- Specialist Delete All Order Broadcast
eurex_cash_eti_t7_v12_0.specialist_delete_all_order_broadcast = {}

-- Read runtime size of: Specialist Delete All Order Broadcast
eurex_cash_eti_t7_v12_0.specialist_delete_all_order_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Specialist Delete All Order Broadcast
eurex_cash_eti_t7_v12_0.specialist_delete_all_order_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Specialist Delete All Order Broadcast
eurex_cash_eti_t7_v12_0.specialist_delete_all_order_broadcast.fields = function(buffer, offset, packet, parent, size_of_specialist_delete_all_order_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Mass Action Report Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, mass_action_report_id = eurex_cash_eti_t7_v12_0.mass_action_report_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Party Id Entering Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_entering_trader = eurex_cash_eti_t7_v12_0.party_id_entering_trader.dissect(buffer, index, packet, parent)

  -- No Affected Orders: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_affected_orders = eurex_cash_eti_t7_v12_0.no_affected_orders.dissect(buffer, index, packet, parent)

  -- No Not Affected Orders: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_not_affected_orders = eurex_cash_eti_t7_v12_0.no_not_affected_orders.dissect(buffer, index, packet, parent)

  -- Party Id Entering Firm: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_entering_firm = eurex_cash_eti_t7_v12_0.party_id_entering_firm.dissect(buffer, index, packet, parent)

  -- Mass Action Reason: 1 Byte Unsigned Fixed Width Integer Enum with 20 values
  index, mass_action_reason = eurex_cash_eti_t7_v12_0.mass_action_reason.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Repeating: Affected Ord Grp Comp
  for affected_ord_grp_comp_index = 1, no_affected_orders do
    index, affected_ord_grp_comp = eurex_cash_eti_t7_v12_0.affected_ord_grp_comp.dissect(buffer, index, packet, parent, affected_ord_grp_comp_index)
  end

  -- Repeating: Not Affected Orders Grp Comp
  for not_affected_orders_grp_comp_index = 1, no_not_affected_orders do
    index, not_affected_orders_grp_comp = eurex_cash_eti_t7_v12_0.not_affected_orders_grp_comp.dissect(buffer, index, packet, parent, not_affected_orders_grp_comp_index)
  end

  return index
end

-- Dissect: Specialist Delete All Order Broadcast
eurex_cash_eti_t7_v12_0.specialist_delete_all_order_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_specialist_delete_all_order_broadcast = eurex_cash_eti_t7_v12_0.specialist_delete_all_order_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.specialist_delete_all_order_broadcast then
    local range = buffer(offset, size_of_specialist_delete_all_order_broadcast)
    local display = eurex_cash_eti_t7_v12_0.specialist_delete_all_order_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.specialist_delete_all_order_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.specialist_delete_all_order_broadcast.fields(buffer, offset, packet, parent, size_of_specialist_delete_all_order_broadcast)

  return offset + size_of_specialist_delete_all_order_broadcast
end

-- Quote Size Type
eurex_cash_eti_t7_v12_0.quote_size_type = {}

-- Size: Quote Size Type
eurex_cash_eti_t7_v12_0.quote_size_type.size = 1

-- Display: Quote Size Type
eurex_cash_eti_t7_v12_0.quote_size_type.display = function(value)
  if value == 1 then
    return "Quote Size Type: Total Size (1)"
  end
  if value == 2 then
    return "Quote Size Type: Open Size (2)"
  end
  if value == 0xFF then
    return "Quote Size Type: No Value"
  end

  return "Quote Size Type: Unknown("..value..")"
end

-- Dissect: Quote Size Type
eurex_cash_eti_t7_v12_0.quote_size_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_size_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quote_size_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_size_type, range, value, display)

  return offset + length, value
end

-- Price Validity Check Type
eurex_cash_eti_t7_v12_0.price_validity_check_type = {}

-- Size: Price Validity Check Type
eurex_cash_eti_t7_v12_0.price_validity_check_type.size = 1

-- Display: Price Validity Check Type
eurex_cash_eti_t7_v12_0.price_validity_check_type.display = function(value)
  if value == 0 then
    return "Price Validity Check Type: None (0)"
  end
  if value == 2 then
    return "Price Validity Check Type: Mandatory (2)"
  end
  if value == 0xFF then
    return "Price Validity Check Type: No Value"
  end

  return "Price Validity Check Type: Unknown("..value..")"
end

-- Dissect: Price Validity Check Type
eurex_cash_eti_t7_v12_0.price_validity_check_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.price_validity_check_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.price_validity_check_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.price_validity_check_type, range, value, display)

  return offset + length, value
end

-- Match Inst Cross Id
eurex_cash_eti_t7_v12_0.match_inst_cross_id = {}

-- Size: Match Inst Cross Id
eurex_cash_eti_t7_v12_0.match_inst_cross_id.size = 4

-- Display: Match Inst Cross Id
eurex_cash_eti_t7_v12_0.match_inst_cross_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Match Inst Cross Id: No Value"
  end

  return "Match Inst Cross Id: "..value
end

-- Dissect: Match Inst Cross Id
eurex_cash_eti_t7_v12_0.match_inst_cross_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.match_inst_cross_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.match_inst_cross_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.match_inst_cross_id, range, value, display)

  return offset + length, value
end

-- Single Quote Request
eurex_cash_eti_t7_v12_0.single_quote_request = {}

-- Read runtime size of: Single Quote Request
eurex_cash_eti_t7_v12_0.single_quote_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Single Quote Request
eurex_cash_eti_t7_v12_0.single_quote_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Single Quote Request
eurex_cash_eti_t7_v12_0.single_quote_request.fields = function(buffer, offset, packet, parent, size_of_single_quote_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Bid Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_size = eurex_cash_eti_t7_v12_0.bid_size.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Offer Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_size = eurex_cash_eti_t7_v12_0.offer_size.dissect(buffer, index, packet, parent)

  -- Settl Curr Fx Rate: 8 Byte Unsigned Fixed Width Integer Nullable
  index, settl_curr_fx_rate = eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Match Inst Cross Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, match_inst_cross_id = eurex_cash_eti_t7_v12_0.match_inst_cross_id.dissect(buffer, index, packet, parent)

  -- Price Validity Check Type: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, price_validity_check_type = eurex_cash_eti_t7_v12_0.price_validity_check_type.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Quote Size Type: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, quote_size_type = eurex_cash_eti_t7_v12_0.quote_size_type.dissect(buffer, index, packet, parent)

  -- Quote Type: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, quote_type = eurex_cash_eti_t7_v12_0.quote_type.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Single Quote Request
eurex_cash_eti_t7_v12_0.single_quote_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_single_quote_request = eurex_cash_eti_t7_v12_0.single_quote_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.single_quote_request then
    local range = buffer(offset, size_of_single_quote_request)
    local display = eurex_cash_eti_t7_v12_0.single_quote_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.single_quote_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.single_quote_request.fields(buffer, offset, packet, parent, size_of_single_quote_request)

  return offset + size_of_single_quote_request
end

-- Risk Control Rtm Service Status
eurex_cash_eti_t7_v12_0.risk_control_rtm_service_status = {}

-- Size: Risk Control Rtm Service Status
eurex_cash_eti_t7_v12_0.risk_control_rtm_service_status.size = 1

-- Display: Risk Control Rtm Service Status
eurex_cash_eti_t7_v12_0.risk_control_rtm_service_status.display = function(value)
  if value == 0 then
    return "Risk Control Rtm Service Status: Unavailable (0)"
  end
  if value == 1 then
    return "Risk Control Rtm Service Status: Available (1)"
  end
  if value == 0xFF then
    return "Risk Control Rtm Service Status: No Value"
  end

  return "Risk Control Rtm Service Status: Unknown("..value..")"
end

-- Dissect: Risk Control Rtm Service Status
eurex_cash_eti_t7_v12_0.risk_control_rtm_service_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.risk_control_rtm_service_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.risk_control_rtm_service_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_control_rtm_service_status, range, value, display)

  return offset + length, value
end

-- News Rtm Service Status
eurex_cash_eti_t7_v12_0.news_rtm_service_status = {}

-- Size: News Rtm Service Status
eurex_cash_eti_t7_v12_0.news_rtm_service_status.size = 1

-- Display: News Rtm Service Status
eurex_cash_eti_t7_v12_0.news_rtm_service_status.display = function(value)
  if value == 0 then
    return "News Rtm Service Status: Unavailable (0)"
  end
  if value == 1 then
    return "News Rtm Service Status: Available (1)"
  end
  if value == 0xFF then
    return "News Rtm Service Status: No Value"
  end

  return "News Rtm Service Status: Unknown("..value..")"
end

-- Dissect: News Rtm Service Status
eurex_cash_eti_t7_v12_0.news_rtm_service_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.news_rtm_service_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.news_rtm_service_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.news_rtm_service_status, range, value, display)

  return offset + length, value
end

-- Selective Request For Quote Rtm Service Status
eurex_cash_eti_t7_v12_0.selective_request_for_quote_rtm_service_status = {}

-- Size: Selective Request For Quote Rtm Service Status
eurex_cash_eti_t7_v12_0.selective_request_for_quote_rtm_service_status.size = 1

-- Display: Selective Request For Quote Rtm Service Status
eurex_cash_eti_t7_v12_0.selective_request_for_quote_rtm_service_status.display = function(value)
  if value == 0 then
    return "Selective Request For Quote Rtm Service Status: Unavailable (0)"
  end
  if value == 1 then
    return "Selective Request For Quote Rtm Service Status: Available (1)"
  end
  if value == 0xFF then
    return "Selective Request For Quote Rtm Service Status: No Value"
  end

  return "Selective Request For Quote Rtm Service Status: Unknown("..value..")"
end

-- Dissect: Selective Request For Quote Rtm Service Status
eurex_cash_eti_t7_v12_0.selective_request_for_quote_rtm_service_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.selective_request_for_quote_rtm_service_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.selective_request_for_quote_rtm_service_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.selective_request_for_quote_rtm_service_status, range, value, display)

  return offset + length, value
end

-- Selective Request For Quote Service Status
eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_status = {}

-- Size: Selective Request For Quote Service Status
eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_status.size = 1

-- Display: Selective Request For Quote Service Status
eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_status.display = function(value)
  if value == 0 then
    return "Selective Request For Quote Service Status: Unavailable (0)"
  end
  if value == 1 then
    return "Selective Request For Quote Service Status: Available (1)"
  end
  if value == 0xFF then
    return "Selective Request For Quote Service Status: No Value"
  end

  return "Selective Request For Quote Service Status: Unknown("..value..")"
end

-- Dissect: Selective Request For Quote Service Status
eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.selective_request_for_quote_service_status, range, value, display)

  return offset + length, value
end

-- Selective Request For Quote Service Trade Date
eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_trade_date = {}

-- Size: Selective Request For Quote Service Trade Date
eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_trade_date.size = 4

-- Display: Selective Request For Quote Service Trade Date
eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_trade_date.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Selective Request For Quote Service Trade Date: No Value"
  end

  return "Selective Request For Quote Service Trade Date: "..value
end

-- Dissect: Selective Request For Quote Service Trade Date
eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_trade_date.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_trade_date.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_trade_date.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.selective_request_for_quote_service_trade_date, range, value, display)

  return offset + length, value
end

-- Nrbc Header Comp
eurex_cash_eti_t7_v12_0.nrbc_header_comp = {}

-- Size: Nrbc Header Comp
eurex_cash_eti_t7_v12_0.nrbc_header_comp.size =
  eurex_cash_eti_t7_v12_0.sending_time.size + 
  eurex_cash_eti_t7_v12_0.appl_sub_id.size + 
  eurex_cash_eti_t7_v12_0.appl_id.size + 
  eurex_cash_eti_t7_v12_0.last_fragment.size + 
  eurex_cash_eti_t7_v12_0.pad_2.size

-- Display: Nrbc Header Comp
eurex_cash_eti_t7_v12_0.nrbc_header_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Nrbc Header Comp
eurex_cash_eti_t7_v12_0.nrbc_header_comp.fields = function(buffer, offset, packet, parent)
  local index = offset

  -- Sending Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, sending_time = eurex_cash_eti_t7_v12_0.sending_time.dissect(buffer, index, packet, parent)

  -- Appl Sub Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, appl_sub_id = eurex_cash_eti_t7_v12_0.appl_sub_id.dissect(buffer, index, packet, parent)

  -- Appl Id: 1 Byte Unsigned Fixed Width Integer Enum with 12 values
  index, appl_id = eurex_cash_eti_t7_v12_0.appl_id.dissect(buffer, index, packet, parent)

  -- Last Fragment: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, last_fragment = eurex_cash_eti_t7_v12_0.last_fragment.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Nrbc Header Comp
eurex_cash_eti_t7_v12_0.nrbc_header_comp.dissect = function(buffer, offset, packet, parent)
  if show.nrbc_header_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.nrbc_header_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.nrbc_header_comp.fields(buffer, offset, packet, parent)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.nrbc_header_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.nrbc_header_comp.fields(buffer, offset, packet, parent)
  end
end

-- Service Availability Market Broadcast
eurex_cash_eti_t7_v12_0.service_availability_market_broadcast = {}

-- Read runtime size of: Service Availability Market Broadcast
eurex_cash_eti_t7_v12_0.service_availability_market_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Service Availability Market Broadcast
eurex_cash_eti_t7_v12_0.service_availability_market_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Service Availability Market Broadcast
eurex_cash_eti_t7_v12_0.service_availability_market_broadcast.fields = function(buffer, offset, packet, parent, size_of_service_availability_market_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nrbc Header Comp: Struct of 5 fields
  index, nrbc_header_comp = eurex_cash_eti_t7_v12_0.nrbc_header_comp.dissect(buffer, index, packet, parent)

  -- Selective Request For Quote Service Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, selective_request_for_quote_service_trade_date = eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_trade_date.dissect(buffer, index, packet, parent)

  -- Selective Request For Quote Service Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, selective_request_for_quote_service_status = eurex_cash_eti_t7_v12_0.selective_request_for_quote_service_status.dissect(buffer, index, packet, parent)

  -- Selective Request For Quote Rtm Service Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, selective_request_for_quote_rtm_service_status = eurex_cash_eti_t7_v12_0.selective_request_for_quote_rtm_service_status.dissect(buffer, index, packet, parent)

  -- News Rtm Service Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, news_rtm_service_status = eurex_cash_eti_t7_v12_0.news_rtm_service_status.dissect(buffer, index, packet, parent)

  -- Risk Control Rtm Service Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, risk_control_rtm_service_status = eurex_cash_eti_t7_v12_0.risk_control_rtm_service_status.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Service Availability Market Broadcast
eurex_cash_eti_t7_v12_0.service_availability_market_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_service_availability_market_broadcast = eurex_cash_eti_t7_v12_0.service_availability_market_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.service_availability_market_broadcast then
    local range = buffer(offset, size_of_service_availability_market_broadcast)
    local display = eurex_cash_eti_t7_v12_0.service_availability_market_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.service_availability_market_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.service_availability_market_broadcast.fields(buffer, offset, packet, parent, size_of_service_availability_market_broadcast)

  return offset + size_of_service_availability_market_broadcast
end

-- T 7 Entry Service Rtm Status
eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_status = {}

-- Size: T 7 Entry Service Rtm Status
eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_status.size = 1

-- Display: T 7 Entry Service Rtm Status
eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_status.display = function(value)
  if value == 0 then
    return "T 7 Entry Service Rtm Status: Unavailable (0)"
  end
  if value == 1 then
    return "T 7 Entry Service Rtm Status: Available (1)"
  end
  if value == 0xFF then
    return "T 7 Entry Service Rtm Status: No Value"
  end

  return "T 7 Entry Service Rtm Status: Unknown("..value..")"
end

-- Dissect: T 7 Entry Service Rtm Status
eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.t_7_entry_service_rtm_status, range, value, display)

  return offset + length, value
end

-- T 7 Entry Service Status
eurex_cash_eti_t7_v12_0.t_7_entry_service_status = {}

-- Size: T 7 Entry Service Status
eurex_cash_eti_t7_v12_0.t_7_entry_service_status.size = 1

-- Display: T 7 Entry Service Status
eurex_cash_eti_t7_v12_0.t_7_entry_service_status.display = function(value)
  if value == 0 then
    return "T 7 Entry Service Status: Unavailable (0)"
  end
  if value == 1 then
    return "T 7 Entry Service Status: Available (1)"
  end
  if value == 0xFF then
    return "T 7 Entry Service Status: No Value"
  end

  return "T 7 Entry Service Status: Unknown("..value..")"
end

-- Dissect: T 7 Entry Service Status
eurex_cash_eti_t7_v12_0.t_7_entry_service_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.t_7_entry_service_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.t_7_entry_service_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.t_7_entry_service_status, range, value, display)

  return offset + length, value
end

-- Appl Seq Status
eurex_cash_eti_t7_v12_0.appl_seq_status = {}

-- Size: Appl Seq Status
eurex_cash_eti_t7_v12_0.appl_seq_status.size = 1

-- Display: Appl Seq Status
eurex_cash_eti_t7_v12_0.appl_seq_status.display = function(value)
  if value == 0 then
    return "Appl Seq Status: Unavailable (0)"
  end
  if value == 1 then
    return "Appl Seq Status: Available (1)"
  end
  if value == 0xFF then
    return "Appl Seq Status: No Value"
  end

  return "Appl Seq Status: Unknown("..value..")"
end

-- Dissect: Appl Seq Status
eurex_cash_eti_t7_v12_0.appl_seq_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_seq_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.appl_seq_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_seq_status, range, value, display)

  return offset + length, value
end

-- Trade Manager Status
eurex_cash_eti_t7_v12_0.trade_manager_status = {}

-- Size: Trade Manager Status
eurex_cash_eti_t7_v12_0.trade_manager_status.size = 1

-- Display: Trade Manager Status
eurex_cash_eti_t7_v12_0.trade_manager_status.display = function(value)
  if value == 0 then
    return "Trade Manager Status: Unavailable (0)"
  end
  if value == 1 then
    return "Trade Manager Status: Available (1)"
  end
  if value == 0xFF then
    return "Trade Manager Status: No Value"
  end

  return "Trade Manager Status: Unknown("..value..")"
end

-- Dissect: Trade Manager Status
eurex_cash_eti_t7_v12_0.trade_manager_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trade_manager_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trade_manager_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trade_manager_status, range, value, display)

  return offset + length, value
end

-- Matching Engine Status
eurex_cash_eti_t7_v12_0.matching_engine_status = {}

-- Size: Matching Engine Status
eurex_cash_eti_t7_v12_0.matching_engine_status.size = 1

-- Display: Matching Engine Status
eurex_cash_eti_t7_v12_0.matching_engine_status.display = function(value)
  if value == 0 then
    return "Matching Engine Status: Unavailable (0)"
  end
  if value == 1 then
    return "Matching Engine Status: Available (1)"
  end
  if value == 0xFF then
    return "Matching Engine Status: No Value"
  end

  return "Matching Engine Status: Unknown("..value..")"
end

-- Dissect: Matching Engine Status
eurex_cash_eti_t7_v12_0.matching_engine_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.matching_engine_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.matching_engine_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.matching_engine_status, range, value, display)

  return offset + length, value
end

-- T 7 Entry Service Rtm Trade Date
eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_trade_date = {}

-- Size: T 7 Entry Service Rtm Trade Date
eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_trade_date.size = 4

-- Display: T 7 Entry Service Rtm Trade Date
eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_trade_date.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "T 7 Entry Service Rtm Trade Date: No Value"
  end

  return "T 7 Entry Service Rtm Trade Date: "..value
end

-- Dissect: T 7 Entry Service Rtm Trade Date
eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_trade_date.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_trade_date.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_trade_date.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.t_7_entry_service_rtm_trade_date, range, value, display)

  return offset + length, value
end

-- T 7 Entry Service Trade Date
eurex_cash_eti_t7_v12_0.t_7_entry_service_trade_date = {}

-- Size: T 7 Entry Service Trade Date
eurex_cash_eti_t7_v12_0.t_7_entry_service_trade_date.size = 4

-- Display: T 7 Entry Service Trade Date
eurex_cash_eti_t7_v12_0.t_7_entry_service_trade_date.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "T 7 Entry Service Trade Date: No Value"
  end

  return "T 7 Entry Service Trade Date: "..value
end

-- Dissect: T 7 Entry Service Trade Date
eurex_cash_eti_t7_v12_0.t_7_entry_service_trade_date.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.t_7_entry_service_trade_date.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.t_7_entry_service_trade_date.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.t_7_entry_service_trade_date, range, value, display)

  return offset + length, value
end

-- Appl Seq Trade Date
eurex_cash_eti_t7_v12_0.appl_seq_trade_date = {}

-- Size: Appl Seq Trade Date
eurex_cash_eti_t7_v12_0.appl_seq_trade_date.size = 4

-- Display: Appl Seq Trade Date
eurex_cash_eti_t7_v12_0.appl_seq_trade_date.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Appl Seq Trade Date: No Value"
  end

  return "Appl Seq Trade Date: "..value
end

-- Dissect: Appl Seq Trade Date
eurex_cash_eti_t7_v12_0.appl_seq_trade_date.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_seq_trade_date.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.appl_seq_trade_date.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_seq_trade_date, range, value, display)

  return offset + length, value
end

-- Trade Manager Trade Date
eurex_cash_eti_t7_v12_0.trade_manager_trade_date = {}

-- Size: Trade Manager Trade Date
eurex_cash_eti_t7_v12_0.trade_manager_trade_date.size = 4

-- Display: Trade Manager Trade Date
eurex_cash_eti_t7_v12_0.trade_manager_trade_date.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Trade Manager Trade Date: No Value"
  end

  return "Trade Manager Trade Date: "..value
end

-- Dissect: Trade Manager Trade Date
eurex_cash_eti_t7_v12_0.trade_manager_trade_date.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trade_manager_trade_date.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trade_manager_trade_date.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trade_manager_trade_date, range, value, display)

  return offset + length, value
end

-- Matching Engine Trade Date
eurex_cash_eti_t7_v12_0.matching_engine_trade_date = {}

-- Size: Matching Engine Trade Date
eurex_cash_eti_t7_v12_0.matching_engine_trade_date.size = 4

-- Display: Matching Engine Trade Date
eurex_cash_eti_t7_v12_0.matching_engine_trade_date.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Matching Engine Trade Date: No Value"
  end

  return "Matching Engine Trade Date: "..value
end

-- Dissect: Matching Engine Trade Date
eurex_cash_eti_t7_v12_0.matching_engine_trade_date.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.matching_engine_trade_date.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.matching_engine_trade_date.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.matching_engine_trade_date, range, value, display)

  return offset + length, value
end

-- Service Availability Broadcast
eurex_cash_eti_t7_v12_0.service_availability_broadcast = {}

-- Read runtime size of: Service Availability Broadcast
eurex_cash_eti_t7_v12_0.service_availability_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Service Availability Broadcast
eurex_cash_eti_t7_v12_0.service_availability_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Service Availability Broadcast
eurex_cash_eti_t7_v12_0.service_availability_broadcast.fields = function(buffer, offset, packet, parent, size_of_service_availability_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nrbc Header Comp: Struct of 5 fields
  index, nrbc_header_comp = eurex_cash_eti_t7_v12_0.nrbc_header_comp.dissect(buffer, index, packet, parent)

  -- Matching Engine Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, matching_engine_trade_date = eurex_cash_eti_t7_v12_0.matching_engine_trade_date.dissect(buffer, index, packet, parent)

  -- Trade Manager Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_manager_trade_date = eurex_cash_eti_t7_v12_0.trade_manager_trade_date.dissect(buffer, index, packet, parent)

  -- Appl Seq Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, appl_seq_trade_date = eurex_cash_eti_t7_v12_0.appl_seq_trade_date.dissect(buffer, index, packet, parent)

  -- T 7 Entry Service Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, t_7_entry_service_trade_date = eurex_cash_eti_t7_v12_0.t_7_entry_service_trade_date.dissect(buffer, index, packet, parent)

  -- T 7 Entry Service Rtm Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, t_7_entry_service_rtm_trade_date = eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_trade_date.dissect(buffer, index, packet, parent)

  -- Partition Id: 2 Byte Unsigned Fixed Width Integer Nullable
  index, partition_id = eurex_cash_eti_t7_v12_0.partition_id.dissect(buffer, index, packet, parent)

  -- Matching Engine Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, matching_engine_status = eurex_cash_eti_t7_v12_0.matching_engine_status.dissect(buffer, index, packet, parent)

  -- Trade Manager Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, trade_manager_status = eurex_cash_eti_t7_v12_0.trade_manager_status.dissect(buffer, index, packet, parent)

  -- Appl Seq Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, appl_seq_status = eurex_cash_eti_t7_v12_0.appl_seq_status.dissect(buffer, index, packet, parent)

  -- T 7 Entry Service Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, t_7_entry_service_status = eurex_cash_eti_t7_v12_0.t_7_entry_service_status.dissect(buffer, index, packet, parent)

  -- T 7 Entry Service Rtm Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, t_7_entry_service_rtm_status = eurex_cash_eti_t7_v12_0.t_7_entry_service_rtm_status.dissect(buffer, index, packet, parent)

  -- Pad 5: 5 Byte
  index, pad_5 = eurex_cash_eti_t7_v12_0.pad_5.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Service Availability Broadcast
eurex_cash_eti_t7_v12_0.service_availability_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_service_availability_broadcast = eurex_cash_eti_t7_v12_0.service_availability_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.service_availability_broadcast then
    local range = buffer(offset, size_of_service_availability_broadcast)
    local display = eurex_cash_eti_t7_v12_0.service_availability_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.service_availability_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.service_availability_broadcast.fields(buffer, offset, packet, parent, size_of_service_availability_broadcast)

  return offset + size_of_service_availability_broadcast
end

-- Appl Total Message Count
eurex_cash_eti_t7_v12_0.appl_total_message_count = {}

-- Size: Appl Total Message Count
eurex_cash_eti_t7_v12_0.appl_total_message_count.size = 2

-- Display: Appl Total Message Count
eurex_cash_eti_t7_v12_0.appl_total_message_count.display = function(value)
  -- Check if field has value
  if value == 0xFFFF then
    return "Appl Total Message Count: No Value"
  end

  return "Appl Total Message Count: "..value
end

-- Dissect: Appl Total Message Count
eurex_cash_eti_t7_v12_0.appl_total_message_count.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_total_message_count.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.appl_total_message_count.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_total_message_count, range, value, display)

  return offset + length, value
end

-- Ref Appl Last Seq Num
eurex_cash_eti_t7_v12_0.ref_appl_last_seq_num = {}

-- Size: Ref Appl Last Seq Num
eurex_cash_eti_t7_v12_0.ref_appl_last_seq_num.size = 8

-- Display: Ref Appl Last Seq Num
eurex_cash_eti_t7_v12_0.ref_appl_last_seq_num.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Ref Appl Last Seq Num: No Value"
  end

  return "Ref Appl Last Seq Num: "..value
end

-- Dissect: Ref Appl Last Seq Num
eurex_cash_eti_t7_v12_0.ref_appl_last_seq_num.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.ref_appl_last_seq_num.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.ref_appl_last_seq_num.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.ref_appl_last_seq_num, range, value, display)

  return offset + length, value
end

-- Appl End Seq Num
eurex_cash_eti_t7_v12_0.appl_end_seq_num = {}

-- Size: Appl End Seq Num
eurex_cash_eti_t7_v12_0.appl_end_seq_num.size = 8

-- Display: Appl End Seq Num
eurex_cash_eti_t7_v12_0.appl_end_seq_num.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Appl End Seq Num: No Value"
  end

  return "Appl End Seq Num: "..value
end

-- Dissect: Appl End Seq Num
eurex_cash_eti_t7_v12_0.appl_end_seq_num.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_end_seq_num.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.appl_end_seq_num.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_end_seq_num, range, value, display)

  return offset + length, value
end

-- Retransmit Response
eurex_cash_eti_t7_v12_0.retransmit_response = {}

-- Read runtime size of: Retransmit Response
eurex_cash_eti_t7_v12_0.retransmit_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Retransmit Response
eurex_cash_eti_t7_v12_0.retransmit_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Retransmit Response
eurex_cash_eti_t7_v12_0.retransmit_response.fields = function(buffer, offset, packet, parent, size_of_retransmit_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  -- Appl End Seq Num: 8 Byte Unsigned Fixed Width Integer Nullable
  index, appl_end_seq_num = eurex_cash_eti_t7_v12_0.appl_end_seq_num.dissect(buffer, index, packet, parent)

  -- Ref Appl Last Seq Num: 8 Byte Unsigned Fixed Width Integer Nullable
  index, ref_appl_last_seq_num = eurex_cash_eti_t7_v12_0.ref_appl_last_seq_num.dissect(buffer, index, packet, parent)

  -- Appl Total Message Count: 2 Byte Unsigned Fixed Width Integer Nullable
  index, appl_total_message_count = eurex_cash_eti_t7_v12_0.appl_total_message_count.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Retransmit Response
eurex_cash_eti_t7_v12_0.retransmit_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_retransmit_response = eurex_cash_eti_t7_v12_0.retransmit_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.retransmit_response then
    local range = buffer(offset, size_of_retransmit_response)
    local display = eurex_cash_eti_t7_v12_0.retransmit_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.retransmit_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.retransmit_response.fields(buffer, offset, packet, parent, size_of_retransmit_response)

  return offset + size_of_retransmit_response
end

-- Appl Beg Seq Num
eurex_cash_eti_t7_v12_0.appl_beg_seq_num = {}

-- Size: Appl Beg Seq Num
eurex_cash_eti_t7_v12_0.appl_beg_seq_num.size = 8

-- Display: Appl Beg Seq Num
eurex_cash_eti_t7_v12_0.appl_beg_seq_num.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Appl Beg Seq Num: No Value"
  end

  return "Appl Beg Seq Num: "..value
end

-- Dissect: Appl Beg Seq Num
eurex_cash_eti_t7_v12_0.appl_beg_seq_num.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_beg_seq_num.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.appl_beg_seq_num.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_beg_seq_num, range, value, display)

  return offset + length, value
end

-- Retransmit Request
eurex_cash_eti_t7_v12_0.retransmit_request = {}

-- Read runtime size of: Retransmit Request
eurex_cash_eti_t7_v12_0.retransmit_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Retransmit Request
eurex_cash_eti_t7_v12_0.retransmit_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Retransmit Request
eurex_cash_eti_t7_v12_0.retransmit_request.fields = function(buffer, offset, packet, parent, size_of_retransmit_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Appl Beg Seq Num: 8 Byte Unsigned Fixed Width Integer Nullable
  index, appl_beg_seq_num = eurex_cash_eti_t7_v12_0.appl_beg_seq_num.dissect(buffer, index, packet, parent)

  -- Appl End Seq Num: 8 Byte Unsigned Fixed Width Integer Nullable
  index, appl_end_seq_num = eurex_cash_eti_t7_v12_0.appl_end_seq_num.dissect(buffer, index, packet, parent)

  -- Partition Id: 2 Byte Unsigned Fixed Width Integer Nullable
  index, partition_id = eurex_cash_eti_t7_v12_0.partition_id.dissect(buffer, index, packet, parent)

  -- Ref Appl Id: 1 Byte Unsigned Fixed Width Integer Enum with 12 values
  index, ref_appl_id = eurex_cash_eti_t7_v12_0.ref_appl_id.dissect(buffer, index, packet, parent)

  -- Pad 5: 5 Byte
  index, pad_5 = eurex_cash_eti_t7_v12_0.pad_5.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Retransmit Request
eurex_cash_eti_t7_v12_0.retransmit_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_retransmit_request = eurex_cash_eti_t7_v12_0.retransmit_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.retransmit_request then
    local range = buffer(offset, size_of_retransmit_request)
    local display = eurex_cash_eti_t7_v12_0.retransmit_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.retransmit_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.retransmit_request.fields(buffer, offset, packet, parent, size_of_retransmit_request)

  return offset + size_of_retransmit_request
end

-- Appl End Msg Id
eurex_cash_eti_t7_v12_0.appl_end_msg_id = {}

-- Size: Appl End Msg Id
eurex_cash_eti_t7_v12_0.appl_end_msg_id.size = 16

-- Display: Appl End Msg Id
eurex_cash_eti_t7_v12_0.appl_end_msg_id.display = function(value)
  return "Appl End Msg Id: "..value
end

-- Dissect: Appl End Msg Id
eurex_cash_eti_t7_v12_0.appl_end_msg_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_end_msg_id.size
  local range = buffer(offset, length)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.appl_end_msg_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_end_msg_id, range, value, display)

  return offset + length, value
end

-- Retransmit Me Message Response
eurex_cash_eti_t7_v12_0.retransmit_me_message_response = {}

-- Read runtime size of: Retransmit Me Message Response
eurex_cash_eti_t7_v12_0.retransmit_me_message_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Retransmit Me Message Response
eurex_cash_eti_t7_v12_0.retransmit_me_message_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Retransmit Me Message Response
eurex_cash_eti_t7_v12_0.retransmit_me_message_response.fields = function(buffer, offset, packet, parent, size_of_retransmit_me_message_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  -- Appl Total Message Count: 2 Byte Unsigned Fixed Width Integer Nullable
  index, appl_total_message_count = eurex_cash_eti_t7_v12_0.appl_total_message_count.dissect(buffer, index, packet, parent)

  -- Appl End Msg Id: 16 Byte
  index, appl_end_msg_id = eurex_cash_eti_t7_v12_0.appl_end_msg_id.dissect(buffer, index, packet, parent)

  -- Ref Appl Last Msg Id: 16 Byte
  index, ref_appl_last_msg_id = eurex_cash_eti_t7_v12_0.ref_appl_last_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Retransmit Me Message Response
eurex_cash_eti_t7_v12_0.retransmit_me_message_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_retransmit_me_message_response = eurex_cash_eti_t7_v12_0.retransmit_me_message_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.retransmit_me_message_response then
    local range = buffer(offset, size_of_retransmit_me_message_response)
    local display = eurex_cash_eti_t7_v12_0.retransmit_me_message_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.retransmit_me_message_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.retransmit_me_message_response.fields(buffer, offset, packet, parent, size_of_retransmit_me_message_response)

  return offset + size_of_retransmit_me_message_response
end

-- Appl Beg Msg Id
eurex_cash_eti_t7_v12_0.appl_beg_msg_id = {}

-- Size: Appl Beg Msg Id
eurex_cash_eti_t7_v12_0.appl_beg_msg_id.size = 16

-- Display: Appl Beg Msg Id
eurex_cash_eti_t7_v12_0.appl_beg_msg_id.display = function(value)
  return "Appl Beg Msg Id: "..value
end

-- Dissect: Appl Beg Msg Id
eurex_cash_eti_t7_v12_0.appl_beg_msg_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_beg_msg_id.size
  local range = buffer(offset, length)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.appl_beg_msg_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_beg_msg_id, range, value, display)

  return offset + length, value
end

-- Retransmit Me Message Request
eurex_cash_eti_t7_v12_0.retransmit_me_message_request = {}

-- Read runtime size of: Retransmit Me Message Request
eurex_cash_eti_t7_v12_0.retransmit_me_message_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Retransmit Me Message Request
eurex_cash_eti_t7_v12_0.retransmit_me_message_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Retransmit Me Message Request
eurex_cash_eti_t7_v12_0.retransmit_me_message_request.fields = function(buffer, offset, packet, parent, size_of_retransmit_me_message_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Subscription Scope: 4 Byte Unsigned Fixed Width Integer Nullable
  index, subscription_scope = eurex_cash_eti_t7_v12_0.subscription_scope.dissect(buffer, index, packet, parent)

  -- Partition Id: 2 Byte Unsigned Fixed Width Integer Nullable
  index, partition_id = eurex_cash_eti_t7_v12_0.partition_id.dissect(buffer, index, packet, parent)

  -- Ref Appl Id: 1 Byte Unsigned Fixed Width Integer Enum with 12 values
  index, ref_appl_id = eurex_cash_eti_t7_v12_0.ref_appl_id.dissect(buffer, index, packet, parent)

  -- Appl Beg Msg Id: 16 Byte
  index, appl_beg_msg_id = eurex_cash_eti_t7_v12_0.appl_beg_msg_id.dissect(buffer, index, packet, parent)

  -- Appl End Msg Id: 16 Byte
  index, appl_end_msg_id = eurex_cash_eti_t7_v12_0.appl_end_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 1: 1 Byte
  index, pad_1 = eurex_cash_eti_t7_v12_0.pad_1.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Retransmit Me Message Request
eurex_cash_eti_t7_v12_0.retransmit_me_message_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_retransmit_me_message_request = eurex_cash_eti_t7_v12_0.retransmit_me_message_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.retransmit_me_message_request then
    local range = buffer(offset, size_of_retransmit_me_message_request)
    local display = eurex_cash_eti_t7_v12_0.retransmit_me_message_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.retransmit_me_message_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.retransmit_me_message_request.fields(buffer, offset, packet, parent, size_of_retransmit_me_message_request)

  return offset + size_of_retransmit_me_message_request
end

-- Session Status
eurex_cash_eti_t7_v12_0.session_status = {}

-- Size: Session Status
eurex_cash_eti_t7_v12_0.session_status.size = 1

-- Display: Session Status
eurex_cash_eti_t7_v12_0.session_status.display = function(value)
  if value == 0 then
    return "Session Status: Active (0)"
  end
  if value == 4 then
    return "Session Status: Logout (4)"
  end
  if value == 0xFF then
    return "Session Status: No Value"
  end

  return "Session Status: Unknown("..value..")"
end

-- Dissect: Session Status
eurex_cash_eti_t7_v12_0.session_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.session_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.session_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.session_status, range, value, display)

  return offset + length, value
end

-- Session Reject Reason
eurex_cash_eti_t7_v12_0.session_reject_reason = {}

-- Size: Session Reject Reason
eurex_cash_eti_t7_v12_0.session_reject_reason.size = 4

-- Display: Session Reject Reason
eurex_cash_eti_t7_v12_0.session_reject_reason.display = function(value)
  if value == 1 then
    return "Session Reject Reason: Required Tag Missing (1)"
  end
  if value == 5 then
    return "Session Reject Reason: Valueisincorrect (5)"
  end
  if value == 7 then
    return "Session Reject Reason: Decryptionproblem (7)"
  end
  if value == 11 then
    return "Session Reject Reason: Invalid Msg Id (11)"
  end
  if value == 16 then
    return "Session Reject Reason: Incorrect Num In Groupcount (16)"
  end
  if value == 99 then
    return "Session Reject Reason: Other (99)"
  end
  if value == 100 then
    return "Session Reject Reason: Throttle Limit Exceeded (100)"
  end
  if value == 101 then
    return "Session Reject Reason: Exposure Limit Exceeded (101)"
  end
  if value == 102 then
    return "Session Reject Reason: Service Temporarily Not Available (102)"
  end
  if value == 103 then
    return "Session Reject Reason: Service Not Available (103)"
  end
  if value == 105 then
    return "Session Reject Reason: Outboundconversionerror (105)"
  end
  if value == 152 then
    return "Session Reject Reason: Heartbeat Violation (152)"
  end
  if value == 200 then
    return "Session Reject Reason: Internaltechnicalerror (200)"
  end
  if value == 210 then
    return "Session Reject Reason: Validation Error (210)"
  end
  if value == 211 then
    return "Session Reject Reason: User Already Logged In (211)"
  end
  if value == 216 then
    return "Session Reject Reason: Gateway Is Standby (216)"
  end
  if value == 217 then
    return "Session Reject Reason: Session Login Limit Reached (217)"
  end
  if value == 223 then
    return "Session Reject Reason: User Entitlement Data Timeout (223)"
  end
  if value == 224 then
    return "Session Reject Reason: Ps Gateway Session Limit Reached (224)"
  end
  if value == 225 then
    return "Session Reject Reason: User Login Limit Reached (225)"
  end
  if value == 226 then
    return "Session Reject Reason: Outstanding Logins Bu Limit Reached (226)"
  end
  if value == 227 then
    return "Session Reject Reason: Outstanding Logins Session Limit Reached (227)"
  end
  if value == 228 then
    return "Session Reject Reason: Password Timestamp Not In Grace Period (228)"
  end
  if value == 10000 then
    return "Session Reject Reason: Order Not Found (10000)"
  end
  if value == 10001 then
    return "Session Reject Reason: Price Not Reasonable (10001)"
  end
  if value == 10002 then
    return "Session Reject Reason: Client Order Id Not Unique (10002)"
  end
  if value == 10003 then
    return "Session Reject Reason: Quote Activation In Progress (10003)"
  end
  if value == 10006 then
    return "Session Reject Reason: Stop Bid Price Not Reasonable (10006)"
  end
  if value == 10007 then
    return "Session Reject Reason: Stop Ask Price Not Reasonable (10007)"
  end
  if value == 10008 then
    return "Session Reject Reason: Order Not Executable Within Validity (10008)"
  end
  if value == 10009 then
    return "Session Reject Reason: Invalid Trading Restriction For Instrument State (10009)"
  end
  if value == 10011 then
    return "Session Reject Reason: Transaction Not Allowed In Current State (10011)"
  end
  if value == 10012 then
    return "Session Reject Reason: Ordernotacceptedin Volatility Freeze (10012)"
  end
  if value == 10016 then
    return "Session Reject Reason: Pretrade Risk Limit Exceeded (10016)"
  end
  if value == 0xFFFFFFFF then
    return "Session Reject Reason: No Value"
  end

  return "Session Reject Reason: Unknown("..value..")"
end

-- Dissect: Session Reject Reason
eurex_cash_eti_t7_v12_0.session_reject_reason.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.session_reject_reason.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.session_reject_reason.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.session_reject_reason, range, value, display)

  return offset + length, value
end

-- Reject
eurex_cash_eti_t7_v12_0.reject = {}

-- Read runtime size of: Reject
eurex_cash_eti_t7_v12_0.reject.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Reject
eurex_cash_eti_t7_v12_0.reject.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Reject
eurex_cash_eti_t7_v12_0.reject.fields = function(buffer, offset, packet, parent, size_of_reject)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Session Reject Reason: 4 Byte Unsigned Fixed Width Integer Enum with 35 values
  index, session_reject_reason = eurex_cash_eti_t7_v12_0.session_reject_reason.dissect(buffer, index, packet, parent)

  -- Var Text Len: 2 Byte Unsigned Fixed Width Integer Nullable
  index, var_text_len = eurex_cash_eti_t7_v12_0.var_text_len.dissect(buffer, index, packet, parent)

  -- Session Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, session_status = eurex_cash_eti_t7_v12_0.session_status.dissect(buffer, index, packet, parent)

  -- Runtime Size Of: Var Text
  index, var_text = eurex_cash_eti_t7_v12_0.var_text.dissect(buffer, index, packet, parent, var_text_len)

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  -- Runtime optional field: Alignment Padding
  local alignment_padding = nil

  local alignment_padding_exists = body_len ~= index

  if alignment_padding_exists then

    -- Runtime Size Of: Alignment Padding
    local size_of_alignment_padding = body_len - index

    -- Alignment Padding: 0 Byte
    index, alignment_padding = eurex_cash_eti_t7_v12_0.alignment_padding.dissect(buffer, index, packet, parent, size_of_alignment_padding)
  end

  return index
end

-- Dissect: Reject
eurex_cash_eti_t7_v12_0.reject.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_reject = eurex_cash_eti_t7_v12_0.reject.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.reject then
    local range = buffer(offset, size_of_reject)
    local display = eurex_cash_eti_t7_v12_0.reject.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.reject, range, display)
  end

  eurex_cash_eti_t7_v12_0.reject.fields(buffer, offset, packet, parent, size_of_reject)

  return offset + size_of_reject
end

-- Rfq Specialist Broadcast
eurex_cash_eti_t7_v12_0.rfq_specialist_broadcast = {}

-- Read runtime size of: Rfq Specialist Broadcast
eurex_cash_eti_t7_v12_0.rfq_specialist_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Rfq Specialist Broadcast
eurex_cash_eti_t7_v12_0.rfq_specialist_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Rfq Specialist Broadcast
eurex_cash_eti_t7_v12_0.rfq_specialist_broadcast.fields = function(buffer, offset, packet, parent, size_of_rfq_specialist_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Rfq Specialist Broadcast
eurex_cash_eti_t7_v12_0.rfq_specialist_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_rfq_specialist_broadcast = eurex_cash_eti_t7_v12_0.rfq_specialist_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.rfq_specialist_broadcast then
    local range = buffer(offset, size_of_rfq_specialist_broadcast)
    local display = eurex_cash_eti_t7_v12_0.rfq_specialist_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.rfq_specialist_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.rfq_specialist_broadcast.fields(buffer, offset, packet, parent, size_of_rfq_specialist_broadcast)

  return offset + size_of_rfq_specialist_broadcast
end

-- Rfq Response
eurex_cash_eti_t7_v12_0.rfq_response = {}

-- Read runtime size of: Rfq Response
eurex_cash_eti_t7_v12_0.rfq_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Rfq Response
eurex_cash_eti_t7_v12_0.rfq_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Rfq Response
eurex_cash_eti_t7_v12_0.rfq_response.fields = function(buffer, offset, packet, parent, size_of_rfq_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Rfq Response
eurex_cash_eti_t7_v12_0.rfq_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_rfq_response = eurex_cash_eti_t7_v12_0.rfq_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.rfq_response then
    local range = buffer(offset, size_of_rfq_response)
    local display = eurex_cash_eti_t7_v12_0.rfq_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.rfq_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.rfq_response.fields(buffer, offset, packet, parent, size_of_rfq_response)

  return offset + size_of_rfq_response
end

-- Rfq Requester Disclosure Instruction
eurex_cash_eti_t7_v12_0.rfq_requester_disclosure_instruction = {}

-- Size: Rfq Requester Disclosure Instruction
eurex_cash_eti_t7_v12_0.rfq_requester_disclosure_instruction.size = 1

-- Display: Rfq Requester Disclosure Instruction
eurex_cash_eti_t7_v12_0.rfq_requester_disclosure_instruction.display = function(value)
  if value == 0 then
    return "Rfq Requester Disclosure Instruction: No (0)"
  end
  if value == 1 then
    return "Rfq Requester Disclosure Instruction: Yes (1)"
  end
  if value == 0xFF then
    return "Rfq Requester Disclosure Instruction: No Value"
  end

  return "Rfq Requester Disclosure Instruction: Unknown("..value..")"
end

-- Dissect: Rfq Requester Disclosure Instruction
eurex_cash_eti_t7_v12_0.rfq_requester_disclosure_instruction.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.rfq_requester_disclosure_instruction.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.rfq_requester_disclosure_instruction.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.rfq_requester_disclosure_instruction, range, value, display)

  return offset + length, value
end

-- Rfq Publish Indicator
eurex_cash_eti_t7_v12_0.rfq_publish_indicator = {}

-- Size: Rfq Publish Indicator
eurex_cash_eti_t7_v12_0.rfq_publish_indicator.size = 1

-- Display: Rfq Publish Indicator
eurex_cash_eti_t7_v12_0.rfq_publish_indicator.display = function(value)
  if value == 1 then
    return "Rfq Publish Indicator: Market Data (1)"
  end
  if value == 2 then
    return "Rfq Publish Indicator: Designated Sponsor (2)"
  end
  if value == 3 then
    return "Rfq Publish Indicator: Market Dataand Designated Sponsor (3)"
  end
  if value == 4 then
    return "Rfq Publish Indicator: Market Makerand Designated Sponsor (4)"
  end
  if value == 5 then
    return "Rfq Publish Indicator: Market Dataand Market Makerand Designated Sponsor (5)"
  end
  if value == 6 then
    return "Rfq Publish Indicator: Specialist (6)"
  end
  if value == 0xFF then
    return "Rfq Publish Indicator: No Value"
  end

  return "Rfq Publish Indicator: Unknown("..value..")"
end

-- Dissect: Rfq Publish Indicator
eurex_cash_eti_t7_v12_0.rfq_publish_indicator.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.rfq_publish_indicator.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.rfq_publish_indicator.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.rfq_publish_indicator, range, value, display)

  return offset + length, value
end

-- Rfq Request
eurex_cash_eti_t7_v12_0.rfq_request = {}

-- Read runtime size of: Rfq Request
eurex_cash_eti_t7_v12_0.rfq_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Rfq Request
eurex_cash_eti_t7_v12_0.rfq_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Rfq Request
eurex_cash_eti_t7_v12_0.rfq_request.fields = function(buffer, offset, packet, parent, size_of_rfq_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Rfq Publish Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, rfq_publish_indicator = eurex_cash_eti_t7_v12_0.rfq_publish_indicator.dissect(buffer, index, packet, parent)

  -- Rfq Requester Disclosure Instruction: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, rfq_requester_disclosure_instruction = eurex_cash_eti_t7_v12_0.rfq_requester_disclosure_instruction.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Pad 1: 1 Byte
  index, pad_1 = eurex_cash_eti_t7_v12_0.pad_1.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Rfq Request
eurex_cash_eti_t7_v12_0.rfq_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_rfq_request = eurex_cash_eti_t7_v12_0.rfq_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.rfq_request then
    local range = buffer(offset, size_of_rfq_request)
    local display = eurex_cash_eti_t7_v12_0.rfq_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.rfq_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.rfq_request.fields(buffer, offset, packet, parent, size_of_rfq_request)

  return offset + size_of_rfq_request
end

-- Rfq Reject Notification
eurex_cash_eti_t7_v12_0.rfq_reject_notification = {}

-- Read runtime size of: Rfq Reject Notification
eurex_cash_eti_t7_v12_0.rfq_reject_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Rfq Reject Notification
eurex_cash_eti_t7_v12_0.rfq_reject_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Rfq Reject Notification
eurex_cash_eti_t7_v12_0.rfq_reject_notification.fields = function(buffer, offset, packet, parent, size_of_rfq_reject_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Quote Request Reject Reason: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, quote_request_reject_reason = eurex_cash_eti_t7_v12_0.quote_request_reject_reason.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Rfq Reject Notification
eurex_cash_eti_t7_v12_0.rfq_reject_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_rfq_reject_notification = eurex_cash_eti_t7_v12_0.rfq_reject_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.rfq_reject_notification then
    local range = buffer(offset, size_of_rfq_reject_notification)
    local display = eurex_cash_eti_t7_v12_0.rfq_reject_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.rfq_reject_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.rfq_reject_notification.fields(buffer, offset, packet, parent, size_of_rfq_reject_notification)

  return offset + size_of_rfq_reject_notification
end

-- Rfq Broadcast
eurex_cash_eti_t7_v12_0.rfq_broadcast = {}

-- Read runtime size of: Rfq Broadcast
eurex_cash_eti_t7_v12_0.rfq_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Rfq Broadcast
eurex_cash_eti_t7_v12_0.rfq_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Rfq Broadcast
eurex_cash_eti_t7_v12_0.rfq_broadcast.fields = function(buffer, offset, packet, parent, size_of_rfq_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Rfq Broadcast
eurex_cash_eti_t7_v12_0.rfq_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_rfq_broadcast = eurex_cash_eti_t7_v12_0.rfq_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.rfq_broadcast then
    local range = buffer(offset, size_of_rfq_broadcast)
    local display = eurex_cash_eti_t7_v12_0.rfq_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.rfq_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.rfq_broadcast.fields(buffer, offset, packet, parent, size_of_rfq_broadcast)

  return offset + size_of_rfq_broadcast
end

-- Bbo Setting
eurex_cash_eti_t7_v12_0.bbo_setting = {}

-- Size: Bbo Setting
eurex_cash_eti_t7_v12_0.bbo_setting.size = 1

-- Display: Bbo Setting
eurex_cash_eti_t7_v12_0.bbo_setting.display = function(value)
  if value == 1 then
    return "Bbo Setting: Yes (1)"
  end
  if value == 0xFF then
    return "Bbo Setting: No Value"
  end

  return "Bbo Setting: Unknown("..value..")"
end

-- Dissect: Bbo Setting
eurex_cash_eti_t7_v12_0.bbo_setting.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.bbo_setting.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.bbo_setting.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.bbo_setting, range, value, display)

  return offset + length, value
end

-- Quote Event Liquidity Ind
eurex_cash_eti_t7_v12_0.quote_event_liquidity_ind = {}

-- Size: Quote Event Liquidity Ind
eurex_cash_eti_t7_v12_0.quote_event_liquidity_ind.size = 1

-- Display: Quote Event Liquidity Ind
eurex_cash_eti_t7_v12_0.quote_event_liquidity_ind.display = function(value)
  if value == 1 then
    return "Quote Event Liquidity Ind: Added Liquidity (1)"
  end
  if value == 2 then
    return "Quote Event Liquidity Ind: Removed Liquidity (2)"
  end
  if value == 4 then
    return "Quote Event Liquidity Ind: Auction (4)"
  end
  if value == 0xFF then
    return "Quote Event Liquidity Ind: No Value"
  end

  return "Quote Event Liquidity Ind: Unknown("..value..")"
end

-- Dissect: Quote Event Liquidity Ind
eurex_cash_eti_t7_v12_0.quote_event_liquidity_ind.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_event_liquidity_ind.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quote_event_liquidity_ind.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_event_liquidity_ind, range, value, display)

  return offset + length, value
end

-- Quote Event Side
eurex_cash_eti_t7_v12_0.quote_event_side = {}

-- Size: Quote Event Side
eurex_cash_eti_t7_v12_0.quote_event_side.size = 1

-- Display: Quote Event Side
eurex_cash_eti_t7_v12_0.quote_event_side.display = function(value)
  if value == 1 then
    return "Quote Event Side: Buy (1)"
  end
  if value == 2 then
    return "Quote Event Side: Sell (2)"
  end
  if value == 0xFF then
    return "Quote Event Side: No Value"
  end

  return "Quote Event Side: Unknown("..value..")"
end

-- Dissect: Quote Event Side
eurex_cash_eti_t7_v12_0.quote_event_side.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_event_side.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quote_event_side.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_event_side, range, value, display)

  return offset + length, value
end

-- Quote Event Type
eurex_cash_eti_t7_v12_0.quote_event_type = {}

-- Size: Quote Event Type
eurex_cash_eti_t7_v12_0.quote_event_type.size = 1

-- Display: Quote Event Type
eurex_cash_eti_t7_v12_0.quote_event_type.display = function(value)
  if value == 2 then
    return "Quote Event Type: Modifiedquoteside (2)"
  end
  if value == 3 then
    return "Quote Event Type: Removedquoteside (3)"
  end
  if value == 4 then
    return "Quote Event Type: Partiallyfilled (4)"
  end
  if value == 5 then
    return "Quote Event Type: Filled (5)"
  end
  if value == 6 then
    return "Quote Event Type: Removed Quantity (6)"
  end
  if value == 0xFF then
    return "Quote Event Type: No Value"
  end

  return "Quote Event Type: Unknown("..value..")"
end

-- Dissect: Quote Event Type
eurex_cash_eti_t7_v12_0.quote_event_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_event_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quote_event_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_event_type, range, value, display)

  return offset + length, value
end

-- Quote Event Exec Id
eurex_cash_eti_t7_v12_0.quote_event_exec_id = {}

-- Size: Quote Event Exec Id
eurex_cash_eti_t7_v12_0.quote_event_exec_id.size = 4

-- Display: Quote Event Exec Id
eurex_cash_eti_t7_v12_0.quote_event_exec_id.display = function(value)
  -- Check if field has value
  if value == 0x80000000 then
    return "Quote Event Exec Id: No Value"
  end

  return "Quote Event Exec Id: "..value
end

-- Dissect: Quote Event Exec Id
eurex_cash_eti_t7_v12_0.quote_event_exec_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_event_exec_id.size
  local range = buffer(offset, length)
  local value = range:le_int()
  local display = eurex_cash_eti_t7_v12_0.quote_event_exec_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_event_exec_id, range, value, display)

  return offset + length, value
end

-- Quote Event Match Id
eurex_cash_eti_t7_v12_0.quote_event_match_id = {}

-- Size: Quote Event Match Id
eurex_cash_eti_t7_v12_0.quote_event_match_id.size = 4

-- Display: Quote Event Match Id
eurex_cash_eti_t7_v12_0.quote_event_match_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Quote Event Match Id: No Value"
  end

  return "Quote Event Match Id: "..value
end

-- Dissect: Quote Event Match Id
eurex_cash_eti_t7_v12_0.quote_event_match_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_event_match_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quote_event_match_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_event_match_id, range, value, display)

  return offset + length, value
end

-- Quote Msg Id
eurex_cash_eti_t7_v12_0.quote_msg_id = {}

-- Size: Quote Msg Id
eurex_cash_eti_t7_v12_0.quote_msg_id.size = 8

-- Display: Quote Msg Id
eurex_cash_eti_t7_v12_0.quote_msg_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Quote Msg Id: No Value"
  end

  return "Quote Msg Id: "..value
end

-- Dissect: Quote Msg Id
eurex_cash_eti_t7_v12_0.quote_msg_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_msg_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.quote_msg_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_msg_id, range, value, display)

  return offset + length, value
end

-- Quote Event Qty
eurex_cash_eti_t7_v12_0.quote_event_qty = {}

-- Size: Quote Event Qty
eurex_cash_eti_t7_v12_0.quote_event_qty.size = 8

-- Display: Quote Event Qty
eurex_cash_eti_t7_v12_0.quote_event_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Quote Event Qty: No Value"
  end

  return "Quote Event Qty: "..value
end

-- Translate: Quote Event Qty
eurex_cash_eti_t7_v12_0.quote_event_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Quote Event Qty
eurex_cash_eti_t7_v12_0.quote_event_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_event_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.quote_event_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.quote_event_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_event_qty, range, value, display)

  return offset + length, value
end

-- Quote Event Px
eurex_cash_eti_t7_v12_0.quote_event_px = {}

-- Size: Quote Event Px
eurex_cash_eti_t7_v12_0.quote_event_px.size = 8

-- Display: Quote Event Px
eurex_cash_eti_t7_v12_0.quote_event_px.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Quote Event Px: No Value"
  end

  return "Quote Event Px: "..value
end

-- Translate: Quote Event Px
eurex_cash_eti_t7_v12_0.quote_event_px.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Quote Event Px
eurex_cash_eti_t7_v12_0.quote_event_px.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_event_px.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.quote_event_px.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.quote_event_px.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_event_px, range, value, display)

  return offset + length, value
end

-- Quote Event Grp Comp
eurex_cash_eti_t7_v12_0.quote_event_grp_comp = {}

-- Size: Quote Event Grp Comp
eurex_cash_eti_t7_v12_0.quote_event_grp_comp.size =
  eurex_cash_eti_t7_v12_0.security_id.size + 
  eurex_cash_eti_t7_v12_0.quote_event_px.size + 
  eurex_cash_eti_t7_v12_0.quote_event_qty.size + 
  eurex_cash_eti_t7_v12_0.quote_msg_id.size + 
  eurex_cash_eti_t7_v12_0.quote_event_match_id.size + 
  eurex_cash_eti_t7_v12_0.quote_event_exec_id.size + 
  eurex_cash_eti_t7_v12_0.quote_event_type.size + 
  eurex_cash_eti_t7_v12_0.quote_event_side.size + 
  eurex_cash_eti_t7_v12_0.quote_event_liquidity_ind.size + 
  eurex_cash_eti_t7_v12_0.bbo_setting.size + 
  eurex_cash_eti_t7_v12_0.quote_event_reason.size + 
  eurex_cash_eti_t7_v12_0.pad_3.size

-- Display: Quote Event Grp Comp
eurex_cash_eti_t7_v12_0.quote_event_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Quote Event Grp Comp
eurex_cash_eti_t7_v12_0.quote_event_grp_comp.fields = function(buffer, offset, packet, parent, quote_event_grp_comp_index)
  local index = offset

  -- Implicit Quote Event Grp Comp Index
  if quote_event_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_event_grp_comp_index, quote_event_grp_comp_index)
    iteration:set_generated()
  end

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Quote Event Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_event_px = eurex_cash_eti_t7_v12_0.quote_event_px.dissect(buffer, index, packet, parent)

  -- Quote Event Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_event_qty = eurex_cash_eti_t7_v12_0.quote_event_qty.dissect(buffer, index, packet, parent)

  -- Quote Msg Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_msg_id = eurex_cash_eti_t7_v12_0.quote_msg_id.dissect(buffer, index, packet, parent)

  -- Quote Event Match Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, quote_event_match_id = eurex_cash_eti_t7_v12_0.quote_event_match_id.dissect(buffer, index, packet, parent)

  -- Quote Event Exec Id: 4 Byte Signed Fixed Width Integer Nullable
  index, quote_event_exec_id = eurex_cash_eti_t7_v12_0.quote_event_exec_id.dissect(buffer, index, packet, parent)

  -- Quote Event Type: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, quote_event_type = eurex_cash_eti_t7_v12_0.quote_event_type.dissect(buffer, index, packet, parent)

  -- Quote Event Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, quote_event_side = eurex_cash_eti_t7_v12_0.quote_event_side.dissect(buffer, index, packet, parent)

  -- Quote Event Liquidity Ind: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, quote_event_liquidity_ind = eurex_cash_eti_t7_v12_0.quote_event_liquidity_ind.dissect(buffer, index, packet, parent)

  -- Bbo Setting: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, bbo_setting = eurex_cash_eti_t7_v12_0.bbo_setting.dissect(buffer, index, packet, parent)

  -- Quote Event Reason: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, quote_event_reason = eurex_cash_eti_t7_v12_0.quote_event_reason.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Quote Event Grp Comp
eurex_cash_eti_t7_v12_0.quote_event_grp_comp.dissect = function(buffer, offset, packet, parent, quote_event_grp_comp_index)
  if show.quote_event_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_event_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.quote_event_grp_comp.fields(buffer, offset, packet, parent, quote_event_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.quote_event_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.quote_event_grp_comp.fields(buffer, offset, packet, parent, quote_event_grp_comp_index)
  end
end

-- No Quote Events
eurex_cash_eti_t7_v12_0.no_quote_events = {}

-- Size: No Quote Events
eurex_cash_eti_t7_v12_0.no_quote_events.size = 1

-- Display: No Quote Events
eurex_cash_eti_t7_v12_0.no_quote_events.display = function(value)
  -- Check if field has value
  if value == 0xFF then
    return "No Quote Events: No Value"
  end

  return "No Quote Events: "..value
end

-- Dissect: No Quote Events
eurex_cash_eti_t7_v12_0.no_quote_events.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_quote_events.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_quote_events.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_quote_events, range, value, display)

  return offset + length, value
end

-- Quote Execution Report
eurex_cash_eti_t7_v12_0.quote_execution_report = {}

-- Read runtime size of: Quote Execution Report
eurex_cash_eti_t7_v12_0.quote_execution_report.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Quote Execution Report
eurex_cash_eti_t7_v12_0.quote_execution_report.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Quote Execution Report
eurex_cash_eti_t7_v12_0.quote_execution_report.fields = function(buffer, offset, packet, parent, size_of_quote_execution_report)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- No Quote Events: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_quote_events = eurex_cash_eti_t7_v12_0.no_quote_events.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  -- Repeating: Quote Event Grp Comp
  for quote_event_grp_comp_index = 1, no_quote_events do
    index, quote_event_grp_comp = eurex_cash_eti_t7_v12_0.quote_event_grp_comp.dissect(buffer, index, packet, parent, quote_event_grp_comp_index)
  end

  return index
end

-- Dissect: Quote Execution Report
eurex_cash_eti_t7_v12_0.quote_execution_report.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_quote_execution_report = eurex_cash_eti_t7_v12_0.quote_execution_report.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.quote_execution_report then
    local range = buffer(offset, size_of_quote_execution_report)
    local display = eurex_cash_eti_t7_v12_0.quote_execution_report.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_execution_report, range, display)
  end

  eurex_cash_eti_t7_v12_0.quote_execution_report.fields(buffer, offset, packet, parent, size_of_quote_execution_report)

  return offset + size_of_quote_execution_report
end

-- Not Affected Security Id
eurex_cash_eti_t7_v12_0.not_affected_security_id = {}

-- Size: Not Affected Security Id
eurex_cash_eti_t7_v12_0.not_affected_security_id.size = 8

-- Display: Not Affected Security Id
eurex_cash_eti_t7_v12_0.not_affected_security_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Not Affected Security Id: No Value"
  end

  return "Not Affected Security Id: "..value
end

-- Dissect: Not Affected Security Id
eurex_cash_eti_t7_v12_0.not_affected_security_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.not_affected_security_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.not_affected_security_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.not_affected_security_id, range, value, display)

  return offset + length, value
end

-- Not Affected Securities Grp Comp
eurex_cash_eti_t7_v12_0.not_affected_securities_grp_comp = {}

-- Size: Not Affected Securities Grp Comp
eurex_cash_eti_t7_v12_0.not_affected_securities_grp_comp.size =
  eurex_cash_eti_t7_v12_0.not_affected_security_id.size

-- Display: Not Affected Securities Grp Comp
eurex_cash_eti_t7_v12_0.not_affected_securities_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Not Affected Securities Grp Comp
eurex_cash_eti_t7_v12_0.not_affected_securities_grp_comp.fields = function(buffer, offset, packet, parent, not_affected_securities_grp_comp_index)
  local index = offset

  -- Implicit Not Affected Securities Grp Comp Index
  if not_affected_securities_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.not_affected_securities_grp_comp_index, not_affected_securities_grp_comp_index)
    iteration:set_generated()
  end

  -- Not Affected Security Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, not_affected_security_id = eurex_cash_eti_t7_v12_0.not_affected_security_id.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Not Affected Securities Grp Comp
eurex_cash_eti_t7_v12_0.not_affected_securities_grp_comp.dissect = function(buffer, offset, packet, parent, not_affected_securities_grp_comp_index)
  if show.not_affected_securities_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.not_affected_securities_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.not_affected_securities_grp_comp.fields(buffer, offset, packet, parent, not_affected_securities_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.not_affected_securities_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.not_affected_securities_grp_comp.fields(buffer, offset, packet, parent, not_affected_securities_grp_comp_index)
  end
end

-- No Not Affected Securities
eurex_cash_eti_t7_v12_0.no_not_affected_securities = {}

-- Size: No Not Affected Securities
eurex_cash_eti_t7_v12_0.no_not_affected_securities.size = 2

-- Display: No Not Affected Securities
eurex_cash_eti_t7_v12_0.no_not_affected_securities.display = function(value)
  -- Check if field has value
  if value == 0xFFFF then
    return "No Not Affected Securities: No Value"
  end

  return "No Not Affected Securities: "..value
end

-- Dissect: No Not Affected Securities
eurex_cash_eti_t7_v12_0.no_not_affected_securities.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_not_affected_securities.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_not_affected_securities.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_not_affected_securities, range, value, display)

  return offset + length, value
end

-- Quote Activation Response
eurex_cash_eti_t7_v12_0.quote_activation_response = {}

-- Read runtime size of: Quote Activation Response
eurex_cash_eti_t7_v12_0.quote_activation_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Quote Activation Response
eurex_cash_eti_t7_v12_0.quote_activation_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Quote Activation Response
eurex_cash_eti_t7_v12_0.quote_activation_response.fields = function(buffer, offset, packet, parent, size_of_quote_activation_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Mass Action Report Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, mass_action_report_id = eurex_cash_eti_t7_v12_0.mass_action_report_id.dissect(buffer, index, packet, parent)

  -- No Not Affected Securities: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_not_affected_securities = eurex_cash_eti_t7_v12_0.no_not_affected_securities.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  -- Repeating: Not Affected Securities Grp Comp
  for not_affected_securities_grp_comp_index = 1, no_not_affected_securities do
    index, not_affected_securities_grp_comp = eurex_cash_eti_t7_v12_0.not_affected_securities_grp_comp.dissect(buffer, index, packet, parent, not_affected_securities_grp_comp_index)
  end

  return index
end

-- Dissect: Quote Activation Response
eurex_cash_eti_t7_v12_0.quote_activation_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_quote_activation_response = eurex_cash_eti_t7_v12_0.quote_activation_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.quote_activation_response then
    local range = buffer(offset, size_of_quote_activation_response)
    local display = eurex_cash_eti_t7_v12_0.quote_activation_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_activation_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.quote_activation_response.fields(buffer, offset, packet, parent, size_of_quote_activation_response)

  return offset + size_of_quote_activation_response
end

-- Mass Action Type
eurex_cash_eti_t7_v12_0.mass_action_type = {}

-- Size: Mass Action Type
eurex_cash_eti_t7_v12_0.mass_action_type.size = 1

-- Display: Mass Action Type
eurex_cash_eti_t7_v12_0.mass_action_type.display = function(value)
  if value == 1 then
    return "Mass Action Type: Suspendquotes (1)"
  end
  if value == 2 then
    return "Mass Action Type: Releasequotes (2)"
  end
  if value == 3 then
    return "Mass Action Type: Suspenddeletequotes (3)"
  end
  if value == 0xFF then
    return "Mass Action Type: No Value"
  end

  return "Mass Action Type: Unknown("..value..")"
end

-- Dissect: Mass Action Type
eurex_cash_eti_t7_v12_0.mass_action_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.mass_action_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.mass_action_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.mass_action_type, range, value, display)

  return offset + length, value
end

-- Quote Activation Request
eurex_cash_eti_t7_v12_0.quote_activation_request = {}

-- Read runtime size of: Quote Activation Request
eurex_cash_eti_t7_v12_0.quote_activation_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Quote Activation Request
eurex_cash_eti_t7_v12_0.quote_activation_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Quote Activation Request
eurex_cash_eti_t7_v12_0.quote_activation_request.fields = function(buffer, offset, packet, parent, size_of_quote_activation_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Target Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_session_id = eurex_cash_eti_t7_v12_0.target_party_id_session_id.dissect(buffer, index, packet, parent)

  -- Mass Action Type: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, mass_action_type = eurex_cash_eti_t7_v12_0.mass_action_type.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Pad 5: 5 Byte
  index, pad_5 = eurex_cash_eti_t7_v12_0.pad_5.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Quote Activation Request
eurex_cash_eti_t7_v12_0.quote_activation_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_quote_activation_request = eurex_cash_eti_t7_v12_0.quote_activation_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.quote_activation_request then
    local range = buffer(offset, size_of_quote_activation_request)
    local display = eurex_cash_eti_t7_v12_0.quote_activation_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_activation_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.quote_activation_request.fields(buffer, offset, packet, parent, size_of_quote_activation_request)

  return offset + size_of_quote_activation_request
end

-- Quote Activation Notification
eurex_cash_eti_t7_v12_0.quote_activation_notification = {}

-- Read runtime size of: Quote Activation Notification
eurex_cash_eti_t7_v12_0.quote_activation_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Quote Activation Notification
eurex_cash_eti_t7_v12_0.quote_activation_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Quote Activation Notification
eurex_cash_eti_t7_v12_0.quote_activation_notification.fields = function(buffer, offset, packet, parent, size_of_quote_activation_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Mass Action Report Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, mass_action_report_id = eurex_cash_eti_t7_v12_0.mass_action_report_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Party Id Entering Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_entering_trader = eurex_cash_eti_t7_v12_0.party_id_entering_trader.dissect(buffer, index, packet, parent)

  -- No Not Affected Securities: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_not_affected_securities = eurex_cash_eti_t7_v12_0.no_not_affected_securities.dissect(buffer, index, packet, parent)

  -- Party Id Entering Firm: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_entering_firm = eurex_cash_eti_t7_v12_0.party_id_entering_firm.dissect(buffer, index, packet, parent)

  -- Mass Action Type: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, mass_action_type = eurex_cash_eti_t7_v12_0.mass_action_type.dissect(buffer, index, packet, parent)

  -- Mass Action Reason: 1 Byte Unsigned Fixed Width Integer Enum with 20 values
  index, mass_action_reason = eurex_cash_eti_t7_v12_0.mass_action_reason.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  -- Repeating: Not Affected Securities Grp Comp
  for not_affected_securities_grp_comp_index = 1, no_not_affected_securities do
    index, not_affected_securities_grp_comp = eurex_cash_eti_t7_v12_0.not_affected_securities_grp_comp.dissect(buffer, index, packet, parent, not_affected_securities_grp_comp_index)
  end

  return index
end

-- Dissect: Quote Activation Notification
eurex_cash_eti_t7_v12_0.quote_activation_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_quote_activation_notification = eurex_cash_eti_t7_v12_0.quote_activation_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.quote_activation_notification then
    local range = buffer(offset, size_of_quote_activation_notification)
    local display = eurex_cash_eti_t7_v12_0.quote_activation_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_activation_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.quote_activation_notification.fields(buffer, offset, packet, parent, size_of_quote_activation_notification)

  return offset + size_of_quote_activation_notification
end

-- Risk Limit Type
eurex_cash_eti_t7_v12_0.risk_limit_type = {}

-- Size: Risk Limit Type
eurex_cash_eti_t7_v12_0.risk_limit_type.size = 1

-- Display: Risk Limit Type
eurex_cash_eti_t7_v12_0.risk_limit_type.display = function(value)
  if value == 4 then
    return "Risk Limit Type: Longlimit (4)"
  end
  if value == 5 then
    return "Risk Limit Type: Shortlimit (5)"
  end
  if value == 0xFF then
    return "Risk Limit Type: No Value"
  end

  return "Risk Limit Type: Unknown("..value..")"
end

-- Dissect: Risk Limit Type
eurex_cash_eti_t7_v12_0.risk_limit_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.risk_limit_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.risk_limit_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_type, range, value, display)

  return offset + length, value
end

-- Risk Limit Amount
eurex_cash_eti_t7_v12_0.risk_limit_amount = {}

-- Size: Risk Limit Amount
eurex_cash_eti_t7_v12_0.risk_limit_amount.size = 8

-- Display: Risk Limit Amount
eurex_cash_eti_t7_v12_0.risk_limit_amount.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Risk Limit Amount: No Value"
  end

  return "Risk Limit Amount: "..value
end

-- Translate: Risk Limit Amount
eurex_cash_eti_t7_v12_0.risk_limit_amount.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Risk Limit Amount
eurex_cash_eti_t7_v12_0.risk_limit_amount.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.risk_limit_amount.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.risk_limit_amount.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.risk_limit_amount.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_amount, range, value, display)

  return offset + length, value
end

-- Risk Limit Amount Grp Comp
eurex_cash_eti_t7_v12_0.risk_limit_amount_grp_comp = {}

-- Size: Risk Limit Amount Grp Comp
eurex_cash_eti_t7_v12_0.risk_limit_amount_grp_comp.size =
  eurex_cash_eti_t7_v12_0.risk_limit_amount.size + 
  eurex_cash_eti_t7_v12_0.risk_limit_type.size + 
  eurex_cash_eti_t7_v12_0.pad_7.size

-- Display: Risk Limit Amount Grp Comp
eurex_cash_eti_t7_v12_0.risk_limit_amount_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Risk Limit Amount Grp Comp
eurex_cash_eti_t7_v12_0.risk_limit_amount_grp_comp.fields = function(buffer, offset, packet, parent, risk_limit_amount_grp_comp_index)
  local index = offset

  -- Implicit Risk Limit Amount Grp Comp Index
  if risk_limit_amount_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_amount_grp_comp_index, risk_limit_amount_grp_comp_index)
    iteration:set_generated()
  end

  -- Risk Limit Amount: 8 Byte Unsigned Fixed Width Integer Nullable
  index, risk_limit_amount = eurex_cash_eti_t7_v12_0.risk_limit_amount.dissect(buffer, index, packet, parent)

  -- Risk Limit Type: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, risk_limit_type = eurex_cash_eti_t7_v12_0.risk_limit_type.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Risk Limit Amount Grp Comp
eurex_cash_eti_t7_v12_0.risk_limit_amount_grp_comp.dissect = function(buffer, offset, packet, parent, risk_limit_amount_grp_comp_index)
  if show.risk_limit_amount_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_amount_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.risk_limit_amount_grp_comp.fields(buffer, offset, packet, parent, risk_limit_amount_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.risk_limit_amount_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.risk_limit_amount_grp_comp.fields(buffer, offset, packet, parent, risk_limit_amount_grp_comp_index)
  end
end

-- Party Detail Executing Unit
eurex_cash_eti_t7_v12_0.party_detail_executing_unit = {}

-- Size: Party Detail Executing Unit
eurex_cash_eti_t7_v12_0.party_detail_executing_unit.size = 5

-- Display: Party Detail Executing Unit
eurex_cash_eti_t7_v12_0.party_detail_executing_unit.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Party Detail Executing Unit: No Value"
  end

  return "Party Detail Executing Unit: "..value
end

-- Dissect: Party Detail Executing Unit
eurex_cash_eti_t7_v12_0.party_detail_executing_unit.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_detail_executing_unit.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.party_detail_executing_unit.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_detail_executing_unit, range, value, display)

  return offset + length, value
end

-- Risk Limit Group
eurex_cash_eti_t7_v12_0.risk_limit_group = {}

-- Size: Risk Limit Group
eurex_cash_eti_t7_v12_0.risk_limit_group.size = 3

-- Display: Risk Limit Group
eurex_cash_eti_t7_v12_0.risk_limit_group.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Risk Limit Group: No Value"
  end

  return "Risk Limit Group: "..value
end

-- Dissect: Risk Limit Group
eurex_cash_eti_t7_v12_0.risk_limit_group.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.risk_limit_group.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.risk_limit_group.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_group, range, value, display)

  return offset + length, value
end

-- Party Detail Status
eurex_cash_eti_t7_v12_0.party_detail_status = {}

-- Size: Party Detail Status
eurex_cash_eti_t7_v12_0.party_detail_status.size = 1

-- Display: Party Detail Status
eurex_cash_eti_t7_v12_0.party_detail_status.display = function(value)
  if value == 0 then
    return "Party Detail Status: Active (0)"
  end
  if value == 1 then
    return "Party Detail Status: Suspend (1)"
  end
  if value == 0xFF then
    return "Party Detail Status: No Value"
  end

  return "Party Detail Status: Unknown("..value..")"
end

-- Dissect: Party Detail Status
eurex_cash_eti_t7_v12_0.party_detail_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_detail_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.party_detail_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_detail_status, range, value, display)

  return offset + length, value
end

-- No Risk Limit Amount
eurex_cash_eti_t7_v12_0.no_risk_limit_amount = {}

-- Size: No Risk Limit Amount
eurex_cash_eti_t7_v12_0.no_risk_limit_amount.size = 1

-- Display: No Risk Limit Amount
eurex_cash_eti_t7_v12_0.no_risk_limit_amount.display = function(value)
  -- Check if field has value
  if value == 0xFF then
    return "No Risk Limit Amount: No Value"
  end

  return "No Risk Limit Amount: "..value
end

-- Dissect: No Risk Limit Amount
eurex_cash_eti_t7_v12_0.no_risk_limit_amount.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_risk_limit_amount.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_risk_limit_amount.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_risk_limit_amount, range, value, display)

  return offset + length, value
end

-- Pre Trade Risk Limits Definition Request
eurex_cash_eti_t7_v12_0.pre_trade_risk_limits_definition_request = {}

-- Read runtime size of: Pre Trade Risk Limits Definition Request
eurex_cash_eti_t7_v12_0.pre_trade_risk_limits_definition_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Pre Trade Risk Limits Definition Request
eurex_cash_eti_t7_v12_0.pre_trade_risk_limits_definition_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Pre Trade Risk Limits Definition Request
eurex_cash_eti_t7_v12_0.pre_trade_risk_limits_definition_request.fields = function(buffer, offset, packet, parent, size_of_pre_trade_risk_limits_definition_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- No Risk Limit Amount: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_risk_limit_amount = eurex_cash_eti_t7_v12_0.no_risk_limit_amount.dissect(buffer, index, packet, parent)

  -- Party Detail Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_detail_status = eurex_cash_eti_t7_v12_0.party_detail_status.dissect(buffer, index, packet, parent)

  -- Risk Limit Group: 3 Byte Ascii String Nullable
  index, risk_limit_group = eurex_cash_eti_t7_v12_0.risk_limit_group.dissect(buffer, index, packet, parent)

  -- Party Detail Executing Unit: 5 Byte Ascii String Nullable
  index, party_detail_executing_unit = eurex_cash_eti_t7_v12_0.party_detail_executing_unit.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Repeating: Risk Limit Amount Grp Comp
  for risk_limit_amount_grp_comp_index = 1, no_risk_limit_amount do
    index, risk_limit_amount_grp_comp = eurex_cash_eti_t7_v12_0.risk_limit_amount_grp_comp.dissect(buffer, index, packet, parent, risk_limit_amount_grp_comp_index)
  end

  return index
end

-- Dissect: Pre Trade Risk Limits Definition Request
eurex_cash_eti_t7_v12_0.pre_trade_risk_limits_definition_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_pre_trade_risk_limits_definition_request = eurex_cash_eti_t7_v12_0.pre_trade_risk_limits_definition_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.pre_trade_risk_limits_definition_request then
    local range = buffer(offset, size_of_pre_trade_risk_limits_definition_request)
    local display = eurex_cash_eti_t7_v12_0.pre_trade_risk_limits_definition_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.pre_trade_risk_limits_definition_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.pre_trade_risk_limits_definition_request.fields(buffer, offset, packet, parent, size_of_pre_trade_risk_limits_definition_request)

  return offset + size_of_pre_trade_risk_limits_definition_request
end

-- Risk Limit Violation Indicator
eurex_cash_eti_t7_v12_0.risk_limit_violation_indicator = {}

-- Size: Risk Limit Violation Indicator
eurex_cash_eti_t7_v12_0.risk_limit_violation_indicator.size = 1

-- Display: Risk Limit Violation Indicator
eurex_cash_eti_t7_v12_0.risk_limit_violation_indicator.display = function(value)
  if value == 0 then
    return "Risk Limit Violation Indicator: No (0)"
  end
  if value == 1 then
    return "Risk Limit Violation Indicator: Yes (1)"
  end
  if value == 0xFF then
    return "Risk Limit Violation Indicator: No Value"
  end

  return "Risk Limit Violation Indicator: Unknown("..value..")"
end

-- Dissect: Risk Limit Violation Indicator
eurex_cash_eti_t7_v12_0.risk_limit_violation_indicator.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.risk_limit_violation_indicator.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.risk_limit_violation_indicator.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_violation_indicator, range, value, display)

  return offset + length, value
end

-- Risk Limit Requesting Party Role
eurex_cash_eti_t7_v12_0.risk_limit_requesting_party_role = {}

-- Size: Risk Limit Requesting Party Role
eurex_cash_eti_t7_v12_0.risk_limit_requesting_party_role.size = 1

-- Display: Risk Limit Requesting Party Role
eurex_cash_eti_t7_v12_0.risk_limit_requesting_party_role.display = function(value)
  if value == 4 then
    return "Risk Limit Requesting Party Role: Clearingfirm (4)"
  end
  if value == 22 then
    return "Risk Limit Requesting Party Role: Exchange (22)"
  end
  if value == 59 then
    return "Risk Limit Requesting Party Role: Executingunit (59)"
  end
  if value == 0xFF then
    return "Risk Limit Requesting Party Role: No Value"
  end

  return "Risk Limit Requesting Party Role: Unknown("..value..")"
end

-- Dissect: Risk Limit Requesting Party Role
eurex_cash_eti_t7_v12_0.risk_limit_requesting_party_role.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.risk_limit_requesting_party_role.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.risk_limit_requesting_party_role.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_requesting_party_role, range, value, display)

  return offset + length, value
end

-- Activation Date
eurex_cash_eti_t7_v12_0.activation_date = {}

-- Size: Activation Date
eurex_cash_eti_t7_v12_0.activation_date.size = 4

-- Display: Activation Date
eurex_cash_eti_t7_v12_0.activation_date.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Activation Date: No Value"
  end

  return "Activation Date: "..value
end

-- Dissect: Activation Date
eurex_cash_eti_t7_v12_0.activation_date.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.activation_date.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.activation_date.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.activation_date, range, value, display)

  return offset + length, value
end

-- Risk Limit Net Position Amount
eurex_cash_eti_t7_v12_0.risk_limit_net_position_amount = {}

-- Size: Risk Limit Net Position Amount
eurex_cash_eti_t7_v12_0.risk_limit_net_position_amount.size = 8

-- Display: Risk Limit Net Position Amount
eurex_cash_eti_t7_v12_0.risk_limit_net_position_amount.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Risk Limit Net Position Amount: No Value"
  end

  return "Risk Limit Net Position Amount: "..value
end

-- Translate: Risk Limit Net Position Amount
eurex_cash_eti_t7_v12_0.risk_limit_net_position_amount.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Risk Limit Net Position Amount
eurex_cash_eti_t7_v12_0.risk_limit_net_position_amount.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.risk_limit_net_position_amount.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.risk_limit_net_position_amount.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.risk_limit_net_position_amount.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_net_position_amount, range, value, display)

  return offset + length, value
end

-- Risk Limit Open Amount
eurex_cash_eti_t7_v12_0.risk_limit_open_amount = {}

-- Size: Risk Limit Open Amount
eurex_cash_eti_t7_v12_0.risk_limit_open_amount.size = 8

-- Display: Risk Limit Open Amount
eurex_cash_eti_t7_v12_0.risk_limit_open_amount.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Risk Limit Open Amount: No Value"
  end

  return "Risk Limit Open Amount: "..value
end

-- Translate: Risk Limit Open Amount
eurex_cash_eti_t7_v12_0.risk_limit_open_amount.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Risk Limit Open Amount
eurex_cash_eti_t7_v12_0.risk_limit_open_amount.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.risk_limit_open_amount.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.risk_limit_open_amount.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.risk_limit_open_amount.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_open_amount, range, value, display)

  return offset + length, value
end

-- Risk Limits Rpt Grp Comp
eurex_cash_eti_t7_v12_0.risk_limits_rpt_grp_comp = {}

-- Size: Risk Limits Rpt Grp Comp
eurex_cash_eti_t7_v12_0.risk_limits_rpt_grp_comp.size =
  eurex_cash_eti_t7_v12_0.risk_limit_amount.size + 
  eurex_cash_eti_t7_v12_0.risk_limit_open_amount.size + 
  eurex_cash_eti_t7_v12_0.risk_limit_net_position_amount.size + 
  eurex_cash_eti_t7_v12_0.activation_date.size + 
  eurex_cash_eti_t7_v12_0.risk_limit_type.size + 
  eurex_cash_eti_t7_v12_0.risk_limit_requesting_party_role.size + 
  eurex_cash_eti_t7_v12_0.risk_limit_violation_indicator.size + 
  eurex_cash_eti_t7_v12_0.risk_limit_group.size + 
  eurex_cash_eti_t7_v12_0.pad_6.size

-- Display: Risk Limits Rpt Grp Comp
eurex_cash_eti_t7_v12_0.risk_limits_rpt_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Risk Limits Rpt Grp Comp
eurex_cash_eti_t7_v12_0.risk_limits_rpt_grp_comp.fields = function(buffer, offset, packet, parent, risk_limits_rpt_grp_comp_index)
  local index = offset

  -- Implicit Risk Limits Rpt Grp Comp Index
  if risk_limits_rpt_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_limits_rpt_grp_comp_index, risk_limits_rpt_grp_comp_index)
    iteration:set_generated()
  end

  -- Risk Limit Amount: 8 Byte Unsigned Fixed Width Integer Nullable
  index, risk_limit_amount = eurex_cash_eti_t7_v12_0.risk_limit_amount.dissect(buffer, index, packet, parent)

  -- Risk Limit Open Amount: 8 Byte Unsigned Fixed Width Integer Nullable
  index, risk_limit_open_amount = eurex_cash_eti_t7_v12_0.risk_limit_open_amount.dissect(buffer, index, packet, parent)

  -- Risk Limit Net Position Amount: 8 Byte Unsigned Fixed Width Integer Nullable
  index, risk_limit_net_position_amount = eurex_cash_eti_t7_v12_0.risk_limit_net_position_amount.dissect(buffer, index, packet, parent)

  -- Activation Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, activation_date = eurex_cash_eti_t7_v12_0.activation_date.dissect(buffer, index, packet, parent)

  -- Risk Limit Type: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, risk_limit_type = eurex_cash_eti_t7_v12_0.risk_limit_type.dissect(buffer, index, packet, parent)

  -- Risk Limit Requesting Party Role: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, risk_limit_requesting_party_role = eurex_cash_eti_t7_v12_0.risk_limit_requesting_party_role.dissect(buffer, index, packet, parent)

  -- Risk Limit Violation Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, risk_limit_violation_indicator = eurex_cash_eti_t7_v12_0.risk_limit_violation_indicator.dissect(buffer, index, packet, parent)

  -- Risk Limit Group: 3 Byte Ascii String Nullable
  index, risk_limit_group = eurex_cash_eti_t7_v12_0.risk_limit_group.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Risk Limits Rpt Grp Comp
eurex_cash_eti_t7_v12_0.risk_limits_rpt_grp_comp.dissect = function(buffer, offset, packet, parent, risk_limits_rpt_grp_comp_index)
  if show.risk_limits_rpt_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_limits_rpt_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.risk_limits_rpt_grp_comp.fields(buffer, offset, packet, parent, risk_limits_rpt_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.risk_limits_rpt_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.risk_limits_rpt_grp_comp.fields(buffer, offset, packet, parent, risk_limits_rpt_grp_comp_index)
  end
end

-- No Risk Limits
eurex_cash_eti_t7_v12_0.no_risk_limits = {}

-- Size: No Risk Limits
eurex_cash_eti_t7_v12_0.no_risk_limits.size = 1

-- Display: No Risk Limits
eurex_cash_eti_t7_v12_0.no_risk_limits.display = function(value)
  -- Check if field has value
  if value == 0xFF then
    return "No Risk Limits: No Value"
  end

  return "No Risk Limits: "..value
end

-- Dissect: No Risk Limits
eurex_cash_eti_t7_v12_0.no_risk_limits.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_risk_limits.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_risk_limits.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_risk_limits, range, value, display)

  return offset + length, value
end

-- Risk Limit Report Id
eurex_cash_eti_t7_v12_0.risk_limit_report_id = {}

-- Size: Risk Limit Report Id
eurex_cash_eti_t7_v12_0.risk_limit_report_id.size = 8

-- Display: Risk Limit Report Id
eurex_cash_eti_t7_v12_0.risk_limit_report_id.display = function(value)
  -- Check if field has value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Risk Limit Report Id: No Value"
  end

  return "Risk Limit Report Id: "..value
end

-- Dissect: Risk Limit Report Id
eurex_cash_eti_t7_v12_0.risk_limit_report_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.risk_limit_report_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.risk_limit_report_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.risk_limit_report_id, range, value, display)

  return offset + length, value
end

-- Pre Trade Risk Limit Response
eurex_cash_eti_t7_v12_0.pre_trade_risk_limit_response = {}

-- Read runtime size of: Pre Trade Risk Limit Response
eurex_cash_eti_t7_v12_0.pre_trade_risk_limit_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Pre Trade Risk Limit Response
eurex_cash_eti_t7_v12_0.pre_trade_risk_limit_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Pre Trade Risk Limit Response
eurex_cash_eti_t7_v12_0.pre_trade_risk_limit_response.fields = function(buffer, offset, packet, parent, size_of_pre_trade_risk_limit_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Risk Limit Report Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, risk_limit_report_id = eurex_cash_eti_t7_v12_0.risk_limit_report_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- No Risk Limits: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_risk_limits = eurex_cash_eti_t7_v12_0.no_risk_limits.dissect(buffer, index, packet, parent)

  -- Party Detail Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_detail_status = eurex_cash_eti_t7_v12_0.party_detail_status.dissect(buffer, index, packet, parent)

  -- Party Detail Executing Unit: 5 Byte Ascii String Nullable
  index, party_detail_executing_unit = eurex_cash_eti_t7_v12_0.party_detail_executing_unit.dissect(buffer, index, packet, parent)

  -- Pad 5: 5 Byte
  index, pad_5 = eurex_cash_eti_t7_v12_0.pad_5.dissect(buffer, index, packet, parent)

  -- Repeating: Risk Limits Rpt Grp Comp
  for risk_limits_rpt_grp_comp_index = 1, no_risk_limits do
    index, risk_limits_rpt_grp_comp = eurex_cash_eti_t7_v12_0.risk_limits_rpt_grp_comp.dissect(buffer, index, packet, parent, risk_limits_rpt_grp_comp_index)
  end

  return index
end

-- Dissect: Pre Trade Risk Limit Response
eurex_cash_eti_t7_v12_0.pre_trade_risk_limit_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_pre_trade_risk_limit_response = eurex_cash_eti_t7_v12_0.pre_trade_risk_limit_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.pre_trade_risk_limit_response then
    local range = buffer(offset, size_of_pre_trade_risk_limit_response)
    local display = eurex_cash_eti_t7_v12_0.pre_trade_risk_limit_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.pre_trade_risk_limit_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.pre_trade_risk_limit_response.fields(buffer, offset, packet, parent, size_of_pre_trade_risk_limit_response)

  return offset + size_of_pre_trade_risk_limit_response
end

-- Ping Response
eurex_cash_eti_t7_v12_0.ping_response = {}

-- Read runtime size of: Ping Response
eurex_cash_eti_t7_v12_0.ping_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Ping Response
eurex_cash_eti_t7_v12_0.ping_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Ping Response
eurex_cash_eti_t7_v12_0.ping_response.fields = function(buffer, offset, packet, parent, size_of_ping_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Ping Response
eurex_cash_eti_t7_v12_0.ping_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_ping_response = eurex_cash_eti_t7_v12_0.ping_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.ping_response then
    local range = buffer(offset, size_of_ping_response)
    local display = eurex_cash_eti_t7_v12_0.ping_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.ping_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.ping_response.fields(buffer, offset, packet, parent, size_of_ping_response)

  return offset + size_of_ping_response
end

-- Ping Request
eurex_cash_eti_t7_v12_0.ping_request = {}

-- Read runtime size of: Ping Request
eurex_cash_eti_t7_v12_0.ping_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Ping Request
eurex_cash_eti_t7_v12_0.ping_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Ping Request
eurex_cash_eti_t7_v12_0.ping_request.fields = function(buffer, offset, packet, parent, size_of_ping_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Partition Id: 2 Byte Unsigned Fixed Width Integer Nullable
  index, partition_id = eurex_cash_eti_t7_v12_0.partition_id.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Ping Request
eurex_cash_eti_t7_v12_0.ping_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_ping_request = eurex_cash_eti_t7_v12_0.ping_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.ping_request then
    local range = buffer(offset, size_of_ping_request)
    local display = eurex_cash_eti_t7_v12_0.ping_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.ping_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.ping_request.fields(buffer, offset, packet, parent, size_of_ping_request)

  return offset + size_of_ping_request
end

-- Requesting Party Clearing Firm
eurex_cash_eti_t7_v12_0.requesting_party_clearing_firm = {}

-- Size: Requesting Party Clearing Firm
eurex_cash_eti_t7_v12_0.requesting_party_clearing_firm.size = 9

-- Display: Requesting Party Clearing Firm
eurex_cash_eti_t7_v12_0.requesting_party_clearing_firm.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Requesting Party Clearing Firm: No Value"
  end

  return "Requesting Party Clearing Firm: "..value
end

-- Dissect: Requesting Party Clearing Firm
eurex_cash_eti_t7_v12_0.requesting_party_clearing_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.requesting_party_clearing_firm.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.requesting_party_clearing_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_clearing_firm, range, value, display)

  return offset + length, value
end

-- Requesting Party Entering Firm
eurex_cash_eti_t7_v12_0.requesting_party_entering_firm = {}

-- Size: Requesting Party Entering Firm
eurex_cash_eti_t7_v12_0.requesting_party_entering_firm.size = 9

-- Display: Requesting Party Entering Firm
eurex_cash_eti_t7_v12_0.requesting_party_entering_firm.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Requesting Party Entering Firm: No Value"
  end

  return "Requesting Party Entering Firm: "..value
end

-- Dissect: Requesting Party Entering Firm
eurex_cash_eti_t7_v12_0.requesting_party_entering_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.requesting_party_entering_firm.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.requesting_party_entering_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_entering_firm, range, value, display)

  return offset + length, value
end

-- List Update Action
eurex_cash_eti_t7_v12_0.list_update_action = {}

-- Size: List Update Action
eurex_cash_eti_t7_v12_0.list_update_action.size = 1

-- Display: List Update Action
eurex_cash_eti_t7_v12_0.list_update_action.display = function(value)
  -- Check if field has value
  if value == nil or value == 0 then
    return "List Update Action: No Value"
  end

  if value == "A" then
    return "List Update Action: Add (A)"
  end
  if value == "D" then
    return "List Update Action: Delete (D)"
  end

  return "List Update Action: Unknown("..value..")"
end

-- Dissect: List Update Action
eurex_cash_eti_t7_v12_0.list_update_action.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.list_update_action.size
  local range = buffer(offset, length)

  -- parse as byte
  local value = range:uint()

  -- check if value is non zero
  if value ~= 0 then
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.list_update_action.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.list_update_action, range, value, display)

  return offset + length, value
end

-- Market Id
eurex_cash_eti_t7_v12_0.market_id = {}

-- Size: Market Id
eurex_cash_eti_t7_v12_0.market_id.size = 2

-- Display: Market Id
eurex_cash_eti_t7_v12_0.market_id.display = function(value)
  if value == 3 then
    return "Market Id: Xetr (3)"
  end
  if value == 4 then
    return "Market Id: Xvie (4)"
  end
  if value == 6 then
    return "Market Id: Xmal (6)"
  end
  if value == 7 then
    return "Market Id: Xbul (7)"
  end
  if value == 8 then
    return "Market Id: Xbud (8)"
  end
  if value == 9 then
    return "Market Id: Xlju (9)"
  end
  if value == 10 then
    return "Market Id: Xpra (10)"
  end
  if value == 11 then
    return "Market Id: Xzag (11)"
  end
  if value == 13 then
    return "Market Id: Xfra (13)"
  end
  if value == 0xFFFF then
    return "Market Id: No Value"
  end

  return "Market Id: Unknown("..value..")"
end

-- Dissect: Market Id
eurex_cash_eti_t7_v12_0.market_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.market_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.market_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.market_id, range, value, display)

  return offset + length, value
end

-- Requesting Party Id Executing System
eurex_cash_eti_t7_v12_0.requesting_party_id_executing_system = {}

-- Size: Requesting Party Id Executing System
eurex_cash_eti_t7_v12_0.requesting_party_id_executing_system.size = 4

-- Display: Requesting Party Id Executing System
eurex_cash_eti_t7_v12_0.requesting_party_id_executing_system.display = function(value)
  if value == 2 then
    return "Requesting Party Id Executing System: T 7 (2)"
  end
  if value == 0xFFFFFFFF then
    return "Requesting Party Id Executing System: No Value"
  end

  return "Requesting Party Id Executing System: Unknown("..value..")"
end

-- Dissect: Requesting Party Id Executing System
eurex_cash_eti_t7_v12_0.requesting_party_id_executing_system.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.requesting_party_id_executing_system.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.requesting_party_id_executing_system.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_id_executing_system, range, value, display)

  return offset + length, value
end

-- Party Detail Id Executing Unit
eurex_cash_eti_t7_v12_0.party_detail_id_executing_unit = {}

-- Size: Party Detail Id Executing Unit
eurex_cash_eti_t7_v12_0.party_detail_id_executing_unit.size = 4

-- Display: Party Detail Id Executing Unit
eurex_cash_eti_t7_v12_0.party_detail_id_executing_unit.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Party Detail Id Executing Unit: No Value"
  end

  return "Party Detail Id Executing Unit: "..value
end

-- Dissect: Party Detail Id Executing Unit
eurex_cash_eti_t7_v12_0.party_detail_id_executing_unit.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_detail_id_executing_unit.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.party_detail_id_executing_unit.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_detail_id_executing_unit, range, value, display)

  return offset + length, value
end

-- Party Entitlements Update Report
eurex_cash_eti_t7_v12_0.party_entitlements_update_report = {}

-- Read runtime size of: Party Entitlements Update Report
eurex_cash_eti_t7_v12_0.party_entitlements_update_report.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Party Entitlements Update Report
eurex_cash_eti_t7_v12_0.party_entitlements_update_report.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Party Entitlements Update Report
eurex_cash_eti_t7_v12_0.party_entitlements_update_report.fields = function(buffer, offset, packet, parent, size_of_party_entitlements_update_report)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_date = eurex_cash_eti_t7_v12_0.trade_date.dissect(buffer, index, packet, parent)

  -- Party Detail Id Executing Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_detail_id_executing_unit = eurex_cash_eti_t7_v12_0.party_detail_id_executing_unit.dissect(buffer, index, packet, parent)

  -- Requesting Party Id Executing System: 4 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, requesting_party_id_executing_system = eurex_cash_eti_t7_v12_0.requesting_party_id_executing_system.dissect(buffer, index, packet, parent)

  -- Market Id: 2 Byte Unsigned Fixed Width Integer Enum with 10 values
  index, market_id = eurex_cash_eti_t7_v12_0.market_id.dissect(buffer, index, packet, parent)

  -- List Update Action: 1 Byte Ascii String Enum with 2 values
  index, list_update_action = eurex_cash_eti_t7_v12_0.list_update_action.dissect(buffer, index, packet, parent)

  -- Requesting Party Entering Firm: 9 Byte Ascii String Nullable
  index, requesting_party_entering_firm = eurex_cash_eti_t7_v12_0.requesting_party_entering_firm.dissect(buffer, index, packet, parent)

  -- Requesting Party Clearing Firm: 9 Byte Ascii String Nullable
  index, requesting_party_clearing_firm = eurex_cash_eti_t7_v12_0.requesting_party_clearing_firm.dissect(buffer, index, packet, parent)

  -- Party Detail Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_detail_status = eurex_cash_eti_t7_v12_0.party_detail_status.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Party Entitlements Update Report
eurex_cash_eti_t7_v12_0.party_entitlements_update_report.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_party_entitlements_update_report = eurex_cash_eti_t7_v12_0.party_entitlements_update_report.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.party_entitlements_update_report then
    local range = buffer(offset, size_of_party_entitlements_update_report)
    local display = eurex_cash_eti_t7_v12_0.party_entitlements_update_report.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_entitlements_update_report, range, display)
  end

  eurex_cash_eti_t7_v12_0.party_entitlements_update_report.fields(buffer, offset, packet, parent, size_of_party_entitlements_update_report)

  return offset + size_of_party_entitlements_update_report
end

-- Requesting Party Id Entering Firm
eurex_cash_eti_t7_v12_0.requesting_party_id_entering_firm = {}

-- Size: Requesting Party Id Entering Firm
eurex_cash_eti_t7_v12_0.requesting_party_id_entering_firm.size = 1

-- Display: Requesting Party Id Entering Firm
eurex_cash_eti_t7_v12_0.requesting_party_id_entering_firm.display = function(value)
  if value == 1 then
    return "Requesting Party Id Entering Firm: Participant (1)"
  end
  if value == 2 then
    return "Requesting Party Id Entering Firm: Market Supervision (2)"
  end
  if value == 0xFF then
    return "Requesting Party Id Entering Firm: No Value"
  end

  return "Requesting Party Id Entering Firm: Unknown("..value..")"
end

-- Dissect: Requesting Party Id Entering Firm
eurex_cash_eti_t7_v12_0.requesting_party_id_entering_firm.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.requesting_party_id_entering_firm.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.requesting_party_id_entering_firm.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_id_entering_firm, range, value, display)

  return offset + length, value
end

-- Party Action Type
eurex_cash_eti_t7_v12_0.party_action_type = {}

-- Size: Party Action Type
eurex_cash_eti_t7_v12_0.party_action_type.size = 1

-- Display: Party Action Type
eurex_cash_eti_t7_v12_0.party_action_type.display = function(value)
  if value == 1 then
    return "Party Action Type: Halt Trading (1)"
  end
  if value == 2 then
    return "Party Action Type: Reinstate (2)"
  end
  if value == 0xFF then
    return "Party Action Type: No Value"
  end

  return "Party Action Type: Unknown("..value..")"
end

-- Dissect: Party Action Type
eurex_cash_eti_t7_v12_0.party_action_type.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_action_type.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.party_action_type.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_action_type, range, value, display)

  return offset + length, value
end

-- Requesting Party Id Executing Trader
eurex_cash_eti_t7_v12_0.requesting_party_id_executing_trader = {}

-- Size: Requesting Party Id Executing Trader
eurex_cash_eti_t7_v12_0.requesting_party_id_executing_trader.size = 4

-- Display: Requesting Party Id Executing Trader
eurex_cash_eti_t7_v12_0.requesting_party_id_executing_trader.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Requesting Party Id Executing Trader: No Value"
  end

  return "Requesting Party Id Executing Trader: "..value
end

-- Dissect: Requesting Party Id Executing Trader
eurex_cash_eti_t7_v12_0.requesting_party_id_executing_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.requesting_party_id_executing_trader.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.requesting_party_id_executing_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.requesting_party_id_executing_trader, range, value, display)

  return offset + length, value
end

-- Party Action Report
eurex_cash_eti_t7_v12_0.party_action_report = {}

-- Read runtime size of: Party Action Report
eurex_cash_eti_t7_v12_0.party_action_report.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Party Action Report
eurex_cash_eti_t7_v12_0.party_action_report.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Party Action Report
eurex_cash_eti_t7_v12_0.party_action_report.fields = function(buffer, offset, packet, parent, size_of_party_action_report)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Trade Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, trade_date = eurex_cash_eti_t7_v12_0.trade_date.dissect(buffer, index, packet, parent)

  -- Requesting Party Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, requesting_party_id_executing_trader = eurex_cash_eti_t7_v12_0.requesting_party_id_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Id Executing Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_executing_unit = eurex_cash_eti_t7_v12_0.party_id_executing_unit.dissect(buffer, index, packet, parent)

  -- Party Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_executing_trader = eurex_cash_eti_t7_v12_0.party_id_executing_trader.dissect(buffer, index, packet, parent)

  -- Requesting Party Id Executing System: 4 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, requesting_party_id_executing_system = eurex_cash_eti_t7_v12_0.requesting_party_id_executing_system.dissect(buffer, index, packet, parent)

  -- Market Id: 2 Byte Unsigned Fixed Width Integer Enum with 10 values
  index, market_id = eurex_cash_eti_t7_v12_0.market_id.dissect(buffer, index, packet, parent)

  -- Party Action Type: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_action_type = eurex_cash_eti_t7_v12_0.party_action_type.dissect(buffer, index, packet, parent)

  -- Requesting Party Id Entering Firm: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, requesting_party_id_entering_firm = eurex_cash_eti_t7_v12_0.requesting_party_id_entering_firm.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Party Action Report
eurex_cash_eti_t7_v12_0.party_action_report.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_party_action_report = eurex_cash_eti_t7_v12_0.party_action_report.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.party_action_report then
    local range = buffer(offset, size_of_party_action_report)
    local display = eurex_cash_eti_t7_v12_0.party_action_report.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_action_report, range, display)
  end

  eurex_cash_eti_t7_v12_0.party_action_report.fields(buffer, offset, packet, parent, size_of_party_action_report)

  return offset + size_of_party_action_report
end

-- Order Event Reason
eurex_cash_eti_t7_v12_0.order_event_reason = {}

-- Size: Order Event Reason
eurex_cash_eti_t7_v12_0.order_event_reason.size = 1

-- Display: Order Event Reason
eurex_cash_eti_t7_v12_0.order_event_reason.display = function(value)
  if value == 100 then
    return "Order Event Reason: Smp (100)"
  end
  if value == 0xFF then
    return "Order Event Reason: No Value"
  end

  return "Order Event Reason: Unknown("..value..")"
end

-- Dissect: Order Event Reason
eurex_cash_eti_t7_v12_0.order_event_reason.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.order_event_reason.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.order_event_reason.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_event_reason, range, value, display)

  return offset + length, value
end

-- Order Event Match Id
eurex_cash_eti_t7_v12_0.order_event_match_id = {}

-- Size: Order Event Match Id
eurex_cash_eti_t7_v12_0.order_event_match_id.size = 4

-- Display: Order Event Match Id
eurex_cash_eti_t7_v12_0.order_event_match_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Order Event Match Id: No Value"
  end

  return "Order Event Match Id: "..value
end

-- Dissect: Order Event Match Id
eurex_cash_eti_t7_v12_0.order_event_match_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.order_event_match_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.order_event_match_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_event_match_id, range, value, display)

  return offset + length, value
end

-- Order Event Qty
eurex_cash_eti_t7_v12_0.order_event_qty = {}

-- Size: Order Event Qty
eurex_cash_eti_t7_v12_0.order_event_qty.size = 8

-- Display: Order Event Qty
eurex_cash_eti_t7_v12_0.order_event_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Order Event Qty: No Value"
  end

  return "Order Event Qty: "..value
end

-- Translate: Order Event Qty
eurex_cash_eti_t7_v12_0.order_event_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Order Event Qty
eurex_cash_eti_t7_v12_0.order_event_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.order_event_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.order_event_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.order_event_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_event_qty, range, value, display)

  return offset + length, value
end

-- Order Event Px
eurex_cash_eti_t7_v12_0.order_event_px = {}

-- Size: Order Event Px
eurex_cash_eti_t7_v12_0.order_event_px.size = 8

-- Display: Order Event Px
eurex_cash_eti_t7_v12_0.order_event_px.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Order Event Px: No Value"
  end

  return "Order Event Px: "..value
end

-- Translate: Order Event Px
eurex_cash_eti_t7_v12_0.order_event_px.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Order Event Px
eurex_cash_eti_t7_v12_0.order_event_px.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.order_event_px.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.order_event_px.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.order_event_px.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_event_px, range, value, display)

  return offset + length, value
end

-- Order Event Grp Comp
eurex_cash_eti_t7_v12_0.order_event_grp_comp = {}

-- Size: Order Event Grp Comp
eurex_cash_eti_t7_v12_0.order_event_grp_comp.size =
  eurex_cash_eti_t7_v12_0.order_event_px.size + 
  eurex_cash_eti_t7_v12_0.order_event_qty.size + 
  eurex_cash_eti_t7_v12_0.order_event_match_id.size + 
  eurex_cash_eti_t7_v12_0.order_event_reason.size + 
  eurex_cash_eti_t7_v12_0.pad_3.size

-- Display: Order Event Grp Comp
eurex_cash_eti_t7_v12_0.order_event_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Order Event Grp Comp
eurex_cash_eti_t7_v12_0.order_event_grp_comp.fields = function(buffer, offset, packet, parent, order_event_grp_comp_index)
  local index = offset

  -- Implicit Order Event Grp Comp Index
  if order_event_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_event_grp_comp_index, order_event_grp_comp_index)
    iteration:set_generated()
  end

  -- Order Event Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_event_px = eurex_cash_eti_t7_v12_0.order_event_px.dissect(buffer, index, packet, parent)

  -- Order Event Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_event_qty = eurex_cash_eti_t7_v12_0.order_event_qty.dissect(buffer, index, packet, parent)

  -- Order Event Match Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_event_match_id = eurex_cash_eti_t7_v12_0.order_event_match_id.dissect(buffer, index, packet, parent)

  -- Order Event Reason: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_event_reason = eurex_cash_eti_t7_v12_0.order_event_reason.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Order Event Grp Comp
eurex_cash_eti_t7_v12_0.order_event_grp_comp.dissect = function(buffer, offset, packet, parent, order_event_grp_comp_index)
  if show.order_event_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_event_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.order_event_grp_comp.fields(buffer, offset, packet, parent, order_event_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.order_event_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.order_event_grp_comp.fields(buffer, offset, packet, parent, order_event_grp_comp_index)
  end
end

-- No Order Events
eurex_cash_eti_t7_v12_0.no_order_events = {}

-- Size: No Order Events
eurex_cash_eti_t7_v12_0.no_order_events.size = 1

-- Display: No Order Events
eurex_cash_eti_t7_v12_0.no_order_events.display = function(value)
  -- Check if field has value
  if value == 0xFF then
    return "No Order Events: No Value"
  end

  return "No Order Events: "..value
end

-- Dissect: No Order Events
eurex_cash_eti_t7_v12_0.no_order_events.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_order_events.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_order_events.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_order_events, range, value, display)

  return offset + length, value
end

-- Transaction Delay Indicator
eurex_cash_eti_t7_v12_0.transaction_delay_indicator = {}

-- Size: Transaction Delay Indicator
eurex_cash_eti_t7_v12_0.transaction_delay_indicator.size = 1

-- Display: Transaction Delay Indicator
eurex_cash_eti_t7_v12_0.transaction_delay_indicator.display = function(value)
  if value == 0 then
    return "Transaction Delay Indicator: Notdelayed (0)"
  end
  if value == 1 then
    return "Transaction Delay Indicator: Delayed (1)"
  end
  if value == 0xFF then
    return "Transaction Delay Indicator: No Value"
  end

  return "Transaction Delay Indicator: Unknown("..value..")"
end

-- Dissect: Transaction Delay Indicator
eurex_cash_eti_t7_v12_0.transaction_delay_indicator.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.transaction_delay_indicator.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.transaction_delay_indicator.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.transaction_delay_indicator, range, value, display)

  return offset + length, value
end

-- Crossed Indicator
eurex_cash_eti_t7_v12_0.crossed_indicator = {}

-- Size: Crossed Indicator
eurex_cash_eti_t7_v12_0.crossed_indicator.size = 1

-- Display: Crossed Indicator
eurex_cash_eti_t7_v12_0.crossed_indicator.display = function(value)
  if value == 0 then
    return "Crossed Indicator: Nocrossing (0)"
  end
  if value == 1 then
    return "Crossed Indicator: Crossrejected (1)"
  end
  if value == 0xFF then
    return "Crossed Indicator: No Value"
  end

  return "Crossed Indicator: Unknown("..value..")"
end

-- Dissect: Crossed Indicator
eurex_cash_eti_t7_v12_0.crossed_indicator.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.crossed_indicator.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.crossed_indicator.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.crossed_indicator, range, value, display)

  return offset + length, value
end

-- Display Qty
eurex_cash_eti_t7_v12_0.display_qty = {}

-- Size: Display Qty
eurex_cash_eti_t7_v12_0.display_qty.size = 8

-- Display: Display Qty
eurex_cash_eti_t7_v12_0.display_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Display Qty: No Value"
  end

  return "Display Qty: "..value
end

-- Translate: Display Qty
eurex_cash_eti_t7_v12_0.display_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Display Qty
eurex_cash_eti_t7_v12_0.display_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.display_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.display_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.display_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.display_qty, range, value, display)

  return offset + length, value
end

-- Response Header Me Comp
eurex_cash_eti_t7_v12_0.response_header_me_comp = {}

-- Size: Response Header Me Comp
eurex_cash_eti_t7_v12_0.response_header_me_comp.size =
  eurex_cash_eti_t7_v12_0.request_time.size + 
  eurex_cash_eti_t7_v12_0.trd_reg_ts_time_in.size + 
  eurex_cash_eti_t7_v12_0.trd_reg_ts_time_out.size + 
  eurex_cash_eti_t7_v12_0.response_in.size + 
  eurex_cash_eti_t7_v12_0.sending_time.size + 
  eurex_cash_eti_t7_v12_0.msg_seq_num.size + 
  eurex_cash_eti_t7_v12_0.partition_id.size + 
  eurex_cash_eti_t7_v12_0.appl_id.size + 
  eurex_cash_eti_t7_v12_0.appl_msg_id.size + 
  eurex_cash_eti_t7_v12_0.last_fragment.size

-- Display: Response Header Me Comp
eurex_cash_eti_t7_v12_0.response_header_me_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Response Header Me Comp
eurex_cash_eti_t7_v12_0.response_header_me_comp.fields = function(buffer, offset, packet, parent)
  local index = offset

  -- Request Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, request_time = eurex_cash_eti_t7_v12_0.request_time.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Time In: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_time_in = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_in.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Time Out: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_time_out = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_out.dissect(buffer, index, packet, parent)

  -- Response In: 8 Byte Unsigned Fixed Width Integer Nullable
  index, response_in = eurex_cash_eti_t7_v12_0.response_in.dissect(buffer, index, packet, parent)

  -- Sending Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, sending_time = eurex_cash_eti_t7_v12_0.sending_time.dissect(buffer, index, packet, parent)

  -- Msg Seq Num: 4 Byte Unsigned Fixed Width Integer Nullable
  index, msg_seq_num = eurex_cash_eti_t7_v12_0.msg_seq_num.dissect(buffer, index, packet, parent)

  -- Partition Id: 2 Byte Unsigned Fixed Width Integer Nullable
  index, partition_id = eurex_cash_eti_t7_v12_0.partition_id.dissect(buffer, index, packet, parent)

  -- Appl Id: 1 Byte Unsigned Fixed Width Integer Enum with 12 values
  index, appl_id = eurex_cash_eti_t7_v12_0.appl_id.dissect(buffer, index, packet, parent)

  -- Appl Msg Id: 16 Byte
  index, appl_msg_id = eurex_cash_eti_t7_v12_0.appl_msg_id.dissect(buffer, index, packet, parent)

  -- Last Fragment: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, last_fragment = eurex_cash_eti_t7_v12_0.last_fragment.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Response Header Me Comp
eurex_cash_eti_t7_v12_0.response_header_me_comp.dissect = function(buffer, offset, packet, parent)
  if show.response_header_me_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.response_header_me_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.response_header_me_comp.fields(buffer, offset, packet, parent)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.response_header_me_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.response_header_me_comp.fields(buffer, offset, packet, parent)
  end
end

-- Order Exec Response
eurex_cash_eti_t7_v12_0.order_exec_response = {}

-- Read runtime size of: Order Exec Response
eurex_cash_eti_t7_v12_0.order_exec_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Order Exec Response
eurex_cash_eti_t7_v12_0.order_exec_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Order Exec Response
eurex_cash_eti_t7_v12_0.order_exec_response.fields = function(buffer, offset, packet, parent, size_of_order_exec_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Me Comp: Struct of 10 fields
  index, response_header_me_comp = eurex_cash_eti_t7_v12_0.response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Entry Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_entry_time = eurex_cash_eti_t7_v12_0.trd_reg_ts_entry_time.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Time Priority: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_time_priority = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_priority.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Cum Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cum_qty = eurex_cash_eti_t7_v12_0.cum_qty.dissect(buffer, index, packet, parent)

  -- Cxl Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_qty = eurex_cash_eti_t7_v12_0.cxl_qty.dissect(buffer, index, packet, parent)

  -- Display Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_qty = eurex_cash_eti_t7_v12_0.display_qty.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Match Type: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, match_type = eurex_cash_eti_t7_v12_0.match_type.dissect(buffer, index, packet, parent)

  -- Triggered: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, triggered = eurex_cash_eti_t7_v12_0.triggered.dissect(buffer, index, packet, parent)

  -- Crossed Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, crossed_indicator = eurex_cash_eti_t7_v12_0.crossed_indicator.dissect(buffer, index, packet, parent)

  -- Transaction Delay Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, transaction_delay_indicator = eurex_cash_eti_t7_v12_0.transaction_delay_indicator.dissect(buffer, index, packet, parent)

  -- Bbo Setting: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, bbo_setting = eurex_cash_eti_t7_v12_0.bbo_setting.dissect(buffer, index, packet, parent)

  -- No Fills: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_fills = eurex_cash_eti_t7_v12_0.no_fills.dissect(buffer, index, packet, parent)

  -- No Order Events: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_order_events = eurex_cash_eti_t7_v12_0.no_order_events.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  -- Repeating: Fills Grp Comp
  for fills_grp_comp_index = 1, no_fills do
    index, fills_grp_comp = eurex_cash_eti_t7_v12_0.fills_grp_comp.dissect(buffer, index, packet, parent, fills_grp_comp_index)
  end

  -- Repeating: Order Event Grp Comp
  for order_event_grp_comp_index = 1, no_order_events do
    index, order_event_grp_comp = eurex_cash_eti_t7_v12_0.order_event_grp_comp.dissect(buffer, index, packet, parent, order_event_grp_comp_index)
  end

  return index
end

-- Dissect: Order Exec Response
eurex_cash_eti_t7_v12_0.order_exec_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_order_exec_response = eurex_cash_eti_t7_v12_0.order_exec_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.order_exec_response then
    local range = buffer(offset, size_of_order_exec_response)
    local display = eurex_cash_eti_t7_v12_0.order_exec_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_exec_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.order_exec_response.fields(buffer, offset, packet, parent, size_of_order_exec_response)

  return offset + size_of_order_exec_response
end

-- Trade At Close Opt In
eurex_cash_eti_t7_v12_0.trade_at_close_opt_in = {}

-- Size: Trade At Close Opt In
eurex_cash_eti_t7_v12_0.trade_at_close_opt_in.size = 1

-- Display: Trade At Close Opt In
eurex_cash_eti_t7_v12_0.trade_at_close_opt_in.display = function(value)
  if value == 0 then
    return "Trade At Close Opt In: No (0)"
  end
  if value == 1 then
    return "Trade At Close Opt In: Yes (1)"
  end
  if value == 0xFF then
    return "Trade At Close Opt In: No Value"
  end

  return "Trade At Close Opt In: Unknown("..value..")"
end

-- Dissect: Trade At Close Opt In
eurex_cash_eti_t7_v12_0.trade_at_close_opt_in.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trade_at_close_opt_in.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trade_at_close_opt_in.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trade_at_close_opt_in, range, value, display)

  return offset + length, value
end

-- Peg Offset Value Pct
eurex_cash_eti_t7_v12_0.peg_offset_value_pct = {}

-- Size: Peg Offset Value Pct
eurex_cash_eti_t7_v12_0.peg_offset_value_pct.size = 8

-- Display: Peg Offset Value Pct
eurex_cash_eti_t7_v12_0.peg_offset_value_pct.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Peg Offset Value Pct: No Value"
  end

  return "Peg Offset Value Pct: "..value
end

-- Translate: Peg Offset Value Pct
eurex_cash_eti_t7_v12_0.peg_offset_value_pct.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Peg Offset Value Pct
eurex_cash_eti_t7_v12_0.peg_offset_value_pct.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.peg_offset_value_pct.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.peg_offset_value_pct.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.peg_offset_value_pct.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.peg_offset_value_pct, range, value, display)

  return offset + length, value
end

-- Peg Offset Value Abs
eurex_cash_eti_t7_v12_0.peg_offset_value_abs = {}

-- Size: Peg Offset Value Abs
eurex_cash_eti_t7_v12_0.peg_offset_value_abs.size = 8

-- Display: Peg Offset Value Abs
eurex_cash_eti_t7_v12_0.peg_offset_value_abs.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Peg Offset Value Abs: No Value"
  end

  return "Peg Offset Value Abs: "..value
end

-- Translate: Peg Offset Value Abs
eurex_cash_eti_t7_v12_0.peg_offset_value_abs.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Peg Offset Value Abs
eurex_cash_eti_t7_v12_0.peg_offset_value_abs.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.peg_offset_value_abs.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.peg_offset_value_abs.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.peg_offset_value_abs.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.peg_offset_value_abs, range, value, display)

  return offset + length, value
end

-- Display High Qty
eurex_cash_eti_t7_v12_0.display_high_qty = {}

-- Size: Display High Qty
eurex_cash_eti_t7_v12_0.display_high_qty.size = 8

-- Display: Display High Qty
eurex_cash_eti_t7_v12_0.display_high_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Display High Qty: No Value"
  end

  return "Display High Qty: "..value
end

-- Translate: Display High Qty
eurex_cash_eti_t7_v12_0.display_high_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Display High Qty
eurex_cash_eti_t7_v12_0.display_high_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.display_high_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.display_high_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.display_high_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.display_high_qty, range, value, display)

  return offset + length, value
end

-- Display Low Qty
eurex_cash_eti_t7_v12_0.display_low_qty = {}

-- Size: Display Low Qty
eurex_cash_eti_t7_v12_0.display_low_qty.size = 8

-- Display: Display Low Qty
eurex_cash_eti_t7_v12_0.display_low_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Display Low Qty: No Value"
  end

  return "Display Low Qty: "..value
end

-- Translate: Display Low Qty
eurex_cash_eti_t7_v12_0.display_low_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Display Low Qty
eurex_cash_eti_t7_v12_0.display_low_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.display_low_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.display_low_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.display_low_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.display_low_qty, range, value, display)

  return offset + length, value
end

-- Order Exec Report Broadcast
eurex_cash_eti_t7_v12_0.order_exec_report_broadcast = {}

-- Read runtime size of: Order Exec Report Broadcast
eurex_cash_eti_t7_v12_0.order_exec_report_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Order Exec Report Broadcast
eurex_cash_eti_t7_v12_0.order_exec_report_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Order Exec Report Broadcast
eurex_cash_eti_t7_v12_0.order_exec_report_broadcast.fields = function(buffer, offset, packet, parent, size_of_order_exec_report_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Entry Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_entry_time = eurex_cash_eti_t7_v12_0.trd_reg_ts_entry_time.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Time Priority: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_time_priority = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_priority.dissect(buffer, index, packet, parent)

  -- Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, price = eurex_cash_eti_t7_v12_0.price.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Cum Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cum_qty = eurex_cash_eti_t7_v12_0.cum_qty.dissect(buffer, index, packet, parent)

  -- Cxl Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_qty = eurex_cash_eti_t7_v12_0.cxl_qty.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Display Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_qty = eurex_cash_eti_t7_v12_0.display_qty.dissect(buffer, index, packet, parent)

  -- Display Low Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_low_qty = eurex_cash_eti_t7_v12_0.display_low_qty.dissect(buffer, index, packet, parent)

  -- Display High Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_high_qty = eurex_cash_eti_t7_v12_0.display_high_qty.dissect(buffer, index, packet, parent)

  -- Stop Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, stop_px = eurex_cash_eti_t7_v12_0.stop_px.dissect(buffer, index, packet, parent)

  -- Peg Offset Value Abs: 8 Byte Unsigned Fixed Width Integer Nullable
  index, peg_offset_value_abs = eurex_cash_eti_t7_v12_0.peg_offset_value_abs.dissect(buffer, index, packet, parent)

  -- Peg Offset Value Pct: 8 Byte Unsigned Fixed Width Integer Nullable
  index, peg_offset_value_pct = eurex_cash_eti_t7_v12_0.peg_offset_value_pct.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Expire Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, expire_date = eurex_cash_eti_t7_v12_0.expire_date.dissect(buffer, index, packet, parent)

  -- Match Inst Cross Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, match_inst_cross_id = eurex_cash_eti_t7_v12_0.match_inst_cross_id.dissect(buffer, index, packet, parent)

  -- Party Id Executing Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_executing_unit = eurex_cash_eti_t7_v12_0.party_id_executing_unit.dissect(buffer, index, packet, parent)

  -- Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_session_id = eurex_cash_eti_t7_v12_0.party_id_session_id.dissect(buffer, index, packet, parent)

  -- Party Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_executing_trader = eurex_cash_eti_t7_v12_0.party_id_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Id Entering Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_entering_trader = eurex_cash_eti_t7_v12_0.party_id_entering_trader.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Party Id Entering Firm: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_entering_firm = eurex_cash_eti_t7_v12_0.party_id_entering_firm.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Order Event Type: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_event_type = eurex_cash_eti_t7_v12_0.order_event_type.dissect(buffer, index, packet, parent)

  -- Match Type: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, match_type = eurex_cash_eti_t7_v12_0.match_type.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Ord Type: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, ord_type = eurex_cash_eti_t7_v12_0.ord_type.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Time In Force: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, time_in_force = eurex_cash_eti_t7_v12_0.time_in_force.dissect(buffer, index, packet, parent)

  -- Exec Inst: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, exec_inst = eurex_cash_eti_t7_v12_0.exec_inst.dissect(buffer, index, packet, parent)

  -- Trading Session Sub Id: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trading_session_sub_id = eurex_cash_eti_t7_v12_0.trading_session_sub_id.dissect(buffer, index, packet, parent)

  -- Appl Seq Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, appl_seq_indicator = eurex_cash_eti_t7_v12_0.appl_seq_indicator.dissect(buffer, index, packet, parent)

  -- Party Entering Firm: 5 Byte Ascii String Nullable
  index, party_entering_firm = eurex_cash_eti_t7_v12_0.party_entering_firm.dissect(buffer, index, packet, parent)

  -- Party Entering Trader: 6 Byte Ascii String Nullable
  index, party_entering_trader = eurex_cash_eti_t7_v12_0.party_entering_trader.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Fix Cl Ord Id: 20 Byte Ascii String Nullable
  index, fix_cl_ord_id = eurex_cash_eti_t7_v12_0.fix_cl_ord_id.dissect(buffer, index, packet, parent)

  -- No Fills: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_fills = eurex_cash_eti_t7_v12_0.no_fills.dissect(buffer, index, packet, parent)

  -- No Order Events: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_order_events = eurex_cash_eti_t7_v12_0.no_order_events.dissect(buffer, index, packet, parent)

  -- Triggered: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, triggered = eurex_cash_eti_t7_v12_0.triggered.dissect(buffer, index, packet, parent)

  -- Crossed Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, crossed_indicator = eurex_cash_eti_t7_v12_0.crossed_indicator.dissect(buffer, index, packet, parent)

  -- Trade At Close Opt In: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, trade_at_close_opt_in = eurex_cash_eti_t7_v12_0.trade_at_close_opt_in.dissect(buffer, index, packet, parent)

  -- Bbo Setting: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, bbo_setting = eurex_cash_eti_t7_v12_0.bbo_setting.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Repeating: Fills Grp Comp
  for fills_grp_comp_index = 1, no_fills do
    index, fills_grp_comp = eurex_cash_eti_t7_v12_0.fills_grp_comp.dissect(buffer, index, packet, parent, fills_grp_comp_index)
  end

  -- Repeating: Order Event Grp Comp
  for order_event_grp_comp_index = 1, no_order_events do
    index, order_event_grp_comp = eurex_cash_eti_t7_v12_0.order_event_grp_comp.dissect(buffer, index, packet, parent, order_event_grp_comp_index)
  end

  return index
end

-- Dissect: Order Exec Report Broadcast
eurex_cash_eti_t7_v12_0.order_exec_report_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_order_exec_report_broadcast = eurex_cash_eti_t7_v12_0.order_exec_report_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.order_exec_report_broadcast then
    local range = buffer(offset, size_of_order_exec_report_broadcast)
    local display = eurex_cash_eti_t7_v12_0.order_exec_report_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_exec_report_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.order_exec_report_broadcast.fields(buffer, offset, packet, parent, size_of_order_exec_report_broadcast)

  return offset + size_of_order_exec_report_broadcast
end

-- Order Exec Notification
eurex_cash_eti_t7_v12_0.order_exec_notification = {}

-- Read runtime size of: Order Exec Notification
eurex_cash_eti_t7_v12_0.order_exec_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Order Exec Notification
eurex_cash_eti_t7_v12_0.order_exec_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Order Exec Notification
eurex_cash_eti_t7_v12_0.order_exec_notification.fields = function(buffer, offset, packet, parent, size_of_order_exec_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Cum Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cum_qty = eurex_cash_eti_t7_v12_0.cum_qty.dissect(buffer, index, packet, parent)

  -- Cxl Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_qty = eurex_cash_eti_t7_v12_0.cxl_qty.dissect(buffer, index, packet, parent)

  -- Display Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_qty = eurex_cash_eti_t7_v12_0.display_qty.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Order Event Type: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_event_type = eurex_cash_eti_t7_v12_0.order_event_type.dissect(buffer, index, packet, parent)

  -- Match Type: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, match_type = eurex_cash_eti_t7_v12_0.match_type.dissect(buffer, index, packet, parent)

  -- Triggered: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, triggered = eurex_cash_eti_t7_v12_0.triggered.dissect(buffer, index, packet, parent)

  -- Crossed Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, crossed_indicator = eurex_cash_eti_t7_v12_0.crossed_indicator.dissect(buffer, index, packet, parent)

  -- Bbo Setting: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, bbo_setting = eurex_cash_eti_t7_v12_0.bbo_setting.dissect(buffer, index, packet, parent)

  -- Fix Cl Ord Id: 20 Byte Ascii String Nullable
  index, fix_cl_ord_id = eurex_cash_eti_t7_v12_0.fix_cl_ord_id.dissect(buffer, index, packet, parent)

  -- No Fills: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_fills = eurex_cash_eti_t7_v12_0.no_fills.dissect(buffer, index, packet, parent)

  -- No Order Events: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_order_events = eurex_cash_eti_t7_v12_0.no_order_events.dissect(buffer, index, packet, parent)

  -- Repeating: Fills Grp Comp
  for fills_grp_comp_index = 1, no_fills do
    index, fills_grp_comp = eurex_cash_eti_t7_v12_0.fills_grp_comp.dissect(buffer, index, packet, parent, fills_grp_comp_index)
  end

  -- Repeating: Order Event Grp Comp
  for order_event_grp_comp_index = 1, no_order_events do
    index, order_event_grp_comp = eurex_cash_eti_t7_v12_0.order_event_grp_comp.dissect(buffer, index, packet, parent, order_event_grp_comp_index)
  end

  return index
end

-- Dissect: Order Exec Notification
eurex_cash_eti_t7_v12_0.order_exec_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_order_exec_notification = eurex_cash_eti_t7_v12_0.order_exec_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.order_exec_notification then
    local range = buffer(offset, size_of_order_exec_notification)
    local display = eurex_cash_eti_t7_v12_0.order_exec_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_exec_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.order_exec_notification.fields(buffer, offset, packet, parent, size_of_order_exec_notification)

  return offset + size_of_order_exec_notification
end

-- Headline
eurex_cash_eti_t7_v12_0.headline = {}

-- Size: Headline
eurex_cash_eti_t7_v12_0.headline.size = 256

-- Display: Headline
eurex_cash_eti_t7_v12_0.headline.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Headline: No Value"
  end

  return "Headline: "..value
end

-- Dissect: Headline
eurex_cash_eti_t7_v12_0.headline.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.headline.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.headline.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.headline, range, value, display)

  return offset + length, value
end

-- Orig Time
eurex_cash_eti_t7_v12_0.orig_time = {}

-- Size: Orig Time
eurex_cash_eti_t7_v12_0.orig_time.size = 8

-- Display: Orig Time
eurex_cash_eti_t7_v12_0.orig_time.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Orig Time: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Orig Time: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Orig Time
eurex_cash_eti_t7_v12_0.orig_time.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.orig_time.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.orig_time.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.orig_time, range, value, display)

  return offset + length, value
end

-- News Broadcast
eurex_cash_eti_t7_v12_0.news_broadcast = {}

-- Read runtime size of: News Broadcast
eurex_cash_eti_t7_v12_0.news_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: News Broadcast
eurex_cash_eti_t7_v12_0.news_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: News Broadcast
eurex_cash_eti_t7_v12_0.news_broadcast.fields = function(buffer, offset, packet, parent, size_of_news_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Orig Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_time = eurex_cash_eti_t7_v12_0.orig_time.dissect(buffer, index, packet, parent)

  -- Var Text Len: 2 Byte Unsigned Fixed Width Integer Nullable
  index, var_text_len = eurex_cash_eti_t7_v12_0.var_text_len.dissect(buffer, index, packet, parent)

  -- Headline: 256 Byte Ascii String Nullable
  index, headline = eurex_cash_eti_t7_v12_0.headline.dissect(buffer, index, packet, parent)

  -- Runtime Size Of: Var Text
  index, var_text = eurex_cash_eti_t7_v12_0.var_text.dissect(buffer, index, packet, parent, var_text_len)

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  -- Runtime optional field: Alignment Padding
  local alignment_padding = nil

  local alignment_padding_exists = body_len ~= index

  if alignment_padding_exists then

    -- Runtime Size Of: Alignment Padding
    local size_of_alignment_padding = body_len - index

    -- Alignment Padding: 0 Byte
    index, alignment_padding = eurex_cash_eti_t7_v12_0.alignment_padding.dissect(buffer, index, packet, parent, size_of_alignment_padding)
  end

  return index
end

-- Dissect: News Broadcast
eurex_cash_eti_t7_v12_0.news_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_news_broadcast = eurex_cash_eti_t7_v12_0.news_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.news_broadcast then
    local range = buffer(offset, size_of_news_broadcast)
    local display = eurex_cash_eti_t7_v12_0.news_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.news_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.news_broadcast.fields(buffer, offset, packet, parent, size_of_news_broadcast)

  return offset + size_of_news_broadcast
end

-- Enrichment Rule Id
eurex_cash_eti_t7_v12_0.enrichment_rule_id = {}

-- Size: Enrichment Rule Id
eurex_cash_eti_t7_v12_0.enrichment_rule_id.size = 2

-- Display: Enrichment Rule Id
eurex_cash_eti_t7_v12_0.enrichment_rule_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFF then
    return "Enrichment Rule Id: No Value"
  end

  return "Enrichment Rule Id: "..value
end

-- Dissect: Enrichment Rule Id
eurex_cash_eti_t7_v12_0.enrichment_rule_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.enrichment_rule_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.enrichment_rule_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.enrichment_rule_id, range, value, display)

  return offset + length, value
end

-- New Order Single Short Request
eurex_cash_eti_t7_v12_0.new_order_single_short_request = {}

-- Read runtime size of: New Order Single Short Request
eurex_cash_eti_t7_v12_0.new_order_single_short_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: New Order Single Short Request
eurex_cash_eti_t7_v12_0.new_order_single_short_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: New Order Single Short Request
eurex_cash_eti_t7_v12_0.new_order_single_short_request.fields = function(buffer, offset, packet, parent, size_of_new_order_single_short_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, price = eurex_cash_eti_t7_v12_0.price.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_client_id = eurex_cash_eti_t7_v12_0.party_id_client_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Match Inst Cross Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, match_inst_cross_id = eurex_cash_eti_t7_v12_0.match_inst_cross_id.dissect(buffer, index, packet, parent)

  -- Enrichment Rule Id: 2 Byte Unsigned Fixed Width Integer Nullable
  index, enrichment_rule_id = eurex_cash_eti_t7_v12_0.enrichment_rule_id.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Appl Seq Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, appl_seq_indicator = eurex_cash_eti_t7_v12_0.appl_seq_indicator.dissect(buffer, index, packet, parent)

  -- Price Validity Check Type: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, price_validity_check_type = eurex_cash_eti_t7_v12_0.price_validity_check_type.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Time In Force: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, time_in_force = eurex_cash_eti_t7_v12_0.time_in_force.dissect(buffer, index, packet, parent)

  -- Exec Inst: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, exec_inst = eurex_cash_eti_t7_v12_0.exec_inst.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: New Order Single Short Request
eurex_cash_eti_t7_v12_0.new_order_single_short_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_new_order_single_short_request = eurex_cash_eti_t7_v12_0.new_order_single_short_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.new_order_single_short_request then
    local range = buffer(offset, size_of_new_order_single_short_request)
    local display = eurex_cash_eti_t7_v12_0.new_order_single_short_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.new_order_single_short_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.new_order_single_short_request.fields(buffer, offset, packet, parent, size_of_new_order_single_short_request)

  return offset + size_of_new_order_single_short_request
end

-- New Order Single Request
eurex_cash_eti_t7_v12_0.new_order_single_request = {}

-- Read runtime size of: New Order Single Request
eurex_cash_eti_t7_v12_0.new_order_single_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: New Order Single Request
eurex_cash_eti_t7_v12_0.new_order_single_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: New Order Single Request
eurex_cash_eti_t7_v12_0.new_order_single_request.fields = function(buffer, offset, packet, parent, size_of_new_order_single_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, price = eurex_cash_eti_t7_v12_0.price.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Display Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_qty = eurex_cash_eti_t7_v12_0.display_qty.dissect(buffer, index, packet, parent)

  -- Display Low Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_low_qty = eurex_cash_eti_t7_v12_0.display_low_qty.dissect(buffer, index, packet, parent)

  -- Display High Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_high_qty = eurex_cash_eti_t7_v12_0.display_high_qty.dissect(buffer, index, packet, parent)

  -- Stop Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, stop_px = eurex_cash_eti_t7_v12_0.stop_px.dissect(buffer, index, packet, parent)

  -- Peg Offset Value Abs: 8 Byte Unsigned Fixed Width Integer Nullable
  index, peg_offset_value_abs = eurex_cash_eti_t7_v12_0.peg_offset_value_abs.dissect(buffer, index, packet, parent)

  -- Peg Offset Value Pct: 8 Byte Unsigned Fixed Width Integer Nullable
  index, peg_offset_value_pct = eurex_cash_eti_t7_v12_0.peg_offset_value_pct.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_client_id = eurex_cash_eti_t7_v12_0.party_id_client_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Expire Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, expire_date = eurex_cash_eti_t7_v12_0.expire_date.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Target Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_session_id = eurex_cash_eti_t7_v12_0.target_party_id_session_id.dissect(buffer, index, packet, parent)

  -- Match Inst Cross Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, match_inst_cross_id = eurex_cash_eti_t7_v12_0.match_inst_cross_id.dissect(buffer, index, packet, parent)

  -- Appl Seq Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, appl_seq_indicator = eurex_cash_eti_t7_v12_0.appl_seq_indicator.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Ord Type: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, ord_type = eurex_cash_eti_t7_v12_0.ord_type.dissect(buffer, index, packet, parent)

  -- Price Validity Check Type: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, price_validity_check_type = eurex_cash_eti_t7_v12_0.price_validity_check_type.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Time In Force: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, time_in_force = eurex_cash_eti_t7_v12_0.time_in_force.dissect(buffer, index, packet, parent)

  -- Exec Inst: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, exec_inst = eurex_cash_eti_t7_v12_0.exec_inst.dissect(buffer, index, packet, parent)

  -- Trading Session Sub Id: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trading_session_sub_id = eurex_cash_eti_t7_v12_0.trading_session_sub_id.dissect(buffer, index, packet, parent)

  -- Trade At Close Opt In: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, trade_at_close_opt_in = eurex_cash_eti_t7_v12_0.trade_at_close_opt_in.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Fix Cl Ord Id: 20 Byte Ascii String Nullable
  index, fix_cl_ord_id = eurex_cash_eti_t7_v12_0.fix_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: New Order Single Request
eurex_cash_eti_t7_v12_0.new_order_single_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_new_order_single_request = eurex_cash_eti_t7_v12_0.new_order_single_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.new_order_single_request then
    local range = buffer(offset, size_of_new_order_single_request)
    local display = eurex_cash_eti_t7_v12_0.new_order_single_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.new_order_single_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.new_order_single_request.fields(buffer, offset, packet, parent, size_of_new_order_single_request)

  return offset + size_of_new_order_single_request
end

-- New Order Response
eurex_cash_eti_t7_v12_0.new_order_response = {}

-- Read runtime size of: New Order Response
eurex_cash_eti_t7_v12_0.new_order_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: New Order Response
eurex_cash_eti_t7_v12_0.new_order_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: New Order Response
eurex_cash_eti_t7_v12_0.new_order_response.fields = function(buffer, offset, packet, parent, size_of_new_order_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Me Comp: Struct of 10 fields
  index, response_header_me_comp = eurex_cash_eti_t7_v12_0.response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Cxl Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_qty = eurex_cash_eti_t7_v12_0.cxl_qty.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Entry Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_entry_time = eurex_cash_eti_t7_v12_0.trd_reg_ts_entry_time.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Time Priority: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_time_priority = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_priority.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Crossed Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, crossed_indicator = eurex_cash_eti_t7_v12_0.crossed_indicator.dissect(buffer, index, packet, parent)

  -- Triggered: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, triggered = eurex_cash_eti_t7_v12_0.triggered.dissect(buffer, index, packet, parent)

  -- Transaction Delay Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, transaction_delay_indicator = eurex_cash_eti_t7_v12_0.transaction_delay_indicator.dissect(buffer, index, packet, parent)

  -- Bbo Setting: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, bbo_setting = eurex_cash_eti_t7_v12_0.bbo_setting.dissect(buffer, index, packet, parent)

  -- No Order Events: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_order_events = eurex_cash_eti_t7_v12_0.no_order_events.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  -- Repeating: Order Event Grp Comp
  for order_event_grp_comp_index = 1, no_order_events do
    index, order_event_grp_comp = eurex_cash_eti_t7_v12_0.order_event_grp_comp.dissect(buffer, index, packet, parent, order_event_grp_comp_index)
  end

  return index
end

-- Dissect: New Order Response
eurex_cash_eti_t7_v12_0.new_order_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_new_order_response = eurex_cash_eti_t7_v12_0.new_order_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.new_order_response then
    local range = buffer(offset, size_of_new_order_response)
    local display = eurex_cash_eti_t7_v12_0.new_order_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.new_order_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.new_order_response.fields(buffer, offset, packet, parent, size_of_new_order_response)

  return offset + size_of_new_order_response
end

-- New Order Nr Response
eurex_cash_eti_t7_v12_0.new_order_nr_response = {}

-- Read runtime size of: New Order Nr Response
eurex_cash_eti_t7_v12_0.new_order_nr_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: New Order Nr Response
eurex_cash_eti_t7_v12_0.new_order_nr_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: New Order Nr Response
eurex_cash_eti_t7_v12_0.new_order_nr_response.fields = function(buffer, offset, packet, parent, size_of_new_order_nr_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Cxl Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_qty = eurex_cash_eti_t7_v12_0.cxl_qty.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Crossed Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, crossed_indicator = eurex_cash_eti_t7_v12_0.crossed_indicator.dissect(buffer, index, packet, parent)

  -- Triggered: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, triggered = eurex_cash_eti_t7_v12_0.triggered.dissect(buffer, index, packet, parent)

  -- Transaction Delay Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, transaction_delay_indicator = eurex_cash_eti_t7_v12_0.transaction_delay_indicator.dissect(buffer, index, packet, parent)

  -- Bbo Setting: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, bbo_setting = eurex_cash_eti_t7_v12_0.bbo_setting.dissect(buffer, index, packet, parent)

  -- No Order Events: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_order_events = eurex_cash_eti_t7_v12_0.no_order_events.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  -- Repeating: Order Event Grp Comp
  for order_event_grp_comp_index = 1, no_order_events do
    index, order_event_grp_comp = eurex_cash_eti_t7_v12_0.order_event_grp_comp.dissect(buffer, index, packet, parent, order_event_grp_comp_index)
  end

  return index
end

-- Dissect: New Order Nr Response
eurex_cash_eti_t7_v12_0.new_order_nr_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_new_order_nr_response = eurex_cash_eti_t7_v12_0.new_order_nr_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.new_order_nr_response then
    local range = buffer(offset, size_of_new_order_nr_response)
    local display = eurex_cash_eti_t7_v12_0.new_order_nr_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.new_order_nr_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.new_order_nr_response.fields(buffer, offset, packet, parent, size_of_new_order_nr_response)

  return offset + size_of_new_order_nr_response
end

-- Side Alloc Grp Comp
eurex_cash_eti_t7_v12_0.side_alloc_grp_comp = {}

-- Size: Side Alloc Grp Comp
eurex_cash_eti_t7_v12_0.side_alloc_grp_comp.size =
  eurex_cash_eti_t7_v12_0.alloc_qty.size + 
  eurex_cash_eti_t7_v12_0.individual_alloc_id.size + 
  eurex_cash_eti_t7_v12_0.tes_enrichment_rule_id.size + 
  eurex_cash_eti_t7_v12_0.side.size + 
  eurex_cash_eti_t7_v12_0.party_executing_firm.size + 
  eurex_cash_eti_t7_v12_0.party_executing_trader.size + 
  eurex_cash_eti_t7_v12_0.pad_4.size

-- Display: Side Alloc Grp Comp
eurex_cash_eti_t7_v12_0.side_alloc_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Side Alloc Grp Comp
eurex_cash_eti_t7_v12_0.side_alloc_grp_comp.fields = function(buffer, offset, packet, parent, side_alloc_grp_comp_index)
  local index = offset

  -- Implicit Side Alloc Grp Comp Index
  if side_alloc_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.side_alloc_grp_comp_index, side_alloc_grp_comp_index)
    iteration:set_generated()
  end

  -- Alloc Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, alloc_qty = eurex_cash_eti_t7_v12_0.alloc_qty.dissect(buffer, index, packet, parent)

  -- Individual Alloc Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, individual_alloc_id = eurex_cash_eti_t7_v12_0.individual_alloc_id.dissect(buffer, index, packet, parent)

  -- Tes Enrichment Rule Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, tes_enrichment_rule_id = eurex_cash_eti_t7_v12_0.tes_enrichment_rule_id.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Side Alloc Grp Comp
eurex_cash_eti_t7_v12_0.side_alloc_grp_comp.dissect = function(buffer, offset, packet, parent, side_alloc_grp_comp_index)
  if show.side_alloc_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.side_alloc_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.side_alloc_grp_comp.fields(buffer, offset, packet, parent, side_alloc_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.side_alloc_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.side_alloc_grp_comp.fields(buffer, offset, packet, parent, side_alloc_grp_comp_index)
  end
end

-- Modify Tes Trade Request
eurex_cash_eti_t7_v12_0.modify_tes_trade_request = {}

-- Read runtime size of: Modify Tes Trade Request
eurex_cash_eti_t7_v12_0.modify_tes_trade_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Modify Tes Trade Request
eurex_cash_eti_t7_v12_0.modify_tes_trade_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Modify Tes Trade Request
eurex_cash_eti_t7_v12_0.modify_tes_trade_request.fields = function(buffer, offset, packet, parent, size_of_modify_tes_trade_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Last Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_px = eurex_cash_eti_t7_v12_0.last_px.dissect(buffer, index, packet, parent)

  -- Trans Bkd Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trans_bkd_time = eurex_cash_eti_t7_v12_0.trans_bkd_time.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Package Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, package_id = eurex_cash_eti_t7_v12_0.package_id.dissect(buffer, index, packet, parent)

  -- Tes Exec Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, tes_exec_id = eurex_cash_eti_t7_v12_0.tes_exec_id.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Trd Type: 2 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, trd_type = eurex_cash_eti_t7_v12_0.trd_type.dissect(buffer, index, packet, parent)

  -- Trade Report Type: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, trade_report_type = eurex_cash_eti_t7_v12_0.trade_report_type.dissect(buffer, index, packet, parent)

  -- Trade Publish Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, trade_publish_indicator = eurex_cash_eti_t7_v12_0.trade_publish_indicator.dissect(buffer, index, packet, parent)

  -- No Side Allocs: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_side_allocs = eurex_cash_eti_t7_v12_0.no_side_allocs.dissect(buffer, index, packet, parent)

  -- Trade Report Text: 20 Byte Ascii String Nullable
  index, trade_report_text = eurex_cash_eti_t7_v12_0.trade_report_text.dissect(buffer, index, packet, parent)

  -- Trade Report Id: 20 Byte Ascii String Nullable
  index, trade_report_id = eurex_cash_eti_t7_v12_0.trade_report_id.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  -- Repeating: Side Alloc Grp Comp
  for side_alloc_grp_comp_index = 1, no_side_allocs do
    index, side_alloc_grp_comp = eurex_cash_eti_t7_v12_0.side_alloc_grp_comp.dissect(buffer, index, packet, parent, side_alloc_grp_comp_index)
  end

  return index
end

-- Dissect: Modify Tes Trade Request
eurex_cash_eti_t7_v12_0.modify_tes_trade_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_modify_tes_trade_request = eurex_cash_eti_t7_v12_0.modify_tes_trade_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.modify_tes_trade_request then
    local range = buffer(offset, size_of_modify_tes_trade_request)
    local display = eurex_cash_eti_t7_v12_0.modify_tes_trade_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.modify_tes_trade_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.modify_tes_trade_request.fields(buffer, offset, packet, parent, size_of_modify_tes_trade_request)

  return offset + size_of_modify_tes_trade_request
end

-- Modify Order Single Short Request
eurex_cash_eti_t7_v12_0.modify_order_single_short_request = {}

-- Read runtime size of: Modify Order Single Short Request
eurex_cash_eti_t7_v12_0.modify_order_single_short_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Modify Order Single Short Request
eurex_cash_eti_t7_v12_0.modify_order_single_short_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Modify Order Single Short Request
eurex_cash_eti_t7_v12_0.modify_order_single_short_request.fields = function(buffer, offset, packet, parent, size_of_modify_order_single_short_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, price = eurex_cash_eti_t7_v12_0.price.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_client_id = eurex_cash_eti_t7_v12_0.party_id_client_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Match Inst Cross Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, match_inst_cross_id = eurex_cash_eti_t7_v12_0.match_inst_cross_id.dissect(buffer, index, packet, parent)

  -- Enrichment Rule Id: 2 Byte Unsigned Fixed Width Integer Nullable
  index, enrichment_rule_id = eurex_cash_eti_t7_v12_0.enrichment_rule_id.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Price Validity Check Type: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, price_validity_check_type = eurex_cash_eti_t7_v12_0.price_validity_check_type.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Time In Force: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, time_in_force = eurex_cash_eti_t7_v12_0.time_in_force.dissect(buffer, index, packet, parent)

  -- Appl Seq Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, appl_seq_indicator = eurex_cash_eti_t7_v12_0.appl_seq_indicator.dissect(buffer, index, packet, parent)

  -- Exec Inst: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, exec_inst = eurex_cash_eti_t7_v12_0.exec_inst.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Modify Order Single Short Request
eurex_cash_eti_t7_v12_0.modify_order_single_short_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_modify_order_single_short_request = eurex_cash_eti_t7_v12_0.modify_order_single_short_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.modify_order_single_short_request then
    local range = buffer(offset, size_of_modify_order_single_short_request)
    local display = eurex_cash_eti_t7_v12_0.modify_order_single_short_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.modify_order_single_short_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.modify_order_single_short_request.fields(buffer, offset, packet, parent, size_of_modify_order_single_short_request)

  return offset + size_of_modify_order_single_short_request
end

-- Ownership Indicator
eurex_cash_eti_t7_v12_0.ownership_indicator = {}

-- Size: Ownership Indicator
eurex_cash_eti_t7_v12_0.ownership_indicator.size = 1

-- Display: Ownership Indicator
eurex_cash_eti_t7_v12_0.ownership_indicator.display = function(value)
  if value == 0 then
    return "Ownership Indicator: No Changeof Ownership (0)"
  end
  if value == 1 then
    return "Ownership Indicator: Changeto Executing Trader (1)"
  end
  if value == 0xFF then
    return "Ownership Indicator: No Value"
  end

  return "Ownership Indicator: Unknown("..value..")"
end

-- Dissect: Ownership Indicator
eurex_cash_eti_t7_v12_0.ownership_indicator.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.ownership_indicator.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.ownership_indicator.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.ownership_indicator, range, value, display)

  return offset + length, value
end

-- Stop Px Indicator
eurex_cash_eti_t7_v12_0.stop_px_indicator = {}

-- Size: Stop Px Indicator
eurex_cash_eti_t7_v12_0.stop_px_indicator.size = 1

-- Display: Stop Px Indicator
eurex_cash_eti_t7_v12_0.stop_px_indicator.display = function(value)
  if value == 0 then
    return "Stop Px Indicator: Donotoverwrite (0)"
  end
  if value == 1 then
    return "Stop Px Indicator: Overwrite (1)"
  end
  if value == 0xFF then
    return "Stop Px Indicator: No Value"
  end

  return "Stop Px Indicator: Unknown("..value..")"
end

-- Dissect: Stop Px Indicator
eurex_cash_eti_t7_v12_0.stop_px_indicator.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.stop_px_indicator.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.stop_px_indicator.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.stop_px_indicator, range, value, display)

  return offset + length, value
end

-- Modify Order Single Request
eurex_cash_eti_t7_v12_0.modify_order_single_request = {}

-- Read runtime size of: Modify Order Single Request
eurex_cash_eti_t7_v12_0.modify_order_single_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Modify Order Single Request
eurex_cash_eti_t7_v12_0.modify_order_single_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Modify Order Single Request
eurex_cash_eti_t7_v12_0.modify_order_single_request.fields = function(buffer, offset, packet, parent, size_of_modify_order_single_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, price = eurex_cash_eti_t7_v12_0.price.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Display Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_qty = eurex_cash_eti_t7_v12_0.display_qty.dissect(buffer, index, packet, parent)

  -- Display Low Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_low_qty = eurex_cash_eti_t7_v12_0.display_low_qty.dissect(buffer, index, packet, parent)

  -- Display High Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_high_qty = eurex_cash_eti_t7_v12_0.display_high_qty.dissect(buffer, index, packet, parent)

  -- Stop Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, stop_px = eurex_cash_eti_t7_v12_0.stop_px.dissect(buffer, index, packet, parent)

  -- Peg Offset Value Abs: 8 Byte Unsigned Fixed Width Integer Nullable
  index, peg_offset_value_abs = eurex_cash_eti_t7_v12_0.peg_offset_value_abs.dissect(buffer, index, packet, parent)

  -- Peg Offset Value Pct: 8 Byte Unsigned Fixed Width Integer Nullable
  index, peg_offset_value_pct = eurex_cash_eti_t7_v12_0.peg_offset_value_pct.dissect(buffer, index, packet, parent)

  -- Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_client_id = eurex_cash_eti_t7_v12_0.party_id_client_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Expire Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, expire_date = eurex_cash_eti_t7_v12_0.expire_date.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Match Inst Cross Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, match_inst_cross_id = eurex_cash_eti_t7_v12_0.match_inst_cross_id.dissect(buffer, index, packet, parent)

  -- Target Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_session_id = eurex_cash_eti_t7_v12_0.target_party_id_session_id.dissect(buffer, index, packet, parent)

  -- Appl Seq Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, appl_seq_indicator = eurex_cash_eti_t7_v12_0.appl_seq_indicator.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Ord Type: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, ord_type = eurex_cash_eti_t7_v12_0.ord_type.dissect(buffer, index, packet, parent)

  -- Price Validity Check Type: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, price_validity_check_type = eurex_cash_eti_t7_v12_0.price_validity_check_type.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Time In Force: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, time_in_force = eurex_cash_eti_t7_v12_0.time_in_force.dissect(buffer, index, packet, parent)

  -- Exec Inst: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, exec_inst = eurex_cash_eti_t7_v12_0.exec_inst.dissect(buffer, index, packet, parent)

  -- Trading Session Sub Id: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trading_session_sub_id = eurex_cash_eti_t7_v12_0.trading_session_sub_id.dissect(buffer, index, packet, parent)

  -- Stop Px Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, stop_px_indicator = eurex_cash_eti_t7_v12_0.stop_px_indicator.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Ownership Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, ownership_indicator = eurex_cash_eti_t7_v12_0.ownership_indicator.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Fix Cl Ord Id: 20 Byte Ascii String Nullable
  index, fix_cl_ord_id = eurex_cash_eti_t7_v12_0.fix_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Pad 1: 1 Byte
  index, pad_1 = eurex_cash_eti_t7_v12_0.pad_1.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Modify Order Single Request
eurex_cash_eti_t7_v12_0.modify_order_single_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_modify_order_single_request = eurex_cash_eti_t7_v12_0.modify_order_single_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.modify_order_single_request then
    local range = buffer(offset, size_of_modify_order_single_request)
    local display = eurex_cash_eti_t7_v12_0.modify_order_single_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.modify_order_single_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.modify_order_single_request.fields(buffer, offset, packet, parent, size_of_modify_order_single_request)

  return offset + size_of_modify_order_single_request
end

-- Modify Order Response
eurex_cash_eti_t7_v12_0.modify_order_response = {}

-- Read runtime size of: Modify Order Response
eurex_cash_eti_t7_v12_0.modify_order_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Modify Order Response
eurex_cash_eti_t7_v12_0.modify_order_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Modify Order Response
eurex_cash_eti_t7_v12_0.modify_order_response.fields = function(buffer, offset, packet, parent, size_of_modify_order_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Me Comp: Struct of 10 fields
  index, response_header_me_comp = eurex_cash_eti_t7_v12_0.response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Stop Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, stop_px = eurex_cash_eti_t7_v12_0.stop_px.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Cum Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cum_qty = eurex_cash_eti_t7_v12_0.cum_qty.dissect(buffer, index, packet, parent)

  -- Cxl Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_qty = eurex_cash_eti_t7_v12_0.cxl_qty.dissect(buffer, index, packet, parent)

  -- Display Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_qty = eurex_cash_eti_t7_v12_0.display_qty.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Time Priority: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_time_priority = eurex_cash_eti_t7_v12_0.trd_reg_ts_time_priority.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Crossed Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, crossed_indicator = eurex_cash_eti_t7_v12_0.crossed_indicator.dissect(buffer, index, packet, parent)

  -- Triggered: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, triggered = eurex_cash_eti_t7_v12_0.triggered.dissect(buffer, index, packet, parent)

  -- Transaction Delay Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, transaction_delay_indicator = eurex_cash_eti_t7_v12_0.transaction_delay_indicator.dissect(buffer, index, packet, parent)

  -- Bbo Setting: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, bbo_setting = eurex_cash_eti_t7_v12_0.bbo_setting.dissect(buffer, index, packet, parent)

  -- No Order Events: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_order_events = eurex_cash_eti_t7_v12_0.no_order_events.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  -- Repeating: Order Event Grp Comp
  for order_event_grp_comp_index = 1, no_order_events do
    index, order_event_grp_comp = eurex_cash_eti_t7_v12_0.order_event_grp_comp.dissect(buffer, index, packet, parent, order_event_grp_comp_index)
  end

  return index
end

-- Dissect: Modify Order Response
eurex_cash_eti_t7_v12_0.modify_order_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_modify_order_response = eurex_cash_eti_t7_v12_0.modify_order_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.modify_order_response then
    local range = buffer(offset, size_of_modify_order_response)
    local display = eurex_cash_eti_t7_v12_0.modify_order_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.modify_order_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.modify_order_response.fields(buffer, offset, packet, parent, size_of_modify_order_response)

  return offset + size_of_modify_order_response
end

-- Modify Order Nr Response
eurex_cash_eti_t7_v12_0.modify_order_nr_response = {}

-- Read runtime size of: Modify Order Nr Response
eurex_cash_eti_t7_v12_0.modify_order_nr_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Modify Order Nr Response
eurex_cash_eti_t7_v12_0.modify_order_nr_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Modify Order Nr Response
eurex_cash_eti_t7_v12_0.modify_order_nr_response.fields = function(buffer, offset, packet, parent, size_of_modify_order_nr_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Stop Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, stop_px = eurex_cash_eti_t7_v12_0.stop_px.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Cum Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cum_qty = eurex_cash_eti_t7_v12_0.cum_qty.dissect(buffer, index, packet, parent)

  -- Cxl Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_qty = eurex_cash_eti_t7_v12_0.cxl_qty.dissect(buffer, index, packet, parent)

  -- Display Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_qty = eurex_cash_eti_t7_v12_0.display_qty.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Crossed Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, crossed_indicator = eurex_cash_eti_t7_v12_0.crossed_indicator.dissect(buffer, index, packet, parent)

  -- Triggered: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, triggered = eurex_cash_eti_t7_v12_0.triggered.dissect(buffer, index, packet, parent)

  -- Transaction Delay Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, transaction_delay_indicator = eurex_cash_eti_t7_v12_0.transaction_delay_indicator.dissect(buffer, index, packet, parent)

  -- Bbo Setting: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, bbo_setting = eurex_cash_eti_t7_v12_0.bbo_setting.dissect(buffer, index, packet, parent)

  -- No Order Events: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_order_events = eurex_cash_eti_t7_v12_0.no_order_events.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  -- Repeating: Order Event Grp Comp
  for order_event_grp_comp_index = 1, no_order_events do
    index, order_event_grp_comp = eurex_cash_eti_t7_v12_0.order_event_grp_comp.dissect(buffer, index, packet, parent, order_event_grp_comp_index)
  end

  return index
end

-- Dissect: Modify Order Nr Response
eurex_cash_eti_t7_v12_0.modify_order_nr_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_modify_order_nr_response = eurex_cash_eti_t7_v12_0.modify_order_nr_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.modify_order_nr_response then
    local range = buffer(offset, size_of_modify_order_nr_response)
    local display = eurex_cash_eti_t7_v12_0.modify_order_nr_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.modify_order_nr_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.modify_order_nr_response.fields(buffer, offset, packet, parent, size_of_modify_order_nr_response)

  return offset + size_of_modify_order_nr_response
end

-- Quote Entry Status
eurex_cash_eti_t7_v12_0.quote_entry_status = {}

-- Size: Quote Entry Status
eurex_cash_eti_t7_v12_0.quote_entry_status.size = 1

-- Display: Quote Entry Status
eurex_cash_eti_t7_v12_0.quote_entry_status.display = function(value)
  if value == 0 then
    return "Quote Entry Status: Accepted (0)"
  end
  if value == 5 then
    return "Quote Entry Status: Rejected (5)"
  end
  if value == 6 then
    return "Quote Entry Status: Removedand Rejected (6)"
  end
  if value == 10 then
    return "Quote Entry Status: Pending (10)"
  end
  if value == 0xFF then
    return "Quote Entry Status: No Value"
  end

  return "Quote Entry Status: Unknown("..value..")"
end

-- Dissect: Quote Entry Status
eurex_cash_eti_t7_v12_0.quote_entry_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_entry_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quote_entry_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_entry_status, range, value, display)

  return offset + length, value
end

-- Quote Entry Reject Reason
eurex_cash_eti_t7_v12_0.quote_entry_reject_reason = {}

-- Size: Quote Entry Reject Reason
eurex_cash_eti_t7_v12_0.quote_entry_reject_reason.size = 4

-- Display: Quote Entry Reject Reason
eurex_cash_eti_t7_v12_0.quote_entry_reject_reason.display = function(value)
  if value == 1 then
    return "Quote Entry Reject Reason: Unknown Security (1)"
  end
  if value == 6 then
    return "Quote Entry Reject Reason: Duplicate Quote (6)"
  end
  if value == 8 then
    return "Quote Entry Reject Reason: Invalid Price (8)"
  end
  if value == 16 then
    return "Quote Entry Reject Reason: No Reference Price Available (16)"
  end
  if value == 100 then
    return "Quote Entry Reject Reason: No Single Sided Quotes (100)"
  end
  if value == 103 then
    return "Quote Entry Reject Reason: Invalid Quoting Model (103)"
  end
  if value == 106 then
    return "Quote Entry Reject Reason: Invalid Size (106)"
  end
  if value == 108 then
    return "Quote Entry Reject Reason: Bid Price Not Reasonable (108)"
  end
  if value == 109 then
    return "Quote Entry Reject Reason: Ask Price Not Reasonable (109)"
  end
  if value == 110 then
    return "Quote Entry Reject Reason: Bid Price Exceeds Range (110)"
  end
  if value == 111 then
    return "Quote Entry Reject Reason: Ask Price Exceeds Range (111)"
  end
  if value == 115 then
    return "Quote Entry Reject Reason: Instrument State Freeze (115)"
  end
  if value == 116 then
    return "Quote Entry Reject Reason: Deletion Already Pending (116)"
  end
  if value == 120 then
    return "Quote Entry Reject Reason: Bid Value Exceeds Limit (120)"
  end
  if value == 121 then
    return "Quote Entry Reject Reason: Ask Value Exceeds Limit (121)"
  end
  if value == 122 then
    return "Quote Entry Reject Reason: Not Tradeable For Business Unit (122)"
  end
  if value == 125 then
    return "Quote Entry Reject Reason: Quantity Limit Exceeded (125)"
  end
  if value == 126 then
    return "Quote Entry Reject Reason: Value Limit Exceeded (126)"
  end
  if value == 127 then
    return "Quote Entry Reject Reason: Invalid Quote Spread (127)"
  end
  if value == 131 then
    return "Quote Entry Reject Reason: Cant Proc In Curr Instr State (131)"
  end
  if value == 134 then
    return "Quote Entry Reject Reason: Invalid Quote Type (134)"
  end
  if value == 135 then
    return "Quote Entry Reject Reason: Pwt Quotenotallowedincurrentstate (135)"
  end
  if value == 136 then
    return "Quote Entry Reject Reason: Standard Quotenotallowedincurrentstate (136)"
  end
  if value == 137 then
    return "Quote Entry Reject Reason: Pwt Quotenotallowedwithcrossedbook (137)"
  end
  if value == 138 then
    return "Quote Entry Reject Reason: Asksidequotenotallowed (138)"
  end
  if value == 139 then
    return "Quote Entry Reject Reason: Asksidequotewithqtynotallowed (139)"
  end
  if value == 140 then
    return "Quote Entry Reject Reason: Invalidchange L Psession (140)"
  end
  if value == 144 then
    return "Quote Entry Reject Reason: On Book Tradingdisabledfor Instrument Type (144)"
  end
  if value == 145 then
    return "Quote Entry Reject Reason: L Plicencenotassigned (145)"
  end
  if value == 146 then
    return "Quote Entry Reject Reason: S Plicencenotassigned (146)"
  end
  if value == 147 then
    return "Quote Entry Reject Reason: Liquidityproviderprotectionbidsidecancelled (147)"
  end
  if value == 148 then
    return "Quote Entry Reject Reason: Liquidityproviderprotectionasksidecancelled (148)"
  end
  if value == 149 then
    return "Quote Entry Reject Reason: Quantity Limit Exceeded Instrument (149)"
  end
  if value == 150 then
    return "Quote Entry Reject Reason: Value Limit Exceeded Instrument (150)"
  end
  if value == 151 then
    return "Quote Entry Reject Reason: Issuer Stopped (151)"
  end
  if value == 152 then
    return "Quote Entry Reject Reason: Partial Exec Of Qrs Order (152)"
  end
  if value == 153 then
    return "Quote Entry Reject Reason: Matching Quote Not Allowed In Current State (153)"
  end
  if value == 155 then
    return "Quote Entry Reject Reason: Outside Quoting Period (155)"
  end
  if value == 156 then
    return "Quote Entry Reject Reason: Match Price Not On Price Step (156)"
  end
  if value == 161 then
    return "Quote Entry Reject Reason: Quantity Limit Exceeds Tsl (161)"
  end
  if value == 162 then
    return "Quote Entry Reject Reason: Invalid Trading Session Sub I Dfor Instrument (162)"
  end
  if value == 163 then
    return "Quote Entry Reject Reason: Too Many Ordersand Quotesin Order Book (163)"
  end
  if value == 164 then
    return "Quote Entry Reject Reason: Inactive Cover (164)"
  end
  if value == 165 then
    return "Quote Entry Reject Reason: Indicative Quotenotallowedincurrentstate (165)"
  end
  if value == 0xFFFFFFFF then
    return "Quote Entry Reject Reason: No Value"
  end

  return "Quote Entry Reject Reason: Unknown("..value..")"
end

-- Dissect: Quote Entry Reject Reason
eurex_cash_eti_t7_v12_0.quote_entry_reject_reason.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_entry_reject_reason.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.quote_entry_reject_reason.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_entry_reject_reason, range, value, display)

  return offset + length, value
end

-- Cxl Size
eurex_cash_eti_t7_v12_0.cxl_size = {}

-- Size: Cxl Size
eurex_cash_eti_t7_v12_0.cxl_size.size = 8

-- Display: Cxl Size
eurex_cash_eti_t7_v12_0.cxl_size.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Cxl Size: No Value"
  end

  return "Cxl Size: "..value
end

-- Translate: Cxl Size
eurex_cash_eti_t7_v12_0.cxl_size.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Cxl Size
eurex_cash_eti_t7_v12_0.cxl_size.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.cxl_size.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.cxl_size.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.cxl_size.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.cxl_size, range, value, display)

  return offset + length, value
end

-- Quote Entry Ack Grp Comp
eurex_cash_eti_t7_v12_0.quote_entry_ack_grp_comp = {}

-- Size: Quote Entry Ack Grp Comp
eurex_cash_eti_t7_v12_0.quote_entry_ack_grp_comp.size =
  eurex_cash_eti_t7_v12_0.security_id.size + 
  eurex_cash_eti_t7_v12_0.cxl_size.size + 
  eurex_cash_eti_t7_v12_0.quote_entry_reject_reason.size + 
  eurex_cash_eti_t7_v12_0.quote_entry_status.size + 
  eurex_cash_eti_t7_v12_0.side.size + 
  eurex_cash_eti_t7_v12_0.pad_2.size

-- Display: Quote Entry Ack Grp Comp
eurex_cash_eti_t7_v12_0.quote_entry_ack_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Quote Entry Ack Grp Comp
eurex_cash_eti_t7_v12_0.quote_entry_ack_grp_comp.fields = function(buffer, offset, packet, parent, quote_entry_ack_grp_comp_index)
  local index = offset

  -- Implicit Quote Entry Ack Grp Comp Index
  if quote_entry_ack_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_entry_ack_grp_comp_index, quote_entry_ack_grp_comp_index)
    iteration:set_generated()
  end

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Cxl Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_size = eurex_cash_eti_t7_v12_0.cxl_size.dissect(buffer, index, packet, parent)

  -- Quote Entry Reject Reason: 4 Byte Unsigned Fixed Width Integer Enum with 45 values
  index, quote_entry_reject_reason = eurex_cash_eti_t7_v12_0.quote_entry_reject_reason.dissect(buffer, index, packet, parent)

  -- Quote Entry Status: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, quote_entry_status = eurex_cash_eti_t7_v12_0.quote_entry_status.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Quote Entry Ack Grp Comp
eurex_cash_eti_t7_v12_0.quote_entry_ack_grp_comp.dissect = function(buffer, offset, packet, parent, quote_entry_ack_grp_comp_index)
  if show.quote_entry_ack_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_entry_ack_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.quote_entry_ack_grp_comp.fields(buffer, offset, packet, parent, quote_entry_ack_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.quote_entry_ack_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.quote_entry_ack_grp_comp.fields(buffer, offset, packet, parent, quote_entry_ack_grp_comp_index)
  end
end

-- No Quote Side Entries
eurex_cash_eti_t7_v12_0.no_quote_side_entries = {}

-- Size: No Quote Side Entries
eurex_cash_eti_t7_v12_0.no_quote_side_entries.size = 1

-- Display: No Quote Side Entries
eurex_cash_eti_t7_v12_0.no_quote_side_entries.display = function(value)
  -- Check if field has value
  if value == 0xFF then
    return "No Quote Side Entries: No Value"
  end

  return "No Quote Side Entries: "..value
end

-- Dissect: No Quote Side Entries
eurex_cash_eti_t7_v12_0.no_quote_side_entries.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_quote_side_entries.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_quote_side_entries.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_quote_side_entries, range, value, display)

  return offset + length, value
end

-- Quote Response Id
eurex_cash_eti_t7_v12_0.quote_response_id = {}

-- Size: Quote Response Id
eurex_cash_eti_t7_v12_0.quote_response_id.size = 8

-- Display: Quote Response Id
eurex_cash_eti_t7_v12_0.quote_response_id.display = function(value)
  -- Check null sentinel value
  if value == UInt64(0xFFFFFFFF, 0xFFFFFFFF) then
    return "Quote Response Id: No Value"
  end
  -- Parse unix timestamp
  local seconds = math.floor(value:tonumber()/1000000000)
  local nanoseconds = value:tonumber()%1000000000

  return "Quote Response Id: "..os.date("%x %H:%M:%S.", seconds)..string.format("%09d", nanoseconds)
end

-- Dissect: Quote Response Id
eurex_cash_eti_t7_v12_0.quote_response_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.quote_response_id.size
  local range = buffer(offset, length)
  local value = range:le_uint64()
  local display = eurex_cash_eti_t7_v12_0.quote_response_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_response_id, range, value, display)

  return offset + length, value
end

-- Mass Quote Response
eurex_cash_eti_t7_v12_0.mass_quote_response = {}

-- Read runtime size of: Mass Quote Response
eurex_cash_eti_t7_v12_0.mass_quote_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Mass Quote Response
eurex_cash_eti_t7_v12_0.mass_quote_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Mass Quote Response
eurex_cash_eti_t7_v12_0.mass_quote_response.fields = function(buffer, offset, packet, parent, size_of_mass_quote_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Quote Response Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_response_id = eurex_cash_eti_t7_v12_0.quote_response_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- No Quote Side Entries: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_quote_side_entries = eurex_cash_eti_t7_v12_0.no_quote_side_entries.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  -- Repeating: Quote Entry Ack Grp Comp
  for quote_entry_ack_grp_comp_index = 1, no_quote_side_entries do
    index, quote_entry_ack_grp_comp = eurex_cash_eti_t7_v12_0.quote_entry_ack_grp_comp.dissect(buffer, index, packet, parent, quote_entry_ack_grp_comp_index)
  end

  return index
end

-- Dissect: Mass Quote Response
eurex_cash_eti_t7_v12_0.mass_quote_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_mass_quote_response = eurex_cash_eti_t7_v12_0.mass_quote_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.mass_quote_response then
    local range = buffer(offset, size_of_mass_quote_response)
    local display = eurex_cash_eti_t7_v12_0.mass_quote_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.mass_quote_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.mass_quote_response.fields(buffer, offset, packet, parent, size_of_mass_quote_response)

  return offset + size_of_mass_quote_response
end

-- Quote Entry Grp Comp
eurex_cash_eti_t7_v12_0.quote_entry_grp_comp = {}

-- Size: Quote Entry Grp Comp
eurex_cash_eti_t7_v12_0.quote_entry_grp_comp.size =
  eurex_cash_eti_t7_v12_0.security_id.size + 
  eurex_cash_eti_t7_v12_0.bid_px.size + 
  eurex_cash_eti_t7_v12_0.bid_size.size + 
  eurex_cash_eti_t7_v12_0.offer_px.size + 
  eurex_cash_eti_t7_v12_0.offer_size.size

-- Display: Quote Entry Grp Comp
eurex_cash_eti_t7_v12_0.quote_entry_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Quote Entry Grp Comp
eurex_cash_eti_t7_v12_0.quote_entry_grp_comp.fields = function(buffer, offset, packet, parent, quote_entry_grp_comp_index)
  local index = offset

  -- Implicit Quote Entry Grp Comp Index
  if quote_entry_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_entry_grp_comp_index, quote_entry_grp_comp_index)
    iteration:set_generated()
  end

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Bid Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_px = eurex_cash_eti_t7_v12_0.bid_px.dissect(buffer, index, packet, parent)

  -- Bid Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, bid_size = eurex_cash_eti_t7_v12_0.bid_size.dissect(buffer, index, packet, parent)

  -- Offer Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_px = eurex_cash_eti_t7_v12_0.offer_px.dissect(buffer, index, packet, parent)

  -- Offer Size: 8 Byte Unsigned Fixed Width Integer Nullable
  index, offer_size = eurex_cash_eti_t7_v12_0.offer_size.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Quote Entry Grp Comp
eurex_cash_eti_t7_v12_0.quote_entry_grp_comp.dissect = function(buffer, offset, packet, parent, quote_entry_grp_comp_index)
  if show.quote_entry_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.quote_entry_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.quote_entry_grp_comp.fields(buffer, offset, packet, parent, quote_entry_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.quote_entry_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.quote_entry_grp_comp.fields(buffer, offset, packet, parent, quote_entry_grp_comp_index)
  end
end

-- Mass Quote Request
eurex_cash_eti_t7_v12_0.mass_quote_request = {}

-- Read runtime size of: Mass Quote Request
eurex_cash_eti_t7_v12_0.mass_quote_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Mass Quote Request
eurex_cash_eti_t7_v12_0.mass_quote_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Mass Quote Request
eurex_cash_eti_t7_v12_0.mass_quote_request.fields = function(buffer, offset, packet, parent, size_of_mass_quote_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Match Inst Cross Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, match_inst_cross_id = eurex_cash_eti_t7_v12_0.match_inst_cross_id.dissect(buffer, index, packet, parent)

  -- Enrichment Rule Id: 2 Byte Unsigned Fixed Width Integer Nullable
  index, enrichment_rule_id = eurex_cash_eti_t7_v12_0.enrichment_rule_id.dissect(buffer, index, packet, parent)

  -- Price Validity Check Type: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, price_validity_check_type = eurex_cash_eti_t7_v12_0.price_validity_check_type.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Quote Size Type: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, quote_size_type = eurex_cash_eti_t7_v12_0.quote_size_type.dissect(buffer, index, packet, parent)

  -- Quote Type: 1 Byte Unsigned Fixed Width Integer Enum with 7 values
  index, quote_type = eurex_cash_eti_t7_v12_0.quote_type.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- No Quote Entries: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_quote_entries = eurex_cash_eti_t7_v12_0.no_quote_entries.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  -- Repeating: Quote Entry Grp Comp
  for quote_entry_grp_comp_index = 1, no_quote_entries do
    index, quote_entry_grp_comp = eurex_cash_eti_t7_v12_0.quote_entry_grp_comp.dissect(buffer, index, packet, parent, quote_entry_grp_comp_index)
  end

  return index
end

-- Dissect: Mass Quote Request
eurex_cash_eti_t7_v12_0.mass_quote_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_mass_quote_request = eurex_cash_eti_t7_v12_0.mass_quote_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.mass_quote_request then
    local range = buffer(offset, size_of_mass_quote_request)
    local display = eurex_cash_eti_t7_v12_0.mass_quote_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.mass_quote_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.mass_quote_request.fields(buffer, offset, packet, parent, size_of_mass_quote_request)

  return offset + size_of_mass_quote_request
end

-- Logout Response
eurex_cash_eti_t7_v12_0.logout_response = {}

-- Read runtime size of: Logout Response
eurex_cash_eti_t7_v12_0.logout_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Logout Response
eurex_cash_eti_t7_v12_0.logout_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Logout Response
eurex_cash_eti_t7_v12_0.logout_response.fields = function(buffer, offset, packet, parent, size_of_logout_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Logout Response
eurex_cash_eti_t7_v12_0.logout_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_logout_response = eurex_cash_eti_t7_v12_0.logout_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.logout_response then
    local range = buffer(offset, size_of_logout_response)
    local display = eurex_cash_eti_t7_v12_0.logout_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.logout_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.logout_response.fields(buffer, offset, packet, parent, size_of_logout_response)

  return offset + size_of_logout_response
end

-- Logout Request
eurex_cash_eti_t7_v12_0.logout_request = {}

-- Read runtime size of: Logout Request
eurex_cash_eti_t7_v12_0.logout_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Logout Request
eurex_cash_eti_t7_v12_0.logout_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Logout Request
eurex_cash_eti_t7_v12_0.logout_request.fields = function(buffer, offset, packet, parent, size_of_logout_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Logout Request
eurex_cash_eti_t7_v12_0.logout_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_logout_request = eurex_cash_eti_t7_v12_0.logout_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.logout_request then
    local range = buffer(offset, size_of_logout_request)
    local display = eurex_cash_eti_t7_v12_0.logout_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.logout_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.logout_request.fields(buffer, offset, packet, parent, size_of_logout_request)

  return offset + size_of_logout_request
end

-- Public Key
eurex_cash_eti_t7_v12_0.public_key = {}

-- Display: Public Key
eurex_cash_eti_t7_v12_0.public_key.display = function(value)
  return "Public Key: "..value
end

-- Dissect runtime sized field: Public Key
eurex_cash_eti_t7_v12_0.public_key.dissect = function(buffer, offset, packet, parent, size)
  local range = buffer(offset, size)
  local value = range:string()
  local display = eurex_cash_eti_t7_v12_0.public_key.display(value, packet, parent, size)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.public_key, range, value, display)

  return offset + size, value
end

-- Default Cstm Appl Ver Sub Id
eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_sub_id = {}

-- Size: Default Cstm Appl Ver Sub Id
eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_sub_id.size = 5

-- Display: Default Cstm Appl Ver Sub Id
eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_sub_id.display = function(value)
  if value == "C0001" then
    return "Default Cstm Appl Ver Sub Id: Cash (C0001)"
  end

  return "Default Cstm Appl Ver Sub Id: Unknown("..value..")"
end

-- Dissect: Default Cstm Appl Ver Sub Id
eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_sub_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_sub_id.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_sub_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.default_cstm_appl_ver_sub_id, range, value, display)

  return offset + length, value
end

-- Default Cstm Appl Ver Id
eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_id = {}

-- Size: Default Cstm Appl Ver Id
eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_id.size = 30

-- Display: Default Cstm Appl Ver Id
eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_id.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Default Cstm Appl Ver Id: No Value"
  end

  return "Default Cstm Appl Ver Id: "..value
end

-- Dissect: Default Cstm Appl Ver Id
eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_id.size
  local range = buffer(offset, length)

  -- parse last octet
  local last = buffer(offset + length - 1, 1):uint()

  -- read full string or up to first zero
  local value = ''
  if last == 0 then
    value = range:stringz()
  else
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.default_cstm_appl_ver_id, range, value, display)

  return offset + length, value
end

-- Trad Ses Mode
eurex_cash_eti_t7_v12_0.trad_ses_mode = {}

-- Size: Trad Ses Mode
eurex_cash_eti_t7_v12_0.trad_ses_mode.size = 1

-- Display: Trad Ses Mode
eurex_cash_eti_t7_v12_0.trad_ses_mode.display = function(value)
  if value == 1 then
    return "Trad Ses Mode: Testing (1)"
  end
  if value == 2 then
    return "Trad Ses Mode: Simulated (2)"
  end
  if value == 3 then
    return "Trad Ses Mode: Production (3)"
  end
  if value == 4 then
    return "Trad Ses Mode: Acceptance (4)"
  end
  if value == 5 then
    return "Trad Ses Mode: Disaster Recovery (5)"
  end
  if value == 0xFF then
    return "Trad Ses Mode: No Value"
  end

  return "Trad Ses Mode: Unknown("..value..")"
end

-- Dissect: Trad Ses Mode
eurex_cash_eti_t7_v12_0.trad_ses_mode.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.trad_ses_mode.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.trad_ses_mode.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.trad_ses_mode, range, value, display)

  return offset + length, value
end

-- Public Key Len
eurex_cash_eti_t7_v12_0.public_key_len = {}

-- Size: Public Key Len
eurex_cash_eti_t7_v12_0.public_key_len.size = 2

-- Display: Public Key Len
eurex_cash_eti_t7_v12_0.public_key_len.display = function(value)
  -- Check if field has value
  if value == 0xFFFF then
    return "Public Key Len: No Value"
  end

  return "Public Key Len: "..value
end

-- Dissect: Public Key Len
eurex_cash_eti_t7_v12_0.public_key_len.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.public_key_len.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.public_key_len.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.public_key_len, range, value, display)

  return offset + length, value
end

-- Latest Public Key Seq No
eurex_cash_eti_t7_v12_0.latest_public_key_seq_no = {}

-- Size: Latest Public Key Seq No
eurex_cash_eti_t7_v12_0.latest_public_key_seq_no.size = 4

-- Display: Latest Public Key Seq No
eurex_cash_eti_t7_v12_0.latest_public_key_seq_no.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Latest Public Key Seq No: No Value"
  end

  return "Latest Public Key Seq No: "..value
end

-- Dissect: Latest Public Key Seq No
eurex_cash_eti_t7_v12_0.latest_public_key_seq_no.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.latest_public_key_seq_no.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.latest_public_key_seq_no.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.latest_public_key_seq_no, range, value, display)

  return offset + length, value
end

-- Session Instance Id
eurex_cash_eti_t7_v12_0.session_instance_id = {}

-- Size: Session Instance Id
eurex_cash_eti_t7_v12_0.session_instance_id.size = 4

-- Display: Session Instance Id
eurex_cash_eti_t7_v12_0.session_instance_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Session Instance Id: No Value"
  end

  return "Session Instance Id: "..value
end

-- Dissect: Session Instance Id
eurex_cash_eti_t7_v12_0.session_instance_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.session_instance_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.session_instance_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.session_instance_id, range, value, display)

  return offset + length, value
end

-- Heart Bt Int
eurex_cash_eti_t7_v12_0.heart_bt_int = {}

-- Size: Heart Bt Int
eurex_cash_eti_t7_v12_0.heart_bt_int.size = 4

-- Display: Heart Bt Int
eurex_cash_eti_t7_v12_0.heart_bt_int.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Heart Bt Int: No Value"
  end

  return "Heart Bt Int: "..value
end

-- Dissect: Heart Bt Int
eurex_cash_eti_t7_v12_0.heart_bt_int.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.heart_bt_int.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.heart_bt_int.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.heart_bt_int, range, value, display)

  return offset + length, value
end

-- Logon Response
eurex_cash_eti_t7_v12_0.logon_response = {}

-- Read runtime size of: Logon Response
eurex_cash_eti_t7_v12_0.logon_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Logon Response
eurex_cash_eti_t7_v12_0.logon_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Logon Response
eurex_cash_eti_t7_v12_0.logon_response.fields = function(buffer, offset, packet, parent, size_of_logon_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  -- Throttle Time Interval: 8 Byte Signed Fixed Width Integer Nullable
  index, throttle_time_interval = eurex_cash_eti_t7_v12_0.throttle_time_interval.dissect(buffer, index, packet, parent)

  -- Throttle No Msgs: 4 Byte Unsigned Fixed Width Integer Nullable
  index, throttle_no_msgs = eurex_cash_eti_t7_v12_0.throttle_no_msgs.dissect(buffer, index, packet, parent)

  -- Throttle Disconnect Limit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, throttle_disconnect_limit = eurex_cash_eti_t7_v12_0.throttle_disconnect_limit.dissect(buffer, index, packet, parent)

  -- Heart Bt Int: 4 Byte Unsigned Fixed Width Integer Nullable
  index, heart_bt_int = eurex_cash_eti_t7_v12_0.heart_bt_int.dissect(buffer, index, packet, parent)

  -- Session Instance Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, session_instance_id = eurex_cash_eti_t7_v12_0.session_instance_id.dissect(buffer, index, packet, parent)

  -- Latest Public Key Seq No: 4 Byte Unsigned Fixed Width Integer Nullable
  index, latest_public_key_seq_no = eurex_cash_eti_t7_v12_0.latest_public_key_seq_no.dissect(buffer, index, packet, parent)

  -- Public Key Len: 2 Byte Unsigned Fixed Width Integer Nullable
  index, public_key_len = eurex_cash_eti_t7_v12_0.public_key_len.dissect(buffer, index, packet, parent)

  -- Market Id: 2 Byte Unsigned Fixed Width Integer Enum with 10 values
  index, market_id = eurex_cash_eti_t7_v12_0.market_id.dissect(buffer, index, packet, parent)

  -- Trad Ses Mode: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trad_ses_mode = eurex_cash_eti_t7_v12_0.trad_ses_mode.dissect(buffer, index, packet, parent)

  -- Default Cstm Appl Ver Id: 30 Byte Ascii String Nullable
  index, default_cstm_appl_ver_id = eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_id.dissect(buffer, index, packet, parent)

  -- Default Cstm Appl Ver Sub Id: 5 Byte Ascii String Enum with 1 values
  index, default_cstm_appl_ver_sub_id = eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_sub_id.dissect(buffer, index, packet, parent)

  -- Runtime Size Of: Public Key
  index, public_key = eurex_cash_eti_t7_v12_0.public_key.dissect(buffer, index, packet, parent, public_key_len)

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  -- Runtime optional field: Alignment Padding
  local alignment_padding = nil

  local alignment_padding_exists = body_len ~= index

  if alignment_padding_exists then

    -- Runtime Size Of: Alignment Padding
    local size_of_alignment_padding = body_len - index

    -- Alignment Padding: 0 Byte
    index, alignment_padding = eurex_cash_eti_t7_v12_0.alignment_padding.dissect(buffer, index, packet, parent, size_of_alignment_padding)
  end

  return index
end

-- Dissect: Logon Response
eurex_cash_eti_t7_v12_0.logon_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_logon_response = eurex_cash_eti_t7_v12_0.logon_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.logon_response then
    local range = buffer(offset, size_of_logon_response)
    local display = eurex_cash_eti_t7_v12_0.logon_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.logon_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.logon_response.fields(buffer, offset, packet, parent, size_of_logon_response)

  return offset + size_of_logon_response
end

-- Application System Vendor
eurex_cash_eti_t7_v12_0.application_system_vendor = {}

-- Size: Application System Vendor
eurex_cash_eti_t7_v12_0.application_system_vendor.size = 30

-- Display: Application System Vendor
eurex_cash_eti_t7_v12_0.application_system_vendor.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Application System Vendor: No Value"
  end

  return "Application System Vendor: "..value
end

-- Dissect: Application System Vendor
eurex_cash_eti_t7_v12_0.application_system_vendor.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.application_system_vendor.size
  local range = buffer(offset, length)

  -- parse last octet
  local last = buffer(offset + length - 1, 1):uint()

  -- read full string or up to first zero
  local value = ''
  if last == 0 then
    value = range:stringz()
  else
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.application_system_vendor.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.application_system_vendor, range, value, display)

  return offset + length, value
end

-- Application System Version
eurex_cash_eti_t7_v12_0.application_system_version = {}

-- Size: Application System Version
eurex_cash_eti_t7_v12_0.application_system_version.size = 30

-- Display: Application System Version
eurex_cash_eti_t7_v12_0.application_system_version.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Application System Version: No Value"
  end

  return "Application System Version: "..value
end

-- Dissect: Application System Version
eurex_cash_eti_t7_v12_0.application_system_version.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.application_system_version.size
  local range = buffer(offset, length)

  -- parse last octet
  local last = buffer(offset + length - 1, 1):uint()

  -- read full string or up to first zero
  local value = ''
  if last == 0 then
    value = range:stringz()
  else
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.application_system_version.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.application_system_version, range, value, display)

  return offset + length, value
end

-- Application System Name
eurex_cash_eti_t7_v12_0.application_system_name = {}

-- Size: Application System Name
eurex_cash_eti_t7_v12_0.application_system_name.size = 30

-- Display: Application System Name
eurex_cash_eti_t7_v12_0.application_system_name.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Application System Name: No Value"
  end

  return "Application System Name: "..value
end

-- Dissect: Application System Name
eurex_cash_eti_t7_v12_0.application_system_name.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.application_system_name.size
  local range = buffer(offset, length)

  -- parse last octet
  local last = buffer(offset + length - 1, 1):uint()

  -- read full string or up to first zero
  local value = ''
  if last == 0 then
    value = range:stringz()
  else
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.application_system_name.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.application_system_name, range, value, display)

  return offset + length, value
end

-- Fix Engine Vendor
eurex_cash_eti_t7_v12_0.fix_engine_vendor = {}

-- Size: Fix Engine Vendor
eurex_cash_eti_t7_v12_0.fix_engine_vendor.size = 30

-- Display: Fix Engine Vendor
eurex_cash_eti_t7_v12_0.fix_engine_vendor.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Fix Engine Vendor: No Value"
  end

  return "Fix Engine Vendor: "..value
end

-- Dissect: Fix Engine Vendor
eurex_cash_eti_t7_v12_0.fix_engine_vendor.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.fix_engine_vendor.size
  local range = buffer(offset, length)

  -- parse last octet
  local last = buffer(offset + length - 1, 1):uint()

  -- read full string or up to first zero
  local value = ''
  if last == 0 then
    value = range:stringz()
  else
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.fix_engine_vendor.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.fix_engine_vendor, range, value, display)

  return offset + length, value
end

-- Fix Engine Version
eurex_cash_eti_t7_v12_0.fix_engine_version = {}

-- Size: Fix Engine Version
eurex_cash_eti_t7_v12_0.fix_engine_version.size = 30

-- Display: Fix Engine Version
eurex_cash_eti_t7_v12_0.fix_engine_version.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Fix Engine Version: No Value"
  end

  return "Fix Engine Version: "..value
end

-- Dissect: Fix Engine Version
eurex_cash_eti_t7_v12_0.fix_engine_version.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.fix_engine_version.size
  local range = buffer(offset, length)

  -- parse last octet
  local last = buffer(offset + length - 1, 1):uint()

  -- read full string or up to first zero
  local value = ''
  if last == 0 then
    value = range:stringz()
  else
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.fix_engine_version.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.fix_engine_version, range, value, display)

  return offset + length, value
end

-- Fix Engine Name
eurex_cash_eti_t7_v12_0.fix_engine_name = {}

-- Size: Fix Engine Name
eurex_cash_eti_t7_v12_0.fix_engine_name.size = 30

-- Display: Fix Engine Name
eurex_cash_eti_t7_v12_0.fix_engine_name.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Fix Engine Name: No Value"
  end

  return "Fix Engine Name: "..value
end

-- Dissect: Fix Engine Name
eurex_cash_eti_t7_v12_0.fix_engine_name.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.fix_engine_name.size
  local range = buffer(offset, length)

  -- parse last octet
  local last = buffer(offset + length - 1, 1):uint()

  -- read full string or up to first zero
  local value = ''
  if last == 0 then
    value = range:stringz()
  else
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.fix_engine_name.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.fix_engine_name, range, value, display)

  return offset + length, value
end

-- Order Routing Indicator
eurex_cash_eti_t7_v12_0.order_routing_indicator = {}

-- Size: Order Routing Indicator
eurex_cash_eti_t7_v12_0.order_routing_indicator.size = 1

-- Display: Order Routing Indicator
eurex_cash_eti_t7_v12_0.order_routing_indicator.display = function(value)
  -- Check if field has value
  if value == nil or value == 0 then
    return "Order Routing Indicator: No Value"
  end

  if value == "Y" then
    return "Order Routing Indicator: Yes (Y)"
  end
  if value == "N" then
    return "Order Routing Indicator: No (N)"
  end

  return "Order Routing Indicator: Unknown("..value..")"
end

-- Dissect: Order Routing Indicator
eurex_cash_eti_t7_v12_0.order_routing_indicator.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.order_routing_indicator.size
  local range = buffer(offset, length)

  -- parse as byte
  local value = range:uint()

  -- check if value is non zero
  if value ~= 0 then
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.order_routing_indicator.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.order_routing_indicator, range, value, display)

  return offset + length, value
end

-- Appl Usage Quotes
eurex_cash_eti_t7_v12_0.appl_usage_quotes = {}

-- Size: Appl Usage Quotes
eurex_cash_eti_t7_v12_0.appl_usage_quotes.size = 1

-- Display: Appl Usage Quotes
eurex_cash_eti_t7_v12_0.appl_usage_quotes.display = function(value)
  -- Check if field has value
  if value == nil or value == 0 then
    return "Appl Usage Quotes: No Value"
  end

  if value == "A" then
    return "Appl Usage Quotes: Automated (A)"
  end
  if value == "M" then
    return "Appl Usage Quotes: Manual (M)"
  end
  if value == "B" then
    return "Appl Usage Quotes: Auto Select (B)"
  end
  if value == "N" then
    return "Appl Usage Quotes: None (N)"
  end

  return "Appl Usage Quotes: Unknown("..value..")"
end

-- Dissect: Appl Usage Quotes
eurex_cash_eti_t7_v12_0.appl_usage_quotes.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_usage_quotes.size
  local range = buffer(offset, length)

  -- parse as byte
  local value = range:uint()

  -- check if value is non zero
  if value ~= 0 then
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.appl_usage_quotes.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_usage_quotes, range, value, display)

  return offset + length, value
end

-- Appl Usage Orders
eurex_cash_eti_t7_v12_0.appl_usage_orders = {}

-- Size: Appl Usage Orders
eurex_cash_eti_t7_v12_0.appl_usage_orders.size = 1

-- Display: Appl Usage Orders
eurex_cash_eti_t7_v12_0.appl_usage_orders.display = function(value)
  -- Check if field has value
  if value == nil or value == 0 then
    return "Appl Usage Orders: No Value"
  end

  if value == "A" then
    return "Appl Usage Orders: Automated (A)"
  end
  if value == "M" then
    return "Appl Usage Orders: Manual (M)"
  end
  if value == "B" then
    return "Appl Usage Orders: Auto Select (B)"
  end
  if value == "N" then
    return "Appl Usage Orders: None (N)"
  end

  return "Appl Usage Orders: Unknown("..value..")"
end

-- Dissect: Appl Usage Orders
eurex_cash_eti_t7_v12_0.appl_usage_orders.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_usage_orders.size
  local range = buffer(offset, length)

  -- parse as byte
  local value = range:uint()

  -- check if value is non zero
  if value ~= 0 then
    value = range:string()
  end

  local display = eurex_cash_eti_t7_v12_0.appl_usage_orders.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_usage_orders, range, value, display)

  return offset + length, value
end

-- Logon Request Encrypted
eurex_cash_eti_t7_v12_0.logon_request_encrypted = {}

-- Read runtime size of: Logon Request Encrypted
eurex_cash_eti_t7_v12_0.logon_request_encrypted.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Logon Request Encrypted
eurex_cash_eti_t7_v12_0.logon_request_encrypted.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Logon Request Encrypted
eurex_cash_eti_t7_v12_0.logon_request_encrypted.fields = function(buffer, offset, packet, parent, size_of_logon_request_encrypted)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Heart Bt Int: 4 Byte Unsigned Fixed Width Integer Nullable
  index, heart_bt_int = eurex_cash_eti_t7_v12_0.heart_bt_int.dissect(buffer, index, packet, parent)

  -- Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_session_id = eurex_cash_eti_t7_v12_0.party_id_session_id.dissect(buffer, index, packet, parent)

  -- Default Cstm Appl Ver Id: 30 Byte Ascii String Nullable
  index, default_cstm_appl_ver_id = eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_id.dissect(buffer, index, packet, parent)

  -- Encrypted Password: 684 Byte Ascii String Nullable
  index, encrypted_password = eurex_cash_eti_t7_v12_0.encrypted_password.dissect(buffer, index, packet, parent)

  -- Appl Usage Orders: 1 Byte Ascii String Enum with 4 values
  index, appl_usage_orders = eurex_cash_eti_t7_v12_0.appl_usage_orders.dissect(buffer, index, packet, parent)

  -- Appl Usage Quotes: 1 Byte Ascii String Enum with 4 values
  index, appl_usage_quotes = eurex_cash_eti_t7_v12_0.appl_usage_quotes.dissect(buffer, index, packet, parent)

  -- Order Routing Indicator: 1 Byte Ascii String Enum with 2 values
  index, order_routing_indicator = eurex_cash_eti_t7_v12_0.order_routing_indicator.dissect(buffer, index, packet, parent)

  -- Fix Engine Name: 30 Byte Ascii String Nullable
  index, fix_engine_name = eurex_cash_eti_t7_v12_0.fix_engine_name.dissect(buffer, index, packet, parent)

  -- Fix Engine Version: 30 Byte Ascii String Nullable
  index, fix_engine_version = eurex_cash_eti_t7_v12_0.fix_engine_version.dissect(buffer, index, packet, parent)

  -- Fix Engine Vendor: 30 Byte Ascii String Nullable
  index, fix_engine_vendor = eurex_cash_eti_t7_v12_0.fix_engine_vendor.dissect(buffer, index, packet, parent)

  -- Application System Name: 30 Byte Ascii String Nullable
  index, application_system_name = eurex_cash_eti_t7_v12_0.application_system_name.dissect(buffer, index, packet, parent)

  -- Application System Version: 30 Byte Ascii String Nullable
  index, application_system_version = eurex_cash_eti_t7_v12_0.application_system_version.dissect(buffer, index, packet, parent)

  -- Application System Vendor: 30 Byte Ascii String Nullable
  index, application_system_vendor = eurex_cash_eti_t7_v12_0.application_system_vendor.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Logon Request Encrypted
eurex_cash_eti_t7_v12_0.logon_request_encrypted.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_logon_request_encrypted = eurex_cash_eti_t7_v12_0.logon_request_encrypted.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.logon_request_encrypted then
    local range = buffer(offset, size_of_logon_request_encrypted)
    local display = eurex_cash_eti_t7_v12_0.logon_request_encrypted.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.logon_request_encrypted, range, display)
  end

  eurex_cash_eti_t7_v12_0.logon_request_encrypted.fields(buffer, offset, packet, parent, size_of_logon_request_encrypted)

  return offset + size_of_logon_request_encrypted
end

-- Logon Request
eurex_cash_eti_t7_v12_0.logon_request = {}

-- Read runtime size of: Logon Request
eurex_cash_eti_t7_v12_0.logon_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Logon Request
eurex_cash_eti_t7_v12_0.logon_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Logon Request
eurex_cash_eti_t7_v12_0.logon_request.fields = function(buffer, offset, packet, parent, size_of_logon_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Heart Bt Int: 4 Byte Unsigned Fixed Width Integer Nullable
  index, heart_bt_int = eurex_cash_eti_t7_v12_0.heart_bt_int.dissect(buffer, index, packet, parent)

  -- Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_session_id = eurex_cash_eti_t7_v12_0.party_id_session_id.dissect(buffer, index, packet, parent)

  -- Default Cstm Appl Ver Id: 30 Byte Ascii String Nullable
  index, default_cstm_appl_ver_id = eurex_cash_eti_t7_v12_0.default_cstm_appl_ver_id.dissect(buffer, index, packet, parent)

  -- Password: 32 Byte Ascii String Nullable
  index, password = eurex_cash_eti_t7_v12_0.password.dissect(buffer, index, packet, parent)

  -- Appl Usage Orders: 1 Byte Ascii String Enum with 4 values
  index, appl_usage_orders = eurex_cash_eti_t7_v12_0.appl_usage_orders.dissect(buffer, index, packet, parent)

  -- Appl Usage Quotes: 1 Byte Ascii String Enum with 4 values
  index, appl_usage_quotes = eurex_cash_eti_t7_v12_0.appl_usage_quotes.dissect(buffer, index, packet, parent)

  -- Order Routing Indicator: 1 Byte Ascii String Enum with 2 values
  index, order_routing_indicator = eurex_cash_eti_t7_v12_0.order_routing_indicator.dissect(buffer, index, packet, parent)

  -- Fix Engine Name: 30 Byte Ascii String Nullable
  index, fix_engine_name = eurex_cash_eti_t7_v12_0.fix_engine_name.dissect(buffer, index, packet, parent)

  -- Fix Engine Version: 30 Byte Ascii String Nullable
  index, fix_engine_version = eurex_cash_eti_t7_v12_0.fix_engine_version.dissect(buffer, index, packet, parent)

  -- Fix Engine Vendor: 30 Byte Ascii String Nullable
  index, fix_engine_vendor = eurex_cash_eti_t7_v12_0.fix_engine_vendor.dissect(buffer, index, packet, parent)

  -- Application System Name: 30 Byte Ascii String Nullable
  index, application_system_name = eurex_cash_eti_t7_v12_0.application_system_name.dissect(buffer, index, packet, parent)

  -- Application System Version: 30 Byte Ascii String Nullable
  index, application_system_version = eurex_cash_eti_t7_v12_0.application_system_version.dissect(buffer, index, packet, parent)

  -- Application System Vendor: 30 Byte Ascii String Nullable
  index, application_system_vendor = eurex_cash_eti_t7_v12_0.application_system_vendor.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Logon Request
eurex_cash_eti_t7_v12_0.logon_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_logon_request = eurex_cash_eti_t7_v12_0.logon_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.logon_request then
    local range = buffer(offset, size_of_logon_request)
    local display = eurex_cash_eti_t7_v12_0.logon_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.logon_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.logon_request.fields(buffer, offset, packet, parent, size_of_logon_request)

  return offset + size_of_logon_request
end

-- User Status
eurex_cash_eti_t7_v12_0.user_status = {}

-- Size: User Status
eurex_cash_eti_t7_v12_0.user_status.size = 1

-- Display: User Status
eurex_cash_eti_t7_v12_0.user_status.display = function(value)
  if value == 7 then
    return "User Status: Userforcedlogout (7)"
  end
  if value == 10 then
    return "User Status: Userstopped (10)"
  end
  if value == 11 then
    return "User Status: Userreleased (11)"
  end
  if value == 0xFF then
    return "User Status: No Value"
  end

  return "User Status: Unknown("..value..")"
end

-- Dissect: User Status
eurex_cash_eti_t7_v12_0.user_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.user_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.user_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.user_status, range, value, display)

  return offset + length, value
end

-- Legal Notification Broadcast
eurex_cash_eti_t7_v12_0.legal_notification_broadcast = {}

-- Read runtime size of: Legal Notification Broadcast
eurex_cash_eti_t7_v12_0.legal_notification_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Legal Notification Broadcast
eurex_cash_eti_t7_v12_0.legal_notification_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Legal Notification Broadcast
eurex_cash_eti_t7_v12_0.legal_notification_broadcast.fields = function(buffer, offset, packet, parent, size_of_legal_notification_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Comp: Struct of 8 fields
  index, rbc_header_comp = eurex_cash_eti_t7_v12_0.rbc_header_comp.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Var Text Len: 2 Byte Unsigned Fixed Width Integer Nullable
  index, var_text_len = eurex_cash_eti_t7_v12_0.var_text_len.dissect(buffer, index, packet, parent)

  -- User Status: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, user_status = eurex_cash_eti_t7_v12_0.user_status.dissect(buffer, index, packet, parent)

  -- Runtime Size Of: Var Text
  index, var_text = eurex_cash_eti_t7_v12_0.var_text.dissect(buffer, index, packet, parent, var_text_len)

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  -- Runtime optional field: Alignment Padding
  local alignment_padding = nil

  local alignment_padding_exists = body_len ~= index

  if alignment_padding_exists then

    -- Runtime Size Of: Alignment Padding
    local size_of_alignment_padding = body_len - index

    -- Alignment Padding: 0 Byte
    index, alignment_padding = eurex_cash_eti_t7_v12_0.alignment_padding.dissect(buffer, index, packet, parent, size_of_alignment_padding)
  end

  return index
end

-- Dissect: Legal Notification Broadcast
eurex_cash_eti_t7_v12_0.legal_notification_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_legal_notification_broadcast = eurex_cash_eti_t7_v12_0.legal_notification_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.legal_notification_broadcast then
    local range = buffer(offset, size_of_legal_notification_broadcast)
    local display = eurex_cash_eti_t7_v12_0.legal_notification_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.legal_notification_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.legal_notification_broadcast.fields(buffer, offset, packet, parent, size_of_legal_notification_broadcast)

  return offset + size_of_legal_notification_broadcast
end

-- Issuer Security State Change Response
eurex_cash_eti_t7_v12_0.issuer_security_state_change_response = {}

-- Read runtime size of: Issuer Security State Change Response
eurex_cash_eti_t7_v12_0.issuer_security_state_change_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Issuer Security State Change Response
eurex_cash_eti_t7_v12_0.issuer_security_state_change_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Issuer Security State Change Response
eurex_cash_eti_t7_v12_0.issuer_security_state_change_response.fields = function(buffer, offset, packet, parent, size_of_issuer_security_state_change_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Security Status Report Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, security_status_report_id = eurex_cash_eti_t7_v12_0.security_status_report_id.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Issuer Security State Change Response
eurex_cash_eti_t7_v12_0.issuer_security_state_change_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_issuer_security_state_change_response = eurex_cash_eti_t7_v12_0.issuer_security_state_change_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.issuer_security_state_change_response then
    local range = buffer(offset, size_of_issuer_security_state_change_response)
    local display = eurex_cash_eti_t7_v12_0.issuer_security_state_change_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.issuer_security_state_change_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.issuer_security_state_change_response.fields(buffer, offset, packet, parent, size_of_issuer_security_state_change_response)

  return offset + size_of_issuer_security_state_change_response
end

-- Event Date
eurex_cash_eti_t7_v12_0.event_date = {}

-- Size: Event Date
eurex_cash_eti_t7_v12_0.event_date.size = 4

-- Display: Event Date
eurex_cash_eti_t7_v12_0.event_date.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Event Date: No Value"
  end

  return "Event Date: "..value
end

-- Dissect: Event Date
eurex_cash_eti_t7_v12_0.event_date.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.event_date.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.event_date.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.event_date, range, value, display)

  return offset + length, value
end

-- Event Px
eurex_cash_eti_t7_v12_0.event_px = {}

-- Size: Event Px
eurex_cash_eti_t7_v12_0.event_px.size = 8

-- Display: Event Px
eurex_cash_eti_t7_v12_0.event_px.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Event Px: No Value"
  end

  return "Event Px: "..value
end

-- Translate: Event Px
eurex_cash_eti_t7_v12_0.event_px.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/100000000
end

-- Dissect: Event Px
eurex_cash_eti_t7_v12_0.event_px.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.event_px.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.event_px.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.event_px.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.event_px, range, value, display)

  return offset + length, value
end

-- Security Status Event Grp Comp
eurex_cash_eti_t7_v12_0.security_status_event_grp_comp = {}

-- Size: Security Status Event Grp Comp
eurex_cash_eti_t7_v12_0.security_status_event_grp_comp.size =
  eurex_cash_eti_t7_v12_0.event_px.size + 
  eurex_cash_eti_t7_v12_0.event_date.size + 
  eurex_cash_eti_t7_v12_0.event_type.size + 
  eurex_cash_eti_t7_v12_0.pad_3.size

-- Display: Security Status Event Grp Comp
eurex_cash_eti_t7_v12_0.security_status_event_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Security Status Event Grp Comp
eurex_cash_eti_t7_v12_0.security_status_event_grp_comp.fields = function(buffer, offset, packet, parent, security_status_event_grp_comp_index)
  local index = offset

  -- Implicit Security Status Event Grp Comp Index
  if security_status_event_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.security_status_event_grp_comp_index, security_status_event_grp_comp_index)
    iteration:set_generated()
  end

  -- Event Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, event_px = eurex_cash_eti_t7_v12_0.event_px.dissect(buffer, index, packet, parent)

  -- Event Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, event_date = eurex_cash_eti_t7_v12_0.event_date.dissect(buffer, index, packet, parent)

  -- Event Type: 1 Byte Unsigned Fixed Width Integer Enum with 14 values
  index, event_type = eurex_cash_eti_t7_v12_0.event_type.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Security Status Event Grp Comp
eurex_cash_eti_t7_v12_0.security_status_event_grp_comp.dissect = function(buffer, offset, packet, parent, security_status_event_grp_comp_index)
  if show.security_status_event_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.security_status_event_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.security_status_event_grp_comp.fields(buffer, offset, packet, parent, security_status_event_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.security_status_event_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.security_status_event_grp_comp.fields(buffer, offset, packet, parent, security_status_event_grp_comp_index)
  end
end

-- Sold Out Indicator
eurex_cash_eti_t7_v12_0.sold_out_indicator = {}

-- Size: Sold Out Indicator
eurex_cash_eti_t7_v12_0.sold_out_indicator.size = 1

-- Display: Sold Out Indicator
eurex_cash_eti_t7_v12_0.sold_out_indicator.display = function(value)
  if value == 0 then
    return "Sold Out Indicator: Revertsoldout (0)"
  end
  if value == 1 then
    return "Sold Out Indicator: Soldout (1)"
  end
  if value == 0xFF then
    return "Sold Out Indicator: No Value"
  end

  return "Sold Out Indicator: Unknown("..value..")"
end

-- Dissect: Sold Out Indicator
eurex_cash_eti_t7_v12_0.sold_out_indicator.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.sold_out_indicator.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.sold_out_indicator.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.sold_out_indicator, range, value, display)

  return offset + length, value
end

-- Security Status
eurex_cash_eti_t7_v12_0.security_status = {}

-- Size: Security Status
eurex_cash_eti_t7_v12_0.security_status.size = 1

-- Display: Security Status
eurex_cash_eti_t7_v12_0.security_status.display = function(value)
  if value == 6 then
    return "Security Status: Knockedout (6)"
  end
  if value == 7 then
    return "Security Status: Knockoutrevoked (7)"
  end
  if value == 12 then
    return "Security Status: Knockedoutandsuspend (12)"
  end
  if value == 0xFF then
    return "Security Status: No Value"
  end

  return "Security Status: Unknown("..value..")"
end

-- Dissect: Security Status
eurex_cash_eti_t7_v12_0.security_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.security_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.security_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.security_status, range, value, display)

  return offset + length, value
end

-- No Events
eurex_cash_eti_t7_v12_0.no_events = {}

-- Size: No Events
eurex_cash_eti_t7_v12_0.no_events.size = 1

-- Display: No Events
eurex_cash_eti_t7_v12_0.no_events.display = function(value)
  -- Check if field has value
  if value == 0xFF then
    return "No Events: No Value"
  end

  return "No Events: "..value
end

-- Dissect: No Events
eurex_cash_eti_t7_v12_0.no_events.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_events.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_events.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_events, range, value, display)

  return offset + length, value
end

-- Issuer Security State Change Request
eurex_cash_eti_t7_v12_0.issuer_security_state_change_request = {}

-- Read runtime size of: Issuer Security State Change Request
eurex_cash_eti_t7_v12_0.issuer_security_state_change_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Issuer Security State Change Request
eurex_cash_eti_t7_v12_0.issuer_security_state_change_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Issuer Security State Change Request
eurex_cash_eti_t7_v12_0.issuer_security_state_change_request.fields = function(buffer, offset, packet, parent, size_of_issuer_security_state_change_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- No Events: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_events = eurex_cash_eti_t7_v12_0.no_events.dissect(buffer, index, packet, parent)

  -- Security Status: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, security_status = eurex_cash_eti_t7_v12_0.security_status.dissect(buffer, index, packet, parent)

  -- Sold Out Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, sold_out_indicator = eurex_cash_eti_t7_v12_0.sold_out_indicator.dissect(buffer, index, packet, parent)

  -- Pad 1: 1 Byte
  index, pad_1 = eurex_cash_eti_t7_v12_0.pad_1.dissect(buffer, index, packet, parent)

  -- Repeating: Security Status Event Grp Comp
  for security_status_event_grp_comp_index = 1, no_events do
    index, security_status_event_grp_comp = eurex_cash_eti_t7_v12_0.security_status_event_grp_comp.dissect(buffer, index, packet, parent, security_status_event_grp_comp_index)
  end

  return index
end

-- Dissect: Issuer Security State Change Request
eurex_cash_eti_t7_v12_0.issuer_security_state_change_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_issuer_security_state_change_request = eurex_cash_eti_t7_v12_0.issuer_security_state_change_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.issuer_security_state_change_request then
    local range = buffer(offset, size_of_issuer_security_state_change_request)
    local display = eurex_cash_eti_t7_v12_0.issuer_security_state_change_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.issuer_security_state_change_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.issuer_security_state_change_request.fields(buffer, offset, packet, parent, size_of_issuer_security_state_change_request)

  return offset + size_of_issuer_security_state_change_request
end

-- Security Trading Status
eurex_cash_eti_t7_v12_0.security_trading_status = {}

-- Size: Security Trading Status
eurex_cash_eti_t7_v12_0.security_trading_status.size = 1

-- Display: Security Trading Status
eurex_cash_eti_t7_v12_0.security_trading_status.display = function(value)
  if value == 7 then
    return "Security Trading Status: Market Imbalance Buy (7)"
  end
  if value == 8 then
    return "Security Trading Status: Market Imbalance Sell (8)"
  end
  if value == 0xFF then
    return "Security Trading Status: No Value"
  end

  return "Security Trading Status: Unknown("..value..")"
end

-- Dissect: Security Trading Status
eurex_cash_eti_t7_v12_0.security_trading_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.security_trading_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.security_trading_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.security_trading_status, range, value, display)

  return offset + length, value
end

-- Imbalance Qty
eurex_cash_eti_t7_v12_0.imbalance_qty = {}

-- Size: Imbalance Qty
eurex_cash_eti_t7_v12_0.imbalance_qty.size = 8

-- Display: Imbalance Qty
eurex_cash_eti_t7_v12_0.imbalance_qty.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Imbalance Qty: No Value"
  end

  return "Imbalance Qty: "..value
end

-- Translate: Imbalance Qty
eurex_cash_eti_t7_v12_0.imbalance_qty.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Imbalance Qty
eurex_cash_eti_t7_v12_0.imbalance_qty.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.imbalance_qty.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.imbalance_qty.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.imbalance_qty.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.imbalance_qty, range, value, display)

  return offset + length, value
end

-- Potential Exec Volume
eurex_cash_eti_t7_v12_0.potential_exec_volume = {}

-- Size: Potential Exec Volume
eurex_cash_eti_t7_v12_0.potential_exec_volume.size = 8

-- Display: Potential Exec Volume
eurex_cash_eti_t7_v12_0.potential_exec_volume.display = function(raw, value)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return "Potential Exec Volume: No Value"
  end

  return "Potential Exec Volume: "..value
end

-- Translate: Potential Exec Volume
eurex_cash_eti_t7_v12_0.potential_exec_volume.translate = function(raw)
  -- Check null sentinel value
  if raw == UInt64(0x00000000, 0x80000000) then
    return 0/0
  end

  return raw:tonumber()/10000
end

-- Dissect: Potential Exec Volume
eurex_cash_eti_t7_v12_0.potential_exec_volume.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.potential_exec_volume.size
  local range = buffer(offset, length)
  local raw = range:le_uint64()
  local value = eurex_cash_eti_t7_v12_0.potential_exec_volume.translate(raw)
  local display = eurex_cash_eti_t7_v12_0.potential_exec_volume.display(raw, value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.potential_exec_volume, range, value, display)

  return offset + length, value
end

-- Issuer Notification
eurex_cash_eti_t7_v12_0.issuer_notification = {}

-- Read runtime size of: Issuer Notification
eurex_cash_eti_t7_v12_0.issuer_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Issuer Notification
eurex_cash_eti_t7_v12_0.issuer_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Issuer Notification
eurex_cash_eti_t7_v12_0.issuer_notification.fields = function(buffer, offset, packet, parent, size_of_issuer_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Transact Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, transact_time = eurex_cash_eti_t7_v12_0.transact_time.dissect(buffer, index, packet, parent)

  -- Last Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_px = eurex_cash_eti_t7_v12_0.last_px.dissect(buffer, index, packet, parent)

  -- Potential Exec Volume: 8 Byte Unsigned Fixed Width Integer Nullable
  index, potential_exec_volume = eurex_cash_eti_t7_v12_0.potential_exec_volume.dissect(buffer, index, packet, parent)

  -- Last Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_qty = eurex_cash_eti_t7_v12_0.last_qty.dissect(buffer, index, packet, parent)

  -- Imbalance Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, imbalance_qty = eurex_cash_eti_t7_v12_0.imbalance_qty.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_session_id = eurex_cash_eti_t7_v12_0.party_id_session_id.dissect(buffer, index, packet, parent)

  -- Security Trading Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, security_trading_status = eurex_cash_eti_t7_v12_0.security_trading_status.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Issuer Notification
eurex_cash_eti_t7_v12_0.issuer_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_issuer_notification = eurex_cash_eti_t7_v12_0.issuer_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.issuer_notification then
    local range = buffer(offset, size_of_issuer_notification)
    local display = eurex_cash_eti_t7_v12_0.issuer_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.issuer_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.issuer_notification.fields(buffer, offset, packet, parent, size_of_issuer_notification)

  return offset + size_of_issuer_notification
end

-- Party Detail Desk Id
eurex_cash_eti_t7_v12_0.party_detail_desk_id = {}

-- Size: Party Detail Desk Id
eurex_cash_eti_t7_v12_0.party_detail_desk_id.size = 3

-- Display: Party Detail Desk Id
eurex_cash_eti_t7_v12_0.party_detail_desk_id.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Party Detail Desk Id: No Value"
  end

  return "Party Detail Desk Id: "..value
end

-- Dissect: Party Detail Desk Id
eurex_cash_eti_t7_v12_0.party_detail_desk_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_detail_desk_id.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.party_detail_desk_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_detail_desk_id, range, value, display)

  return offset + length, value
end

-- Party Detail Role Qualifier
eurex_cash_eti_t7_v12_0.party_detail_role_qualifier = {}

-- Size: Party Detail Role Qualifier
eurex_cash_eti_t7_v12_0.party_detail_role_qualifier.size = 1

-- Display: Party Detail Role Qualifier
eurex_cash_eti_t7_v12_0.party_detail_role_qualifier.display = function(value)
  if value == 10 then
    return "Party Detail Role Qualifier: Trader (10)"
  end
  if value == 11 then
    return "Party Detail Role Qualifier: Head Trader (11)"
  end
  if value == 12 then
    return "Party Detail Role Qualifier: Supervisor (12)"
  end
  if value == 0xFF then
    return "Party Detail Role Qualifier: No Value"
  end

  return "Party Detail Role Qualifier: Unknown("..value..")"
end

-- Dissect: Party Detail Role Qualifier
eurex_cash_eti_t7_v12_0.party_detail_role_qualifier.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_detail_role_qualifier.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.party_detail_role_qualifier.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_detail_role_qualifier, range, value, display)

  return offset + length, value
end

-- Party Detail Executing Trader
eurex_cash_eti_t7_v12_0.party_detail_executing_trader = {}

-- Size: Party Detail Executing Trader
eurex_cash_eti_t7_v12_0.party_detail_executing_trader.size = 6

-- Display: Party Detail Executing Trader
eurex_cash_eti_t7_v12_0.party_detail_executing_trader.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Party Detail Executing Trader: No Value"
  end

  return "Party Detail Executing Trader: "..value
end

-- Dissect: Party Detail Executing Trader
eurex_cash_eti_t7_v12_0.party_detail_executing_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_detail_executing_trader.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.party_detail_executing_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_detail_executing_trader, range, value, display)

  return offset + length, value
end

-- Party Detail Id Executing Trader
eurex_cash_eti_t7_v12_0.party_detail_id_executing_trader = {}

-- Size: Party Detail Id Executing Trader
eurex_cash_eti_t7_v12_0.party_detail_id_executing_trader.size = 4

-- Display: Party Detail Id Executing Trader
eurex_cash_eti_t7_v12_0.party_detail_id_executing_trader.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Party Detail Id Executing Trader: No Value"
  end

  return "Party Detail Id Executing Trader: "..value
end

-- Dissect: Party Detail Id Executing Trader
eurex_cash_eti_t7_v12_0.party_detail_id_executing_trader.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_detail_id_executing_trader.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.party_detail_id_executing_trader.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_detail_id_executing_trader, range, value, display)

  return offset + length, value
end

-- Party Details Grp Comp
eurex_cash_eti_t7_v12_0.party_details_grp_comp = {}

-- Size: Party Details Grp Comp
eurex_cash_eti_t7_v12_0.party_details_grp_comp.size =
  eurex_cash_eti_t7_v12_0.party_detail_id_executing_trader.size + 
  eurex_cash_eti_t7_v12_0.party_detail_executing_trader.size + 
  eurex_cash_eti_t7_v12_0.party_detail_role_qualifier.size + 
  eurex_cash_eti_t7_v12_0.party_detail_status.size + 
  eurex_cash_eti_t7_v12_0.party_detail_desk_id.size + 
  eurex_cash_eti_t7_v12_0.pad_1.size

-- Display: Party Details Grp Comp
eurex_cash_eti_t7_v12_0.party_details_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Party Details Grp Comp
eurex_cash_eti_t7_v12_0.party_details_grp_comp.fields = function(buffer, offset, packet, parent, party_details_grp_comp_index)
  local index = offset

  -- Implicit Party Details Grp Comp Index
  if party_details_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_details_grp_comp_index, party_details_grp_comp_index)
    iteration:set_generated()
  end

  -- Party Detail Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_detail_id_executing_trader = eurex_cash_eti_t7_v12_0.party_detail_id_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Detail Executing Trader: 6 Byte Ascii String Nullable
  index, party_detail_executing_trader = eurex_cash_eti_t7_v12_0.party_detail_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Detail Role Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, party_detail_role_qualifier = eurex_cash_eti_t7_v12_0.party_detail_role_qualifier.dissect(buffer, index, packet, parent)

  -- Party Detail Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_detail_status = eurex_cash_eti_t7_v12_0.party_detail_status.dissect(buffer, index, packet, parent)

  -- Party Detail Desk Id: 3 Byte Ascii String Nullable
  index, party_detail_desk_id = eurex_cash_eti_t7_v12_0.party_detail_desk_id.dissect(buffer, index, packet, parent)

  -- Pad 1: 1 Byte
  index, pad_1 = eurex_cash_eti_t7_v12_0.pad_1.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Party Details Grp Comp
eurex_cash_eti_t7_v12_0.party_details_grp_comp.dissect = function(buffer, offset, packet, parent, party_details_grp_comp_index)
  if show.party_details_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_details_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.party_details_grp_comp.fields(buffer, offset, packet, parent, party_details_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.party_details_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.party_details_grp_comp.fields(buffer, offset, packet, parent, party_details_grp_comp_index)
  end
end

-- No Party Details
eurex_cash_eti_t7_v12_0.no_party_details = {}

-- Size: No Party Details
eurex_cash_eti_t7_v12_0.no_party_details.size = 2

-- Display: No Party Details
eurex_cash_eti_t7_v12_0.no_party_details.display = function(value)
  -- Check if field has value
  if value == 0xFFFF then
    return "No Party Details: No Value"
  end

  return "No Party Details: "..value
end

-- Dissect: No Party Details
eurex_cash_eti_t7_v12_0.no_party_details.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_party_details.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_party_details.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_party_details, range, value, display)

  return offset + length, value
end

-- Last Entity Processed
eurex_cash_eti_t7_v12_0.last_entity_processed = {}

-- Size: Last Entity Processed
eurex_cash_eti_t7_v12_0.last_entity_processed.size = 16

-- Display: Last Entity Processed
eurex_cash_eti_t7_v12_0.last_entity_processed.display = function(value)
  return "Last Entity Processed: "..value
end

-- Dissect: Last Entity Processed
eurex_cash_eti_t7_v12_0.last_entity_processed.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.last_entity_processed.size
  local range = buffer(offset, length)
  local value = range:bytes():tohex(false, " ")
  local display = eurex_cash_eti_t7_v12_0.last_entity_processed.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.last_entity_processed, range, value, display)

  return offset + length, value
end

-- Inquire User Response
eurex_cash_eti_t7_v12_0.inquire_user_response = {}

-- Read runtime size of: Inquire User Response
eurex_cash_eti_t7_v12_0.inquire_user_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Inquire User Response
eurex_cash_eti_t7_v12_0.inquire_user_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Inquire User Response
eurex_cash_eti_t7_v12_0.inquire_user_response.fields = function(buffer, offset, packet, parent, size_of_inquire_user_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  -- Last Entity Processed: 16 Byte
  index, last_entity_processed = eurex_cash_eti_t7_v12_0.last_entity_processed.dissect(buffer, index, packet, parent)

  -- No Party Details: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_party_details = eurex_cash_eti_t7_v12_0.no_party_details.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  -- Repeating: Party Details Grp Comp
  for party_details_grp_comp_index = 1, no_party_details do
    index, party_details_grp_comp = eurex_cash_eti_t7_v12_0.party_details_grp_comp.dissect(buffer, index, packet, parent, party_details_grp_comp_index)
  end

  return index
end

-- Dissect: Inquire User Response
eurex_cash_eti_t7_v12_0.inquire_user_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_inquire_user_response = eurex_cash_eti_t7_v12_0.inquire_user_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.inquire_user_response then
    local range = buffer(offset, size_of_inquire_user_response)
    local display = eurex_cash_eti_t7_v12_0.inquire_user_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.inquire_user_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.inquire_user_response.fields(buffer, offset, packet, parent, size_of_inquire_user_response)

  return offset + size_of_inquire_user_response
end

-- Inquire User Request
eurex_cash_eti_t7_v12_0.inquire_user_request = {}

-- Read runtime size of: Inquire User Request
eurex_cash_eti_t7_v12_0.inquire_user_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Inquire User Request
eurex_cash_eti_t7_v12_0.inquire_user_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Inquire User Request
eurex_cash_eti_t7_v12_0.inquire_user_request.fields = function(buffer, offset, packet, parent, size_of_inquire_user_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Last Entity Processed: 16 Byte
  index, last_entity_processed = eurex_cash_eti_t7_v12_0.last_entity_processed.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Inquire User Request
eurex_cash_eti_t7_v12_0.inquire_user_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_inquire_user_request = eurex_cash_eti_t7_v12_0.inquire_user_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.inquire_user_request then
    local range = buffer(offset, size_of_inquire_user_request)
    local display = eurex_cash_eti_t7_v12_0.inquire_user_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.inquire_user_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.inquire_user_request.fields(buffer, offset, packet, parent, size_of_inquire_user_request)

  return offset + size_of_inquire_user_request
end

-- Session Sub Mode
eurex_cash_eti_t7_v12_0.session_sub_mode = {}

-- Size: Session Sub Mode
eurex_cash_eti_t7_v12_0.session_sub_mode.size = 1

-- Display: Session Sub Mode
eurex_cash_eti_t7_v12_0.session_sub_mode.display = function(value)
  if value == 0 then
    return "Session Sub Mode: Regulartradingsession (0)"
  end
  if value == 2 then
    return "Session Sub Mode: Regular Back Officesession (2)"
  end
  if value == 0xFF then
    return "Session Sub Mode: No Value"
  end

  return "Session Sub Mode: Unknown("..value..")"
end

-- Dissect: Session Sub Mode
eurex_cash_eti_t7_v12_0.session_sub_mode.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.session_sub_mode.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.session_sub_mode.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.session_sub_mode, range, value, display)

  return offset + length, value
end

-- Session Mode
eurex_cash_eti_t7_v12_0.session_mode = {}

-- Size: Session Mode
eurex_cash_eti_t7_v12_0.session_mode.size = 1

-- Display: Session Mode
eurex_cash_eti_t7_v12_0.session_mode.display = function(value)
  if value == 1 then
    return "Session Mode: Etihf (1)"
  end
  if value == 2 then
    return "Session Mode: Etilf (2)"
  end
  if value == 3 then
    return "Session Mode: Gui (3)"
  end
  if value == 4 then
    return "Session Mode: Fixlf (4)"
  end
  if value == 0xFF then
    return "Session Mode: No Value"
  end

  return "Session Mode: Unknown("..value..")"
end

-- Dissect: Session Mode
eurex_cash_eti_t7_v12_0.session_mode.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.session_mode.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.session_mode.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.session_mode, range, value, display)

  return offset + length, value
end

-- Sessions Grp Comp
eurex_cash_eti_t7_v12_0.sessions_grp_comp = {}

-- Size: Sessions Grp Comp
eurex_cash_eti_t7_v12_0.sessions_grp_comp.size =
  eurex_cash_eti_t7_v12_0.party_id_session_id.size + 
  eurex_cash_eti_t7_v12_0.session_mode.size + 
  eurex_cash_eti_t7_v12_0.session_sub_mode.size + 
  eurex_cash_eti_t7_v12_0.pad_2.size

-- Display: Sessions Grp Comp
eurex_cash_eti_t7_v12_0.sessions_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Sessions Grp Comp
eurex_cash_eti_t7_v12_0.sessions_grp_comp.fields = function(buffer, offset, packet, parent, sessions_grp_comp_index)
  local index = offset

  -- Implicit Sessions Grp Comp Index
  if sessions_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.sessions_grp_comp_index, sessions_grp_comp_index)
    iteration:set_generated()
  end

  -- Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_session_id = eurex_cash_eti_t7_v12_0.party_id_session_id.dissect(buffer, index, packet, parent)

  -- Session Mode: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, session_mode = eurex_cash_eti_t7_v12_0.session_mode.dissect(buffer, index, packet, parent)

  -- Session Sub Mode: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, session_sub_mode = eurex_cash_eti_t7_v12_0.session_sub_mode.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Sessions Grp Comp
eurex_cash_eti_t7_v12_0.sessions_grp_comp.dissect = function(buffer, offset, packet, parent, sessions_grp_comp_index)
  if show.sessions_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.sessions_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.sessions_grp_comp.fields(buffer, offset, packet, parent, sessions_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.sessions_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.sessions_grp_comp.fields(buffer, offset, packet, parent, sessions_grp_comp_index)
  end
end

-- No Sessions
eurex_cash_eti_t7_v12_0.no_sessions = {}

-- Size: No Sessions
eurex_cash_eti_t7_v12_0.no_sessions.size = 2

-- Display: No Sessions
eurex_cash_eti_t7_v12_0.no_sessions.display = function(value)
  -- Check if field has value
  if value == 0xFFFF then
    return "No Sessions: No Value"
  end

  return "No Sessions: "..value
end

-- Dissect: No Sessions
eurex_cash_eti_t7_v12_0.no_sessions.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_sessions.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_sessions.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_sessions, range, value, display)

  return offset + length, value
end

-- Inquire Session List Response
eurex_cash_eti_t7_v12_0.inquire_session_list_response = {}

-- Read runtime size of: Inquire Session List Response
eurex_cash_eti_t7_v12_0.inquire_session_list_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Inquire Session List Response
eurex_cash_eti_t7_v12_0.inquire_session_list_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Inquire Session List Response
eurex_cash_eti_t7_v12_0.inquire_session_list_response.fields = function(buffer, offset, packet, parent, size_of_inquire_session_list_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  -- No Sessions: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_sessions = eurex_cash_eti_t7_v12_0.no_sessions.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  -- Repeating: Sessions Grp Comp
  for sessions_grp_comp_index = 1, no_sessions do
    index, sessions_grp_comp = eurex_cash_eti_t7_v12_0.sessions_grp_comp.dissect(buffer, index, packet, parent, sessions_grp_comp_index)
  end

  return index
end

-- Dissect: Inquire Session List Response
eurex_cash_eti_t7_v12_0.inquire_session_list_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_inquire_session_list_response = eurex_cash_eti_t7_v12_0.inquire_session_list_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.inquire_session_list_response then
    local range = buffer(offset, size_of_inquire_session_list_response)
    local display = eurex_cash_eti_t7_v12_0.inquire_session_list_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.inquire_session_list_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.inquire_session_list_response.fields(buffer, offset, packet, parent, size_of_inquire_session_list_response)

  return offset + size_of_inquire_session_list_response
end

-- Inquire Session List Request
eurex_cash_eti_t7_v12_0.inquire_session_list_request = {}

-- Read runtime size of: Inquire Session List Request
eurex_cash_eti_t7_v12_0.inquire_session_list_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Inquire Session List Request
eurex_cash_eti_t7_v12_0.inquire_session_list_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Inquire Session List Request
eurex_cash_eti_t7_v12_0.inquire_session_list_request.fields = function(buffer, offset, packet, parent, size_of_inquire_session_list_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Inquire Session List Request
eurex_cash_eti_t7_v12_0.inquire_session_list_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_inquire_session_list_request = eurex_cash_eti_t7_v12_0.inquire_session_list_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.inquire_session_list_request then
    local range = buffer(offset, size_of_inquire_session_list_request)
    local display = eurex_cash_eti_t7_v12_0.inquire_session_list_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.inquire_session_list_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.inquire_session_list_request.fields(buffer, offset, packet, parent, size_of_inquire_session_list_request)

  return offset + size_of_inquire_session_list_request
end

-- Party Executing Unit
eurex_cash_eti_t7_v12_0.party_executing_unit = {}

-- Size: Party Executing Unit
eurex_cash_eti_t7_v12_0.party_executing_unit.size = 5

-- Display: Party Executing Unit
eurex_cash_eti_t7_v12_0.party_executing_unit.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Party Executing Unit: No Value"
  end

  return "Party Executing Unit: "..value
end

-- Dissect: Party Executing Unit
eurex_cash_eti_t7_v12_0.party_executing_unit.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.party_executing_unit.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.party_executing_unit.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.party_executing_unit, range, value, display)

  return offset + length, value
end

-- Inquire Pre Trade Risk Limits Request
eurex_cash_eti_t7_v12_0.inquire_pre_trade_risk_limits_request = {}

-- Read runtime size of: Inquire Pre Trade Risk Limits Request
eurex_cash_eti_t7_v12_0.inquire_pre_trade_risk_limits_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Inquire Pre Trade Risk Limits Request
eurex_cash_eti_t7_v12_0.inquire_pre_trade_risk_limits_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Inquire Pre Trade Risk Limits Request
eurex_cash_eti_t7_v12_0.inquire_pre_trade_risk_limits_request.fields = function(buffer, offset, packet, parent, size_of_inquire_pre_trade_risk_limits_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Party Executing Unit: 5 Byte Ascii String Nullable
  index, party_executing_unit = eurex_cash_eti_t7_v12_0.party_executing_unit.dissect(buffer, index, packet, parent)

  -- Risk Limit Group: 3 Byte Ascii String Nullable
  index, risk_limit_group = eurex_cash_eti_t7_v12_0.risk_limit_group.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Inquire Pre Trade Risk Limits Request
eurex_cash_eti_t7_v12_0.inquire_pre_trade_risk_limits_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_inquire_pre_trade_risk_limits_request = eurex_cash_eti_t7_v12_0.inquire_pre_trade_risk_limits_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.inquire_pre_trade_risk_limits_request then
    local range = buffer(offset, size_of_inquire_pre_trade_risk_limits_request)
    local display = eurex_cash_eti_t7_v12_0.inquire_pre_trade_risk_limits_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.inquire_pre_trade_risk_limits_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.inquire_pre_trade_risk_limits_request.fields(buffer, offset, packet, parent, size_of_inquire_pre_trade_risk_limits_request)

  return offset + size_of_inquire_pre_trade_risk_limits_request
end

-- Enrichment Rules Grp Comp
eurex_cash_eti_t7_v12_0.enrichment_rules_grp_comp = {}

-- Size: Enrichment Rules Grp Comp
eurex_cash_eti_t7_v12_0.enrichment_rules_grp_comp.size =
  eurex_cash_eti_t7_v12_0.enrichment_rule_id.size + 
  eurex_cash_eti_t7_v12_0.free_text_1.size + 
  eurex_cash_eti_t7_v12_0.free_text_2.size + 
  eurex_cash_eti_t7_v12_0.free_text_4.size + 
  eurex_cash_eti_t7_v12_0.pad_6.size

-- Display: Enrichment Rules Grp Comp
eurex_cash_eti_t7_v12_0.enrichment_rules_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Enrichment Rules Grp Comp
eurex_cash_eti_t7_v12_0.enrichment_rules_grp_comp.fields = function(buffer, offset, packet, parent, enrichment_rules_grp_comp_index)
  local index = offset

  -- Implicit Enrichment Rules Grp Comp Index
  if enrichment_rules_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.enrichment_rules_grp_comp_index, enrichment_rules_grp_comp_index)
    iteration:set_generated()
  end

  -- Enrichment Rule Id: 2 Byte Unsigned Fixed Width Integer Nullable
  index, enrichment_rule_id = eurex_cash_eti_t7_v12_0.enrichment_rule_id.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Enrichment Rules Grp Comp
eurex_cash_eti_t7_v12_0.enrichment_rules_grp_comp.dissect = function(buffer, offset, packet, parent, enrichment_rules_grp_comp_index)
  if show.enrichment_rules_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.enrichment_rules_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.enrichment_rules_grp_comp.fields(buffer, offset, packet, parent, enrichment_rules_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.enrichment_rules_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.enrichment_rules_grp_comp.fields(buffer, offset, packet, parent, enrichment_rules_grp_comp_index)
  end
end

-- No Enrichment Rules
eurex_cash_eti_t7_v12_0.no_enrichment_rules = {}

-- Size: No Enrichment Rules
eurex_cash_eti_t7_v12_0.no_enrichment_rules.size = 2

-- Display: No Enrichment Rules
eurex_cash_eti_t7_v12_0.no_enrichment_rules.display = function(value)
  -- Check if field has value
  if value == 0xFFFF then
    return "No Enrichment Rules: No Value"
  end

  return "No Enrichment Rules: "..value
end

-- Dissect: No Enrichment Rules
eurex_cash_eti_t7_v12_0.no_enrichment_rules.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_enrichment_rules.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_enrichment_rules.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_enrichment_rules, range, value, display)

  return offset + length, value
end

-- Inquire Enrichment Rule Id List Response
eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_response = {}

-- Read runtime size of: Inquire Enrichment Rule Id List Response
eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Inquire Enrichment Rule Id List Response
eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Inquire Enrichment Rule Id List Response
eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_response.fields = function(buffer, offset, packet, parent, size_of_inquire_enrichment_rule_id_list_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Comp: Struct of 4 fields
  index, response_header_comp = eurex_cash_eti_t7_v12_0.response_header_comp.dissect(buffer, index, packet, parent)

  -- Last Entity Processed: 16 Byte
  index, last_entity_processed = eurex_cash_eti_t7_v12_0.last_entity_processed.dissect(buffer, index, packet, parent)

  -- No Enrichment Rules: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_enrichment_rules = eurex_cash_eti_t7_v12_0.no_enrichment_rules.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  -- Repeating: Enrichment Rules Grp Comp
  for enrichment_rules_grp_comp_index = 1, no_enrichment_rules do
    index, enrichment_rules_grp_comp = eurex_cash_eti_t7_v12_0.enrichment_rules_grp_comp.dissect(buffer, index, packet, parent, enrichment_rules_grp_comp_index)
  end

  return index
end

-- Dissect: Inquire Enrichment Rule Id List Response
eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_inquire_enrichment_rule_id_list_response = eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.inquire_enrichment_rule_id_list_response then
    local range = buffer(offset, size_of_inquire_enrichment_rule_id_list_response)
    local display = eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.inquire_enrichment_rule_id_list_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_response.fields(buffer, offset, packet, parent, size_of_inquire_enrichment_rule_id_list_response)

  return offset + size_of_inquire_enrichment_rule_id_list_response
end

-- Inquire Enrichment Rule Id List Request
eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_request = {}

-- Read runtime size of: Inquire Enrichment Rule Id List Request
eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Inquire Enrichment Rule Id List Request
eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Inquire Enrichment Rule Id List Request
eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_request.fields = function(buffer, offset, packet, parent, size_of_inquire_enrichment_rule_id_list_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Last Entity Processed: 16 Byte
  index, last_entity_processed = eurex_cash_eti_t7_v12_0.last_entity_processed.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Inquire Enrichment Rule Id List Request
eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_inquire_enrichment_rule_id_list_request = eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.inquire_enrichment_rule_id_list_request then
    local range = buffer(offset, size_of_inquire_enrichment_rule_id_list_request)
    local display = eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.inquire_enrichment_rule_id_list_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_request.fields(buffer, offset, packet, parent, size_of_inquire_enrichment_rule_id_list_request)

  return offset + size_of_inquire_enrichment_rule_id_list_request
end

-- Heartbeat Notification
eurex_cash_eti_t7_v12_0.heartbeat_notification = {}

-- Read runtime size of: Heartbeat Notification
eurex_cash_eti_t7_v12_0.heartbeat_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Heartbeat Notification
eurex_cash_eti_t7_v12_0.heartbeat_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Heartbeat Notification
eurex_cash_eti_t7_v12_0.heartbeat_notification.fields = function(buffer, offset, packet, parent, size_of_heartbeat_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Notif Header Comp: Struct of 1 fields
  index, notif_header_comp = eurex_cash_eti_t7_v12_0.notif_header_comp.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Heartbeat Notification
eurex_cash_eti_t7_v12_0.heartbeat_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_heartbeat_notification = eurex_cash_eti_t7_v12_0.heartbeat_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.heartbeat_notification then
    local range = buffer(offset, size_of_heartbeat_notification)
    local display = eurex_cash_eti_t7_v12_0.heartbeat_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.heartbeat_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.heartbeat_notification.fields(buffer, offset, packet, parent, size_of_heartbeat_notification)

  return offset + size_of_heartbeat_notification
end

-- Heartbeat
eurex_cash_eti_t7_v12_0.heartbeat = {}

-- Read runtime size of: Heartbeat
eurex_cash_eti_t7_v12_0.heartbeat.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Heartbeat
eurex_cash_eti_t7_v12_0.heartbeat.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Heartbeat
eurex_cash_eti_t7_v12_0.heartbeat.fields = function(buffer, offset, packet, parent, size_of_heartbeat)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Heartbeat
eurex_cash_eti_t7_v12_0.heartbeat.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_heartbeat = eurex_cash_eti_t7_v12_0.heartbeat.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.heartbeat then
    local range = buffer(offset, size_of_heartbeat)
    local display = eurex_cash_eti_t7_v12_0.heartbeat.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.heartbeat, range, display)
  end

  eurex_cash_eti_t7_v12_0.heartbeat.fields(buffer, offset, packet, parent, size_of_heartbeat)

  return offset + size_of_heartbeat
end

-- Forced User Logout Notification
eurex_cash_eti_t7_v12_0.forced_user_logout_notification = {}

-- Read runtime size of: Forced User Logout Notification
eurex_cash_eti_t7_v12_0.forced_user_logout_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Forced User Logout Notification
eurex_cash_eti_t7_v12_0.forced_user_logout_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Forced User Logout Notification
eurex_cash_eti_t7_v12_0.forced_user_logout_notification.fields = function(buffer, offset, packet, parent, size_of_forced_user_logout_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Notif Header Comp: Struct of 1 fields
  index, notif_header_comp = eurex_cash_eti_t7_v12_0.notif_header_comp.dissect(buffer, index, packet, parent)

  -- Username: 4 Byte Unsigned Fixed Width Integer Nullable
  index, username = eurex_cash_eti_t7_v12_0.username.dissect(buffer, index, packet, parent)

  -- Var Text Len: 2 Byte Unsigned Fixed Width Integer Nullable
  index, var_text_len = eurex_cash_eti_t7_v12_0.var_text_len.dissect(buffer, index, packet, parent)

  -- User Status: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, user_status = eurex_cash_eti_t7_v12_0.user_status.dissect(buffer, index, packet, parent)

  -- Runtime Size Of: Var Text
  index, var_text = eurex_cash_eti_t7_v12_0.var_text.dissect(buffer, index, packet, parent, var_text_len)

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  -- Runtime optional field: Alignment Padding
  local alignment_padding = nil

  local alignment_padding_exists = body_len ~= index

  if alignment_padding_exists then

    -- Runtime Size Of: Alignment Padding
    local size_of_alignment_padding = body_len - index

    -- Alignment Padding: 0 Byte
    index, alignment_padding = eurex_cash_eti_t7_v12_0.alignment_padding.dissect(buffer, index, packet, parent, size_of_alignment_padding)
  end

  return index
end

-- Dissect: Forced User Logout Notification
eurex_cash_eti_t7_v12_0.forced_user_logout_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_forced_user_logout_notification = eurex_cash_eti_t7_v12_0.forced_user_logout_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.forced_user_logout_notification then
    local range = buffer(offset, size_of_forced_user_logout_notification)
    local display = eurex_cash_eti_t7_v12_0.forced_user_logout_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.forced_user_logout_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.forced_user_logout_notification.fields(buffer, offset, packet, parent, size_of_forced_user_logout_notification)

  return offset + size_of_forced_user_logout_notification
end

-- Forced Logout Notification
eurex_cash_eti_t7_v12_0.forced_logout_notification = {}

-- Read runtime size of: Forced Logout Notification
eurex_cash_eti_t7_v12_0.forced_logout_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Forced Logout Notification
eurex_cash_eti_t7_v12_0.forced_logout_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Forced Logout Notification
eurex_cash_eti_t7_v12_0.forced_logout_notification.fields = function(buffer, offset, packet, parent, size_of_forced_logout_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Notif Header Comp: Struct of 1 fields
  index, notif_header_comp = eurex_cash_eti_t7_v12_0.notif_header_comp.dissect(buffer, index, packet, parent)

  -- Var Text Len: 2 Byte Unsigned Fixed Width Integer Nullable
  index, var_text_len = eurex_cash_eti_t7_v12_0.var_text_len.dissect(buffer, index, packet, parent)

  -- Runtime Size Of: Var Text
  index, var_text = eurex_cash_eti_t7_v12_0.var_text.dissect(buffer, index, packet, parent, var_text_len)

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  -- Runtime optional field: Alignment Padding
  local alignment_padding = nil

  local alignment_padding_exists = body_len ~= index

  if alignment_padding_exists then

    -- Runtime Size Of: Alignment Padding
    local size_of_alignment_padding = body_len - index

    -- Alignment Padding: 0 Byte
    index, alignment_padding = eurex_cash_eti_t7_v12_0.alignment_padding.dissect(buffer, index, packet, parent, size_of_alignment_padding)
  end

  return index
end

-- Dissect: Forced Logout Notification
eurex_cash_eti_t7_v12_0.forced_logout_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_forced_logout_notification = eurex_cash_eti_t7_v12_0.forced_logout_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.forced_logout_notification then
    local range = buffer(offset, size_of_forced_logout_notification)
    local display = eurex_cash_eti_t7_v12_0.forced_logout_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.forced_logout_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.forced_logout_notification.fields(buffer, offset, packet, parent, size_of_forced_logout_notification)

  return offset + size_of_forced_logout_notification
end

-- Extended Deletion Report
eurex_cash_eti_t7_v12_0.extended_deletion_report = {}

-- Read runtime size of: Extended Deletion Report
eurex_cash_eti_t7_v12_0.extended_deletion_report.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Extended Deletion Report
eurex_cash_eti_t7_v12_0.extended_deletion_report.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Extended Deletion Report
eurex_cash_eti_t7_v12_0.extended_deletion_report.fields = function(buffer, offset, packet, parent, size_of_extended_deletion_report)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Trd Reg Ts Entry Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trd_reg_ts_entry_time = eurex_cash_eti_t7_v12_0.trd_reg_ts_entry_time.dissect(buffer, index, packet, parent)

  -- Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, price = eurex_cash_eti_t7_v12_0.price.dissect(buffer, index, packet, parent)

  -- Leaves Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, leaves_qty = eurex_cash_eti_t7_v12_0.leaves_qty.dissect(buffer, index, packet, parent)

  -- Cum Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cum_qty = eurex_cash_eti_t7_v12_0.cum_qty.dissect(buffer, index, packet, parent)

  -- Cxl Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_qty = eurex_cash_eti_t7_v12_0.cxl_qty.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Display Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_qty = eurex_cash_eti_t7_v12_0.display_qty.dissect(buffer, index, packet, parent)

  -- Display Low Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_low_qty = eurex_cash_eti_t7_v12_0.display_low_qty.dissect(buffer, index, packet, parent)

  -- Display High Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, display_high_qty = eurex_cash_eti_t7_v12_0.display_high_qty.dissect(buffer, index, packet, parent)

  -- Stop Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, stop_px = eurex_cash_eti_t7_v12_0.stop_px.dissect(buffer, index, packet, parent)

  -- Peg Offset Value Abs: 8 Byte Unsigned Fixed Width Integer Nullable
  index, peg_offset_value_abs = eurex_cash_eti_t7_v12_0.peg_offset_value_abs.dissect(buffer, index, packet, parent)

  -- Peg Offset Value Pct: 8 Byte Unsigned Fixed Width Integer Nullable
  index, peg_offset_value_pct = eurex_cash_eti_t7_v12_0.peg_offset_value_pct.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Expire Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, expire_date = eurex_cash_eti_t7_v12_0.expire_date.dissect(buffer, index, packet, parent)

  -- Match Inst Cross Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, match_inst_cross_id = eurex_cash_eti_t7_v12_0.match_inst_cross_id.dissect(buffer, index, packet, parent)

  -- Party Id Executing Unit: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_executing_unit = eurex_cash_eti_t7_v12_0.party_id_executing_unit.dissect(buffer, index, packet, parent)

  -- Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_session_id = eurex_cash_eti_t7_v12_0.party_id_session_id.dissect(buffer, index, packet, parent)

  -- Party Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_executing_trader = eurex_cash_eti_t7_v12_0.party_id_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Id Entering Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_entering_trader = eurex_cash_eti_t7_v12_0.party_id_entering_trader.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Ord Type: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, ord_type = eurex_cash_eti_t7_v12_0.ord_type.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Time In Force: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, time_in_force = eurex_cash_eti_t7_v12_0.time_in_force.dissect(buffer, index, packet, parent)

  -- Exec Inst: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, exec_inst = eurex_cash_eti_t7_v12_0.exec_inst.dissect(buffer, index, packet, parent)

  -- Trading Session Sub Id: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, trading_session_sub_id = eurex_cash_eti_t7_v12_0.trading_session_sub_id.dissect(buffer, index, packet, parent)

  -- Appl Seq Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, appl_seq_indicator = eurex_cash_eti_t7_v12_0.appl_seq_indicator.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Party Entering Firm: 5 Byte Ascii String Nullable
  index, party_entering_firm = eurex_cash_eti_t7_v12_0.party_entering_firm.dissect(buffer, index, packet, parent)

  -- Party Entering Trader: 6 Byte Ascii String Nullable
  index, party_entering_trader = eurex_cash_eti_t7_v12_0.party_entering_trader.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Fix Cl Ord Id: 20 Byte Ascii String Nullable
  index, fix_cl_ord_id = eurex_cash_eti_t7_v12_0.fix_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Triggered: 1 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, triggered = eurex_cash_eti_t7_v12_0.triggered.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Extended Deletion Report
eurex_cash_eti_t7_v12_0.extended_deletion_report.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_extended_deletion_report = eurex_cash_eti_t7_v12_0.extended_deletion_report.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.extended_deletion_report then
    local range = buffer(offset, size_of_extended_deletion_report)
    local display = eurex_cash_eti_t7_v12_0.extended_deletion_report.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.extended_deletion_report, range, display)
  end

  eurex_cash_eti_t7_v12_0.extended_deletion_report.fields(buffer, offset, packet, parent, size_of_extended_deletion_report)

  return offset + size_of_extended_deletion_report
end

-- Enter Tes Trade Request
eurex_cash_eti_t7_v12_0.enter_tes_trade_request = {}

-- Read runtime size of: Enter Tes Trade Request
eurex_cash_eti_t7_v12_0.enter_tes_trade_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Enter Tes Trade Request
eurex_cash_eti_t7_v12_0.enter_tes_trade_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Enter Tes Trade Request
eurex_cash_eti_t7_v12_0.enter_tes_trade_request.fields = function(buffer, offset, packet, parent, size_of_enter_tes_trade_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Last Px: 8 Byte Unsigned Fixed Width Integer Nullable
  index, last_px = eurex_cash_eti_t7_v12_0.last_px.dissect(buffer, index, packet, parent)

  -- Trans Bkd Time: 8 Byte Unsigned Fixed Width Integer Nullable
  index, trans_bkd_time = eurex_cash_eti_t7_v12_0.trans_bkd_time.dissect(buffer, index, packet, parent)

  -- Settl Curr Fx Rate: 8 Byte Unsigned Fixed Width Integer Nullable
  index, settl_curr_fx_rate = eurex_cash_eti_t7_v12_0.settl_curr_fx_rate.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Settl Date: 4 Byte Unsigned Fixed Width Integer Nullable
  index, settl_date = eurex_cash_eti_t7_v12_0.settl_date.dissect(buffer, index, packet, parent)

  -- Trd Type: 2 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, trd_type = eurex_cash_eti_t7_v12_0.trd_type.dissect(buffer, index, packet, parent)

  -- Trade Report Type: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, trade_report_type = eurex_cash_eti_t7_v12_0.trade_report_type.dissect(buffer, index, packet, parent)

  -- Trade Publish Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 5 values
  index, trade_publish_indicator = eurex_cash_eti_t7_v12_0.trade_publish_indicator.dissect(buffer, index, packet, parent)

  -- No Side Allocs: 1 Byte Unsigned Fixed Width Integer Nullable
  index, no_side_allocs = eurex_cash_eti_t7_v12_0.no_side_allocs.dissect(buffer, index, packet, parent)

  -- Trade Report Text: 20 Byte Ascii String Nullable
  index, trade_report_text = eurex_cash_eti_t7_v12_0.trade_report_text.dissect(buffer, index, packet, parent)

  -- Trade Report Id: 20 Byte Ascii String Nullable
  index, trade_report_id = eurex_cash_eti_t7_v12_0.trade_report_id.dissect(buffer, index, packet, parent)

  -- Pad 3: 3 Byte
  index, pad_3 = eurex_cash_eti_t7_v12_0.pad_3.dissect(buffer, index, packet, parent)

  -- Repeating: Side Alloc Grp Comp
  for side_alloc_grp_comp_index = 1, no_side_allocs do
    index, side_alloc_grp_comp = eurex_cash_eti_t7_v12_0.side_alloc_grp_comp.dissect(buffer, index, packet, parent, side_alloc_grp_comp_index)
  end

  return index
end

-- Dissect: Enter Tes Trade Request
eurex_cash_eti_t7_v12_0.enter_tes_trade_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_enter_tes_trade_request = eurex_cash_eti_t7_v12_0.enter_tes_trade_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.enter_tes_trade_request then
    local range = buffer(offset, size_of_enter_tes_trade_request)
    local display = eurex_cash_eti_t7_v12_0.enter_tes_trade_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.enter_tes_trade_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.enter_tes_trade_request.fields(buffer, offset, packet, parent, size_of_enter_tes_trade_request)

  return offset + size_of_enter_tes_trade_request
end

-- Delete Tes Trade Request
eurex_cash_eti_t7_v12_0.delete_tes_trade_request = {}

-- Read runtime size of: Delete Tes Trade Request
eurex_cash_eti_t7_v12_0.delete_tes_trade_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete Tes Trade Request
eurex_cash_eti_t7_v12_0.delete_tes_trade_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete Tes Trade Request
eurex_cash_eti_t7_v12_0.delete_tes_trade_request.fields = function(buffer, offset, packet, parent, size_of_delete_tes_trade_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Package Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, package_id = eurex_cash_eti_t7_v12_0.package_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Tes Exec Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, tes_exec_id = eurex_cash_eti_t7_v12_0.tes_exec_id.dissect(buffer, index, packet, parent)

  -- Trd Type: 2 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, trd_type = eurex_cash_eti_t7_v12_0.trd_type.dissect(buffer, index, packet, parent)

  -- Trade Report Type: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, trade_report_type = eurex_cash_eti_t7_v12_0.trade_report_type.dissect(buffer, index, packet, parent)

  -- Trade Report Id: 20 Byte Ascii String Nullable
  index, trade_report_id = eurex_cash_eti_t7_v12_0.trade_report_id.dissect(buffer, index, packet, parent)

  -- Pad 5: 5 Byte
  index, pad_5 = eurex_cash_eti_t7_v12_0.pad_5.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Delete Tes Trade Request
eurex_cash_eti_t7_v12_0.delete_tes_trade_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_tes_trade_request = eurex_cash_eti_t7_v12_0.delete_tes_trade_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_tes_trade_request then
    local range = buffer(offset, size_of_delete_tes_trade_request)
    local display = eurex_cash_eti_t7_v12_0.delete_tes_trade_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_tes_trade_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_tes_trade_request.fields(buffer, offset, packet, parent, size_of_delete_tes_trade_request)

  return offset + size_of_delete_tes_trade_request
end

-- Delete Order Single Request
eurex_cash_eti_t7_v12_0.delete_order_single_request = {}

-- Read runtime size of: Delete Order Single Request
eurex_cash_eti_t7_v12_0.delete_order_single_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete Order Single Request
eurex_cash_eti_t7_v12_0.delete_order_single_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete Order Single Request
eurex_cash_eti_t7_v12_0.delete_order_single_request.fields = function(buffer, offset, packet, parent, size_of_delete_order_single_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Target Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_session_id = eurex_cash_eti_t7_v12_0.target_party_id_session_id.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Fix Cl Ord Id: 20 Byte Ascii String Nullable
  index, fix_cl_ord_id = eurex_cash_eti_t7_v12_0.fix_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Delete Order Single Request
eurex_cash_eti_t7_v12_0.delete_order_single_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_order_single_request = eurex_cash_eti_t7_v12_0.delete_order_single_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_order_single_request then
    local range = buffer(offset, size_of_delete_order_single_request)
    local display = eurex_cash_eti_t7_v12_0.delete_order_single_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_order_single_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_order_single_request.fields(buffer, offset, packet, parent, size_of_delete_order_single_request)

  return offset + size_of_delete_order_single_request
end

-- Delete Order Response
eurex_cash_eti_t7_v12_0.delete_order_response = {}

-- Read runtime size of: Delete Order Response
eurex_cash_eti_t7_v12_0.delete_order_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete Order Response
eurex_cash_eti_t7_v12_0.delete_order_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete Order Response
eurex_cash_eti_t7_v12_0.delete_order_response.fields = function(buffer, offset, packet, parent, size_of_delete_order_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Me Comp: Struct of 10 fields
  index, response_header_me_comp = eurex_cash_eti_t7_v12_0.response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Cum Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cum_qty = eurex_cash_eti_t7_v12_0.cum_qty.dissect(buffer, index, packet, parent)

  -- Cxl Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_qty = eurex_cash_eti_t7_v12_0.cxl_qty.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Transaction Delay Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, transaction_delay_indicator = eurex_cash_eti_t7_v12_0.transaction_delay_indicator.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Delete Order Response
eurex_cash_eti_t7_v12_0.delete_order_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_order_response = eurex_cash_eti_t7_v12_0.delete_order_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_order_response then
    local range = buffer(offset, size_of_delete_order_response)
    local display = eurex_cash_eti_t7_v12_0.delete_order_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_order_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_order_response.fields(buffer, offset, packet, parent, size_of_delete_order_response)

  return offset + size_of_delete_order_response
end

-- Delete Order Nr Response
eurex_cash_eti_t7_v12_0.delete_order_nr_response = {}

-- Read runtime size of: Delete Order Nr Response
eurex_cash_eti_t7_v12_0.delete_order_nr_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete Order Nr Response
eurex_cash_eti_t7_v12_0.delete_order_nr_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete Order Nr Response
eurex_cash_eti_t7_v12_0.delete_order_nr_response.fields = function(buffer, offset, packet, parent, size_of_delete_order_nr_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Cum Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cum_qty = eurex_cash_eti_t7_v12_0.cum_qty.dissect(buffer, index, packet, parent)

  -- Cxl Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_qty = eurex_cash_eti_t7_v12_0.cxl_qty.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Transaction Delay Indicator: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, transaction_delay_indicator = eurex_cash_eti_t7_v12_0.transaction_delay_indicator.dissect(buffer, index, packet, parent)

  -- Pad 7: 7 Byte
  index, pad_7 = eurex_cash_eti_t7_v12_0.pad_7.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Delete Order Nr Response
eurex_cash_eti_t7_v12_0.delete_order_nr_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_order_nr_response = eurex_cash_eti_t7_v12_0.delete_order_nr_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_order_nr_response then
    local range = buffer(offset, size_of_delete_order_nr_response)
    local display = eurex_cash_eti_t7_v12_0.delete_order_nr_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_order_nr_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_order_nr_response.fields(buffer, offset, packet, parent, size_of_delete_order_nr_response)

  return offset + size_of_delete_order_nr_response
end

-- Delete Order Broadcast
eurex_cash_eti_t7_v12_0.delete_order_broadcast = {}

-- Read runtime size of: Delete Order Broadcast
eurex_cash_eti_t7_v12_0.delete_order_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete Order Broadcast
eurex_cash_eti_t7_v12_0.delete_order_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete Order Broadcast
eurex_cash_eti_t7_v12_0.delete_order_broadcast.fields = function(buffer, offset, packet, parent, size_of_delete_order_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Order Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_id = eurex_cash_eti_t7_v12_0.order_id.dissect(buffer, index, packet, parent)

  -- Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cl_ord_id = eurex_cash_eti_t7_v12_0.cl_ord_id.dissect(buffer, index, packet, parent)

  -- Orig Cl Ord Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, orig_cl_ord_id = eurex_cash_eti_t7_v12_0.orig_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  -- Cum Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cum_qty = eurex_cash_eti_t7_v12_0.cum_qty.dissect(buffer, index, packet, parent)

  -- Cxl Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, cxl_qty = eurex_cash_eti_t7_v12_0.cxl_qty.dissect(buffer, index, packet, parent)

  -- Quote Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, quote_id = eurex_cash_eti_t7_v12_0.quote_id.dissect(buffer, index, packet, parent)

  -- Order Id Sfx: 4 Byte Unsigned Fixed Width Integer Nullable
  index, order_id_sfx = eurex_cash_eti_t7_v12_0.order_id_sfx.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Party Id Entering Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_entering_trader = eurex_cash_eti_t7_v12_0.party_id_entering_trader.dissect(buffer, index, packet, parent)

  -- Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_session_id = eurex_cash_eti_t7_v12_0.party_id_session_id.dissect(buffer, index, packet, parent)

  -- Exec Restatement Reason: 2 Byte Unsigned Fixed Width Integer Enum with 52 values
  index, exec_restatement_reason = eurex_cash_eti_t7_v12_0.exec_restatement_reason.dissect(buffer, index, packet, parent)

  -- Party Id Entering Firm: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_entering_firm = eurex_cash_eti_t7_v12_0.party_id_entering_firm.dissect(buffer, index, packet, parent)

  -- Ord Status: 1 Byte Ascii String Enum with 8 values
  index, ord_status = eurex_cash_eti_t7_v12_0.ord_status.dissect(buffer, index, packet, parent)

  -- Exec Type: 1 Byte Ascii String Enum with 10 values
  index, exec_type = eurex_cash_eti_t7_v12_0.exec_type.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Order Event Type: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_event_type = eurex_cash_eti_t7_v12_0.order_event_type.dissect(buffer, index, packet, parent)

  -- Fix Cl Ord Id: 20 Byte Ascii String Nullable
  index, fix_cl_ord_id = eurex_cash_eti_t7_v12_0.fix_cl_ord_id.dissect(buffer, index, packet, parent)

  -- Party Entering Firm: 5 Byte Ascii String Nullable
  index, party_entering_firm = eurex_cash_eti_t7_v12_0.party_entering_firm.dissect(buffer, index, packet, parent)

  -- Party Entering Trader: 6 Byte Ascii String Nullable
  index, party_entering_trader = eurex_cash_eti_t7_v12_0.party_entering_trader.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Delete Order Broadcast
eurex_cash_eti_t7_v12_0.delete_order_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_order_broadcast = eurex_cash_eti_t7_v12_0.delete_order_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_order_broadcast then
    local range = buffer(offset, size_of_delete_order_broadcast)
    local display = eurex_cash_eti_t7_v12_0.delete_order_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_order_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_order_broadcast.fields(buffer, offset, packet, parent, size_of_delete_order_broadcast)

  return offset + size_of_delete_order_broadcast
end

-- Delete All Quote Response
eurex_cash_eti_t7_v12_0.delete_all_quote_response = {}

-- Read runtime size of: Delete All Quote Response
eurex_cash_eti_t7_v12_0.delete_all_quote_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete All Quote Response
eurex_cash_eti_t7_v12_0.delete_all_quote_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete All Quote Response
eurex_cash_eti_t7_v12_0.delete_all_quote_response.fields = function(buffer, offset, packet, parent, size_of_delete_all_quote_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Mass Action Report Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, mass_action_report_id = eurex_cash_eti_t7_v12_0.mass_action_report_id.dissect(buffer, index, packet, parent)

  -- No Not Affected Securities: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_not_affected_securities = eurex_cash_eti_t7_v12_0.no_not_affected_securities.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  -- Repeating: Not Affected Securities Grp Comp
  for not_affected_securities_grp_comp_index = 1, no_not_affected_securities do
    index, not_affected_securities_grp_comp = eurex_cash_eti_t7_v12_0.not_affected_securities_grp_comp.dissect(buffer, index, packet, parent, not_affected_securities_grp_comp_index)
  end

  return index
end

-- Dissect: Delete All Quote Response
eurex_cash_eti_t7_v12_0.delete_all_quote_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_all_quote_response = eurex_cash_eti_t7_v12_0.delete_all_quote_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_all_quote_response then
    local range = buffer(offset, size_of_delete_all_quote_response)
    local display = eurex_cash_eti_t7_v12_0.delete_all_quote_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_all_quote_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_all_quote_response.fields(buffer, offset, packet, parent, size_of_delete_all_quote_response)

  return offset + size_of_delete_all_quote_response
end

-- Delete All Quote Request
eurex_cash_eti_t7_v12_0.delete_all_quote_request = {}

-- Read runtime size of: Delete All Quote Request
eurex_cash_eti_t7_v12_0.delete_all_quote_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete All Quote Request
eurex_cash_eti_t7_v12_0.delete_all_quote_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete All Quote Request
eurex_cash_eti_t7_v12_0.delete_all_quote_request.fields = function(buffer, offset, packet, parent, size_of_delete_all_quote_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Target Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_session_id = eurex_cash_eti_t7_v12_0.target_party_id_session_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Delete All Quote Request
eurex_cash_eti_t7_v12_0.delete_all_quote_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_all_quote_request = eurex_cash_eti_t7_v12_0.delete_all_quote_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_all_quote_request then
    local range = buffer(offset, size_of_delete_all_quote_request)
    local display = eurex_cash_eti_t7_v12_0.delete_all_quote_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_all_quote_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_all_quote_request.fields(buffer, offset, packet, parent, size_of_delete_all_quote_request)

  return offset + size_of_delete_all_quote_request
end

-- Target Party Id Desk Id
eurex_cash_eti_t7_v12_0.target_party_id_desk_id = {}

-- Size: Target Party Id Desk Id
eurex_cash_eti_t7_v12_0.target_party_id_desk_id.size = 3

-- Display: Target Party Id Desk Id
eurex_cash_eti_t7_v12_0.target_party_id_desk_id.display = function(value)
  -- Check if field has value
  if value == nil or value == '' then
    return "Target Party Id Desk Id: No Value"
  end

  return "Target Party Id Desk Id: "..value
end

-- Dissect: Target Party Id Desk Id
eurex_cash_eti_t7_v12_0.target_party_id_desk_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.target_party_id_desk_id.size
  local range = buffer(offset, length)
  local value = trim_right_spaces(range:string())
  local display = eurex_cash_eti_t7_v12_0.target_party_id_desk_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.target_party_id_desk_id, range, value, display)

  return offset + length, value
end

-- Delete All Quote Broadcast
eurex_cash_eti_t7_v12_0.delete_all_quote_broadcast = {}

-- Read runtime size of: Delete All Quote Broadcast
eurex_cash_eti_t7_v12_0.delete_all_quote_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete All Quote Broadcast
eurex_cash_eti_t7_v12_0.delete_all_quote_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete All Quote Broadcast
eurex_cash_eti_t7_v12_0.delete_all_quote_broadcast.fields = function(buffer, offset, packet, parent, size_of_delete_all_quote_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Mass Action Report Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, mass_action_report_id = eurex_cash_eti_t7_v12_0.mass_action_report_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Target Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_session_id = eurex_cash_eti_t7_v12_0.target_party_id_session_id.dissect(buffer, index, packet, parent)

  -- Party Id Entering Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_entering_trader = eurex_cash_eti_t7_v12_0.party_id_entering_trader.dissect(buffer, index, packet, parent)

  -- Target Party Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_executing_trader = eurex_cash_eti_t7_v12_0.target_party_id_executing_trader.dissect(buffer, index, packet, parent)

  -- No Not Affected Securities: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_not_affected_securities = eurex_cash_eti_t7_v12_0.no_not_affected_securities.dissect(buffer, index, packet, parent)

  -- Mass Action Reason: 1 Byte Unsigned Fixed Width Integer Enum with 20 values
  index, mass_action_reason = eurex_cash_eti_t7_v12_0.mass_action_reason.dissect(buffer, index, packet, parent)

  -- Party Id Entering Firm: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_entering_firm = eurex_cash_eti_t7_v12_0.party_id_entering_firm.dissect(buffer, index, packet, parent)

  -- Target Party Id Desk Id: 3 Byte Ascii String Nullable
  index, target_party_id_desk_id = eurex_cash_eti_t7_v12_0.target_party_id_desk_id.dissect(buffer, index, packet, parent)

  -- Pad 1: 1 Byte
  index, pad_1 = eurex_cash_eti_t7_v12_0.pad_1.dissect(buffer, index, packet, parent)

  -- Repeating: Not Affected Securities Grp Comp
  for not_affected_securities_grp_comp_index = 1, no_not_affected_securities do
    index, not_affected_securities_grp_comp = eurex_cash_eti_t7_v12_0.not_affected_securities_grp_comp.dissect(buffer, index, packet, parent, not_affected_securities_grp_comp_index)
  end

  return index
end

-- Dissect: Delete All Quote Broadcast
eurex_cash_eti_t7_v12_0.delete_all_quote_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_all_quote_broadcast = eurex_cash_eti_t7_v12_0.delete_all_quote_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_all_quote_broadcast then
    local range = buffer(offset, size_of_delete_all_quote_broadcast)
    local display = eurex_cash_eti_t7_v12_0.delete_all_quote_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_all_quote_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_all_quote_broadcast.fields(buffer, offset, packet, parent, size_of_delete_all_quote_broadcast)

  return offset + size_of_delete_all_quote_broadcast
end

-- Affected Order Request Id
eurex_cash_eti_t7_v12_0.affected_order_request_id = {}

-- Size: Affected Order Request Id
eurex_cash_eti_t7_v12_0.affected_order_request_id.size = 4

-- Display: Affected Order Request Id
eurex_cash_eti_t7_v12_0.affected_order_request_id.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Affected Order Request Id: No Value"
  end

  return "Affected Order Request Id: "..value
end

-- Dissect: Affected Order Request Id
eurex_cash_eti_t7_v12_0.affected_order_request_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.affected_order_request_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.affected_order_request_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.affected_order_request_id, range, value, display)

  return offset + length, value
end

-- Affected Order Requests Grp Comp
eurex_cash_eti_t7_v12_0.affected_order_requests_grp_comp = {}

-- Size: Affected Order Requests Grp Comp
eurex_cash_eti_t7_v12_0.affected_order_requests_grp_comp.size =
  eurex_cash_eti_t7_v12_0.affected_order_request_id.size + 
  eurex_cash_eti_t7_v12_0.pad_4.size

-- Display: Affected Order Requests Grp Comp
eurex_cash_eti_t7_v12_0.affected_order_requests_grp_comp.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Affected Order Requests Grp Comp
eurex_cash_eti_t7_v12_0.affected_order_requests_grp_comp.fields = function(buffer, offset, packet, parent, affected_order_requests_grp_comp_index)
  local index = offset

  -- Implicit Affected Order Requests Grp Comp Index
  if affected_order_requests_grp_comp_index ~= nil then
    local iteration = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.affected_order_requests_grp_comp_index, affected_order_requests_grp_comp_index)
    iteration:set_generated()
  end

  -- Affected Order Request Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, affected_order_request_id = eurex_cash_eti_t7_v12_0.affected_order_request_id.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Affected Order Requests Grp Comp
eurex_cash_eti_t7_v12_0.affected_order_requests_grp_comp.dissect = function(buffer, offset, packet, parent, affected_order_requests_grp_comp_index)
  if show.affected_order_requests_grp_comp then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.affected_order_requests_grp_comp, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.affected_order_requests_grp_comp.fields(buffer, offset, packet, parent, affected_order_requests_grp_comp_index)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.affected_order_requests_grp_comp.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.affected_order_requests_grp_comp.fields(buffer, offset, packet, parent, affected_order_requests_grp_comp_index)
  end
end

-- No Affected Order Requests
eurex_cash_eti_t7_v12_0.no_affected_order_requests = {}

-- Size: No Affected Order Requests
eurex_cash_eti_t7_v12_0.no_affected_order_requests.size = 2

-- Display: No Affected Order Requests
eurex_cash_eti_t7_v12_0.no_affected_order_requests.display = function(value)
  -- Check if field has value
  if value == 0xFFFF then
    return "No Affected Order Requests: No Value"
  end

  return "No Affected Order Requests: "..value
end

-- Dissect: No Affected Order Requests
eurex_cash_eti_t7_v12_0.no_affected_order_requests.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.no_affected_order_requests.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.no_affected_order_requests.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.no_affected_order_requests, range, value, display)

  return offset + length, value
end

-- Delete All Order Response
eurex_cash_eti_t7_v12_0.delete_all_order_response = {}

-- Read runtime size of: Delete All Order Response
eurex_cash_eti_t7_v12_0.delete_all_order_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete All Order Response
eurex_cash_eti_t7_v12_0.delete_all_order_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete All Order Response
eurex_cash_eti_t7_v12_0.delete_all_order_response.fields = function(buffer, offset, packet, parent, size_of_delete_all_order_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Response Header Me Comp: Struct of 10 fields
  index, response_header_me_comp = eurex_cash_eti_t7_v12_0.response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Mass Action Report Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, mass_action_report_id = eurex_cash_eti_t7_v12_0.mass_action_report_id.dissect(buffer, index, packet, parent)

  -- No Not Affected Orders: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_not_affected_orders = eurex_cash_eti_t7_v12_0.no_not_affected_orders.dissect(buffer, index, packet, parent)

  -- No Affected Orders: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_affected_orders = eurex_cash_eti_t7_v12_0.no_affected_orders.dissect(buffer, index, packet, parent)

  -- No Affected Order Requests: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_affected_order_requests = eurex_cash_eti_t7_v12_0.no_affected_order_requests.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Repeating: Not Affected Orders Grp Comp
  for not_affected_orders_grp_comp_index = 1, no_not_affected_orders do
    index, not_affected_orders_grp_comp = eurex_cash_eti_t7_v12_0.not_affected_orders_grp_comp.dissect(buffer, index, packet, parent, not_affected_orders_grp_comp_index)
  end

  -- Repeating: Affected Ord Grp Comp
  for affected_ord_grp_comp_index = 1, no_affected_orders do
    index, affected_ord_grp_comp = eurex_cash_eti_t7_v12_0.affected_ord_grp_comp.dissect(buffer, index, packet, parent, affected_ord_grp_comp_index)
  end

  -- Repeating: Affected Order Requests Grp Comp
  for affected_order_requests_grp_comp_index = 1, no_affected_order_requests do
    index, affected_order_requests_grp_comp = eurex_cash_eti_t7_v12_0.affected_order_requests_grp_comp.dissect(buffer, index, packet, parent, affected_order_requests_grp_comp_index)
  end

  return index
end

-- Dissect: Delete All Order Response
eurex_cash_eti_t7_v12_0.delete_all_order_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_all_order_response = eurex_cash_eti_t7_v12_0.delete_all_order_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_all_order_response then
    local range = buffer(offset, size_of_delete_all_order_response)
    local display = eurex_cash_eti_t7_v12_0.delete_all_order_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_all_order_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_all_order_response.fields(buffer, offset, packet, parent, size_of_delete_all_order_response)

  return offset + size_of_delete_all_order_response
end

-- Delete All Order Request
eurex_cash_eti_t7_v12_0.delete_all_order_request = {}

-- Read runtime size of: Delete All Order Request
eurex_cash_eti_t7_v12_0.delete_all_order_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete All Order Request
eurex_cash_eti_t7_v12_0.delete_all_order_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete All Order Request
eurex_cash_eti_t7_v12_0.delete_all_order_request.fields = function(buffer, offset, packet, parent, size_of_delete_all_order_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, price = eurex_cash_eti_t7_v12_0.price.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Target Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_session_id = eurex_cash_eti_t7_v12_0.target_party_id_session_id.dissect(buffer, index, packet, parent)

  -- Target Party Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_executing_trader = eurex_cash_eti_t7_v12_0.target_party_id_executing_trader.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Delete All Order Request
eurex_cash_eti_t7_v12_0.delete_all_order_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_all_order_request = eurex_cash_eti_t7_v12_0.delete_all_order_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_all_order_request then
    local range = buffer(offset, size_of_delete_all_order_request)
    local display = eurex_cash_eti_t7_v12_0.delete_all_order_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_all_order_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_all_order_request.fields(buffer, offset, packet, parent, size_of_delete_all_order_request)

  return offset + size_of_delete_all_order_request
end

-- Delete All Order Quote Event Broadcast
eurex_cash_eti_t7_v12_0.delete_all_order_quote_event_broadcast = {}

-- Read runtime size of: Delete All Order Quote Event Broadcast
eurex_cash_eti_t7_v12_0.delete_all_order_quote_event_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete All Order Quote Event Broadcast
eurex_cash_eti_t7_v12_0.delete_all_order_quote_event_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete All Order Quote Event Broadcast
eurex_cash_eti_t7_v12_0.delete_all_order_quote_event_broadcast.fields = function(buffer, offset, packet, parent, size_of_delete_all_order_quote_event_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Mass Action Report Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, mass_action_report_id = eurex_cash_eti_t7_v12_0.mass_action_report_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Mass Action Reason: 1 Byte Unsigned Fixed Width Integer Enum with 20 values
  index, mass_action_reason = eurex_cash_eti_t7_v12_0.mass_action_reason.dissect(buffer, index, packet, parent)

  -- Exec Inst: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, exec_inst = eurex_cash_eti_t7_v12_0.exec_inst.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Delete All Order Quote Event Broadcast
eurex_cash_eti_t7_v12_0.delete_all_order_quote_event_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_all_order_quote_event_broadcast = eurex_cash_eti_t7_v12_0.delete_all_order_quote_event_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_all_order_quote_event_broadcast then
    local range = buffer(offset, size_of_delete_all_order_quote_event_broadcast)
    local display = eurex_cash_eti_t7_v12_0.delete_all_order_quote_event_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_all_order_quote_event_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_all_order_quote_event_broadcast.fields(buffer, offset, packet, parent, size_of_delete_all_order_quote_event_broadcast)

  return offset + size_of_delete_all_order_quote_event_broadcast
end

-- Delete All Order Nr Response
eurex_cash_eti_t7_v12_0.delete_all_order_nr_response = {}

-- Read runtime size of: Delete All Order Nr Response
eurex_cash_eti_t7_v12_0.delete_all_order_nr_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete All Order Nr Response
eurex_cash_eti_t7_v12_0.delete_all_order_nr_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete All Order Nr Response
eurex_cash_eti_t7_v12_0.delete_all_order_nr_response.fields = function(buffer, offset, packet, parent, size_of_delete_all_order_nr_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Mass Action Report Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, mass_action_report_id = eurex_cash_eti_t7_v12_0.mass_action_report_id.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Delete All Order Nr Response
eurex_cash_eti_t7_v12_0.delete_all_order_nr_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_all_order_nr_response = eurex_cash_eti_t7_v12_0.delete_all_order_nr_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_all_order_nr_response then
    local range = buffer(offset, size_of_delete_all_order_nr_response)
    local display = eurex_cash_eti_t7_v12_0.delete_all_order_nr_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_all_order_nr_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_all_order_nr_response.fields(buffer, offset, packet, parent, size_of_delete_all_order_nr_response)

  return offset + size_of_delete_all_order_nr_response
end

-- Delete All Order Broadcast
eurex_cash_eti_t7_v12_0.delete_all_order_broadcast = {}

-- Read runtime size of: Delete All Order Broadcast
eurex_cash_eti_t7_v12_0.delete_all_order_broadcast.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Delete All Order Broadcast
eurex_cash_eti_t7_v12_0.delete_all_order_broadcast.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Delete All Order Broadcast
eurex_cash_eti_t7_v12_0.delete_all_order_broadcast.fields = function(buffer, offset, packet, parent, size_of_delete_all_order_broadcast)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Rbc Header Me Comp: Struct of 10 fields
  index, rbc_header_me_comp = eurex_cash_eti_t7_v12_0.rbc_header_me_comp.dissect(buffer, index, packet, parent)

  -- Mass Action Report Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, mass_action_report_id = eurex_cash_eti_t7_v12_0.mass_action_report_id.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Price: 8 Byte Unsigned Fixed Width Integer Nullable
  index, price = eurex_cash_eti_t7_v12_0.price.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Target Party Id Session Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_session_id = eurex_cash_eti_t7_v12_0.target_party_id_session_id.dissect(buffer, index, packet, parent)

  -- Target Party Id Executing Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, target_party_id_executing_trader = eurex_cash_eti_t7_v12_0.target_party_id_executing_trader.dissect(buffer, index, packet, parent)

  -- Party Id Entering Trader: 4 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_entering_trader = eurex_cash_eti_t7_v12_0.party_id_entering_trader.dissect(buffer, index, packet, parent)

  -- No Not Affected Orders: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_not_affected_orders = eurex_cash_eti_t7_v12_0.no_not_affected_orders.dissect(buffer, index, packet, parent)

  -- No Affected Orders: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_affected_orders = eurex_cash_eti_t7_v12_0.no_affected_orders.dissect(buffer, index, packet, parent)

  -- No Affected Order Requests: 2 Byte Unsigned Fixed Width Integer Nullable
  index, no_affected_order_requests = eurex_cash_eti_t7_v12_0.no_affected_order_requests.dissect(buffer, index, packet, parent)

  -- Party Id Entering Firm: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_entering_firm = eurex_cash_eti_t7_v12_0.party_id_entering_firm.dissect(buffer, index, packet, parent)

  -- Mass Action Reason: 1 Byte Unsigned Fixed Width Integer Enum with 20 values
  index, mass_action_reason = eurex_cash_eti_t7_v12_0.mass_action_reason.dissect(buffer, index, packet, parent)

  -- Exec Inst: 1 Byte Unsigned Fixed Width Integer Enum with 6 values
  index, exec_inst = eurex_cash_eti_t7_v12_0.exec_inst.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  -- Repeating: Not Affected Orders Grp Comp
  for not_affected_orders_grp_comp_index = 1, no_not_affected_orders do
    index, not_affected_orders_grp_comp = eurex_cash_eti_t7_v12_0.not_affected_orders_grp_comp.dissect(buffer, index, packet, parent, not_affected_orders_grp_comp_index)
  end

  -- Repeating: Affected Ord Grp Comp
  for affected_ord_grp_comp_index = 1, no_affected_orders do
    index, affected_ord_grp_comp = eurex_cash_eti_t7_v12_0.affected_ord_grp_comp.dissect(buffer, index, packet, parent, affected_ord_grp_comp_index)
  end

  -- Repeating: Affected Order Requests Grp Comp
  for affected_order_requests_grp_comp_index = 1, no_affected_order_requests do
    index, affected_order_requests_grp_comp = eurex_cash_eti_t7_v12_0.affected_order_requests_grp_comp.dissect(buffer, index, packet, parent, affected_order_requests_grp_comp_index)
  end

  return index
end

-- Dissect: Delete All Order Broadcast
eurex_cash_eti_t7_v12_0.delete_all_order_broadcast.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_delete_all_order_broadcast = eurex_cash_eti_t7_v12_0.delete_all_order_broadcast.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.delete_all_order_broadcast then
    local range = buffer(offset, size_of_delete_all_order_broadcast)
    local display = eurex_cash_eti_t7_v12_0.delete_all_order_broadcast.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.delete_all_order_broadcast, range, display)
  end

  eurex_cash_eti_t7_v12_0.delete_all_order_broadcast.fields(buffer, offset, packet, parent, size_of_delete_all_order_broadcast)

  return offset + size_of_delete_all_order_broadcast
end

-- Cross Request Response
eurex_cash_eti_t7_v12_0.cross_request_response = {}

-- Read runtime size of: Cross Request Response
eurex_cash_eti_t7_v12_0.cross_request_response.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Cross Request Response
eurex_cash_eti_t7_v12_0.cross_request_response.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Cross Request Response
eurex_cash_eti_t7_v12_0.cross_request_response.fields = function(buffer, offset, packet, parent, size_of_cross_request_response)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Nr Response Header Me Comp: Struct of 8 fields
  index, nr_response_header_me_comp = eurex_cash_eti_t7_v12_0.nr_response_header_me_comp.dissect(buffer, index, packet, parent)

  -- Exec Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, exec_id = eurex_cash_eti_t7_v12_0.exec_id.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Cross Request Response
eurex_cash_eti_t7_v12_0.cross_request_response.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_cross_request_response = eurex_cash_eti_t7_v12_0.cross_request_response.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.cross_request_response then
    local range = buffer(offset, size_of_cross_request_response)
    local display = eurex_cash_eti_t7_v12_0.cross_request_response.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.cross_request_response, range, display)
  end

  eurex_cash_eti_t7_v12_0.cross_request_response.fields(buffer, offset, packet, parent, size_of_cross_request_response)

  return offset + size_of_cross_request_response
end

-- Cross Request
eurex_cash_eti_t7_v12_0.cross_request = {}

-- Read runtime size of: Cross Request
eurex_cash_eti_t7_v12_0.cross_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Cross Request
eurex_cash_eti_t7_v12_0.cross_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Cross Request
eurex_cash_eti_t7_v12_0.cross_request.fields = function(buffer, offset, packet, parent, size_of_cross_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Security Id: 8 Byte Signed Fixed Width Integer Nullable
  index, security_id = eurex_cash_eti_t7_v12_0.security_id.dissect(buffer, index, packet, parent)

  -- Order Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, order_qty = eurex_cash_eti_t7_v12_0.order_qty.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Pad 4: 4 Byte
  index, pad_4 = eurex_cash_eti_t7_v12_0.pad_4.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Cross Request
eurex_cash_eti_t7_v12_0.cross_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_cross_request = eurex_cash_eti_t7_v12_0.cross_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.cross_request then
    local range = buffer(offset, size_of_cross_request)
    local display = eurex_cash_eti_t7_v12_0.cross_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.cross_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.cross_request.fields(buffer, offset, packet, parent, size_of_cross_request)

  return offset + size_of_cross_request
end

-- Appl Id Status
eurex_cash_eti_t7_v12_0.appl_id_status = {}

-- Size: Appl Id Status
eurex_cash_eti_t7_v12_0.appl_id_status.size = 4

-- Display: Appl Id Status
eurex_cash_eti_t7_v12_0.appl_id_status.display = function(value)
  if value == 105 then
    return "Appl Id Status: Outboundconversionerror (105)"
  end
  if value == 0xFFFFFFFF then
    return "Appl Id Status: No Value"
  end

  return "Appl Id Status: Unknown("..value..")"
end

-- Dissect: Appl Id Status
eurex_cash_eti_t7_v12_0.appl_id_status.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.appl_id_status.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.appl_id_status.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.appl_id_status, range, value, display)

  return offset + length, value
end

-- Broadcast Error Notification
eurex_cash_eti_t7_v12_0.broadcast_error_notification = {}

-- Read runtime size of: Broadcast Error Notification
eurex_cash_eti_t7_v12_0.broadcast_error_notification.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Broadcast Error Notification
eurex_cash_eti_t7_v12_0.broadcast_error_notification.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Broadcast Error Notification
eurex_cash_eti_t7_v12_0.broadcast_error_notification.fields = function(buffer, offset, packet, parent, size_of_broadcast_error_notification)
  local index = offset

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Notif Header Comp: Struct of 1 fields
  index, notif_header_comp = eurex_cash_eti_t7_v12_0.notif_header_comp.dissect(buffer, index, packet, parent)

  -- Appl Id Status: 4 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, appl_id_status = eurex_cash_eti_t7_v12_0.appl_id_status.dissect(buffer, index, packet, parent)

  -- Ref Appl Sub Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, ref_appl_sub_id = eurex_cash_eti_t7_v12_0.ref_appl_sub_id.dissect(buffer, index, packet, parent)

  -- Var Text Len: 2 Byte Unsigned Fixed Width Integer Nullable
  index, var_text_len = eurex_cash_eti_t7_v12_0.var_text_len.dissect(buffer, index, packet, parent)

  -- Ref Appl Id: 1 Byte Unsigned Fixed Width Integer Enum with 12 values
  index, ref_appl_id = eurex_cash_eti_t7_v12_0.ref_appl_id.dissect(buffer, index, packet, parent)

  -- Session Status: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, session_status = eurex_cash_eti_t7_v12_0.session_status.dissect(buffer, index, packet, parent)

  -- Runtime Size Of: Var Text
  index, var_text = eurex_cash_eti_t7_v12_0.var_text.dissect(buffer, index, packet, parent, var_text_len)

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  -- Runtime optional field: Alignment Padding
  local alignment_padding = nil

  local alignment_padding_exists = body_len ~= index

  if alignment_padding_exists then

    -- Runtime Size Of: Alignment Padding
    local size_of_alignment_padding = body_len - index

    -- Alignment Padding: 0 Byte
    index, alignment_padding = eurex_cash_eti_t7_v12_0.alignment_padding.dissect(buffer, index, packet, parent, size_of_alignment_padding)
  end

  return index
end

-- Dissect: Broadcast Error Notification
eurex_cash_eti_t7_v12_0.broadcast_error_notification.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_broadcast_error_notification = eurex_cash_eti_t7_v12_0.broadcast_error_notification.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.broadcast_error_notification then
    local range = buffer(offset, size_of_broadcast_error_notification)
    local display = eurex_cash_eti_t7_v12_0.broadcast_error_notification.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.broadcast_error_notification, range, display)
  end

  eurex_cash_eti_t7_v12_0.broadcast_error_notification.fields(buffer, offset, packet, parent, size_of_broadcast_error_notification)

  return offset + size_of_broadcast_error_notification
end

-- Approve Tes Trade Request
eurex_cash_eti_t7_v12_0.approve_tes_trade_request = {}

-- Read runtime size of: Approve Tes Trade Request
eurex_cash_eti_t7_v12_0.approve_tes_trade_request.size = function(buffer, offset)
  local index = offset

  -- Dependency element: Body Len
  local body_len = buffer(offset - 6, 4):le_uint()

  return body_len - 6
end

-- Display: Approve Tes Trade Request
eurex_cash_eti_t7_v12_0.approve_tes_trade_request.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Approve Tes Trade Request
eurex_cash_eti_t7_v12_0.approve_tes_trade_request.fields = function(buffer, offset, packet, parent, size_of_approve_tes_trade_request)
  local index = offset

  -- Network Msg Id: 8 Byte Ascii String Nullable
  index, network_msg_id = eurex_cash_eti_t7_v12_0.network_msg_id.dissect(buffer, index, packet, parent)

  -- Pad 2: 2 Byte
  index, pad_2 = eurex_cash_eti_t7_v12_0.pad_2.dissect(buffer, index, packet, parent)

  -- Request Header Comp: Struct of 2 fields
  index, request_header_comp = eurex_cash_eti_t7_v12_0.request_header_comp.dissect(buffer, index, packet, parent)

  -- Party Id Client Id: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_client_id = eurex_cash_eti_t7_v12_0.party_id_client_id.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker: 8 Byte Unsigned Fixed Width Integer Nullable
  index, party_id_investment_decision_maker = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker.dissect(buffer, index, packet, parent)

  -- Executing Trader: 8 Byte Unsigned Fixed Width Integer Nullable
  index, executing_trader = eurex_cash_eti_t7_v12_0.executing_trader.dissect(buffer, index, packet, parent)

  -- Alloc Qty: 8 Byte Unsigned Fixed Width Integer Nullable
  index, alloc_qty = eurex_cash_eti_t7_v12_0.alloc_qty.dissect(buffer, index, packet, parent)

  -- Package Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, package_id = eurex_cash_eti_t7_v12_0.package_id.dissect(buffer, index, packet, parent)

  -- Alloc Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, alloc_id = eurex_cash_eti_t7_v12_0.alloc_id.dissect(buffer, index, packet, parent)

  -- Tes Exec Id: 4 Byte Unsigned Fixed Width Integer Nullable
  index, tes_exec_id = eurex_cash_eti_t7_v12_0.tes_exec_id.dissect(buffer, index, packet, parent)

  -- Market Segment Id: 4 Byte Signed Fixed Width Integer Nullable
  index, market_segment_id = eurex_cash_eti_t7_v12_0.market_segment_id.dissect(buffer, index, packet, parent)

  -- Trd Type: 2 Byte Unsigned Fixed Width Integer Enum with 4 values
  index, trd_type = eurex_cash_eti_t7_v12_0.trd_type.dissect(buffer, index, packet, parent)

  -- Trading Capacity: 1 Byte Unsigned Fixed Width Integer Enum with 8 values
  index, trading_capacity = eurex_cash_eti_t7_v12_0.trading_capacity.dissect(buffer, index, packet, parent)

  -- Trade Report Type: 1 Byte Unsigned Fixed Width Integer Enum with 9 values
  index, trade_report_type = eurex_cash_eti_t7_v12_0.trade_report_type.dissect(buffer, index, packet, parent)

  -- Side: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, side = eurex_cash_eti_t7_v12_0.side.dissect(buffer, index, packet, parent)

  -- Value Check Type Value: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_value = eurex_cash_eti_t7_v12_0.value_check_type_value.dissect(buffer, index, packet, parent)

  -- Value Check Type Quantity: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, value_check_type_quantity = eurex_cash_eti_t7_v12_0.value_check_type_quantity.dissect(buffer, index, packet, parent)

  -- Order Attribute Liquidity Provision: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, order_attribute_liquidity_provision = eurex_cash_eti_t7_v12_0.order_attribute_liquidity_provision.dissect(buffer, index, packet, parent)

  -- Party Id Investment Decision Maker Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, party_id_investment_decision_maker_qualifier = eurex_cash_eti_t7_v12_0.party_id_investment_decision_maker_qualifier.dissect(buffer, index, packet, parent)

  -- Executing Trader Qualifier: 1 Byte Unsigned Fixed Width Integer Enum with 3 values
  index, executing_trader_qualifier = eurex_cash_eti_t7_v12_0.executing_trader_qualifier.dissect(buffer, index, packet, parent)

  -- Order Origination: 1 Byte Unsigned Fixed Width Integer Enum with 2 values
  index, order_origination = eurex_cash_eti_t7_v12_0.order_origination.dissect(buffer, index, packet, parent)

  -- Trade Report Id: 20 Byte Ascii String Nullable
  index, trade_report_id = eurex_cash_eti_t7_v12_0.trade_report_id.dissect(buffer, index, packet, parent)

  -- Party Executing Firm: 5 Byte Ascii String Nullable
  index, party_executing_firm = eurex_cash_eti_t7_v12_0.party_executing_firm.dissect(buffer, index, packet, parent)

  -- Party Executing Trader: 6 Byte Ascii String Nullable
  index, party_executing_trader = eurex_cash_eti_t7_v12_0.party_executing_trader.dissect(buffer, index, packet, parent)

  -- Free Text 1: 12 Byte Ascii String Nullable
  index, free_text_1 = eurex_cash_eti_t7_v12_0.free_text_1.dissect(buffer, index, packet, parent)

  -- Free Text 2: 12 Byte Ascii String Nullable
  index, free_text_2 = eurex_cash_eti_t7_v12_0.free_text_2.dissect(buffer, index, packet, parent)

  -- Free Text 4: 16 Byte Ascii String Nullable
  index, free_text_4 = eurex_cash_eti_t7_v12_0.free_text_4.dissect(buffer, index, packet, parent)

  -- Pad 6: 6 Byte
  index, pad_6 = eurex_cash_eti_t7_v12_0.pad_6.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Approve Tes Trade Request
eurex_cash_eti_t7_v12_0.approve_tes_trade_request.dissect = function(buffer, offset, packet, parent)
  -- Parse runtime size
  local size_of_approve_tes_trade_request = eurex_cash_eti_t7_v12_0.approve_tes_trade_request.size(buffer, offset)

  -- Optionally add struct element to protocol tree
  if show.approve_tes_trade_request then
    local range = buffer(offset, size_of_approve_tes_trade_request)
    local display = eurex_cash_eti_t7_v12_0.approve_tes_trade_request.display(buffer, packet, parent)
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.approve_tes_trade_request, range, display)
  end

  eurex_cash_eti_t7_v12_0.approve_tes_trade_request.fields(buffer, offset, packet, parent, size_of_approve_tes_trade_request)

  return offset + size_of_approve_tes_trade_request
end

-- Payload
eurex_cash_eti_t7_v12_0.payload = {}

-- Size: Payload
eurex_cash_eti_t7_v12_0.payload.size = function(buffer, offset, template_id)
  -- Size of Approve Tes Trade Request
  if template_id == 10603 then
    return eurex_cash_eti_t7_v12_0.approve_tes_trade_request.size(buffer, offset)
  end
  -- Size of Broadcast Error Notification
  if template_id == 10032 then
    return eurex_cash_eti_t7_v12_0.broadcast_error_notification.size(buffer, offset)
  end
  -- Size of Cross Request
  if template_id == 10118 then
    return eurex_cash_eti_t7_v12_0.cross_request.size(buffer, offset)
  end
  -- Size of Cross Request Response
  if template_id == 10119 then
    return eurex_cash_eti_t7_v12_0.cross_request_response.size(buffer, offset)
  end
  -- Size of Delete All Order Broadcast
  if template_id == 10122 then
    return eurex_cash_eti_t7_v12_0.delete_all_order_broadcast.size(buffer, offset)
  end
  -- Size of Delete All Order Nr Response
  if template_id == 10124 then
    return eurex_cash_eti_t7_v12_0.delete_all_order_nr_response.size(buffer, offset)
  end
  -- Size of Delete All Order Quote Event Broadcast
  if template_id == 10308 then
    return eurex_cash_eti_t7_v12_0.delete_all_order_quote_event_broadcast.size(buffer, offset)
  end
  -- Size of Delete All Order Request
  if template_id == 10120 then
    return eurex_cash_eti_t7_v12_0.delete_all_order_request.size(buffer, offset)
  end
  -- Size of Delete All Order Response
  if template_id == 10121 then
    return eurex_cash_eti_t7_v12_0.delete_all_order_response.size(buffer, offset)
  end
  -- Size of Delete All Quote Broadcast
  if template_id == 10410 then
    return eurex_cash_eti_t7_v12_0.delete_all_quote_broadcast.size(buffer, offset)
  end
  -- Size of Delete All Quote Request
  if template_id == 10408 then
    return eurex_cash_eti_t7_v12_0.delete_all_quote_request.size(buffer, offset)
  end
  -- Size of Delete All Quote Response
  if template_id == 10409 then
    return eurex_cash_eti_t7_v12_0.delete_all_quote_response.size(buffer, offset)
  end
  -- Size of Delete Order Broadcast
  if template_id == 10112 then
    return eurex_cash_eti_t7_v12_0.delete_order_broadcast.size(buffer, offset)
  end
  -- Size of Delete Order Nr Response
  if template_id == 10111 then
    return eurex_cash_eti_t7_v12_0.delete_order_nr_response.size(buffer, offset)
  end
  -- Size of Delete Order Response
  if template_id == 10110 then
    return eurex_cash_eti_t7_v12_0.delete_order_response.size(buffer, offset)
  end
  -- Size of Delete Order Single Request
  if template_id == 10109 then
    return eurex_cash_eti_t7_v12_0.delete_order_single_request.size(buffer, offset)
  end
  -- Size of Delete Tes Trade Request
  if template_id == 10602 then
    return eurex_cash_eti_t7_v12_0.delete_tes_trade_request.size(buffer, offset)
  end
  -- Size of Enter Tes Trade Request
  if template_id == 10600 then
    return eurex_cash_eti_t7_v12_0.enter_tes_trade_request.size(buffer, offset)
  end
  -- Size of Extended Deletion Report
  if template_id == 10128 then
    return eurex_cash_eti_t7_v12_0.extended_deletion_report.size(buffer, offset)
  end
  -- Size of Forced Logout Notification
  if template_id == 10012 then
    return eurex_cash_eti_t7_v12_0.forced_logout_notification.size(buffer, offset)
  end
  -- Size of Forced User Logout Notification
  if template_id == 10043 then
    return eurex_cash_eti_t7_v12_0.forced_user_logout_notification.size(buffer, offset)
  end
  -- Size of Heartbeat
  if template_id == 10011 then
    return eurex_cash_eti_t7_v12_0.heartbeat.size(buffer, offset)
  end
  -- Size of Heartbeat Notification
  if template_id == 10023 then
    return eurex_cash_eti_t7_v12_0.heartbeat_notification.size(buffer, offset)
  end
  -- Size of Inquire Enrichment Rule Id List Request
  if template_id == 10040 then
    return eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_request.size(buffer, offset)
  end
  -- Size of Inquire Enrichment Rule Id List Response
  if template_id == 10041 then
    return eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_response.size(buffer, offset)
  end
  -- Size of Inquire Pre Trade Risk Limits Request
  if template_id == 10311 then
    return eurex_cash_eti_t7_v12_0.inquire_pre_trade_risk_limits_request.size(buffer, offset)
  end
  -- Size of Inquire Session List Request
  if template_id == 10035 then
    return eurex_cash_eti_t7_v12_0.inquire_session_list_request.size(buffer, offset)
  end
  -- Size of Inquire Session List Response
  if template_id == 10036 then
    return eurex_cash_eti_t7_v12_0.inquire_session_list_response.size(buffer, offset)
  end
  -- Size of Inquire User Request
  if template_id == 10038 then
    return eurex_cash_eti_t7_v12_0.inquire_user_request.size(buffer, offset)
  end
  -- Size of Inquire User Response
  if template_id == 10039 then
    return eurex_cash_eti_t7_v12_0.inquire_user_response.size(buffer, offset)
  end
  -- Size of Issuer Notification
  if template_id == 10316 then
    return eurex_cash_eti_t7_v12_0.issuer_notification.size(buffer, offset)
  end
  -- Size of Issuer Security State Change Request
  if template_id == 10314 then
    return eurex_cash_eti_t7_v12_0.issuer_security_state_change_request.size(buffer, offset)
  end
  -- Size of Issuer Security State Change Response
  if template_id == 10315 then
    return eurex_cash_eti_t7_v12_0.issuer_security_state_change_response.size(buffer, offset)
  end
  -- Size of Legal Notification Broadcast
  if template_id == 10037 then
    return eurex_cash_eti_t7_v12_0.legal_notification_broadcast.size(buffer, offset)
  end
  -- Size of Logon Request
  if template_id == 10000 then
    return eurex_cash_eti_t7_v12_0.logon_request.size(buffer, offset)
  end
  -- Size of Logon Request Encrypted
  if template_id == 19000 then
    return eurex_cash_eti_t7_v12_0.logon_request_encrypted.size(buffer, offset)
  end
  -- Size of Logon Response
  if template_id == 10001 then
    return eurex_cash_eti_t7_v12_0.logon_response.size(buffer, offset)
  end
  -- Size of Logout Request
  if template_id == 10002 then
    return eurex_cash_eti_t7_v12_0.logout_request.size(buffer, offset)
  end
  -- Size of Logout Response
  if template_id == 10003 then
    return eurex_cash_eti_t7_v12_0.logout_response.size(buffer, offset)
  end
  -- Size of Mass Quote Request
  if template_id == 10405 then
    return eurex_cash_eti_t7_v12_0.mass_quote_request.size(buffer, offset)
  end
  -- Size of Mass Quote Response
  if template_id == 10406 then
    return eurex_cash_eti_t7_v12_0.mass_quote_response.size(buffer, offset)
  end
  -- Size of Modify Order Nr Response
  if template_id == 10108 then
    return eurex_cash_eti_t7_v12_0.modify_order_nr_response.size(buffer, offset)
  end
  -- Size of Modify Order Response
  if template_id == 10107 then
    return eurex_cash_eti_t7_v12_0.modify_order_response.size(buffer, offset)
  end
  -- Size of Modify Order Single Request
  if template_id == 10106 then
    return eurex_cash_eti_t7_v12_0.modify_order_single_request.size(buffer, offset)
  end
  -- Size of Modify Order Single Short Request
  if template_id == 10126 then
    return eurex_cash_eti_t7_v12_0.modify_order_single_short_request.size(buffer, offset)
  end
  -- Size of Modify Tes Trade Request
  if template_id == 10601 then
    return eurex_cash_eti_t7_v12_0.modify_tes_trade_request.size(buffer, offset)
  end
  -- Size of New Order Nr Response
  if template_id == 10102 then
    return eurex_cash_eti_t7_v12_0.new_order_nr_response.size(buffer, offset)
  end
  -- Size of New Order Response
  if template_id == 10101 then
    return eurex_cash_eti_t7_v12_0.new_order_response.size(buffer, offset)
  end
  -- Size of New Order Single Request
  if template_id == 10100 then
    return eurex_cash_eti_t7_v12_0.new_order_single_request.size(buffer, offset)
  end
  -- Size of New Order Single Short Request
  if template_id == 10125 then
    return eurex_cash_eti_t7_v12_0.new_order_single_short_request.size(buffer, offset)
  end
  -- Size of News Broadcast
  if template_id == 10031 then
    return eurex_cash_eti_t7_v12_0.news_broadcast.size(buffer, offset)
  end
  -- Size of Order Exec Notification
  if template_id == 10104 then
    return eurex_cash_eti_t7_v12_0.order_exec_notification.size(buffer, offset)
  end
  -- Size of Order Exec Report Broadcast
  if template_id == 10117 then
    return eurex_cash_eti_t7_v12_0.order_exec_report_broadcast.size(buffer, offset)
  end
  -- Size of Order Exec Response
  if template_id == 10103 then
    return eurex_cash_eti_t7_v12_0.order_exec_response.size(buffer, offset)
  end
  -- Size of Party Action Report
  if template_id == 10042 then
    return eurex_cash_eti_t7_v12_0.party_action_report.size(buffer, offset)
  end
  -- Size of Party Entitlements Update Report
  if template_id == 10034 then
    return eurex_cash_eti_t7_v12_0.party_entitlements_update_report.size(buffer, offset)
  end
  -- Size of Ping Request
  if template_id == 10320 then
    return eurex_cash_eti_t7_v12_0.ping_request.size(buffer, offset)
  end
  -- Size of Ping Response
  if template_id == 10321 then
    return eurex_cash_eti_t7_v12_0.ping_response.size(buffer, offset)
  end
  -- Size of Pre Trade Risk Limit Response
  if template_id == 10313 then
    return eurex_cash_eti_t7_v12_0.pre_trade_risk_limit_response.size(buffer, offset)
  end
  -- Size of Pre Trade Risk Limits Definition Request
  if template_id == 10312 then
    return eurex_cash_eti_t7_v12_0.pre_trade_risk_limits_definition_request.size(buffer, offset)
  end
  -- Size of Quote Activation Notification
  if template_id == 10411 then
    return eurex_cash_eti_t7_v12_0.quote_activation_notification.size(buffer, offset)
  end
  -- Size of Quote Activation Request
  if template_id == 10403 then
    return eurex_cash_eti_t7_v12_0.quote_activation_request.size(buffer, offset)
  end
  -- Size of Quote Activation Response
  if template_id == 10404 then
    return eurex_cash_eti_t7_v12_0.quote_activation_response.size(buffer, offset)
  end
  -- Size of Quote Execution Report
  if template_id == 10407 then
    return eurex_cash_eti_t7_v12_0.quote_execution_report.size(buffer, offset)
  end
  -- Size of Rfq Broadcast
  if template_id == 10415 then
    return eurex_cash_eti_t7_v12_0.rfq_broadcast.size(buffer, offset)
  end
  -- Size of Rfq Reject Notification
  if template_id == 10420 then
    return eurex_cash_eti_t7_v12_0.rfq_reject_notification.size(buffer, offset)
  end
  -- Size of Rfq Request
  if template_id == 10401 then
    return eurex_cash_eti_t7_v12_0.rfq_request.size(buffer, offset)
  end
  -- Size of Rfq Response
  if template_id == 10402 then
    return eurex_cash_eti_t7_v12_0.rfq_response.size(buffer, offset)
  end
  -- Size of Rfq Specialist Broadcast
  if template_id == 10419 then
    return eurex_cash_eti_t7_v12_0.rfq_specialist_broadcast.size(buffer, offset)
  end
  -- Size of Reject
  if template_id == 10010 then
    return eurex_cash_eti_t7_v12_0.reject.size(buffer, offset)
  end
  -- Size of Retransmit Me Message Request
  if template_id == 10026 then
    return eurex_cash_eti_t7_v12_0.retransmit_me_message_request.size(buffer, offset)
  end
  -- Size of Retransmit Me Message Response
  if template_id == 10027 then
    return eurex_cash_eti_t7_v12_0.retransmit_me_message_response.size(buffer, offset)
  end
  -- Size of Retransmit Request
  if template_id == 10008 then
    return eurex_cash_eti_t7_v12_0.retransmit_request.size(buffer, offset)
  end
  -- Size of Retransmit Response
  if template_id == 10009 then
    return eurex_cash_eti_t7_v12_0.retransmit_response.size(buffer, offset)
  end
  -- Size of Service Availability Broadcast
  if template_id == 10030 then
    return eurex_cash_eti_t7_v12_0.service_availability_broadcast.size(buffer, offset)
  end
  -- Size of Service Availability Market Broadcast
  if template_id == 10044 then
    return eurex_cash_eti_t7_v12_0.service_availability_market_broadcast.size(buffer, offset)
  end
  -- Size of Single Quote Request
  if template_id == 10418 then
    return eurex_cash_eti_t7_v12_0.single_quote_request.size(buffer, offset)
  end
  -- Size of Specialist Delete All Order Broadcast
  if template_id == 10137 then
    return eurex_cash_eti_t7_v12_0.specialist_delete_all_order_broadcast.size(buffer, offset)
  end
  -- Size of Specialist Instrument Event Notification
  if template_id == 10319 then
    return eurex_cash_eti_t7_v12_0.specialist_instrument_event_notification.size(buffer, offset)
  end
  -- Size of Specialist Order Book Notification
  if template_id == 10136 then
    return eurex_cash_eti_t7_v12_0.specialist_order_book_notification.size(buffer, offset)
  end
  -- Size of Specialist Rfq Reject Request
  if template_id == 10421 then
    return eurex_cash_eti_t7_v12_0.specialist_rfq_reject_request.size(buffer, offset)
  end
  -- Size of Specialist Rfq Reply Notification
  if template_id == 10424 then
    return eurex_cash_eti_t7_v12_0.specialist_rfq_reply_notification.size(buffer, offset)
  end
  -- Size of Specialist Rfq Reply Request
  if template_id == 10422 then
    return eurex_cash_eti_t7_v12_0.specialist_rfq_reply_request.size(buffer, offset)
  end
  -- Size of Specialist Rfq Reply Response
  if template_id == 10423 then
    return eurex_cash_eti_t7_v12_0.specialist_rfq_reply_response.size(buffer, offset)
  end
  -- Size of Specialist Security State Change Request
  if template_id == 10317 then
    return eurex_cash_eti_t7_v12_0.specialist_security_state_change_request.size(buffer, offset)
  end
  -- Size of Specialist Security State Change Response
  if template_id == 10318 then
    return eurex_cash_eti_t7_v12_0.specialist_security_state_change_response.size(buffer, offset)
  end
  -- Size of Status Broadcast
  if template_id == 10045 then
    return eurex_cash_eti_t7_v12_0.status_broadcast.size(buffer, offset)
  end
  -- Size of Subscribe Request
  if template_id == 10025 then
    return eurex_cash_eti_t7_v12_0.subscribe_request.size(buffer, offset)
  end
  -- Size of Subscribe Response
  if template_id == 10005 then
    return eurex_cash_eti_t7_v12_0.subscribe_response.size(buffer, offset)
  end
  -- Size of Tes Approve Broadcast
  if template_id == 10607 then
    return eurex_cash_eti_t7_v12_0.tes_approve_broadcast.size(buffer, offset)
  end
  -- Size of Tes Broadcast
  if template_id == 10604 then
    return eurex_cash_eti_t7_v12_0.tes_broadcast.size(buffer, offset)
  end
  -- Size of Tes Delete Broadcast
  if template_id == 10606 then
    return eurex_cash_eti_t7_v12_0.tes_delete_broadcast.size(buffer, offset)
  end
  -- Size of Tes Execution Broadcast
  if template_id == 10610 then
    return eurex_cash_eti_t7_v12_0.tes_execution_broadcast.size(buffer, offset)
  end
  -- Size of Tes Response
  if template_id == 10611 then
    return eurex_cash_eti_t7_v12_0.tes_response.size(buffer, offset)
  end
  -- Size of Tes Trade Broadcast
  if template_id == 10614 then
    return eurex_cash_eti_t7_v12_0.tes_trade_broadcast.size(buffer, offset)
  end
  -- Size of Tes Trading Session Status Broadcast
  if template_id == 10615 then
    return eurex_cash_eti_t7_v12_0.tes_trading_session_status_broadcast.size(buffer, offset)
  end
  -- Size of Tm Trading Session Status Broadcast
  if template_id == 10501 then
    return eurex_cash_eti_t7_v12_0.tm_trading_session_status_broadcast.size(buffer, offset)
  end
  -- Size of Throttle Update Notification
  if template_id == 10028 then
    return eurex_cash_eti_t7_v12_0.throttle_update_notification.size(buffer, offset)
  end
  -- Size of Trade Broadcast
  if template_id == 10500 then
    return eurex_cash_eti_t7_v12_0.trade_broadcast.size(buffer, offset)
  end
  -- Size of Trading Session Status Broadcast
  if template_id == 10307 then
    return eurex_cash_eti_t7_v12_0.trading_session_status_broadcast.size(buffer, offset)
  end
  -- Size of Trailing Stop Update Notification
  if template_id == 10127 then
    return eurex_cash_eti_t7_v12_0.trailing_stop_update_notification.size(buffer, offset)
  end
  -- Size of Unsubscribe Request
  if template_id == 10006 then
    return eurex_cash_eti_t7_v12_0.unsubscribe_request.size(buffer, offset)
  end
  -- Size of Unsubscribe Response
  if template_id == 10007 then
    return eurex_cash_eti_t7_v12_0.unsubscribe_response.size(buffer, offset)
  end
  -- Size of User Login Request
  if template_id == 10018 then
    return eurex_cash_eti_t7_v12_0.user_login_request.size(buffer, offset)
  end
  -- Size of User Login Request Encrypted
  if template_id == 19018 then
    return eurex_cash_eti_t7_v12_0.user_login_request_encrypted.size(buffer, offset)
  end
  -- Size of User Login Response
  if template_id == 10019 then
    return eurex_cash_eti_t7_v12_0.user_login_response.size(buffer, offset)
  end
  -- Size of User Logout Request
  if template_id == 10029 then
    return eurex_cash_eti_t7_v12_0.user_logout_request.size(buffer, offset)
  end
  -- Size of User Logout Response
  if template_id == 10024 then
    return eurex_cash_eti_t7_v12_0.user_logout_response.size(buffer, offset)
  end
  -- Size of Xetra En Light Approve Deal Notification
  if template_id == 10818 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_notification.size(buffer, offset)
  end
  -- Size of Xetra En Light Approve Deal Request
  if template_id == 10819 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_request.size(buffer, offset)
  end
  -- Size of Xetra En Light Create Deal Notification
  if template_id == 10808 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_create_deal_notification.size(buffer, offset)
  end
  -- Size of Xetra En Light Deal Response
  if template_id == 10805 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_deal_response.size(buffer, offset)
  end
  -- Size of Xetra En Light Deal Status Notification
  if template_id == 10825 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_deal_status_notification.size(buffer, offset)
  end
  -- Size of Xetra En Light Delete All Quote Notification
  if template_id == 10824 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_notification.size(buffer, offset)
  end
  -- Size of Xetra En Light Delete All Quote Request
  if template_id == 10821 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_request.size(buffer, offset)
  end
  -- Size of Xetra En Light Enter Quote Request
  if template_id == 10802 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_enter_quote_request.size(buffer, offset)
  end
  -- Size of Xetra En Light Hit Quote Request
  if template_id == 10804 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_hit_quote_request.size(buffer, offset)
  end
  -- Size of Xetra En Light Negotiation Notification
  if template_id == 10813 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_notification.size(buffer, offset)
  end
  -- Size of Xetra En Light Negotiation Requester Notification
  if template_id == 10812 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_requester_notification.size(buffer, offset)
  end
  -- Size of Xetra En Light Negotiation Status Notification
  if template_id == 10815 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_status_notification.size(buffer, offset)
  end
  -- Size of Xetra En Light Open Negotiation Notification
  if template_id == 10811 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_notification.size(buffer, offset)
  end
  -- Size of Xetra En Light Open Negotiation Request
  if template_id == 10800 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_request.size(buffer, offset)
  end
  -- Size of Xetra En Light Open Negotiation Requester Notification
  if template_id == 10810 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_requester_notification.size(buffer, offset)
  end
  -- Size of Xetra En Light Quote Notification
  if template_id == 10807 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_quote_notification.size(buffer, offset)
  end
  -- Size of Xetra En Light Quote Requester Notification
  if template_id == 10816 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_quote_requester_notification.size(buffer, offset)
  end
  -- Size of Xetra En Light Quote Response
  if template_id == 10803 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_quote_response.size(buffer, offset)
  end
  -- Size of Xetra En Light Quote Snapshot Notification
  if template_id == 10823 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_notification.size(buffer, offset)
  end
  -- Size of Xetra En Light Quote Snapshot Request
  if template_id == 10820 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_request.size(buffer, offset)
  end
  -- Size of Xetra En Light Quoting Status Request
  if template_id == 10817 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_quoting_status_request.size(buffer, offset)
  end
  -- Size of Xetra En Light Response
  if template_id == 10822 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_response.size(buffer, offset)
  end
  -- Size of Xetra En Light Status Broadcast
  if template_id == 10814 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_status_broadcast.size(buffer, offset)
  end
  -- Size of Xetra En Light Update Negotiation Request
  if template_id == 10801 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_update_negotiation_request.size(buffer, offset)
  end

  return 0
end

-- Display: Payload
eurex_cash_eti_t7_v12_0.payload.display = function(buffer, offset, packet, parent)
  return ""
end

-- Dissect Branches: Payload
eurex_cash_eti_t7_v12_0.payload.branches = function(buffer, offset, packet, parent, template_id)
  -- Dissect Approve Tes Trade Request
  if template_id == 10603 then
    return eurex_cash_eti_t7_v12_0.approve_tes_trade_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Broadcast Error Notification
  if template_id == 10032 then
    return eurex_cash_eti_t7_v12_0.broadcast_error_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Cross Request
  if template_id == 10118 then
    return eurex_cash_eti_t7_v12_0.cross_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Cross Request Response
  if template_id == 10119 then
    return eurex_cash_eti_t7_v12_0.cross_request_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete All Order Broadcast
  if template_id == 10122 then
    return eurex_cash_eti_t7_v12_0.delete_all_order_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete All Order Nr Response
  if template_id == 10124 then
    return eurex_cash_eti_t7_v12_0.delete_all_order_nr_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete All Order Quote Event Broadcast
  if template_id == 10308 then
    return eurex_cash_eti_t7_v12_0.delete_all_order_quote_event_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete All Order Request
  if template_id == 10120 then
    return eurex_cash_eti_t7_v12_0.delete_all_order_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete All Order Response
  if template_id == 10121 then
    return eurex_cash_eti_t7_v12_0.delete_all_order_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete All Quote Broadcast
  if template_id == 10410 then
    return eurex_cash_eti_t7_v12_0.delete_all_quote_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete All Quote Request
  if template_id == 10408 then
    return eurex_cash_eti_t7_v12_0.delete_all_quote_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete All Quote Response
  if template_id == 10409 then
    return eurex_cash_eti_t7_v12_0.delete_all_quote_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete Order Broadcast
  if template_id == 10112 then
    return eurex_cash_eti_t7_v12_0.delete_order_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete Order Nr Response
  if template_id == 10111 then
    return eurex_cash_eti_t7_v12_0.delete_order_nr_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete Order Response
  if template_id == 10110 then
    return eurex_cash_eti_t7_v12_0.delete_order_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete Order Single Request
  if template_id == 10109 then
    return eurex_cash_eti_t7_v12_0.delete_order_single_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Delete Tes Trade Request
  if template_id == 10602 then
    return eurex_cash_eti_t7_v12_0.delete_tes_trade_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Enter Tes Trade Request
  if template_id == 10600 then
    return eurex_cash_eti_t7_v12_0.enter_tes_trade_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Extended Deletion Report
  if template_id == 10128 then
    return eurex_cash_eti_t7_v12_0.extended_deletion_report.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Forced Logout Notification
  if template_id == 10012 then
    return eurex_cash_eti_t7_v12_0.forced_logout_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Forced User Logout Notification
  if template_id == 10043 then
    return eurex_cash_eti_t7_v12_0.forced_user_logout_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Heartbeat
  if template_id == 10011 then
    return eurex_cash_eti_t7_v12_0.heartbeat.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Heartbeat Notification
  if template_id == 10023 then
    return eurex_cash_eti_t7_v12_0.heartbeat_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Inquire Enrichment Rule Id List Request
  if template_id == 10040 then
    return eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Inquire Enrichment Rule Id List Response
  if template_id == 10041 then
    return eurex_cash_eti_t7_v12_0.inquire_enrichment_rule_id_list_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Inquire Pre Trade Risk Limits Request
  if template_id == 10311 then
    return eurex_cash_eti_t7_v12_0.inquire_pre_trade_risk_limits_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Inquire Session List Request
  if template_id == 10035 then
    return eurex_cash_eti_t7_v12_0.inquire_session_list_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Inquire Session List Response
  if template_id == 10036 then
    return eurex_cash_eti_t7_v12_0.inquire_session_list_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Inquire User Request
  if template_id == 10038 then
    return eurex_cash_eti_t7_v12_0.inquire_user_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Inquire User Response
  if template_id == 10039 then
    return eurex_cash_eti_t7_v12_0.inquire_user_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Issuer Notification
  if template_id == 10316 then
    return eurex_cash_eti_t7_v12_0.issuer_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Issuer Security State Change Request
  if template_id == 10314 then
    return eurex_cash_eti_t7_v12_0.issuer_security_state_change_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Issuer Security State Change Response
  if template_id == 10315 then
    return eurex_cash_eti_t7_v12_0.issuer_security_state_change_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Legal Notification Broadcast
  if template_id == 10037 then
    return eurex_cash_eti_t7_v12_0.legal_notification_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Logon Request
  if template_id == 10000 then
    return eurex_cash_eti_t7_v12_0.logon_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Logon Request Encrypted
  if template_id == 19000 then
    return eurex_cash_eti_t7_v12_0.logon_request_encrypted.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Logon Response
  if template_id == 10001 then
    return eurex_cash_eti_t7_v12_0.logon_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Logout Request
  if template_id == 10002 then
    return eurex_cash_eti_t7_v12_0.logout_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Logout Response
  if template_id == 10003 then
    return eurex_cash_eti_t7_v12_0.logout_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Mass Quote Request
  if template_id == 10405 then
    return eurex_cash_eti_t7_v12_0.mass_quote_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Mass Quote Response
  if template_id == 10406 then
    return eurex_cash_eti_t7_v12_0.mass_quote_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Modify Order Nr Response
  if template_id == 10108 then
    return eurex_cash_eti_t7_v12_0.modify_order_nr_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Modify Order Response
  if template_id == 10107 then
    return eurex_cash_eti_t7_v12_0.modify_order_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Modify Order Single Request
  if template_id == 10106 then
    return eurex_cash_eti_t7_v12_0.modify_order_single_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Modify Order Single Short Request
  if template_id == 10126 then
    return eurex_cash_eti_t7_v12_0.modify_order_single_short_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Modify Tes Trade Request
  if template_id == 10601 then
    return eurex_cash_eti_t7_v12_0.modify_tes_trade_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect New Order Nr Response
  if template_id == 10102 then
    return eurex_cash_eti_t7_v12_0.new_order_nr_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect New Order Response
  if template_id == 10101 then
    return eurex_cash_eti_t7_v12_0.new_order_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect New Order Single Request
  if template_id == 10100 then
    return eurex_cash_eti_t7_v12_0.new_order_single_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect New Order Single Short Request
  if template_id == 10125 then
    return eurex_cash_eti_t7_v12_0.new_order_single_short_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect News Broadcast
  if template_id == 10031 then
    return eurex_cash_eti_t7_v12_0.news_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Order Exec Notification
  if template_id == 10104 then
    return eurex_cash_eti_t7_v12_0.order_exec_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Order Exec Report Broadcast
  if template_id == 10117 then
    return eurex_cash_eti_t7_v12_0.order_exec_report_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Order Exec Response
  if template_id == 10103 then
    return eurex_cash_eti_t7_v12_0.order_exec_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Party Action Report
  if template_id == 10042 then
    return eurex_cash_eti_t7_v12_0.party_action_report.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Party Entitlements Update Report
  if template_id == 10034 then
    return eurex_cash_eti_t7_v12_0.party_entitlements_update_report.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Ping Request
  if template_id == 10320 then
    return eurex_cash_eti_t7_v12_0.ping_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Ping Response
  if template_id == 10321 then
    return eurex_cash_eti_t7_v12_0.ping_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Pre Trade Risk Limit Response
  if template_id == 10313 then
    return eurex_cash_eti_t7_v12_0.pre_trade_risk_limit_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Pre Trade Risk Limits Definition Request
  if template_id == 10312 then
    return eurex_cash_eti_t7_v12_0.pre_trade_risk_limits_definition_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Quote Activation Notification
  if template_id == 10411 then
    return eurex_cash_eti_t7_v12_0.quote_activation_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Quote Activation Request
  if template_id == 10403 then
    return eurex_cash_eti_t7_v12_0.quote_activation_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Quote Activation Response
  if template_id == 10404 then
    return eurex_cash_eti_t7_v12_0.quote_activation_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Quote Execution Report
  if template_id == 10407 then
    return eurex_cash_eti_t7_v12_0.quote_execution_report.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Rfq Broadcast
  if template_id == 10415 then
    return eurex_cash_eti_t7_v12_0.rfq_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Rfq Reject Notification
  if template_id == 10420 then
    return eurex_cash_eti_t7_v12_0.rfq_reject_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Rfq Request
  if template_id == 10401 then
    return eurex_cash_eti_t7_v12_0.rfq_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Rfq Response
  if template_id == 10402 then
    return eurex_cash_eti_t7_v12_0.rfq_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Rfq Specialist Broadcast
  if template_id == 10419 then
    return eurex_cash_eti_t7_v12_0.rfq_specialist_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Reject
  if template_id == 10010 then
    return eurex_cash_eti_t7_v12_0.reject.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Retransmit Me Message Request
  if template_id == 10026 then
    return eurex_cash_eti_t7_v12_0.retransmit_me_message_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Retransmit Me Message Response
  if template_id == 10027 then
    return eurex_cash_eti_t7_v12_0.retransmit_me_message_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Retransmit Request
  if template_id == 10008 then
    return eurex_cash_eti_t7_v12_0.retransmit_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Retransmit Response
  if template_id == 10009 then
    return eurex_cash_eti_t7_v12_0.retransmit_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Service Availability Broadcast
  if template_id == 10030 then
    return eurex_cash_eti_t7_v12_0.service_availability_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Service Availability Market Broadcast
  if template_id == 10044 then
    return eurex_cash_eti_t7_v12_0.service_availability_market_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Single Quote Request
  if template_id == 10418 then
    return eurex_cash_eti_t7_v12_0.single_quote_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Specialist Delete All Order Broadcast
  if template_id == 10137 then
    return eurex_cash_eti_t7_v12_0.specialist_delete_all_order_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Specialist Instrument Event Notification
  if template_id == 10319 then
    return eurex_cash_eti_t7_v12_0.specialist_instrument_event_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Specialist Order Book Notification
  if template_id == 10136 then
    return eurex_cash_eti_t7_v12_0.specialist_order_book_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Specialist Rfq Reject Request
  if template_id == 10421 then
    return eurex_cash_eti_t7_v12_0.specialist_rfq_reject_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Specialist Rfq Reply Notification
  if template_id == 10424 then
    return eurex_cash_eti_t7_v12_0.specialist_rfq_reply_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Specialist Rfq Reply Request
  if template_id == 10422 then
    return eurex_cash_eti_t7_v12_0.specialist_rfq_reply_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Specialist Rfq Reply Response
  if template_id == 10423 then
    return eurex_cash_eti_t7_v12_0.specialist_rfq_reply_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Specialist Security State Change Request
  if template_id == 10317 then
    return eurex_cash_eti_t7_v12_0.specialist_security_state_change_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Specialist Security State Change Response
  if template_id == 10318 then
    return eurex_cash_eti_t7_v12_0.specialist_security_state_change_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Status Broadcast
  if template_id == 10045 then
    return eurex_cash_eti_t7_v12_0.status_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Subscribe Request
  if template_id == 10025 then
    return eurex_cash_eti_t7_v12_0.subscribe_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Subscribe Response
  if template_id == 10005 then
    return eurex_cash_eti_t7_v12_0.subscribe_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Tes Approve Broadcast
  if template_id == 10607 then
    return eurex_cash_eti_t7_v12_0.tes_approve_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Tes Broadcast
  if template_id == 10604 then
    return eurex_cash_eti_t7_v12_0.tes_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Tes Delete Broadcast
  if template_id == 10606 then
    return eurex_cash_eti_t7_v12_0.tes_delete_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Tes Execution Broadcast
  if template_id == 10610 then
    return eurex_cash_eti_t7_v12_0.tes_execution_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Tes Response
  if template_id == 10611 then
    return eurex_cash_eti_t7_v12_0.tes_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Tes Trade Broadcast
  if template_id == 10614 then
    return eurex_cash_eti_t7_v12_0.tes_trade_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Tes Trading Session Status Broadcast
  if template_id == 10615 then
    return eurex_cash_eti_t7_v12_0.tes_trading_session_status_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Tm Trading Session Status Broadcast
  if template_id == 10501 then
    return eurex_cash_eti_t7_v12_0.tm_trading_session_status_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Throttle Update Notification
  if template_id == 10028 then
    return eurex_cash_eti_t7_v12_0.throttle_update_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Trade Broadcast
  if template_id == 10500 then
    return eurex_cash_eti_t7_v12_0.trade_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Trading Session Status Broadcast
  if template_id == 10307 then
    return eurex_cash_eti_t7_v12_0.trading_session_status_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Trailing Stop Update Notification
  if template_id == 10127 then
    return eurex_cash_eti_t7_v12_0.trailing_stop_update_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Unsubscribe Request
  if template_id == 10006 then
    return eurex_cash_eti_t7_v12_0.unsubscribe_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Unsubscribe Response
  if template_id == 10007 then
    return eurex_cash_eti_t7_v12_0.unsubscribe_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect User Login Request
  if template_id == 10018 then
    return eurex_cash_eti_t7_v12_0.user_login_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect User Login Request Encrypted
  if template_id == 19018 then
    return eurex_cash_eti_t7_v12_0.user_login_request_encrypted.dissect(buffer, offset, packet, parent)
  end
  -- Dissect User Login Response
  if template_id == 10019 then
    return eurex_cash_eti_t7_v12_0.user_login_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect User Logout Request
  if template_id == 10029 then
    return eurex_cash_eti_t7_v12_0.user_logout_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect User Logout Response
  if template_id == 10024 then
    return eurex_cash_eti_t7_v12_0.user_logout_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Approve Deal Notification
  if template_id == 10818 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Approve Deal Request
  if template_id == 10819 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_approve_deal_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Create Deal Notification
  if template_id == 10808 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_create_deal_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Deal Response
  if template_id == 10805 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_deal_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Deal Status Notification
  if template_id == 10825 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_deal_status_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Delete All Quote Notification
  if template_id == 10824 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Delete All Quote Request
  if template_id == 10821 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_delete_all_quote_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Enter Quote Request
  if template_id == 10802 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_enter_quote_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Hit Quote Request
  if template_id == 10804 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_hit_quote_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Negotiation Notification
  if template_id == 10813 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Negotiation Requester Notification
  if template_id == 10812 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_requester_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Negotiation Status Notification
  if template_id == 10815 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_negotiation_status_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Open Negotiation Notification
  if template_id == 10811 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Open Negotiation Request
  if template_id == 10800 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Open Negotiation Requester Notification
  if template_id == 10810 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_open_negotiation_requester_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Quote Notification
  if template_id == 10807 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_quote_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Quote Requester Notification
  if template_id == 10816 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_quote_requester_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Quote Response
  if template_id == 10803 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_quote_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Quote Snapshot Notification
  if template_id == 10823 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_notification.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Quote Snapshot Request
  if template_id == 10820 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_quote_snapshot_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Quoting Status Request
  if template_id == 10817 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_quoting_status_request.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Response
  if template_id == 10822 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_response.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Status Broadcast
  if template_id == 10814 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_status_broadcast.dissect(buffer, offset, packet, parent)
  end
  -- Dissect Xetra En Light Update Negotiation Request
  if template_id == 10801 then
    return eurex_cash_eti_t7_v12_0.xetra_en_light_update_negotiation_request.dissect(buffer, offset, packet, parent)
  end

  return offset
end

-- Dissect: Payload
eurex_cash_eti_t7_v12_0.payload.dissect = function(buffer, offset, packet, parent, template_id)
  if not show.payload then
    return eurex_cash_eti_t7_v12_0.payload.branches(buffer, offset, packet, parent, template_id)
  end

  -- Calculate size and check that branch is not empty
  local size = eurex_cash_eti_t7_v12_0.payload.size(buffer, offset, template_id)
  if size == 0 then
    return offset
  end

  -- Dissect Element
  local range = buffer(offset, size)
  local display = eurex_cash_eti_t7_v12_0.payload.display(buffer, packet, parent)
  local element = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.payload, range, display)

  return eurex_cash_eti_t7_v12_0.payload.branches(buffer, offset, packet, parent, template_id)
end

-- Template Id
eurex_cash_eti_t7_v12_0.template_id = {}

-- Size: Template Id
eurex_cash_eti_t7_v12_0.template_id.size = 2

-- Display: Template Id
eurex_cash_eti_t7_v12_0.template_id.display = function(value)
  if value == 0xFFFF then
    return "Template Id: No Value"
  end
  if value == 10603 then
    return "Template Id: Approve Tes Trade Request (10603)"
  end
  if value == 10032 then
    return "Template Id: Broadcast Error Notification (10032)"
  end
  if value == 10118 then
    return "Template Id: Cross Request (10118)"
  end
  if value == 10119 then
    return "Template Id: Cross Request Response (10119)"
  end
  if value == 10122 then
    return "Template Id: Delete All Order Broadcast (10122)"
  end
  if value == 10124 then
    return "Template Id: Delete All Order Nr Response (10124)"
  end
  if value == 10308 then
    return "Template Id: Delete All Order Quote Event Broadcast (10308)"
  end
  if value == 10120 then
    return "Template Id: Delete All Order Request (10120)"
  end
  if value == 10121 then
    return "Template Id: Delete All Order Response (10121)"
  end
  if value == 10410 then
    return "Template Id: Delete All Quote Broadcast (10410)"
  end
  if value == 10408 then
    return "Template Id: Delete All Quote Request (10408)"
  end
  if value == 10409 then
    return "Template Id: Delete All Quote Response (10409)"
  end
  if value == 10112 then
    return "Template Id: Delete Order Broadcast (10112)"
  end
  if value == 10111 then
    return "Template Id: Delete Order Nr Response (10111)"
  end
  if value == 10110 then
    return "Template Id: Delete Order Response (10110)"
  end
  if value == 10109 then
    return "Template Id: Delete Order Single Request (10109)"
  end
  if value == 10602 then
    return "Template Id: Delete Tes Trade Request (10602)"
  end
  if value == 10600 then
    return "Template Id: Enter Tes Trade Request (10600)"
  end
  if value == 10128 then
    return "Template Id: Extended Deletion Report (10128)"
  end
  if value == 10012 then
    return "Template Id: Forced Logout Notification (10012)"
  end
  if value == 10043 then
    return "Template Id: Forced User Logout Notification (10043)"
  end
  if value == 10011 then
    return "Template Id: Heartbeat (10011)"
  end
  if value == 10023 then
    return "Template Id: Heartbeat Notification (10023)"
  end
  if value == 10040 then
    return "Template Id: Inquire Enrichment Rule Id List Request (10040)"
  end
  if value == 10041 then
    return "Template Id: Inquire Enrichment Rule Id List Response (10041)"
  end
  if value == 10311 then
    return "Template Id: Inquire Pre Trade Risk Limits Request (10311)"
  end
  if value == 10035 then
    return "Template Id: Inquire Session List Request (10035)"
  end
  if value == 10036 then
    return "Template Id: Inquire Session List Response (10036)"
  end
  if value == 10038 then
    return "Template Id: Inquire User Request (10038)"
  end
  if value == 10039 then
    return "Template Id: Inquire User Response (10039)"
  end
  if value == 10316 then
    return "Template Id: Issuer Notification (10316)"
  end
  if value == 10314 then
    return "Template Id: Issuer Security State Change Request (10314)"
  end
  if value == 10315 then
    return "Template Id: Issuer Security State Change Response (10315)"
  end
  if value == 10037 then
    return "Template Id: Legal Notification Broadcast (10037)"
  end
  if value == 10000 then
    return "Template Id: Logon Request (10000)"
  end
  if value == 19000 then
    return "Template Id: Logon Request Encrypted (19000)"
  end
  if value == 10001 then
    return "Template Id: Logon Response (10001)"
  end
  if value == 10002 then
    return "Template Id: Logout Request (10002)"
  end
  if value == 10003 then
    return "Template Id: Logout Response (10003)"
  end
  if value == 10405 then
    return "Template Id: Mass Quote Request (10405)"
  end
  if value == 10406 then
    return "Template Id: Mass Quote Response (10406)"
  end
  if value == 10108 then
    return "Template Id: Modify Order Nr Response (10108)"
  end
  if value == 10107 then
    return "Template Id: Modify Order Response (10107)"
  end
  if value == 10106 then
    return "Template Id: Modify Order Single Request (10106)"
  end
  if value == 10126 then
    return "Template Id: Modify Order Single Short Request (10126)"
  end
  if value == 10601 then
    return "Template Id: Modify Tes Trade Request (10601)"
  end
  if value == 10102 then
    return "Template Id: New Order Nr Response (10102)"
  end
  if value == 10101 then
    return "Template Id: New Order Response (10101)"
  end
  if value == 10100 then
    return "Template Id: New Order Single Request (10100)"
  end
  if value == 10125 then
    return "Template Id: New Order Single Short Request (10125)"
  end
  if value == 10031 then
    return "Template Id: News Broadcast (10031)"
  end
  if value == 10104 then
    return "Template Id: Order Exec Notification (10104)"
  end
  if value == 10117 then
    return "Template Id: Order Exec Report Broadcast (10117)"
  end
  if value == 10103 then
    return "Template Id: Order Exec Response (10103)"
  end
  if value == 10042 then
    return "Template Id: Party Action Report (10042)"
  end
  if value == 10034 then
    return "Template Id: Party Entitlements Update Report (10034)"
  end
  if value == 10320 then
    return "Template Id: Ping Request (10320)"
  end
  if value == 10321 then
    return "Template Id: Ping Response (10321)"
  end
  if value == 10313 then
    return "Template Id: Pre Trade Risk Limit Response (10313)"
  end
  if value == 10312 then
    return "Template Id: Pre Trade Risk Limits Definition Request (10312)"
  end
  if value == 10411 then
    return "Template Id: Quote Activation Notification (10411)"
  end
  if value == 10403 then
    return "Template Id: Quote Activation Request (10403)"
  end
  if value == 10404 then
    return "Template Id: Quote Activation Response (10404)"
  end
  if value == 10407 then
    return "Template Id: Quote Execution Report (10407)"
  end
  if value == 10415 then
    return "Template Id: Rfq Broadcast (10415)"
  end
  if value == 10420 then
    return "Template Id: Rfq Reject Notification (10420)"
  end
  if value == 10401 then
    return "Template Id: Rfq Request (10401)"
  end
  if value == 10402 then
    return "Template Id: Rfq Response (10402)"
  end
  if value == 10419 then
    return "Template Id: Rfq Specialist Broadcast (10419)"
  end
  if value == 10010 then
    return "Template Id: Reject (10010)"
  end
  if value == 10026 then
    return "Template Id: Retransmit Me Message Request (10026)"
  end
  if value == 10027 then
    return "Template Id: Retransmit Me Message Response (10027)"
  end
  if value == 10008 then
    return "Template Id: Retransmit Request (10008)"
  end
  if value == 10009 then
    return "Template Id: Retransmit Response (10009)"
  end
  if value == 10030 then
    return "Template Id: Service Availability Broadcast (10030)"
  end
  if value == 10044 then
    return "Template Id: Service Availability Market Broadcast (10044)"
  end
  if value == 10418 then
    return "Template Id: Single Quote Request (10418)"
  end
  if value == 10137 then
    return "Template Id: Specialist Delete All Order Broadcast (10137)"
  end
  if value == 10319 then
    return "Template Id: Specialist Instrument Event Notification (10319)"
  end
  if value == 10136 then
    return "Template Id: Specialist Order Book Notification (10136)"
  end
  if value == 10421 then
    return "Template Id: Specialist Rfq Reject Request (10421)"
  end
  if value == 10424 then
    return "Template Id: Specialist Rfq Reply Notification (10424)"
  end
  if value == 10422 then
    return "Template Id: Specialist Rfq Reply Request (10422)"
  end
  if value == 10423 then
    return "Template Id: Specialist Rfq Reply Response (10423)"
  end
  if value == 10317 then
    return "Template Id: Specialist Security State Change Request (10317)"
  end
  if value == 10318 then
    return "Template Id: Specialist Security State Change Response (10318)"
  end
  if value == 10045 then
    return "Template Id: Status Broadcast (10045)"
  end
  if value == 10025 then
    return "Template Id: Subscribe Request (10025)"
  end
  if value == 10005 then
    return "Template Id: Subscribe Response (10005)"
  end
  if value == 10607 then
    return "Template Id: Tes Approve Broadcast (10607)"
  end
  if value == 10604 then
    return "Template Id: Tes Broadcast (10604)"
  end
  if value == 10606 then
    return "Template Id: Tes Delete Broadcast (10606)"
  end
  if value == 10610 then
    return "Template Id: Tes Execution Broadcast (10610)"
  end
  if value == 10611 then
    return "Template Id: Tes Response (10611)"
  end
  if value == 10614 then
    return "Template Id: Tes Trade Broadcast (10614)"
  end
  if value == 10615 then
    return "Template Id: Tes Trading Session Status Broadcast (10615)"
  end
  if value == 10501 then
    return "Template Id: Tm Trading Session Status Broadcast (10501)"
  end
  if value == 10028 then
    return "Template Id: Throttle Update Notification (10028)"
  end
  if value == 10500 then
    return "Template Id: Trade Broadcast (10500)"
  end
  if value == 10307 then
    return "Template Id: Trading Session Status Broadcast (10307)"
  end
  if value == 10127 then
    return "Template Id: Trailing Stop Update Notification (10127)"
  end
  if value == 10006 then
    return "Template Id: Unsubscribe Request (10006)"
  end
  if value == 10007 then
    return "Template Id: Unsubscribe Response (10007)"
  end
  if value == 10018 then
    return "Template Id: User Login Request (10018)"
  end
  if value == 19018 then
    return "Template Id: User Login Request Encrypted (19018)"
  end
  if value == 10019 then
    return "Template Id: User Login Response (10019)"
  end
  if value == 10029 then
    return "Template Id: User Logout Request (10029)"
  end
  if value == 10024 then
    return "Template Id: User Logout Response (10024)"
  end
  if value == 10818 then
    return "Template Id: Xetra En Light Approve Deal Notification (10818)"
  end
  if value == 10819 then
    return "Template Id: Xetra En Light Approve Deal Request (10819)"
  end
  if value == 10808 then
    return "Template Id: Xetra En Light Create Deal Notification (10808)"
  end
  if value == 10805 then
    return "Template Id: Xetra En Light Deal Response (10805)"
  end
  if value == 10825 then
    return "Template Id: Xetra En Light Deal Status Notification (10825)"
  end
  if value == 10824 then
    return "Template Id: Xetra En Light Delete All Quote Notification (10824)"
  end
  if value == 10821 then
    return "Template Id: Xetra En Light Delete All Quote Request (10821)"
  end
  if value == 10802 then
    return "Template Id: Xetra En Light Enter Quote Request (10802)"
  end
  if value == 10804 then
    return "Template Id: Xetra En Light Hit Quote Request (10804)"
  end
  if value == 10813 then
    return "Template Id: Xetra En Light Negotiation Notification (10813)"
  end
  if value == 10812 then
    return "Template Id: Xetra En Light Negotiation Requester Notification (10812)"
  end
  if value == 10815 then
    return "Template Id: Xetra En Light Negotiation Status Notification (10815)"
  end
  if value == 10811 then
    return "Template Id: Xetra En Light Open Negotiation Notification (10811)"
  end
  if value == 10800 then
    return "Template Id: Xetra En Light Open Negotiation Request (10800)"
  end
  if value == 10810 then
    return "Template Id: Xetra En Light Open Negotiation Requester Notification (10810)"
  end
  if value == 10807 then
    return "Template Id: Xetra En Light Quote Notification (10807)"
  end
  if value == 10816 then
    return "Template Id: Xetra En Light Quote Requester Notification (10816)"
  end
  if value == 10803 then
    return "Template Id: Xetra En Light Quote Response (10803)"
  end
  if value == 10823 then
    return "Template Id: Xetra En Light Quote Snapshot Notification (10823)"
  end
  if value == 10820 then
    return "Template Id: Xetra En Light Quote Snapshot Request (10820)"
  end
  if value == 10817 then
    return "Template Id: Xetra En Light Quoting Status Request (10817)"
  end
  if value == 10822 then
    return "Template Id: Xetra En Light Response (10822)"
  end
  if value == 10814 then
    return "Template Id: Xetra En Light Status Broadcast (10814)"
  end
  if value == 10801 then
    return "Template Id: Xetra En Light Update Negotiation Request (10801)"
  end

  return "Template Id: Unknown("..value..")"
end

-- Dissect: Template Id
eurex_cash_eti_t7_v12_0.template_id.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.template_id.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.template_id.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.template_id, range, value, display)

  return offset + length, value
end

-- Body Len
eurex_cash_eti_t7_v12_0.body_len = {}

-- Size: Body Len
eurex_cash_eti_t7_v12_0.body_len.size = 4

-- Display: Body Len
eurex_cash_eti_t7_v12_0.body_len.display = function(value)
  -- Check if field has value
  if value == 0xFFFFFFFF then
    return "Body Len: No Value"
  end

  return "Body Len: "..value
end

-- Dissect: Body Len
eurex_cash_eti_t7_v12_0.body_len.dissect = function(buffer, offset, packet, parent)
  local length = eurex_cash_eti_t7_v12_0.body_len.size
  local range = buffer(offset, length)
  local value = range:le_uint()
  local display = eurex_cash_eti_t7_v12_0.body_len.display(value, buffer, offset, packet, parent)

  parent:add(omi_eurex_cash_eti_t7_v12_0.fields.body_len, range, value, display)

  return offset + length, value
end

-- Message Header
eurex_cash_eti_t7_v12_0.message_header = {}

-- Size: Message Header
eurex_cash_eti_t7_v12_0.message_header.size =
  eurex_cash_eti_t7_v12_0.body_len.size + 
  eurex_cash_eti_t7_v12_0.template_id.size

-- Display: Message Header
eurex_cash_eti_t7_v12_0.message_header.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Message Header
eurex_cash_eti_t7_v12_0.message_header.fields = function(buffer, offset, packet, parent)
  local index = offset

  -- Body Len: 4 Byte Unsigned Fixed Width Integer Nullable
  index, body_len = eurex_cash_eti_t7_v12_0.body_len.dissect(buffer, index, packet, parent)

  -- Template Id: 2 Byte Unsigned Fixed Width Integer Enum with 133 values
  index, template_id = eurex_cash_eti_t7_v12_0.template_id.dissect(buffer, index, packet, parent)

  return index
end

-- Dissect: Message Header
eurex_cash_eti_t7_v12_0.message_header.dissect = function(buffer, offset, packet, parent)
  if show.message_header then
    -- Optionally add element to protocol tree
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.message_header, buffer(offset, 0))
    local index = eurex_cash_eti_t7_v12_0.message_header.fields(buffer, offset, packet, parent)
    local length = index - offset
    parent:set_len(length)
    local display = eurex_cash_eti_t7_v12_0.message_header.display(packet, parent, length)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    return eurex_cash_eti_t7_v12_0.message_header.fields(buffer, offset, packet, parent)
  end
end

-- Message
eurex_cash_eti_t7_v12_0.message = {}

-- Display: Message
eurex_cash_eti_t7_v12_0.message.display = function(packet, parent, length)
  return ""
end

-- Dissect Fields: Message
eurex_cash_eti_t7_v12_0.message.fields = function(buffer, offset, packet, parent, size_of_message)
  local index = offset

  -- Message Header: Struct of 2 fields
  index, message_header = eurex_cash_eti_t7_v12_0.message_header.dissect(buffer, index, packet, parent)

  -- Dependency element: Template Id
  local template_id = buffer(index - 2, 2):le_uint()

  -- Payload: Runtime Type with 132 branches
  index = eurex_cash_eti_t7_v12_0.payload.dissect(buffer, index, packet, parent, template_id)

  return index
end

-- Dissect: Message
eurex_cash_eti_t7_v12_0.message.dissect = function(buffer, offset, packet, parent, size_of_message)
  local index = offset + size_of_message

  -- Optionally add group/struct element to protocol tree
  if show.message then
    parent = parent:add(omi_eurex_cash_eti_t7_v12_0.fields.message, buffer(offset, 0))
    local current = eurex_cash_eti_t7_v12_0.message.fields(buffer, offset, packet, parent, size_of_message)
    parent:set_len(size_of_message)
    local display = eurex_cash_eti_t7_v12_0.message.display(buffer, packet, parent)
    parent:append_text(display)

    return index, parent
  else
    -- Skip element, add fields directly
    eurex_cash_eti_t7_v12_0.message.fields(buffer, offset, packet, parent, size_of_message)

    return index
  end
end

-- Remaining Bytes For: Message
local message_bytes_remaining = function(buffer, index, available)
  -- Calculate the number of bytes remaining
  local remaining = available - index

  -- Check if packet size can be read
  if remaining < eurex_cash_eti_t7_v12_0.message_header.size then
    return -DESEGMENT_ONE_MORE_SEGMENT
  end

  -- Parse runtime size
  local current = buffer(index, 4):le_uint()

  -- Check if enough bytes remain
  if remaining < current then
    return -(current - remaining)
  end

  return remaining, current
end

-- Packet
eurex_cash_eti_t7_v12_0.packet = {}

-- Dissect Packet
eurex_cash_eti_t7_v12_0.packet.dissect = function(buffer, packet, parent)
  local index = 0

  -- Dependency for Message
  local end_of_payload = buffer:len()

  -- Message: Struct of 2 fields
  while index < end_of_payload do

    -- Are minimum number of bytes are available?
    local available, size_of_message = message_bytes_remaining(buffer, index, end_of_payload)

    if available > 0 then
      index = eurex_cash_eti_t7_v12_0.message.dissect(buffer, index, packet, parent, size_of_message)
    else
      -- More bytes needed, so set packet information
      packet.desegment_offset = index
      packet.desegment_len = -(available)

      break
    end
  end

  return index
end


-----------------------------------------------------------------------
-- Protocol Dissector and Components
-----------------------------------------------------------------------

-- Initialize Dissector
function omi_eurex_cash_eti_t7_v12_0.init()
end

-- Dissector for Eurex Cash Eti T7 12.0
function omi_eurex_cash_eti_t7_v12_0.dissector(buffer, packet, parent)

  -- Set protocol name
  packet.cols.protocol = omi_eurex_cash_eti_t7_v12_0.name

  -- Dissect protocol
  local protocol = parent:add(omi_eurex_cash_eti_t7_v12_0, buffer(), omi_eurex_cash_eti_t7_v12_0.description, "("..buffer:len().." Bytes)")
  return eurex_cash_eti_t7_v12_0.packet.dissect(buffer, packet, protocol)
end

-- Register With Tcp Table
local tcp_table = DissectorTable.get("tcp.port")
tcp_table:add(65333, omi_eurex_cash_eti_t7_v12_0)


-----------------------------------------------------------------------
-- Protocol Heuristics
-----------------------------------------------------------------------

-- Verify size of packet
eurex_cash_eti_t7_v12_0.packet.requiredsize = function(buffer)

  return true
end

-- Dissector Heuristic for Eurex Cash Eti T7 12.0
local function omi_eurex_cash_eti_t7_v12_0_heuristic(buffer, packet, parent)
  -- Verify packet length
  if not eurex_cash_eti_t7_v12_0.packet.requiredsize(buffer) then return false end

  -- Protocol is valid, set conversation and dissect this packet
  packet.conversation = omi_eurex_cash_eti_t7_v12_0
  omi_eurex_cash_eti_t7_v12_0.dissector(buffer, packet, parent)

  return true
end

-- Register Heuristic for Eurex Cash Eti T7 12.0
omi_eurex_cash_eti_t7_v12_0:register_heuristic("tcp", omi_eurex_cash_eti_t7_v12_0_heuristic)

-----------------------------------------------------------------------
-- Lua dissectors are an easily edited and modified cross-platform dissection solution.
-- Feel free to modify. Enjoy.
-----------------------------------------------------------------------
-- 
-- Protocol:
--   Organization: Eurex Exchange
--   Version: 12.0
--   Date: Monday, July 31, 2023
--   Specification: T7_R.12.0_Enhanced_Trading_Interface_-_Cash_Message_Reference_Version 201.pdf
-- 
-- Script:
--   Generator: 1.5.0.0
--   Compiler: 2.0
--   License: Public/GPLv3
--   Authors: Omi Developers
-- 
-- This dissector script was generated by The Open Markets Initiative (Omi).
-- 
-- For full Omi information:
-- https://github.com/Open-Markets-Initiative/Directory
-----------------------------------------------------------------------
