{
  "files": {
    "app/fall_runtime.py": "IiIiRkFMTC1XSVJFLTAxOiBsb2NhbCBST0kvZGVjaXNpb24gYWRhcHRlcjsgb25lIG93bmVyLCBubyB0cmFja2VyIG9yIGRlbGl2ZXJ5IEkvTy4iIiIKZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZHMKaW1wb3J0IG9zCmltcG9ydCB0aW1lCmltcG9ydCB1dWlkCgpmcm9tIGFwcC5mYWxsX2NvbmZpZyBpbXBvcnQgRmFsbENvbmZpZwpmcm9tIGFwcC5mYWxsX3NjZW5hcmlvIGltcG9ydCBGYWxsRW5naW5lCmZyb20gYXBwLmludHJ1c2lvbiBpbXBvcnQgSW50cnVzaW9uQ29uZmlnLCBJbnRydXNpb25FdmVudCwgaW5zaWRlCgojIFNlcHRlbWJlciBkZW1vIGRlZmF1bHRzIGZvciBleGlzdGluZyBzZXR0aW5ncyBrZXlzIG9ubHk7IGV4cGxpY2l0IHZhbHVlcyB3aW4uCiMgS2VlcCBGYWxsQ29uZmlnIGRlZmF1bHRzIGFzIHRoZSByZXByb2R1Y2libGUgcHJlLWRlbW8gdGVtcG9yYWwgcG9saWN5LgpERU1PX0ZBTExfREVGQVVMVFMgPSBkaWN0KHBlcnNvbl9zY29yZT0uMTUsIGpvaW50X3Njb3JlPS4xMCwgZG93bl9hbmdsZV9kZWc9NTAuKQoKCkBkYXRhY2xhc3MoZnJvemVuPVRydWUpCmNsYXNzIEZhbGxTZXR0aW5nczoKICAgIHBvbGljeTogRmFsbENvbmZpZwogICAgZ2VvbWV0cnk6IEludHJ1c2lvbkNvbmZpZwogICAgZW5naW5lOiBzdHIgPSAnbGVnYWN5JwogICAgc2NlbmFyaW9fbmFtZSA9ICdGQUxMJwoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIHBhcnNlKGNscywgdmFsdWUpOgogICAgICAgIGlmIHR5cGUodmFsdWUpIGlzIG5vdCBkaWN0OgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIEZBTEwgc2V0dGluZ3MuJykKICAgICAgICBuYW1lcyA9IHtmLm5hbWUgZm9yIGYgaW4gZmllbGRzKEZhbGxDb25maWcpfQogICAgICAgIHJvaV9uYW1lcyA9IHsncm9pJywgJ3JvaV9pZCcsICdyb2lfbmFtZScsICdkZWJ1Z19yb2knfQogICAgICAgIGlmIHNldCh2YWx1ZSkgLSBuYW1lcyAtIHJvaV9uYW1lcyAtIHsnZW5naW5lJywncjInfToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBGQUxMIHNldHRpbmdzIGZpZWxkcy4nKQogICAgICAgIGVuZ2luZT12YWx1ZS5nZXQoJ2VuZ2luZScsJ2xlZ2FjeScpCiAgICAgICAgaWYgZW5naW5lIG5vdCBpbiAoJ2xlZ2FjeScsJ3IyJyk6cmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBGQUxMIGVuZ2luZS4nKQogICAgICAgIHZhbHVlcyA9IGRpY3QoREVNT19GQUxMX0RFRkFVTFRTLCAqKntrOiB2IGZvciBrLCB2IGluIHZhbHVlLml0ZW1zKCkgaWYgayBpbiBuYW1lc30pCiAgICAgICAgIyBTaXRlIGRlZmF1bHQgYXBwbGllcyBvbmx5IHRvIGFic2VudCB2YWx1ZXM7IGFuIGV4cGxpY2l0IHBlci1jYW1lcmEgT2ZmIHdpbnMuCiAgICAgICAgZGVmYXVsdCA9IG9zLmVudmlyb24uZ2V0KCdDT05URVhUUkFfRkFMTF9TS0lQX0RPV05fSE9MRF9ERUZBVUxUJywgJ3RydWUnKQogICAgICAgIGlmIGRlZmF1bHQgbm90IGluICgndHJ1ZScsICdmYWxzZScpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIEZBTEwgc2l0ZSBkZWZhdWx0LicpCiAgICAgICAgdmFsdWVzLnNldGRlZmF1bHQoJ3Rlc3Rfc2tpcF9kb3duX2hvbGQnLCBkZWZhdWx0ID09ICd0cnVlJykKICAgICAgICBpZiBlbmdpbmU9PSdyMic6CiAgICAgICAgICAgIGZyb20gYXBwLmZhbGxfcjIuY29uZmlnIGltcG9ydCBibG9jayxzY29yZV9mbG9vcgogICAgICAgICAgICBpZiAncjInIGluIHZhbHVlOmJsb2NrKHZhbHVlWydyMiddKQogICAgICAgICAgICB2YWx1ZXM9ZGljdChlbmFibGVkPXZhbHVlLmdldCgnZW5hYmxlZCcsRmFsc2UpLHBlcnNvbl9zY29yZT1zY29yZV9mbG9vcih2YWx1ZS5nZXQoJ3BlcnNvbl9zY29yZScsLjI1KSwuMjUpLAogICAgICAgICAgICAgICAgICAgICAgICBqb2ludF9zY29yZT1zY29yZV9mbG9vcih2YWx1ZS5nZXQoJ2pvaW50X3Njb3JlJywuMTApLC4xMCkpCiAgICAgICAgZWxpZiAncjInIGluIHZhbHVlOnJhaXNlIFZhbHVlRXJyb3IoJ1IyIHNldHRpbmdzIHJlcXVpcmUgdGhlIEFJLW93bmVkIHIyIGVuZ2luZSBzZWxlY3Rpb24uJykKICAgICAgICBwb2xpY3kgPSBGYWxsQ29uZmlnLnBhcnNlKHZhbHVlcykKICAgICAgICByb2kgPSB2YWx1ZS5nZXQoJ3JvaScpCiAgICAgICAgZ2VvbWV0cnkgPSBJbnRydXNpb25Db25maWcoZW5hYmxlZD1wb2xpY3kuZW5hYmxlZCwgY29uZmlkZW5jZT1wb2xpY3kucGVyc29uX3Njb3JlLAogICAgICAgICAgICByb2k9KCgwLiwgMC4pLCAoMS4sIDAuKSwgKDEuLCAxLiksICgwLiwgMS4pKSBpZiByb2kgaXMgTm9uZSBvciByb2kgPT0gW10gZWxzZSByb2ksCiAgICAgICAgICAgIHJvaV9pZD12YWx1ZS5nZXQoJ3JvaV9pZCcsICdwcmltYXJ5JyksIHJvaV9uYW1lPXZhbHVlLmdldCgncm9pX25hbWUnLCAnRmFsbCBST0knKSwKICAgICAgICAgICAgZGVidWdfcm9pPXZhbHVlLmdldCgnZGVidWdfcm9pJywgVHJ1ZSksIHBvaW50X3g9LjUsIHBvaW50X3k9MS4pCiAgICAgICAgcmV0dXJuIGNscyhwb2xpY3ksIGdlb21ldHJ5LCBlbmdpbmUpCgogICAgQHByb3BlcnR5CiAgICBkZWYgZW5hYmxlZChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5wb2xpY3kuZW5hYmxlZAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGNvbmZpZGVuY2Uoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYucG9saWN5LnBlcnNvbl9zY29yZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHJvaShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5nZW9tZXRyeS5yb2kKCiAgICBAcHJvcGVydHkKICAgIGRlZiByb2lfbmFtZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5nZW9tZXRyeS5yb2lfbmFtZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGRlYnVnX3JvaShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5nZW9tZXRyeS5kZWJ1Z19yb2kKCiAgICBkZWYgcGF5bG9hZChzZWxmKToKICAgICAgICByZXR1cm4ge2s6IHYgZm9yIGssIHYgaW4gc2VsZi5nZW9tZXRyeS5wYXlsb2FkKCkuaXRlbXMoKQogICAgICAgICAgICAgICAgaWYgayBpbiAoJ2VuYWJsZWQnLCAnY29uZmlkZW5jZScsICdyb2knLCAncm9pX2lkJywgJ3JvaV9uYW1lJywgJ2RlYnVnX3JvaScsICdwb2ludF94JywgJ3BvaW50X3knKX0KCiAgICBkZWYgc2V0dGluZ3NfcGF5bG9hZChzZWxmKToKICAgICAgICB2YWx1ZT1kaWN0KHNlbGYucG9saWN5LnBheWxvYWQoKSwgKip7azogdiBmb3IgaywgdiBpbiBzZWxmLmdlb21ldHJ5LnBheWxvYWQoKS5pdGVtcygpCiAgICAgICAgICAgICAgICAgICAgaWYgayBpbiAoJ3JvaScsICdyb2lfaWQnLCAncm9pX25hbWUnLCAnZGVidWdfcm9pJyl9KQogICAgICAgIGlmIHNlbGYuZW5naW5lPT0ncjInOnZhbHVlLnVwZGF0ZShlbmdpbmU9J3IyJyxyMj17J3NjaGVtYV92ZXJzaW9uJzoxfSkKICAgICAgICByZXR1cm4gdmFsdWUKCgpAZGF0YWNsYXNzKGZyb3plbj1UcnVlKQpjbGFzcyBGYWxsRGlzcGxheToKICAgIHBvaW50OiB0dXBsZQogICAgaW5zaWRlOiBib29sCiAgICBzdGF0ZTogc3RyCiAgICBjb25maWRlbmNlOiBmbG9hdAogICAgZXZlbnRfaWQ6IHN0ciB8IE5vbmUgPSBOb25lCgogICAgZGVmIHBheWxvYWQoc2VsZik6CiAgICAgICAgcmV0dXJuIGRpY3Qoc2NlbmFyaW89J0ZBTEwnLCBwb2ludD1saXN0KHNlbGYucG9pbnQpLCBpbnNpZGU9c2VsZi5pbnNpZGUsCiAgICAgICAgICAgICAgICAgICAgc3RhdGU9c2VsZi5zdGF0ZSwgY29uZmlkZW5jZT1zZWxmLmNvbmZpZGVuY2UsIGV2ZW50SWQ9c2VsZi5ldmVudF9pZCkKCgpAZGF0YWNsYXNzKGZyb3plbj1UcnVlKQpjbGFzcyBGYWxsRXZlbnQoSW50cnVzaW9uRXZlbnQpOgogICAgZGVmIHBheWxvYWQoc2VsZik6CiAgICAgICAgcmV0dXJuIGRpY3Qoc3VwZXIoKS5wYXlsb2FkKCksIHNjZW5hcmlvPSdGQUxMJykKCgpjbGFzcyBGYWxsU2NlbmFyaW86CiAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnLCAqLCB3YWxsX25zPXRpbWUudGltZV9ucywgZXZlbnRfaWRfZmFjdG9yeT1sYW1iZGE6IHN0cih1dWlkLnV1aWQ0KCkpLAogICAgICAgICAgICAgICAgIGRpcmVjdF9kb3duPU5vbmUsIGRpcmVjdF9kb3duX2Nvb2xkb3duX3NlY29uZHM9Tm9uZSk6CiAgICAgICAgaWYgY29uZmlnLmVuZ2luZT09J3IyJzoKICAgICAgICAgICAgZnJvbSBhcHAuZmFsbF9yMi5ydW50aW1lIGltcG9ydCBSMlJ1bnRpbWUKICAgICAgICAgICAgc2VsZi5jb25maWc9Y29uZmlnO3NlbGYuX2V2ZW50cz17fQogICAgICAgICAgICBzZWxmLmVuZ2luZT1SMlJ1bnRpbWUoY29uZmlnLGV2ZW50X2lkX2ZhY3Rvcnksd2FsbF9ucykKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIyBBSS1wcml2YXRlOiBuZXZlciBhZGQgdGhlc2Ugb3B0aW9ucyB0byBTZXR0aW5ncy9NZXRhZGF0YS9FdmVudCBwYXlsb2Fkcy4KICAgICAgICBpZiBkaXJlY3RfZG93biBpcyBOb25lOgogICAgICAgICAgICB2YWx1ZSA9IG9zLmVudmlyb24uZ2V0KCdDT05URVhUUkFfRkFMTF9ERU1PX0RJUkVDVF9ET1dOJywgJ3RydWUnKQogICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gKCd0cnVlJywgJ2ZhbHNlJyk6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIEZBTEwgZGlyZWN0LWRvd24gdG9nZ2xlLicpCiAgICAgICAgICAgIGRpcmVjdF9kb3duID0gdmFsdWUgPT0gJ3RydWUnCiAgICAgICAgaWYgZGlyZWN0X2Rvd25fY29vbGRvd25fc2Vjb25kcyBpcyBOb25lOgogICAgICAgICAgICBkaXJlY3RfZG93bl9jb29sZG93bl9zZWNvbmRzID0gZmxvYXQob3MuZW52aXJvbi5nZXQoCiAgICAgICAgICAgICAgICAnQ09OVEVYVFJBX0ZBTExfRElSRUNUX0RPV05fQ09PTERPV05fU0VDT05EUycsICcyLjAnKSkKICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZwogICAgICAgIHNlbGYuZW5naW5lID0gRmFsbEVuZ2luZShjb25maWcucG9saWN5LCBkaXJlY3RfZG93bj1kaXJlY3RfZG93biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0X2Rvd25fY29vbGRvd25fc2Vjb25kcz1kaXJlY3RfZG93bl9jb29sZG93bl9zZWNvbmRzKQogICAgICAgIHNlbGYud2FsbF9ucyA9IHdhbGxfbnMKICAgICAgICBzZWxmLmV2ZW50X2lkX2ZhY3RvcnkgPSBldmVudF9pZF9mYWN0b3J5CiAgICAgICAgc2VsZi5fZXZlbnRzID0ge30KCiAgICBkZWYgZXZhbHVhdGUoc2VsZiwgZnJhbWUsIHBvc2VzLCB0cmFja19pZHMsICosIGdhcF9iZWZvcmU9RmFsc2UpOgogICAgICAgIGlmIHNlbGYuY29uZmlnLmVuZ2luZT09J3IyJzpyZXR1cm4gc2VsZi5lbmdpbmUuZXZhbHVhdGUoZnJhbWUscG9zZXMsdHJhY2tfaWRzLGdhcF9iZWZvcmU9Z2FwX2JlZm9yZSkKICAgICAgICBwb2ludHMgPSB0dXBsZSgoKHAuYmJveF94eXh5WzBdK3AuYmJveF94eXh5WzJdKS8yLCBwLmJib3hfeHl4eVszXSkgZm9yIHAgaW4gcG9zZXMpCiAgICAgICAgc2VsZWN0ZWQgPSB0dXBsZShpIGZvciBpLCBwb2ludCBpbiBlbnVtZXJhdGUocG9pbnRzKSBpZiBpbnNpZGUocG9pbnQsIHNlbGYuY29uZmlnLnJvaSkpCiAgICAgICAgcmVzdWx0ID0gc2VsZi5lbmdpbmUuZXZhbHVhdGUoZnJhbWUsIHR1cGxlKHBvc2VzW2ldIGZvciBpIGluIHNlbGVjdGVkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dXBsZSh0cmFja19pZHNbaV0gZm9yIGkgaW4gc2VsZWN0ZWQpLCBnYXBfYmVmb3JlPWdhcF9iZWZvcmUpCiAgICAgICAgaWYgbm90IHJlc3VsdC5hY2NlcHRlZDoKICAgICAgICAgICAgcmV0dXJuIHR1cGxlKEZhbGxEaXNwbGF5KHAsIGkgaW4gc2VsZWN0ZWQsICdUSU1FX1VOQVZBSUxBQkxFJywgc2VsZi5jb25maWcuY29uZmlkZW5jZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpLCBwIGluIGVudW1lcmF0ZShwb2ludHMpKSwgKCkKICAgICAgICBzZWxmLl9ldmVudHMgPSB7dGlkOiBlaWQgZm9yIHRpZCwgZWlkIGluIHNlbGYuX2V2ZW50cy5pdGVtcygpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmVuZ2luZS5pbnNwZWN0KHRpZCkgb3Ige30pLmdldCgnbGF0Y2hlZCcpfQogICAgICAgIGV2ZW50cyA9IFtdCiAgICAgICAgZm9yIGNhbmRpZGF0ZSBpbiByZXN1bHQuZXZlbnRfY2FuZGlkYXRlczoKICAgICAgICAgICAgb3JpZ2luYWwgPSBzZWxlY3RlZFtpbnQoY2FuZGlkYXRlLm9iamVjdF9yZWYpXQogICAgICAgICAgICBldmVudF9pZCA9IHNlbGYuZXZlbnRfaWRfZmFjdG9yeSgpCiAgICAgICAgICAgIGlmIHR5cGUoZXZlbnRfaWQpIGlzIG5vdCBzdHIgb3Igbm90IGV2ZW50X2lkIG9yIGxlbihldmVudF9pZCkgPiAxMDA6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIEZBTEwgRXZlbnQgSUQuJykKICAgICAgICAgICAgc2VsZi5fZXZlbnRzW2NhbmRpZGF0ZS50cmFja19pZF0gPSBldmVudF9pZAogICAgICAgICAgICBldmVudHMuYXBwZW5kKEZhbGxFdmVudChldmVudF9pZCwgZnJhbWUsIGNhbmRpZGF0ZS50cmFja19pZCwgc2VsZi5jb25maWcuZ2VvbWV0cnkucm9pX2lkLAogICAgICAgICAgICAgICAgc3RyKG9yaWdpbmFsKSwgY2FuZGlkYXRlLnBlcnNvbl9zY29yZSwgY2FuZGlkYXRlLmJib3hfeHl4eSwKICAgICAgICAgICAgICAgIHBvc2VzW29yaWdpbmFsXS5tb2RlbF9rZXksIHNlbGYud2FsbF9ucygpLy8xXzAwMF8wMDApKQogICAgICAgIGRlY2lzaW9ucyA9IFtGYWxsRGlzcGxheShwLCBGYWxzZSwgJ09VVFNJREUnLCBzZWxmLmNvbmZpZy5jb25maWRlbmNlKSBmb3IgcCBpbiBwb2ludHNdCiAgICAgICAgZm9yIGluZGV4LCBkZWNpc2lvbiBpbiB6aXAoc2VsZWN0ZWQsIHJlc3VsdC5kZWNpc2lvbnMpOgogICAgICAgICAgICBkZWNpc2lvbnNbaW5kZXhdID0gRmFsbERpc3BsYXkocG9pbnRzW2luZGV4XSwgVHJ1ZSwgZGVjaXNpb24uc3RhdGUsIHNlbGYuY29uZmlnLmNvbmZpZGVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ldmVudHMuZ2V0KGRlY2lzaW9uLnRyYWNrX2lkKSBpZiBkZWNpc2lvbi5hbGVydCBlbHNlIE5vbmUpCiAgICAgICAgcmV0dXJuIHR1cGxlKGRlY2lzaW9ucyksIHR1cGxlKGV2ZW50cykKCiAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgc2VsZi5lbmdpbmUuY2xlYXIoKQogICAgICAgIHNlbGYuX2V2ZW50cy5jbGVhcigpCgogICAgZGVmIG5vdGlmaWNhdGlvbl9zdGF0dXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZW5naW5lLm5vdGlmaWNhdGlvbl9zdGF0dXMoKSBpZiBzZWxmLmNvbmZpZy5lbmdpbmU9PSdyMicgZWxzZSBOb25lCgoKZGVmIHByb2plY3RfZmFsbChzcGVjLCBzY2VuYXJpb3MpOgogICAgcmVxdWVzdCA9IG5leHQocyBmb3IgcyBpbiBzY2VuYXJpb3MgaWYgc1snc2NlbmFyaW9Db2RlJ10gPT0gJ0ZBTEwnKQogICAgaWYgbm90IHJlcXVlc3RbJ2VuYWJsZWQnXSBhbmQgJ2ZhbGwnIG5vdCBpbiBzcGVjOgogICAgICAgIHJldHVybgogICAgY2ZnID0gZGljdChzcGVjLmdldCgnZmFsbCcpIG9yIHt9KQogICAgcm9pID0gcmVxdWVzdFsncm9pcyddWzBdIGlmIHJlcXVlc3RbJ3JvaXMnXSBlbHNlIE5vbmUKICAgIGNmZy51cGRhdGUoZW5hYmxlZD1yZXF1ZXN0WydlbmFibGVkJ10sIHBlcnNvbl9zY29yZT1ERU1PX0ZBTExfREVGQVVMVFNbJ3BlcnNvbl9zY29yZSddIGlmIHJlcXVlc3RbJ2NvbmZpZGVuY2UnXSBpcyBOb25lIGVsc2UgcmVxdWVzdFsnY29uZmlkZW5jZSddLAogICAgICAgICAgICAgICByb2k9cm9pWydwb2ludHMnXSBpZiByb2kgZWxzZSBbXSwgcm9pX25hbWU9cm9pWydsYWJlbCddIGlmIHJvaSBlbHNlICdGYWxsIFJPSScpCiAgICBzcGVjWydmYWxsJ10gPSBGYWxsU2V0dGluZ3MucGFyc2UoY2ZnKS5zZXR0aW5nc19wYXlsb2FkKCkKCgpkZWYgdmFsaWRhdGUoc3BlYyk6CiAgICBjb25maWcgPSBGYWxsU2V0dGluZ3MucGFyc2Uoc3BlYy5nZXQoJ2ZhbGwnKSBvciB7fSkKICAgIGlmIGNvbmZpZy5lbmFibGVkOgogICAgICAgIGlmIG5vdCBzcGVjLmdldCgnc2VydmVyX2lkJykgb3Igbm90IHNwZWMuZ2V0KCdzb3VyY2VfaWQnKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRkFMTCByZXF1aXJlcyBjYW5vbmljYWwgaWRlbnRpdHkuJykKICAgICAgICBpZiBub3QgKHNwZWMuZ2V0KCd0cmFja2luZycpIG9yIHt9KS5nZXQoJ2VuYWJsZWQnLCBUcnVlKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRkFMTCByZXF1aXJlcyBUcmFja2luZyBPbi4nKQogICAgcmV0dXJuIGNvbmZpZwo=",
    "app/stream_settings.py": "IiIiVEhSRVNILTAxOiDtkZzsi5wg7ZWE7YSw7JmAIOq4sOyhtCBkb3duc3RyZWFtIO2VhO2EsOulvCDrtoTrpqztlZwg7LWc7IaMIOyEpOyglSBwcm9qZWN0aW9uLiIiIgpmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5CmltcG9ydCBoYXNobGliCmltcG9ydCBqc29uCmltcG9ydCBtYXRoCmZyb20gYXBwLmludHJ1c2lvbiBpbXBvcnQgSW50cnVzaW9uQ29uZmlnCmZyb20gYXBwLmxvaXRlcmluZyBpbXBvcnQgTG9pdGVyaW5nQ29uZmlnCmZyb20gYXBwLnJlZ2lvbl9zY2VuYXJpbyBpbXBvcnQgdmFsaWRhdGUgYXMgdmFsaWRhdGVfcmVnaW9uX3NjZW5hcmlvCmZyb20gYXBwLmNsYXNzX2NhdGFsb2cgaW1wb3J0IENPQ09fTkFNRVMKZnJvbSBhcHAucG9zZV9jb25maWcgaW1wb3J0IFBvc2VDb25maWcsIGV4ZWN1dGlvbl9wbGFuCmZyb20gYXBwLmZpcmVfY29uZmlnIGltcG9ydCBGaXJlQ29uZmlnLCBGSVJFX01PREVMLCBGSVJFX05BTUVTCmZyb20gYXBwLmJ5dGVfdHJhY2tpbmcgaW1wb3J0IFRyYWNraW5nU2V0dGluZ3MKZnJvbSBhcHAuZmFsbF9ydW50aW1lIGltcG9ydCBGYWxsU2V0dGluZ3MsIHZhbGlkYXRlIGFzIHZhbGlkYXRlX2ZhbGwKZnJvbSBhcHAuZmlnaHRfcnVudGltZSBpbXBvcnQgRmlnaHRTZXR0aW5ncywgdmFsaWRhdGUgYXMgdmFsaWRhdGVfZmlnaHQKZnJvbSBhcHAuY3Jvd2RfY29uZmlnIGltcG9ydCBDcm93ZENvbmZpZywgQ1JPV0RfTU9ERUwsIENST1dEX05BTUVTCgoKZGVmIHRyYWNraW5nX3NldHRpbmdzKHNwZWMpOgogICAgdmFsaWRhdGVfcmVnaW9uX3NjZW5hcmlvKHNwZWMpCiAgICB2YWxpZGF0ZV9mYWxsKHNwZWMpCiAgICB2YWxpZGF0ZV9maWdodChzcGVjKQogICAgdHJhY2tpbmcgPSBUcmFja2luZ1NldHRpbmdzLnBhcnNlKHNwZWMuZ2V0KCd0cmFja2luZycsIHt9KSkKICAgIGlmIG5vdCB0cmFja2luZy5lbmFibGVkOgogICAgICAgIGlmIG5vdCBzcGVjLmdldCgnc2VydmVyX2lkJykgb3Igbm90IHNwZWMuZ2V0KCdzb3VyY2VfaWQnKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fub25pY2FsIGlkZW50aXR5IGlzIHJlcXVpcmVkIGZvciBUcmFja2luZyBPZmYuJykKICAgICAgICBpZiBJbnRydXNpb25Db25maWcucGFyc2Uoc3BlYy5nZXQoJ2ludHJ1c2lvbicsIHt9KSkuZW5hYmxlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSU5UUlVTSU9OIHJlcXVpcmVzIFRyYWNraW5nIE9uLicpCiAgICByZXR1cm4gdHJhY2tpbmcKCgpkZWYgZGlzcGxheV9jYXRlZ29yaWVzKHZhbHVlKToKICAgIGlmIHZhbHVlIGlzIE5vbmU6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIGlmICh0eXBlKHZhbHVlKSBpcyBub3QgbGlzdCBvciBsZW4odmFsdWUpID4gODAKICAgICAgICAgICAgb3IgYW55KHR5cGUoaykgaXMgbm90IHN0ciBvciBrIG5vdCBpbiAoKkNPQ09fTkFNRVMsICpGSVJFX05BTUVTLCAqQ1JPV0RfTkFNRVMpIGZvciBrIGluIHZhbHVlKQogICAgICAgICAgICBvciBsZW4oc2V0KHZhbHVlKSkgIT0gbGVuKHZhbHVlKSk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBkaXNwbGF5IGNhdGVnb3JpZXMuJykKICAgIHJldHVybiBzb3J0ZWQodmFsdWUpCgoKZGVmIHZpc3VhbF9vcHRpb25zKHNwZWMpOgogICAgdmFsdWUgPSBzcGVjLmdldCgndmlzdWFsaXphdGlvbicpIG9yIHt9CiAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCkgb3Igc2V0KHZhbHVlKSAtIHsnc2NvcmVfdGhyZXNob2xkJywgJ2NhdGVnb3JpZXMnLCAnZGVidWdfYWxsX2NhbmRpZGF0ZXMnfToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIHZpc3VhbGl6YXRpb24gc2V0dGluZ3MuJykKICAgIGNhdGVnb3JpZXMgPSBkaXNwbGF5X2NhdGVnb3JpZXModmFsdWUuZ2V0KCdjYXRlZ29yaWVzJykpCiAgICBkZWJ1ZyA9IHZhbHVlLmdldCgnZGVidWdfYWxsX2NhbmRpZGF0ZXMnLCBGYWxzZSkKICAgIGlmIHR5cGUoZGVidWcpIGlzIG5vdCBib29sOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgZGVidWcgY2FuZGlkYXRlIHNldHRpbmcuJykKICAgIHJldHVybiBjYXRlZ29yaWVzLCBkZWJ1ZwoKCmRlZiBzY29yZSh2YWx1ZSk6CiAgICBpZiB0eXBlKHZhbHVlKSBub3QgaW4gKGludCwgZmxvYXQpIG9yIG5vdCBtYXRoLmlzZmluaXRlKHZhbHVlKSBvciBub3QgMCA8PSB2YWx1ZSA8PSAxOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1Njb3JlIG11c3QgYmUgZmluaXRlIGFuZCBiZXR3ZWVuIHplcm8gYW5kIG9uZS4nKQogICAgcmV0dXJuIHZhbHVlCgoKZGVmIGRpc3BsYXlfc2NvcmUoc3BlYywgZmFsbGJhY2spOgogICAgdmFsdWUgPSBzcGVjLmdldCgndmlzdWFsaXphdGlvbicpIG9yIHt9CiAgICB2aXN1YWxfb3B0aW9ucyhzcGVjKQogICAgcmV0dXJuIHNjb3JlKHZhbHVlLmdldCgnc2NvcmVfdGhyZXNob2xkJywgZmFsbGJhY2spKQoKCmRlZiByZXZpc2lvbihzcGVjKToKICAgIHJldHVybiBoYXNobGliLnNoYTI1Nihqc29uLmR1bXBzKHNwZWMsIHNvcnRfa2V5cz1UcnVlLCBzZXBhcmF0b3JzPSgnLCcsICc6JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X25hbj1GYWxzZSkuZW5jb2RlKCkpLmhleGRpZ2VzdCgpCgoKZGVmIHNldHRpbmdzX3ZpZXcoc3BlYyk6CiAgICBkb3duc3RyZWFtID0gKChzcGVjLmdldCgnaW5mZXJlbmNlX3Byb2ZpbGUnKSBvciB7fSkuZ2V0KCd0aHJlc2hvbGRzJykgb3Ige30pLmdldCgnc2NvcmUnLCAuNSkKICAgIHBsYW4gPSBleGVjdXRpb25fcGxhbihzcGVjKQogICAgZnJvbSBhcHAucHJvdmlkZXJfcGxhbiBpbXBvcnQgcGxhbiBhcyBtYWtlX3Byb3ZpZGVyX3BsYW4KICAgIHByb3ZpZGVycyA9IG1ha2VfcHJvdmlkZXJfcGxhbihzcGVjKQogICAgY2F0ZWdvcmllcyA9IFtdCiAgICBmb3IgcHJvdmlkZXIgaW4gcHJvdmlkZXJzLnByb3ZpZGVyczoKICAgICAgICBpZiBwcm92aWRlci5rZXkgPT0gJ2ZpcmUnOgogICAgICAgICAgICBuYW1lcyA9IEZJUkVfTkFNRVMKICAgICAgICAgICAgZm9yIGksIGtleSBpbiBlbnVtZXJhdGUobmFtZXMpOgogICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5hcHBlbmQoZGljdChrZXk9a2V5LCBkaXNwbGF5TmFtZT1rZXksIG1vZGVsS2V5PXByb3ZpZGVyLm1vZGVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0lkPWksIHNjZW5hcmlvcz1bJ0ZJUkUnXSkpCiAgICAgICAgZWxpZiBwcm92aWRlci5rZXkgPT0gJ2Nyb3dkJzoKICAgICAgICAgICAgZm9yIGksIGtleSBpbiBlbnVtZXJhdGUoQ1JPV0RfTkFNRVMpOgogICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5hcHBlbmQoZGljdChrZXk9a2V5LCBkaXNwbGF5TmFtZT1rZXksIG1vZGVsS2V5PXByb3ZpZGVyLm1vZGVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0lkPWksIHNjZW5hcmlvcz1bJ0NST1dEJ10pKQogICAgICAgIGVsaWYgcHJvdmlkZXIua2V5ID09ICdwb3NlJzoKICAgICAgICAgICAgY2F0ZWdvcmllcy5hcHBlbmQoZGljdChrZXk9J3BlcnNvbicsIGRpc3BsYXlOYW1lPSdwZXJzb24nLCBtb2RlbEtleT1wcm92aWRlci5tb2RlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0lkPTAsIHNjZW5hcmlvcz1saXN0KHByb3ZpZGVyLnNjZW5hcmlvcykpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZvciBpLCBrZXkgaW4gZW51bWVyYXRlKENPQ09fTkFNRVMpOgogICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5hcHBlbmQoZGljdCgKICAgICAgICAgICAgICAgICAgICBrZXk9a2V5LCBkaXNwbGF5TmFtZT1rZXksIG1vZGVsS2V5PXByb3ZpZGVyLm1vZGVsLCBjbGFzc0lkPWksCiAgICAgICAgICAgICAgICAgICAgc2NlbmFyaW9zPShsaXN0KHByb3ZpZGVyLnNjZW5hcmlvcykgaWYgaSA9PSAwIGVsc2UgW10pKSkKICAgIHJldHVybiBkaWN0KAogICAgICAgIHJldmlzaW9uPXJldmlzaW9uKHNwZWMpLCBkaXNwbGF5X3Njb3JlPWRpc3BsYXlfc2NvcmUoc3BlYywgZG93bnN0cmVhbSksCiAgICAgICAgcG9zZT1Qb3NlQ29uZmlnLnBhcnNlKHNwZWMuZ2V0KCdwb3NlJywge30pKS5wYXlsb2FkKCksCiAgICAgICAgZmlyZT1GaXJlQ29uZmlnLnBhcnNlKHNwZWMuZ2V0KCdmaXJlJywge30pKS5wYXlsb2FkKCksCiAgICAgICAgZXhlY3V0aW9uX3BsYW49cGxhbiwgZG93bnN0cmVhbV9zY29yZT1kb3duc3RyZWFtLAogICAgICAgIGZyYW1lX3RpbWVfYW5jaG9yPXNwZWMuZ2V0KCdmcmFtZV90aW1lX2FuY2hvcicpLAogICAgICAgIGFuYWx5c2lzRnBzVGFyZ2V0PXNwZWMuZ2V0KCdhbmFseXNpc19mcHNfdGFyZ2V0JywgMTApLAogICAgICAgIHRyYWNraW5nPXRyYWNraW5nX3NldHRpbmdzKHNwZWMpLnBheWxvYWQoKSwKICAgICAgICBpbnRydXNpb249SW50cnVzaW9uQ29uZmlnLnBhcnNlKHNwZWMuZ2V0KCdpbnRydXNpb24nLCB7fSkpLnBheWxvYWQoKSwKICAgICAgICBsb2l0ZXJpbmc9TG9pdGVyaW5nQ29uZmlnLnBhcnNlKHNwZWMuZ2V0KCdsb2l0ZXJpbmcnLCB7fSkpLnBheWxvYWQoKSwKICAgICAgICBmYWxsPUZhbGxTZXR0aW5ncy5wYXJzZShzcGVjLmdldCgnZmFsbCcpIG9yIHt9KS5zZXR0aW5nc19wYXlsb2FkKCksCiAgICAgICAgZmlnaHQ9RmlnaHRTZXR0aW5ncy5wYXJzZShzcGVjLmdldCgnZmlnaHQnKSBvciB7fSkuc2V0dGluZ3NfcGF5bG9hZCgpLAogICAgICAgIGNyb3dkPUNyb3dkQ29uZmlnLnBhcnNlKHNwZWMuZ2V0KCdjcm93ZCcpIG9yIHt9KS5zZXR0aW5nc19wYXlsb2FkKCksCiAgICAgICAgZGlzcGxheV9jYXRlZ29yaWVzPXZpc3VhbF9vcHRpb25zKHNwZWMpWzBdLAogICAgICAgIGRlYnVnX2FsbF9jYW5kaWRhdGVzPXZpc3VhbF9vcHRpb25zKHNwZWMpWzFdLAogICAgICAgIGNhdGVnb3JpZXM9Y2F0ZWdvcmllcykKCgpkZWYgcGF0Y2hfc2V0dGluZ3Moc3BlYywgY2hhbmdlcyk6CiAgICBpZiBub3QgY2hhbmdlcyBvciBzZXQoY2hhbmdlcykgLSB7J3RyYWNraW5nJywgJ2ZpcmUnLCAnZmFsbCcsICdmaWdodCcsICdjcm93ZCcsICdwb3NlJywgJ2Rpc3BsYXlfc2NvcmUnLCAnZG93bnN0cmVhbV9zY29yZScsICdmcmFtZV90aW1lX2FuY2hvcicsICdhbmFseXNpc0Zwc1RhcmdldCcsICdpbnRydXNpb24nLCAnbG9pdGVyaW5nJywgJ2Rpc3BsYXlfY2F0ZWdvcmllcycsICdkZWJ1Z19hbGxfY2FuZGlkYXRlcyd9OgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1Vuc3VwcG9ydGVkIHN0cmVhbSBzZXR0aW5ncy4nKQogICAgY2FuZGlkYXRlID0gZGVlcGNvcHkoc3BlYykKICAgIGZvciBmaWVsZCwgdmFsdWUgaW4gY2hhbmdlcy5pdGVtcygpOgogICAgICAgIGlmIGZpZWxkIGluICgnZmlnaHQnLCAnY3Jvd2QnKToKICAgICAgICAgICAgaWYgdHlwZSh2YWx1ZSkgaXMgbm90IGRpY3Q6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIHNjZW5hcmlvIHBhdGNoLicpCiAgICAgICAgICAgIHBhcnNlciA9IEZpZ2h0U2V0dGluZ3MgaWYgZmllbGQgPT0gJ2ZpZ2h0JyBlbHNlIENyb3dkQ29uZmlnCiAgICAgICAgICAgIGN1cnJlbnQgPSBwYXJzZXIucGFyc2Uoc3BlYy5nZXQoZmllbGQpIG9yIHt9KS5zZXR0aW5nc19wYXlsb2FkKCkKICAgICAgICAgICAgbWVyZ2VkPWRpY3QoY3VycmVudCwgKip2YWx1ZSkKICAgICAgICAgICAgaWYgZmllbGQ9PSdmaWdodCcgYW5kIHZhbHVlLmdldCgnZW5naW5lJyk9PSdsZWdhY3knOm1lcmdlZC5wb3AoJ3I1JyxOb25lKQogICAgICAgICAgICBjb25maWd1cmVkID0gcGFyc2VyLnBhcnNlKG1lcmdlZCkuc2V0dGluZ3NfcGF5bG9hZCgpCiAgICAgICAgICAgIGlmIGNvbmZpZ3VyZWQgIT0gY3VycmVudDoKICAgICAgICAgICAgICAgIGNhbmRpZGF0ZVtmaWVsZF0gPSBjb25maWd1cmVkCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgZmllbGQgPT0gJ2ZhbGwnOgogICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSBpcyBub3QgZGljdDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgRkFMTCBzZXR0aW5ncyBwYXRjaC4nKQogICAgICAgICAgICBjdXJyZW50ID0gRmFsbFNldHRpbmdzLnBhcnNlKHNwZWMuZ2V0KCdmYWxsJykgb3Ige30pLnNldHRpbmdzX3BheWxvYWQoKQogICAgICAgICAgICBtZXJnZWQ9ZGljdChjdXJyZW50LCAqKnZhbHVlKQogICAgICAgICAgICBpZiB2YWx1ZS5nZXQoJ2VuZ2luZScpPT0nbGVnYWN5JzptZXJnZWQucG9wKCdyMicsTm9uZSkKICAgICAgICAgICAgY29uZmlndXJlZCA9IEZhbGxTZXR0aW5ncy5wYXJzZShtZXJnZWQpLnNldHRpbmdzX3BheWxvYWQoKQogICAgICAgICAgICBpZiBjb25maWd1cmVkICE9IGN1cnJlbnQ6CiAgICAgICAgICAgICAgICBjYW5kaWRhdGVbZmllbGRdID0gY29uZmlndXJlZAogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIGZpZWxkID09ICd0cmFja2luZyc6CiAgICAgICAgICAgIGlmIHR5cGUodmFsdWUpIGlzIG5vdCBkaWN0OgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCB0cmFja2luZyBzZXR0aW5ncy4nKQogICAgICAgICAgICBjdXJyZW50ID0gVHJhY2tpbmdTZXR0aW5ncy5wYXJzZShzcGVjLmdldCgndHJhY2tpbmcnLCB7fSkpLnBheWxvYWQoKQogICAgICAgICAgICBjb25maWd1cmVkID0gVHJhY2tpbmdTZXR0aW5ncy5wYXJzZShkaWN0KGN1cnJlbnQsICoqdmFsdWUpKQogICAgICAgICAgICBpZiBjb25maWd1cmVkLnBheWxvYWQoKSAhPSBjdXJyZW50OgogICAgICAgICAgICAgICAgY2FuZGlkYXRlWyd0cmFja2luZyddID0gZGljdChzcGVjLmdldCgndHJhY2tpbmcnLCB7fSksICoqdmFsdWUpCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgZmllbGQgPT0gJ2ZpcmUnOgogICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSBpcyBub3QgZGljdDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgRmlyZSBzZXR0aW5ncy4nKQogICAgICAgICAgICBjdXJyZW50ID0gRmlyZUNvbmZpZy5wYXJzZShzcGVjLmdldCgnZmlyZScsIHt9KSkucGF5bG9hZCgpCiAgICAgICAgICAgIGNvbmZpZ3VyZWQgPSBGaXJlQ29uZmlnLnBhcnNlKGN1cnJlbnQpLnBhdGNoZWQodmFsdWUpCiAgICAgICAgICAgIGlmIGNvbmZpZ3VyZWQucGF5bG9hZCgpICE9IGN1cnJlbnQ6CiAgICAgICAgICAgICAgICBjYW5kaWRhdGVbJ2ZpcmUnXSA9IGNvbmZpZ3VyZWQucGF5bG9hZCgpCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgZmllbGQgPT0gJ3Bvc2UnOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIFBvc2Ugc2V0dGluZ3MuJykKICAgICAgICAgICAgY3VycmVudCA9IFBvc2VDb25maWcucGFyc2Uoc3BlYy5nZXQoJ3Bvc2UnLCB7fSkpLnBheWxvYWQoKQogICAgICAgICAgICBjb25maWd1cmVkID0gUG9zZUNvbmZpZy5wYXJzZShkaWN0KGN1cnJlbnQsICoqdmFsdWUpKQogICAgICAgICAgICBpZiBjb25maWd1cmVkLnBheWxvYWQoKSAhPSBjdXJyZW50OgogICAgICAgICAgICAgICAgY2FuZGlkYXRlWydwb3NlJ10gPSBjb25maWd1cmVkLnBheWxvYWQoKQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIGZpZWxkIGluICgnZGlzcGxheV9jYXRlZ29yaWVzJywgJ2RlYnVnX2FsbF9jYW5kaWRhdGVzJyk6CiAgICAgICAgICAgIGlmIG5vdCBzcGVjLmdldCgnc2VydmVyX2lkJykgb3Igbm90IHNwZWMuZ2V0KCdzb3VyY2VfaWQnKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm9uaWNhbCBpZGVudGl0eSBpcyByZXF1aXJlZCBmb3IgZGlzcGxheSBzZXR0aW5ncy4nKQogICAgICAgICAgICBpZiBmaWVsZCA9PSAnZGlzcGxheV9jYXRlZ29yaWVzJzoKICAgICAgICAgICAgICAgIHZhbHVlID0gZGlzcGxheV9jYXRlZ29yaWVzKHZhbHVlKQogICAgICAgICAgICAgICAgaW5kZXgsIGtleSA9IDAsICdjYXRlZ29yaWVzJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgdHlwZSh2YWx1ZSkgaXMgbm90IGJvb2w6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBkZWJ1ZyBjYW5kaWRhdGUgc2V0dGluZy4nKQogICAgICAgICAgICAgICAgaW5kZXgsIGtleSA9IDEsIGZpZWxkCiAgICAgICAgICAgIGlmIHZhbHVlICE9IHZpc3VhbF9vcHRpb25zKHNwZWMpW2luZGV4XToKICAgICAgICAgICAgICAgIGNhbmRpZGF0ZVsndmlzdWFsaXphdGlvbiddID0gZGljdChjYW5kaWRhdGUuZ2V0KCd2aXN1YWxpemF0aW9uJykgb3Ige30pCiAgICAgICAgICAgICAgICBjYW5kaWRhdGVbJ3Zpc3VhbGl6YXRpb24nXVtrZXldID0gdmFsdWUKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiBmaWVsZCA9PSAnbG9pdGVyaW5nJzoKICAgICAgICAgICAgaWYgdHlwZSh2YWx1ZSkgaXMgbm90IGRpY3Q6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIExPSVRFUklORyBzZXR0aW5ncy4nKQogICAgICAgICAgICBjdXJyZW50ID0gTG9pdGVyaW5nQ29uZmlnLnBhcnNlKHNwZWMuZ2V0KCdsb2l0ZXJpbmcnLCB7fSkpLnBheWxvYWQoKQogICAgICAgICAgICBjb25maWd1cmVkID0gTG9pdGVyaW5nQ29uZmlnLnBhcnNlKGRpY3QoY3VycmVudCwgKip2YWx1ZSkpCiAgICAgICAgICAgIGlmIGNvbmZpZ3VyZWQucGF5bG9hZCgpICE9IGN1cnJlbnQ6CiAgICAgICAgICAgICAgICBjYW5kaWRhdGVbZmllbGRdID0gY29uZmlndXJlZC5wYXlsb2FkKCkKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiBmaWVsZCA9PSAnaW50cnVzaW9uJzoKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGRpY3QpOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBJTlRSVVNJT04gc2V0dGluZ3MuJykKICAgICAgICAgICAgY3VycmVudCA9IEludHJ1c2lvbkNvbmZpZy5wYXJzZShzcGVjLmdldCgnaW50cnVzaW9uJywge30pKS5wYXlsb2FkKCkKICAgICAgICAgICAgY29uZmlndXJlZCA9IEludHJ1c2lvbkNvbmZpZy5wYXJzZShkaWN0KGN1cnJlbnQsICoqdmFsdWUpKQogICAgICAgICAgICBpZiBjb25maWd1cmVkLmVuYWJsZWQgYW5kIChub3Qgc3BlYy5nZXQoJ3NlcnZlcl9pZCcpIG9yIG5vdCBzcGVjLmdldCgnc291cmNlX2lkJykpOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fub25pY2FsIGlkZW50aXR5IGlzIHJlcXVpcmVkIGZvciBJTlRSVVNJT04uJykKICAgICAgICAgICAgaWYgY29uZmlndXJlZC5wYXlsb2FkKCkgIT0gY3VycmVudDoKICAgICAgICAgICAgICAgIGNhbmRpZGF0ZVtmaWVsZF0gPSBjb25maWd1cmVkLnBheWxvYWQoKQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIGZpZWxkID09ICdhbmFseXNpc0Zwc1RhcmdldCc6CiAgICAgICAgICAgIGZyb20gYXBwLmFuYWx5c2lzX21ldHJpY3MgaW1wb3J0IGFuYWx5c2lzX2ZwcwogICAgICAgICAgICBpZiBub3Qgc3BlYy5nZXQoJ3NlcnZlcl9pZCcpIG9yIG5vdCBzcGVjLmdldCgnc291cmNlX2lkJyk6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5vbmljYWwgRnJhbWUgaWRlbnRpdHkgaXMgcmVxdWlyZWQgZm9yIEZQUyBzZWxlY3Rpb24uJykKICAgICAgICAgICAgdmFsdWUgPSBhbmFseXNpc19mcHModmFsdWUpCiAgICAgICAgICAgIGlmIHZhbHVlICE9IHNwZWMuZ2V0KCdhbmFseXNpc19mcHNfdGFyZ2V0JywgMTApOgogICAgICAgICAgICAgICAgY2FuZGlkYXRlWydhbmFseXNpc19mcHNfdGFyZ2V0J10gPSB2YWx1ZQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIGZpZWxkID09ICdmcmFtZV90aW1lX2FuY2hvcic6CiAgICAgICAgICAgIGZyb20gYXBwLmZyYW1lX3RpbWUgaW1wb3J0IEZyYW1lQW5jaG9yCiAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lIGFuZCAobm90IHNwZWMuZ2V0KCdzZXJ2ZXJfaWQnKSBvciBub3Qgc3BlYy5nZXQoJ3NvdXJjZV9pZCcpKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm9uaWNhbCBGcmFtZSBpZGVudGl0eSBpcyByZXF1aXJlZCBmb3IgdGltZSBzZXR0aW5ncy4nKQogICAgICAgICAgICBjYW5kaWRhdGVbZmllbGRdID0gRnJhbWVBbmNob3IubW9kZWxfdmFsaWRhdGUodmFsdWUpLm1vZGVsX2R1bXAoKSBpZiB2YWx1ZSBpcyBub3QgTm9uZSBlbHNlIE5vbmUKICAgICAgICAgICAgY29udGludWUKICAgICAgICBzY29yZSh2YWx1ZSkKICAgICAgICBpZiBmaWVsZCA9PSAnZGlzcGxheV9zY29yZSc6CiAgICAgICAgICAgIGlmIG5vdCBzcGVjLmdldCgnc2VydmVyX2lkJykgb3Igbm90IHNwZWMuZ2V0KCdzb3VyY2VfaWQnKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm9uaWNhbCBGcmFtZSBpZGVudGl0eSBpcyByZXF1aXJlZCBmb3IgZGlzcGxheSBzZXR0aW5ncy4nKQogICAgICAgICAgICBjYW5kaWRhdGVbJ3Zpc3VhbGl6YXRpb24nXSA9IGRpY3QoY2FuZGlkYXRlLmdldCgndmlzdWFsaXphdGlvbicpIG9yIHt9KQogICAgICAgICAgICBjYW5kaWRhdGVbJ3Zpc3VhbGl6YXRpb24nXVsnc2NvcmVfdGhyZXNob2xkJ10gPSB2YWx1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHZhbHVlID09IDA6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdEb3duc3RyZWFtIHNjb3JlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uJykKICAgICAgICAgICAgcHJvZmlsZSA9IGNhbmRpZGF0ZVsnaW5mZXJlbmNlX3Byb2ZpbGUnXSA9IGRpY3QoY2FuZGlkYXRlLmdldCgnaW5mZXJlbmNlX3Byb2ZpbGUnKSBvciB7fSkKICAgICAgICAgICAgcHJvZmlsZVsndGhyZXNob2xkcyddID0gZGljdChwcm9maWxlLmdldCgndGhyZXNob2xkcycpIG9yIHt9KQogICAgICAgICAgICBwcm9maWxlWyd0aHJlc2hvbGRzJ11bJ3Njb3JlJ10gPSB2YWx1ZQogICAgZXhlY3V0aW9uX3BsYW4oY2FuZGlkYXRlKQogICAgdHJhY2tpbmdfc2V0dGluZ3MoY2FuZGlkYXRlKQogICAgcmV0dXJuIGNhbmRpZGF0ZQo=",
    "app/fall_r2/config.py": "IiIiRkFMTC1SMi1XRUItMDE6IHZlcnNpb24gbWFya2VyIG9ubHk7IGdlb21ldHJ5IGFuZCB0aW1pbmcgY29uc3RhbnRzIGFyZSBmaXhlZC4iIiIKaW1wb3J0IG1hdGgKCmNsYXNzIFIyQ29uZmlnRXJyb3IoVmFsdWVFcnJvcik6CiAgICBwYXNzCgpkZWYgc2NvcmVfZmxvb3IodmFsdWUsIG1pbmltdW0pOgogICAgdHJ5OnZhbGlkPXR5cGUodmFsdWUpIGluIChpbnQsZmxvYXQpIGFuZCBtYXRoLmlzZmluaXRlKHZhbHVlKSBhbmQgMDw9dmFsdWU8PTEKICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOnZhbGlkPUZhbHNlCiAgICBpZiBub3QgdmFsaWQ6cmFpc2UgUjJDb25maWdFcnJvcignRkFMTF9SMl9TQ09SRV9JTlZBTElEJykKICAgIHJldHVybiBtYXgoZmxvYXQodmFsdWUpLG1pbmltdW0pCgpkZWYgYmxvY2sodmFsdWUsICosIHJlcXVlc3Q9RmFsc2UpOgogICAgYWxsb3dlZD17J3NjaGVtYV92ZXJzaW9uJywncmVzZXRfdG9fZGVmYXVsdHMnfSBpZiByZXF1ZXN0IGVsc2UgeydzY2hlbWFfdmVyc2lvbid9CiAgICBpZiB0eXBlKHZhbHVlKSBpcyBub3QgZGljdCBvciBzZXQodmFsdWUpLWFsbG93ZWQ6cmFpc2UgUjJDb25maWdFcnJvcignRkFMTF9SMl9GSUVMRFNfSU5WQUxJRCcpCiAgICBpZiAnc2NoZW1hX3ZlcnNpb24nIG5vdCBpbiB2YWx1ZTpyYWlzZSBSMkNvbmZpZ0Vycm9yKCdGQUxMX1IyX1NDSEVNQV9WRVJTSU9OX1JFUVVJUkVEJykKICAgIGlmIHR5cGUodmFsdWVbJ3NjaGVtYV92ZXJzaW9uJ10pIGlzIG5vdCBpbnQgb3IgdmFsdWVbJ3NjaGVtYV92ZXJzaW9uJ10hPTE6cmFpc2UgUjJDb25maWdFcnJvcignRkFMTF9SMl9TQ0hFTUFfVkVSU0lPTl9VTlNVUFBPUlRFRCcpCiAgICBpZiAncmVzZXRfdG9fZGVmYXVsdHMnIGluIHZhbHVlIGFuZCB2YWx1ZVsncmVzZXRfdG9fZGVmYXVsdHMnXSBpcyBub3QgVHJ1ZTpyYWlzZSBSMkNvbmZpZ0Vycm9yKCdGQUxMX1IyX1JFU0VUX0lOVkFMSUQnKQogICAgcmV0dXJuIHZhbHVlLmdldCgncmVzZXRfdG9fZGVmYXVsdHMnLEZhbHNlKQo=",
    "app/fall_r2/web.py": "IiIiQXRvbWljIFIyIFN0YXJ0IHByb2plY3Rpb24sIGNvbXBhdGlibGUgd2l0aCBwZXJpb2RpYyBvbGQgV2ViIHJlcXVlc3RzLiIiIgppbXBvcnQgbG9nZ2luZwppbXBvcnQgbWF0aAppbXBvcnQgcmUKZnJvbSAuY29uZmlnIGltcG9ydCBSMkNvbmZpZ0Vycm9yLHNjb3JlX2Zsb29yLGJsb2NrCkxPRz1sb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKCmRlZiBhcHBseV9wYXJhbWV0ZXJzKHNwZWMscmVxdWVzdCk6CiAgICBmcm9tIGFwcC5mYWxsX3J1bnRpbWUgaW1wb3J0IEZhbGxTZXR0aW5ncwogICAgcmF3PXJlcXVlc3QuZ2V0KCdwYXJhbWV0ZXJzJyk7Y3VycmVudD1GYWxsU2V0dGluZ3MucGFyc2Uoc3BlYy5nZXQoJ2ZhbGwnKSBvciB7fSkKICAgIGlmIGN1cnJlbnQuZW5naW5lIT0ncjInOgogICAgICAgIGlmIHR5cGUocmF3KSBpcyBkaWN0IGFuZCAnZmFsbF9yMicgaW4gcmF3OnJhaXNlIFIyQ29uZmlnRXJyb3IoJ0ZBTExfUjJfTk9UX0VOQUJMRUQnKQogICAgICAgIHJldHVybiBOb25lCiAgICBpZiByYXcgaXMgTm9uZTpyYXc9e30KICAgIGlmIHR5cGUocmF3KSBpcyBub3QgZGljdDoKICAgICAgICBMT0cuaW5mbygnZmFsbF9yMl9wYXJhbWV0ZXJfaWdub3JlZCBwYXJhbWV0ZXI9cGFyYW1ldGVycyByZWFzb249SU5WQUxJRF9DT05UQUlORVInKTtyYXc9e30KICAgIGV4cGxpY2l0PSdmYWxsX3IyJyBpbiByYXc7Y2ZnPWN1cnJlbnQuc2V0dGluZ3NfcGF5bG9hZCgpCiAgICBjb29sZG93bj0oc3BlYy5nZXQoJ2V2ZW50X2Nvb2xkb3ducycpIG9yIHt9KS5nZXQoJ0ZBTEwnLDEwLikKICAgIHJlc2V0PWJsb2NrKHJhd1snZmFsbF9yMiddLHJlcXVlc3Q9VHJ1ZSkgaWYgZXhwbGljaXQgZWxzZSBGYWxzZQogICAgY29tbW9uPXsncGVyc29uX2NvbmZpZGVuY2UnLCdwb3NlX2NvbmZpZGVuY2UnLCdjb29sZG93bl9zZWNvbmRzJ30KICAgIGlmIHJlc2V0OgogICAgICAgIGlmIGNvbW1vbiAmIHNldChyYXcpOnJhaXNlIFIyQ29uZmlnRXJyb3IoJ0ZBTExfUjJfUkVTRVRfSU5WQUxJRCcpCiAgICAgICAgY2ZnLnVwZGF0ZShwZXJzb25fc2NvcmU9LjI1LGpvaW50X3Njb3JlPS4xMCk7Y29vbGRvd249MTAuCiAgICBmb3Iga2V5LHByaXZhdGUsbWluaW11bSBpbiAoKCdwZXJzb25fY29uZmlkZW5jZScsJ3BlcnNvbl9zY29yZScsLjI1KSwoJ3Bvc2VfY29uZmlkZW5jZScsJ2pvaW50X3Njb3JlJywuMTApKToKICAgICAgICBpZiBrZXkgbm90IGluIHJhdzpjb250aW51ZQogICAgICAgIHRyeTp2YWx1ZT1zY29yZV9mbG9vcihyYXdba2V5XSxtaW5pbXVtKQogICAgICAgIGV4Y2VwdCBSMkNvbmZpZ0Vycm9yOgogICAgICAgICAgICBpZiBleHBsaWNpdDpyYWlzZQogICAgICAgICAgICBMT0cuaW5mbygnZmFsbF9yMl9wYXJhbWV0ZXJfaWdub3JlZCBwYXJhbWV0ZXI9JXMgcmVhc29uPUlOVkFMSURfVkFMVUUnLGtleSk7Y29udGludWUKICAgICAgICBjZmdbcHJpdmF0ZV09dmFsdWUKICAgICAgICBMT0cuaW5mbygnZmFsbF9yMl9wYXJhbWV0ZXIgcGFyYW1ldGVyPSVzIHJlcXVlc3RlZD0lcyBlZmZlY3RpdmU9JXMgY29ycmVjdGVkPSVzJyxrZXkscmF3W2tleV0sdmFsdWUsdmFsdWUhPXJhd1trZXldKQogICAgaWYgJ2Nvb2xkb3duX3NlY29uZHMnIGluIHJhdzoKICAgICAgICB2PXJhd1snY29vbGRvd25fc2Vjb25kcyddCiAgICAgICAgdHJ5OnZhbGlkPXR5cGUodikgaW4gKGludCxmbG9hdCkgYW5kIG1hdGguaXNmaW5pdGUodikgYW5kIDA8PXY8PTMwMAogICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOnZhbGlkPUZhbHNlCiAgICAgICAgaWYgbm90IHZhbGlkOgogICAgICAgICAgICBpZiBleHBsaWNpdDpyYWlzZSBSMkNvbmZpZ0Vycm9yKCdGQUxMX1IyX0NPT0xET1dOX0lOVkFMSUQnKQogICAgICAgICAgICBMT0cuaW5mbygnZmFsbF9yMl9wYXJhbWV0ZXJfaWdub3JlZCBwYXJhbWV0ZXI9Y29vbGRvd25fc2Vjb25kcyByZWFzb249SU5WQUxJRF9WQUxVRScpCiAgICAgICAgZWxzZTpjb29sZG93bj1mbG9hdCh2KQogICAgZm9yIGtleSBpbiBzb3J0ZWQoc2V0KHJhdyktY29tbW9uLXsnZmFsbF9yMid9KToKICAgICAgICBzYWZlPWtleSBpZiBpc2luc3RhbmNlKGtleSxzdHIpIGFuZCByZS5mdWxsbWF0Y2gocidbQS1aYS16MC05X117MSw2NH0nLGtleSkgZWxzZSAnSU5WQUxJRF9LRVknCiAgICAgICAgcmVhc29uPSdMRUdBQ1lfTk9UX0FQUExJRUQnIGlmIGtleSBpbiAoJ2Rvd25fYW5nbGVfZGVnJywncmVjb3ZlcnlfaG9sZF9zZWNvbmRzJykgZWxzZSAnVU5LTk9XTl9QQVJBTUVURVInCiAgICAgICAgTE9HLmluZm8oJ2ZhbGxfcjJfcGFyYW1ldGVyX2lnbm9yZWQgcGFyYW1ldGVyPSVzIHJlYXNvbj0lcycsc2FmZSxyZWFzb24pCiAgICBjZmc9RmFsbFNldHRpbmdzLnBhcnNlKGNmZykuc2V0dGluZ3NfcGF5bG9hZCgpCiAgICBzcGVjWydmYWxsJ109Y2ZnO3NwZWMuc2V0ZGVmYXVsdCgnZXZlbnRfY29vbGRvd25zJyx7fSlbJ0ZBTEwnXT1jb29sZG93bgogICAgTE9HLmluZm8oJ2ZhbGxfcjJfZWZmZWN0aXZlIHZlcnNpb249MSBwZXJzb25fc2NvcmU9JXMgam9pbnRfc2NvcmU9JXMgY29vbGRvd249JXMnLGNmZ1sncGVyc29uX3Njb3JlJ10sY2ZnWydqb2ludF9zY29yZSddLGNvb2xkb3duKQogICAgcmV0dXJuIFRydWUK",
    "app/fall_r2/core.py": "IiIiRnJvemVuIHJlZmVyZW5jZSBzdGF0ZSBpcyBkaWFnbm9zdGljIG9ubHk7IFJ1bnRpbWUgYWRtaXNzaW9uIG93bnMgcmVhbCBFdmVudHMuIiIiCmltcG9ydCBqc29uCmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aApmcm9tIC5yZWZlcmVuY2UgaW1wb3J0IGZlYXR1cmVzLCBTcGF0aWFsU3RhdGUKZnJvbSAuZ2VvbWV0cnkgaW1wb3J0IG1lYXN1cmUKZnJvbSAuZGVjaXNpb24gaW1wb3J0IGRlY2lkZQoKY2xhc3MgUjJDb3JlOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBlcnNvbl9zY29yZT0uMjUsIGpvaW50X3Njb3JlPS4xMCk6CiAgICAgICAgcm9vdD1QYXRoKF9fZmlsZV9fKS5wYXJlbnQKICAgICAgICBzZWxmLmJhc2U9anNvbi5sb2Fkcygocm9vdC8nYmFzZS5qc29uJykucmVhZF90ZXh0KCkpCiAgICAgICAgc2VsZi5ydWxlcz1qc29uLmxvYWRzKChyb290LydydWxlcy5qc29uJykucmVhZF90ZXh0KCkpCiAgICAgICAgc2VsZi5iYXNlLnVwZGF0ZShwZXJzb25fc2NvcmU9cGVyc29uX3Njb3JlLGpvaW50X3Njb3JlPWpvaW50X3Njb3JlKQogICAgICAgIHNlbGYuY2xlYXIoKQoKICAgIGRlZiBjbGVhcihzZWxmKToKICAgICAgICBzZWxmLnN0YXRlPVNwYXRpYWxTdGF0ZShzZWxmLmJhc2UsJ3J1bnRpbWUtcmVmZXJlbmNlJykKICAgICAgICBzZWxmLm9yaWdpbj1Ob25lCgogICAgZGVmIHN0ZXAoc2VsZiwgcm93KToKICAgICAgICBpZiBzZWxmLm9yaWdpbiBpcyBOb25lOnNlbGYub3JpZ2luPXJvd1snc2Vjb25kcyddCiAgICAgICAgcGVvcGxlPVtmZWF0dXJlcyhwLHNlbGYuYmFzZSkgZm9yIHAgaW4gcm93WydwZXJzb25zJ11dCiAgICAgICAgZXh0cmE9W21lYXN1cmUocCxiLHNlbGYuYmFzZVsnam9pbnRfc2NvcmUnXSkgZm9yIHAsYiBpbiB6aXAocm93WydwZXJzb25zJ10scGVvcGxlKV0KICAgICAgICBkZWNpc2lvbnM9W2RlY2lkZShwLHgsc2VsZi5ydWxlcykgZm9yIHAseCBpbiB6aXAocGVvcGxlLGV4dHJhKV0KICAgICAgICBjdXJyZW50PVtkaWN0KHAsaGl0PWRbJ2hpdCddKSBmb3IgcCxkIGluIHppcChwZW9wbGUsZGVjaXNpb25zKV0KICAgICAgICByZXN1bHQ9c2VsZi5zdGF0ZS5ldmFsdWF0ZShyb3dbJ3NlY29uZHMnXSxjdXJyZW50LG1vbm90b25pY19ub3c9cm93WydzZWNvbmRzJ10tc2VsZi5vcmlnaW4pCiAgICAgICAgcmV0dXJuIHJlc3VsdCxjdXJyZW50LGRlY2lzaW9ucwo=",
    "app/fall_r2/runtime.py": "IiIiRkFMTC1SMi1SVU5USU1FLTAxOiByZWFsIGN1cnJlbnQgb2JqZWN0cyBvbmx5OyBhZG1pc3Npb24gbmV2ZXIgZ2F0ZXMgZGlzcGxheS4iIiIKZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ291bnRlcgppbXBvcnQgdGltZQpmcm9tIGFwcC5jb250cmFjdHMuZnJhbWVzIGltcG9ydCBGcmFtZUVudmVsb3BlLFBvc2VPYnNlcnZhdGlvbgpmcm9tIGFwcC5wb3NlX2NvbmZpZyBpbXBvcnQgUE9TRV9NT0RFTApmcm9tIGFwcC5pbnRydXNpb24gaW1wb3J0IGluc2lkZQpmcm9tIGFwcC5ldmVudF9jb29sZG93biBpbXBvcnQgRXZlbnRDb29sZG93bixhbGxvd19ldmVudApmcm9tIGFwcC5maWdodF9yNS5ub3RpZmljYXRpb24gaW1wb3J0IE5vdGlmaWNhdGlvblN0YXRlCmZyb20gLmNvcmUgaW1wb3J0IFIyQ29yZQoKY2xhc3MgUjJSdW50aW1lOgogICAgZGVmIF9faW5pdF9fKHNlbGYsY29uZmlnLGV2ZW50X2lkX2ZhY3Rvcnksd2FsbF9ucyxjb250YWlucz1Ob25lKToKICAgICAgICBzZWxmLmNvbmZpZz1jb25maWc7c2VsZi5ldmVudF9pZF9mYWN0b3J5PWV2ZW50X2lkX2ZhY3Rvcnk7c2VsZi53YWxsX25zPXdhbGxfbnM7c2VsZi5jb250YWlucz1jb250YWlucwogICAgICAgIHNlbGYuY29yZT1SMkNvcmUoY29uZmlnLnBvbGljeS5wZXJzb25fc2NvcmUsY29uZmlnLnBvbGljeS5qb2ludF9zY29yZSkKICAgICAgICBzZWxmLm1ldHJpY3M9Q291bnRlcigpO3NlbGYuY2xlYXIoKQoKICAgIGRlZiBjbGVhcihzZWxmKToKICAgICAgICBzZWxmLmNvcmUuY2xlYXIoKTtzZWxmLm5vdGlmaWNhdGlvbj1Ob3RpZmljYXRpb25TdGF0ZSgpO3NlbGYuX2ZhbGxiYWNrX2FkbWlzc2lvbj1FdmVudENvb2xkb3duKDEwLikKICAgICAgICBzZWxmLl9pZGVudGl0eT1Ob25lO3NlbGYuX2xhc3RfcHRzPU5vbmU7c2VsZi5fbGFzdF9zZXE9Tm9uZTtzZWxmLl9ldmVudF9pZD1Ob25lO3NlbGYubGFzdF9yZXN1bHQ9Tm9uZQoKICAgIGRlZiBldmFsdWF0ZShzZWxmLGZyYW1lLHBvc2VzLGlkcywqLGdhcF9iZWZvcmU9RmFsc2UpOgogICAgICAgIGZyb20gYXBwLmZhbGxfcnVudGltZSBpbXBvcnQgRmFsbERpc3BsYXksRmFsbEV2ZW50CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZnJhbWUsRnJhbWVFbnZlbG9wZSkgb3IgdHlwZShnYXBfYmVmb3JlKSBpcyBub3QgYm9vbDpyYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIEZBTEwgUjIgRnJhbWUuJykKICAgICAgICBwb3NlcyxpZHM9dHVwbGUocG9zZXMpLHR1cGxlKGlkcykKICAgICAgICBpZiBsZW4ocG9zZXMpIT1sZW4oaWRzKTpyYWlzZSBWYWx1ZUVycm9yKCdQb3NlL1RyYWNraW5nIGFzc29jaWF0aW9uIGRpZmZlcnMuJykKICAgICAgICBzZWVuPXNldCgpCiAgICAgICAgZm9yIHAsdGlkIGluIHppcChwb3NlcyxpZHMpOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwLFBvc2VPYnNlcnZhdGlvbikgb3IgcC5mcmFtZSE9ZnJhbWUgb3IgcC5tb2RlbF9rZXkhPVBPU0VfTU9ERUw6cmFpc2UgVmFsdWVFcnJvcignRkFMTCBSMiByZXF1aXJlcyBzYW1lLUZyYW1lIGNhbm9uaWNhbCBQb3NlLicpCiAgICAgICAgICAgIGlmIHRpZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGlmIHR5cGUodGlkKSBpcyBub3QgaW50IG9yIHRpZDwxIG9yIHRpZCBpbiBzZWVuOnJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgRkFMTCB0cmFjayBJRC4nKQogICAgICAgICAgICAgICAgc2Vlbi5hZGQodGlkKQogICAgICAgIHBvaW50cz10dXBsZSgoKHAuYmJveF94eXh5WzBdK3AuYmJveF94eXh5WzJdKS8yLHAuYmJveF94eXh5WzNdKSBmb3IgcCBpbiBwb3NlcykKICAgICAgICBzZWxlY3RlZD1baSBmb3IgaSxwIGluIGVudW1lcmF0ZShwb2ludHMpIGlmIChzZWxmLmNvbnRhaW5zKHApIGlmIHNlbGYuY29udGFpbnMgZWxzZSBpbnNpZGUocCxzZWxmLmNvbmZpZy5yb2kpKV0KICAgICAgICByb3dzPVtGYWxsRGlzcGxheShwLGkgaW4gc2VsZWN0ZWQsJ01PTklUT1JJTkcnIGlmIGkgaW4gc2VsZWN0ZWQgZWxzZSAnT1VUU0lERScsc2VsZi5jb25maWcuY29uZmlkZW5jZSkgZm9yIGkscCBpbiBlbnVtZXJhdGUocG9pbnRzKV0KICAgICAgICBwdHM9ZnJhbWUucHRzX25zCiAgICAgICAgaWYgdHlwZShwdHMpIGlzIG5vdCBpbnQgb3Igbm90IDA8PXB0czwyKio2MyBvciB0eXBlKGZyYW1lLmZyYW1lX3NlcSkgaXMgbm90IGludCBvciBmcmFtZS5mcmFtZV9zZXE8MDoKICAgICAgICAgICAgc2VsZi5tZXRyaWNzWydpbnZhbGlkX3B0cyddKz0xCiAgICAgICAgICAgIHJldHVybiB0dXBsZShGYWxsRGlzcGxheShwLGkgaW4gc2VsZWN0ZWQsJ1RJTUVfVU5BVkFJTEFCTEUnLHNlbGYuY29uZmlnLmNvbmZpZGVuY2UpIGZvciBpLHAgaW4gZW51bWVyYXRlKHBvaW50cykpLCgpCiAgICAgICAgaWRlbnRpdHk9KGZyYW1lLnNlcnZlcl9pZCxmcmFtZS5zb3VyY2VfaWQsZnJhbWUuc3RyZWFtX2lkLGZyYW1lLnJ1bl9pZCxmcmFtZS5ydW5fZ2VuZXJhdGlvbixmcmFtZS5mcmFtZV93aWR0aCxmcmFtZS5mcmFtZV9oZWlnaHQsZnJhbWUuY29uZmlnX3ZlcnNpb24pCiAgICAgICAgaWYgc2VsZi5faWRlbnRpdHkgaXMgbm90IE5vbmUgYW5kIGlkZW50aXR5IT1zZWxmLl9pZGVudGl0eTpyYWlzZSBWYWx1ZUVycm9yKCdGQUxMIFIyIHJ1bi9zb3VyY2UvY29uZmlnL2dlb21ldHJ5IGNoYW5nZWQ7IGNsZWFyIG9yIGNyZWF0ZSBhIG5ldyBlbmdpbmUuJykKICAgICAgICBpZiBzZWxmLl9sYXN0X3B0cyBpcyBub3QgTm9uZSBhbmQgKHB0czw9c2VsZi5fbGFzdF9wdHMgb3IgZnJhbWUuZnJhbWVfc2VxPD1zZWxmLl9sYXN0X3NlcSk6CiAgICAgICAgICAgIHNlbGYubWV0cmljc1snc3RhbGVfZnJhbWUnXSs9MTtyZXR1cm4gdHVwbGUocm93cyksKCkKICAgICAgICBzZWxmLl9pZGVudGl0eT1pZGVudGl0eTtzZWxmLl9sYXN0X3B0cz1wdHM7c2VsZi5fbGFzdF9zZXE9ZnJhbWUuZnJhbWVfc2VxCiAgICAgICAgaWYgbm90IHNlbGYuY29uZmlnLmVuYWJsZWQ6cmV0dXJuIHR1cGxlKHJvd3MpLCgpCiAgICAgICAgdyxoPWZyYW1lLmZyYW1lX3dpZHRoLGZyYW1lLmZyYW1lX2hlaWdodAogICAgICAgIHBlcnNvbnM9W2RpY3Qoc2NvcmU9cG9zZXNbaV0uc2NvcmUsYmJveD1bdioodyBpZiBrJTI9PTAgZWxzZSBoKSBmb3Igayx2IGluIGVudW1lcmF0ZShwb3Nlc1tpXS5iYm94X3h5eHkpXSwKICAgICAgICAgICAgICAgICAgICAgIGtleXBvaW50cz1bW3gqdyx5Kmgsc10gZm9yIHgseSxzIGluIHBvc2VzW2ldLmtleXBvaW50c10sdHJhY2tfaWQ9aWRzW2ldLHF1ZXJ5PWkpIGZvciBpIGluIHNlbGVjdGVkXQogICAgICAgIHJlc3VsdCxwZW9wbGUsXz1zZWxmLmNvcmUuc3RlcChkaWN0KHNlY29uZHM9cHRzLzFlOSxwZXJzb25zPXBlcnNvbnMpKQogICAgICAgIHNlbGYubGFzdF9yZXN1bHQ9cmVzdWx0O2V2ZW50cz1bXQogICAgICAgIGNhbmRpZGF0ZT1zZWxmLm5vdGlmaWNhdGlvbi5vYnNlcnZlKHB0cy8xZTkscmVzdWx0WydoaXQnXSkKICAgICAgICBpZiBub3Qgc2VsZi5ub3RpZmljYXRpb24ubGF0Y2hlZDpzZWxmLl9ldmVudF9pZD1Ob25lCiAgICAgICAgaWYgY2FuZGlkYXRlOgogICAgICAgICAgICBhZG1pdHRlZD1hbGxvd19ldmVudChzZWxmLCdGQUxMJykgaWYgZ2V0YXR0cihzZWxmLCdldmVudF9hZG1pc3Npb24nLE5vbmUpIGVsc2Ugc2VsZi5fZmFsbGJhY2tfYWRtaXNzaW9uLmFsbG93KCdGQUxMJykKICAgICAgICAgICAgaWYgYWRtaXR0ZWQ6CiAgICAgICAgICAgICAgICBpPW5leHQocFsncXVlcnknXSBmb3IgcCBpbiBwZW9wbGUgaWYgcFsnaGl0J10pO2VpZD1zZWxmLmV2ZW50X2lkX2ZhY3RvcnkoKQogICAgICAgICAgICAgICAgaWYgdHlwZShlaWQpIGlzIG5vdCBzdHIgb3Igbm90IGVpZCBvciBsZW4oZWlkKT4xMDA6cmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBGQUxMIEV2ZW50IElELicpCiAgICAgICAgICAgICAgICBzZWxmLl9ldmVudF9pZD1laWQKICAgICAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoRmFsbEV2ZW50KGVpZCxmcmFtZSxpZHNbaV0sc2VsZi5jb25maWcuZ2VvbWV0cnkucm9pX2lkLHN0cihpKSxwb3Nlc1tpXS5zY29yZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2VzW2ldLmJib3hfeHl4eSxwb3Nlc1tpXS5tb2RlbF9rZXksc2VsZi53YWxsX25zKCkvLzEwMDAwMDApKQogICAgICAgICAgICAgICAgc2VsZi5ub3RpZmljYXRpb24uYWRtaXR0ZWQodGltZS5tb25vdG9uaWMoKSk7c2VsZi5tZXRyaWNzWydldmVudHNfYWRtaXR0ZWQnXSs9MQogICAgICAgICAgICBlbHNlOnNlbGYubm90aWZpY2F0aW9uLmRlbmllZCgpO3NlbGYubWV0cmljc1snZXZlbnRzX3N1cHByZXNzZWRfYnlfd2ViX2Nvb2xkb3duJ10rPTEKICAgICAgICBmb3IgY29sb3IgaW4gcmVzdWx0Wydjb2xvcnMnXToKICAgICAgICAgICAgaWYgY29sb3JbJ3N0YXRlJ10gbm90IGluICgnUkVEX0NVUlJFTlQnLCdZRUxMT1dfSE9MRCcpOmNvbnRpbnVlCiAgICAgICAgICAgIGk9Y29sb3JbJ3F1ZXJ5J107cm93c1tpXT1GYWxsRGlzcGxheShwb2ludHNbaV0sVHJ1ZSwnRkFMTF9DT05GSVJNRUQnLHNlbGYuY29uZmlnLmNvbmZpZGVuY2Usc2VsZi5fZXZlbnRfaWQpCiAgICAgICAgcmV0dXJuIHR1cGxlKHJvd3MpLHR1cGxlKGV2ZW50cykKCiAgICBkZWYgbm90aWZpY2F0aW9uX3N0YXR1cyhzZWxmKToKICAgICAgICByPXNlbGYubGFzdF9yZXN1bHQgb3Ige30KICAgICAgICByZXR1cm4gZGljdChzZWxmLm5vdGlmaWNhdGlvbi5zbmFwc2hvdCgpLGN1cnJlbnRfaGl0PWJvb2woci5nZXQoJ2hpdCcpKSwKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2FjdGl2ZT1ib29sKHIuZ2V0KCdkaXNwbGF5JykpLGNvdW50cz1kaWN0KHNlbGYubWV0cmljcyksZGVsaXZlcnlfc3RhdGU9J1NFRV9BUlRJRkFDVF9TVEFUVVMnKQo="
  },
  "guards": {
    "app/fight_r5/rules.py": "843faa04a8bf393ec15cb23758ace9ea7e54987db405528f15da8041d61a2c25",
    "app/fight_r5/motion.py": "425d2a1d67605b59f957a5e51d1174f0df4e3b3554387d1408582fe3afbc0547",
    "app/fight_r5/runtime.py": "de397899ea54cffc5e11c9426bae7d0996b6acfd29a81be3a75fc08ba62be647",
    "app/fight_r5/web.py": "e654510f0455cc5f4bca8bd993d3cac864086b533b1b415cdfb56449e455d489",
    "app/fight_r5/config.py": "9896219747a0e6cae39ce9f3e4e117ea28179a59fb8b55c4b4eb15055af6c075",
    "app/fight_r5/episode.py": "60701308789435dd76a7509c246f9499469cc0111e7c7bd76927cb7975b3e330",
    "app/fight_r5/decision.py": "4c14f37c870d0d398214b86df2975a1e13aa6f632e93063a7ea4c211d0134566",
    "app/fight_r5/enrichment.py": "d3d7baf8a7bd71cdc938aac16768ce4a577d7a3a29623899e64d29903719b4f4",
    "app/fight_r5/__init__.py": "93eace52779f715213111c83b82ab2520359e507653de65b0cf1530d37783679",
    "app/fight_r5/core.py": "7f9b9a75da91de4137c1991b51f704300d5dcf7a4a4e4621c010e22af5a8dad1",
    "app/fight_r5/geometry.py": "3b93730cca0b051cdb7a6966052acaf2661d59086c62050870e392b9be448c34",
    "app/fight_r5/notification.py": "ac7a1c3963582e6af3eecb0b3efe4c4f9c75023ade026f3141fbc5ffa33a8935",
    "app/fight_runtime.py": "458038a46ddd89feb2ce07d723fafc9cd646065d7b772f4865958f66649daf8f",
    "app/byte_tracking.py": "4e083b18d069ec44b41fe95185af5a0f820874cb5225ddff0527c0cf79cb6c8c",
    "app/fall_r2/base.json": "34abaacb888d66a7e34d863323aa385f6ee365d454a6f9010a2812290b064543",
    "app/fall_r2/rules.json": "cbc9b7c925ec305bdaa2ad0ca959e80854ee74f91c53a1a96491e484fa7ed580",
    "app/fall_r2/reference.py": "a68a5bc8c906f7d9e1a73f9f348b005948581b8bb7b5789281c9f1f83fe0c399",
    "app/fall_r2/decision.py": "c623a08203d509295391700106c8796689780dd78c7faff229682b236b5f0bdb",
    "app/fall_r2/geometry.py": "9ec7c811f417c9bd0fb28445ec501dda08c98d46b47baf5dcc16206e9e561db2"
  },
  "configs": {
    "CONTEXTRA_CONTROL_TEMPLATE_FILE": {
      "sha256": "1a4485c29da86080f16263babe73bd17e498a417ce73ff97bc5398d0cfd67a99",
      "channels": [
        {
          "camera": null,
          "stream": null,
          "fall": {
            "enabled": false,
            "person_score": 0.25,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": false,
            "person_score": 0.25,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FALL": 10.0
          }
        }
      ]
    },
    "STREAMS_CONFIG_PATH": {
      "sha256": "bc7c4b827c24110ca7a0eed2655486d1ca0e3ad48a93dcf7580657ed935eacc8",
      "channels": []
    },
    "STREAMS_RUNTIME_PATH": {
      "sha256": "3e12d5d20c83bc5b0950b1ff50df288e4919ea5041d31eb8aeb26fb49287dee3",
      "channels": [
        {
          "camera": 1,
          "stream": "camera-b80c8fefa677534085fb2c162d75df03",
          "fall": {
            "enabled": true,
            "person_score": 0.25,
            "joint_score": 0.3,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.25,
            "joint_score": 0.3,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 4,
          "stream": "camera-ff6c5a08b2fa56b6ac006830f4074b6a",
          "fall": {
            "enabled": true,
            "person_score": 0.25,
            "joint_score": 0.3,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.25,
            "joint_score": 0.3,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 5,
          "stream": "camera-afca48e959ea5a28b8a488e0cc6eda1c",
          "fall": {
            "enabled": true,
            "person_score": 0.25,
            "joint_score": 0.3,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.25,
            "joint_score": 0.3,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 3,
          "stream": "camera-c093c7f66edf595e953970de788efbaa",
          "fall": {
            "enabled": true,
            "person_score": 0.25,
            "joint_score": 0.3,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.25,
            "joint_score": 0.3,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 17,
          "stream": "camera-071beeb1b1ed5e7c87e330a0877942b4",
          "fall": {
            "enabled": false,
            "person_score": 0.25,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": false,
            "person_score": 0.25,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 28,
          "stream": "camera-ab827ed286c25c7f8eee0326d169f0da",
          "fall": {
            "enabled": false,
            "person_score": 0.25,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": false,
            "person_score": 0.25,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 21,
          "stream": "camera-2c6e5af15b9d589190d2786607a2882e",
          "fall": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": false,
            "person_score": 0.25,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 6,
          "stream": "camera-c6577abe8c0f5a02ac84aa94c2247b1e",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 8,
          "stream": "camera-c06243dceaed5ddfbc34c28ae6c89ede",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 9,
          "stream": "camera-b756dcb03600525dbacb285c0f1a07e2",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 10,
          "stream": "camera-e1e5b788f4295a329f7e63865921a5e5",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 11,
          "stream": "camera-2342aa206cb653c8976461bcac17bdcc",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 12,
          "stream": "camera-3a8b9d4cb2925153b16070f43a18999e",
          "fall": {
            "enabled": false,
            "person_score": 0.25,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.25,
            "joint_score": 0.3,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 13,
          "stream": "camera-12f1810436a25810a811e616e5314449",
          "fall": {
            "enabled": false,
            "person_score": 0.25,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 14,
          "stream": "camera-fc340caed62953cabfc2f46c1a22d325",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 15,
          "stream": "camera-6d5f64e6d53b5df680057d9a26547399",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 16,
          "stream": "camera-7fb92d7386ec5509ba7b7be21db93784",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 22,
          "stream": "camera-51e4ac9a92ed5ca595abf9260e15f813",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 23,
          "stream": "camera-b515d77a162958569697c82f3c839a7d",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 26,
          "stream": "camera-0c49e57f9f0c56d48fdb7d3ae6246ec9",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 27,
          "stream": "camera-fb5ee05b8ff05a2d8e7aa74358a96b3b",
          "fall": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 29,
          "stream": "camera-31c1fa4986355943b57ec7e667e181db",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 2,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 2,
          "stream": "camera-334b6b3112a25bfcbf4f870c0954b343",
          "fall": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 3,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 7,
          "stream": "camera-5bd20866347853f7bc79d2aae304b443",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 3,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 18,
          "stream": "camera-70ede393d2265e569f1631b79e2b724b",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.45,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 3,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 19,
          "stream": "camera-38a01d76c5185afc9b9414cb038b4370",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 3,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 20,
          "stream": "camera-289dd7fb89ab53ff803d2fd731906127",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.35,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 3,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        },
        {
          "camera": 24,
          "stream": "camera-1fdaa47a21ac5365934a42c53f6d327f",
          "fall": {
            "enabled": false,
            "person_score": 0.35,
            "joint_score": 0.1,
            "upright_angle_deg": 35.0,
            "down_angle_deg": 60.0,
            "torso_delta_deg": 25.0,
            "hip_drop_ratio": 0.25,
            "span_collapse_ratio": 0.7,
            "knee_guard_angle_deg": 100.0,
            "knee_guard_torso_max_deg": 45.0,
            "upright_hold_seconds": 0.5,
            "transition_window_seconds": 0.8,
            "transition_to_down_seconds": 0.8,
            "down_hold_seconds": 0.7,
            "test_skip_down_hold": false,
            "missing_grace_seconds": 0.5,
            "recovery_hold_seconds": 1.0,
            "confirmed_retention_seconds": 5.0,
            "reference_window_seconds": 1.0,
            "unconfirmed_retention_seconds": 5.0,
            "max_states": 1024,
            "history_capacity": 256,
            "roi_id": "primary",
            "roi_name": "Fall ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r2",
            "r2": {
              "schema_version": 1
            }
          },
          "fight": {
            "enabled": true,
            "person_score": 0.3,
            "joint_score": 0.1,
            "pair_distance_ratio": 1.8,
            "pair_close_hold_seconds": 0.1,
            "arm_motion_window_seconds": 1.0,
            "arm_motion_ratio": 0.1,
            "toward_opponent_ratio": 0.01,
            "fight_window_seconds": 1.5,
            "required_bursts": 1,
            "burst_min_interval_seconds": 0.25,
            "rearm_quiet_seconds": 2.0,
            "pair_retention_seconds": 5.0,
            "max_people": 32,
            "max_pairs": 128,
            "history_capacity": 64,
            "roi_id": "primary",
            "roi_name": "Fight ROI",
            "debug_roi": true,
            "roi": [
              [
                0.0,
                0.0
              ],
              [
                1.0,
                0.0
              ],
              [
                1.0,
                1.0
              ],
              [
                0.0,
                1.0
              ]
            ],
            "engine": "r5",
            "r5": {
              "schema_version": 1,
              "window_seconds": 1.0,
              "min_samples": 3,
              "contact_min_samples": 3
            }
          },
          "cooldown": {
            "FIRE": 10.0,
            "FALL": 10.0,
            "INTRUSION": 10.0,
            "LOITERING": 10.0,
            "FIGHT": 10.0,
            "CROWD": 10.0
          }
        }
      ]
    }
  },
  "runtime_counts": {
    "running": 7,
    "starting": 0,
    "stopped": 21,
    "error": 0,
    "total": 28
  },
  "streams": [
    {
      "streamId": "camera-b80c8fefa677534085fb2c162d75df03",
      "cameraId": "1",
      "state": null,
      "runId": null,
      "runGeneration": 0
    },
    {
      "streamId": "camera-334b6b3112a25bfcbf4f870c0954b343",
      "cameraId": "2",
      "state": null,
      "runId": "93e03e50-2ec1-4460-b821-4b5b8d5b75a4",
      "runGeneration": 5
    },
    {
      "streamId": "camera-ff6c5a08b2fa56b6ac006830f4074b6a",
      "cameraId": "4",
      "state": null,
      "runId": null,
      "runGeneration": 0
    },
    {
      "streamId": "camera-afca48e959ea5a28b8a488e0cc6eda1c",
      "cameraId": "5",
      "state": null,
      "runId": null,
      "runGeneration": 0
    },
    {
      "streamId": "camera-3a8b9d4cb2925153b16070f43a18999e",
      "cameraId": "12",
      "state": null,
      "runId": "0773e0a3-8388-40e7-a35f-91865ff9d584",
      "runGeneration": 1
    },
    {
      "streamId": "camera-c093c7f66edf595e953970de788efbaa",
      "cameraId": "3",
      "state": null,
      "runId": null,
      "runGeneration": 0
    },
    {
      "streamId": "camera-071beeb1b1ed5e7c87e330a0877942b4",
      "cameraId": "17",
      "state": null,
      "runId": null,
      "runGeneration": 0
    },
    {
      "streamId": "camera-12f1810436a25810a811e616e5314449",
      "cameraId": "13",
      "state": null,
      "runId": "95371bb3-4fe6-4dd4-ab52-97498a6e18b0",
      "runGeneration": 1
    },
    {
      "streamId": "camera-fc340caed62953cabfc2f46c1a22d325",
      "cameraId": "14",
      "state": null,
      "runId": "37dcdc99-9d31-490d-bdc7-381f4d95b1f2",
      "runGeneration": 2
    },
    {
      "streamId": "camera-ab827ed286c25c7f8eee0326d169f0da",
      "cameraId": "28",
      "state": null,
      "runId": null,
      "runGeneration": 0
    },
    {
      "streamId": "camera-0c49e57f9f0c56d48fdb7d3ae6246ec9",
      "cameraId": "26",
      "state": null,
      "runId": "b755f1df-0645-49dd-98ed-30f8053665fa",
      "runGeneration": 1
    },
    {
      "streamId": "camera-fb5ee05b8ff05a2d8e7aa74358a96b3b",
      "cameraId": "27",
      "state": null,
      "runId": "3c56972f-6b94-4a27-8f85-5878b243a168",
      "runGeneration": 1
    },
    {
      "streamId": "camera-51e4ac9a92ed5ca595abf9260e15f813",
      "cameraId": "22",
      "state": null,
      "runId": "6907a7d1-2208-4b16-afae-cc06495a3e29",
      "runGeneration": 1
    },
    {
      "streamId": "camera-b515d77a162958569697c82f3c839a7d",
      "cameraId": "23",
      "state": null,
      "runId": "95540244-b0d7-4fb3-9bb3-1d09f2a92f2e",
      "runGeneration": 1
    },
    {
      "streamId": "camera-31c1fa4986355943b57ec7e667e181db",
      "cameraId": "29",
      "state": null,
      "runId": "426c1ee7-d8b9-4efb-830e-42534f1390c2",
      "runGeneration": 1
    },
    {
      "streamId": "camera-1fdaa47a21ac5365934a42c53f6d327f",
      "cameraId": "24",
      "state": null,
      "runId": "21429186-7c2f-474d-b323-5855f0a3f9eb",
      "runGeneration": 12
    },
    {
      "streamId": "camera-5bd20866347853f7bc79d2aae304b443",
      "cameraId": "7",
      "state": null,
      "runId": "da34b390-8e70-4e18-8b6a-91cfb83970bc",
      "runGeneration": 4
    },
    {
      "streamId": "camera-6d5f64e6d53b5df680057d9a26547399",
      "cameraId": "15",
      "state": null,
      "runId": "95452614-e040-42bb-b4b0-539be41cd702",
      "runGeneration": 2
    },
    {
      "streamId": "camera-2c6e5af15b9d589190d2786607a2882e",
      "cameraId": "21",
      "state": null,
      "runId": "c69e00a7-87e8-41cb-bda2-726b719ad86f",
      "runGeneration": 1
    },
    {
      "streamId": "camera-289dd7fb89ab53ff803d2fd731906127",
      "cameraId": "20",
      "state": null,
      "runId": "5591ea2e-da5c-4063-96cd-ef3e2b01e1f8",
      "runGeneration": 3
    },
    {
      "streamId": "camera-c6577abe8c0f5a02ac84aa94c2247b1e",
      "cameraId": "6",
      "state": null,
      "runId": "91b1dcea-173a-4503-9660-05d29af5c4f6",
      "runGeneration": 2
    },
    {
      "streamId": "camera-7fb92d7386ec5509ba7b7be21db93784",
      "cameraId": "16",
      "state": null,
      "runId": "00ec93bb-f890-4991-a8af-10d63e56fbef",
      "runGeneration": 1
    },
    {
      "streamId": "camera-70ede393d2265e569f1631b79e2b724b",
      "cameraId": "18",
      "state": null,
      "runId": "06f8d72c-9c0a-436b-b6aa-e65d4f080d1d",
      "runGeneration": 4
    },
    {
      "streamId": "camera-38a01d76c5185afc9b9414cb038b4370",
      "cameraId": "19",
      "state": null,
      "runId": "11a1f09d-d825-4410-ac80-05746726a6e6",
      "runGeneration": 4
    },
    {
      "streamId": "camera-c06243dceaed5ddfbc34c28ae6c89ede",
      "cameraId": "8",
      "state": null,
      "runId": "36039644-d7b9-4451-825f-c0f2d044289b",
      "runGeneration": 3
    },
    {
      "streamId": "camera-b756dcb03600525dbacb285c0f1a07e2",
      "cameraId": "9",
      "state": null,
      "runId": "9283ebc3-02c6-44c8-ad2f-f03bda7140b0",
      "runGeneration": 3
    },
    {
      "streamId": "camera-e1e5b788f4295a329f7e63865921a5e5",
      "cameraId": "10",
      "state": null,
      "runId": "bd16ec77-2148-4b47-9646-835fae726d7c",
      "runGeneration": 3
    },
    {
      "streamId": "camera-2342aa206cb653c8976461bcac17bdcc",
      "cameraId": "11",
      "state": null,
      "runId": "aafa1653-1f8a-4fd3-a0b2-e0d06949a162",
      "runGeneration": 3
    }
  ],
  "containers": {
    "analytics": {
      "id": "e71eb6084f96053e3270bc48fd2c13a08e475d904ed2fb28239da369ab262b74",
      "image": "sha256:cfb0e2df1d4ea6c85ee874e231974713fdb6d1bc572724d14ea2410888e59c6b",
      "running": true,
      "health": "healthy"
    },
    "ai-control-sidecar": {
      "id": "a52043f18c54d346d254aee2a08701e8dc7e9b9c5322a759634210dd67c6505f",
      "image": "sha256:9afaf2830398090fa8a7f10fb1349106fda8ae41750f83588589a40db9094820",
      "running": true,
      "health": "healthy"
    },
    "ai-gateway": {
      "id": "67f0ca3efdc477f0bba881eddd88aa1e96f687a891935041589d279e20b6345e",
      "image": "sha256:f9b672d8b5beffd4b705339fdeb4494f73604899eafef23e99f90590761f8239",
      "running": true,
      "health": null
    },
    "redis": {
      "id": "8c73c6134e68d8d14f02e6493d0dd4bc3d6b9a0eaef700edc4efff4a0e1b7802",
      "image": "sha256:8231d3786e10c470840c27963f3d19672dc7ef3e5d5adc512c01d44faada5672",
      "running": true,
      "health": "healthy"
    },
    "postgresql": {
      "id": "2e98ee9ee00b7f333de6cf59ea91577bd5224441b018475765ef240e134462a1",
      "image": "sha256:26ff894de07212639974012ba2be1fc8b1a6dc6a7b18035c35c48fd26092c0a9",
      "running": true,
      "health": "healthy"
    }
  },
  "images": {
    "analytics": "sha256:cfb0e2df1d4ea6c85ee874e231974713fdb6d1bc572724d14ea2410888e59c6b",
    "ai-control-sidecar": "sha256:9afaf2830398090fa8a7f10fb1349106fda8ae41750f83588589a40db9094820",
    "ai-gateway": "sha256:f9b672d8b5beffd4b705339fdeb4494f73604899eafef23e99f90590761f8239",
    "redis": "sha256:8231d3786e10c470840c27963f3d19672dc7ef3e5d5adc512c01d44faada5672",
    "postgresql": "sha256:26ff894de07212639974012ba2be1fc8b1a6dc6a7b18035c35c48fd26092c0a9"
  },
  "free_root": 211775950848,
  "active": {
    "transaction": "fall-r2-fall-r2-20261101-r01",
    "compose": "/workspace/contextra/runtime/state/transactions/fall-r2-fall-r2-20261101-r01/compose.json",
    "physical": "/workspace/contextra/runtime/state/transactions/fall-r2-fall-r2-20261101-r01/compose.physical.json",
    "compose_semantic_sha256": "819c5b753675905c5e886606728b8feea9643fa7f32a345976b620225e134833",
    "profile": "internal",
    "enrolled": true
  },
  "resources": {
    "cpus": 28,
    "loadavg": [
      4.6171875,
      4.49267578125,
      4.3662109375
    ],
    "mem_available_kib": 54799320
  }
}