@hopline/ux4g-react-native 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tokens.generated.ts","../src/theme.ts","../src/ThemeProvider.tsx","../src/actions/Button.tsx","../src/actions/IconButton.tsx","../src/forms/Input.tsx","../src/forms/Textarea.tsx","../src/forms/Select.tsx","../src/forms/Checkbox.tsx","../src/forms/Radio.tsx","../src/forms/Switch.tsx","../src/forms/Search.tsx","../src/forms/DatePicker.tsx","../src/forms/RangeSlider.tsx","../src/forms/ColorPicker.tsx","../src/forms/FileUpload.tsx","../src/display/Card.tsx","../src/display/Badge.tsx","../src/display/Chip.tsx","../src/display/Avatar.tsx","../src/display/Comment.tsx","../src/feedback/Alert.tsx","../src/feedback/Progress.tsx","../src/feedback/Spinner.tsx","../src/feedback/EmptyState.tsx","../src/feedback/FeedbackWidget.tsx","../src/overlay/Modal.tsx","../src/overlay/Tooltip.tsx","../src/overlay/Menu.tsx","../src/overlay/Toast.tsx","../src/overlay/Popover.tsx","../src/data/Table.tsx","../src/data/Accordion.tsx","../src/data/Pagination.tsx","../src/data/List.tsx","../src/data/Chart.tsx","../src/data/IndiaGeo.ts","../src/data/IndiaMap.tsx","../src/navigation/Tabs.tsx","../src/navigation/Breadcrumb.tsx","../src/navigation/Stepper.tsx","../src/navigation/Navbar.tsx","../src/navigation/Footer.tsx","../src/media/Carousel.tsx","../src/accessibility/AccessibilityWidget.tsx"],"names":["createContext","theme","useMemo","jsx","useContext","useState","Pressable","jsxs","Fragment","Text","View","TextInput","HEIGHTS","Svg","Path","RNModal","FlatList","Circle","Rect","TRACK_HEIGHT","THUMB_SIZE","useRef","PanResponder","ScrollView","radius","Image","Line","G","React","useEffect","GAP","Chevron","type","Polygon","renderNode","UX4GMark","useCallback","SvgText"],"mappings":";;;;;;;;;;;;;AAKO,IAAM,IAAA,GAAO;AAAA,EAClB,MAAA,EAAQ;AAAA,IACN,EAAA,EAAI,SAAA;AAAA,IACJ,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,SAAA,EAAW;AAAA,IACT,EAAA,EAAI,SAAA;AAAA,IACJ,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,OAAA,EAAS;AAAA,IACP,EAAA,EAAI,SAAA;AAAA,IACJ,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,EAAA,EAAI,SAAA;AAAA,IACJ,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,OAAA,EAAS;AAAA,IACP,EAAA,EAAI,SAAA;AAAA,IACJ,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,OAAA,EAAS;AAAA,IACP,CAAA,EAAG,SAAA;AAAA,IACH,EAAA,EAAI,SAAA;AAAA,IACJ,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAM;AAAA;AAEV;AAEO,IAAM,KAAA,GAAQ;AAAA,EACnB,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,GAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,KAAA,EAAO,EAAA;AAAA,EACP,IAAA,EAAM;AACR;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,IAAA,EAAM,CAAA;AAAA,EACN,EAAA,EAAI,GAAA;AAAA,EACJ,KAAA,EAAO;AACT;;;AC1FA,IAAM,GAAA,GAAM,SAAA;AACZ,IAAM,EAAA,GAAK,CAAC,CAAA,EAAW,IAAA,EAAc,SAAiB,SAAA,MAAoC;AAAA,EACxF,WAAA,EAAa,GAAA;AAAA,EACb,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,EACpC,aAAA,EAAe,OAAA;AAAA,EACf,cAAc,IAAA,GAAO,CAAA;AAAA;AAAA,EACrB;AACF,CAAA,CAAA;AAEO,IAAM,MAAA,GAAS;AAAA,EACpB,MAAM,EAAE,WAAA,EAAa,aAAA,EAAe,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,IAAK,aAAA,EAAe,CAAA,EAAG,YAAA,EAAc,CAAA,EAAG,WAAW,CAAA,EAAE;AAAA,EAC3H,EAAA,EAAK,EAAA,CAAG,CAAA,EAAG,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,EACrB,CAAA,EAAK,EAAA,CAAG,CAAA,EAAG,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,EACrB,EAAA,EAAK,EAAA,CAAG,CAAA,EAAG,CAAA,EAAG,MAAM,CAAC,CAAA;AAAA,EACrB,CAAA,EAAK,EAAA,CAAG,CAAA,EAAG,EAAA,EAAI,MAAM,CAAC,CAAA;AAAA,EACtB,EAAA,EAAK,EAAA,CAAG,EAAA,EAAI,EAAA,EAAI,MAAM,EAAE,CAAA;AAAA,EACxB,GAAA,EAAK,EAAA,CAAG,EAAA,EAAI,EAAA,EAAI,KAAM,EAAE;AAC1B;AAKO,IAAM,MAAA,GAAS;AAAA,EACpB,UAAU,EAAE,IAAA,EAAM,KAAK,IAAA,EAAM,GAAA,EAAK,MAAM,GAAA,EAAI;AAAA;AAAA;AAAA,EAG5C,MAAA,EAAQ,EAAE,QAAA,EAAU,CAAC,KAAK,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG,YAAY,CAAC,GAAA,EAAK,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAC/D;AASO,IAAM,IAAA,GAAO;AAAA,EAClB,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,UAAA;AAAA;AAAA,IACN,EAAA,EAAI,eAAA;AAAA;AAAA,IACJ,IAAA,EAAM;AAAA;AAAA,GACR;AAAA,EACA,MAAA,EAAQ,EAAE,OAAA,EAAS,KAAA,EAAO,QAAQ,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,IAAA,EAAM,KAAA;AAClE;AAIO,IAAM,IAAA,GAAiC;AAAA,EAC5C,UAAU,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,GAAA,EAAK,eAAe,IAAA,EAAK;AAAA,EAC/D,QAAA,EAAU,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EACzC,QAAA,EAAU,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EACzC,QAAA,EAAU,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EACzC,QAAA,EAAU,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EACzC,SAAA,EAAW,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EAC1C,SAAA,EAAW,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EAC1C,SAAA,EAAW,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EAC1C,SAAA,EAAW,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EAC1C,SAAA,EAAW,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EAC1C,SAAA,EAAW,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EAC1C,MAAA,EAAQ,EAAE,QAAA,EAAU,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,EACvC,QAAQ,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,EAAA,EAAI,eAAe,IAAA,EAAK;AAAA,EAC5D,QAAQ,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,EAAA,EAAI,eAAe,GAAA,EAAI;AAAA,EAC3D,QAAQ,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,EAAA,EAAI,eAAe,GAAA,EAAI;AAAA,EAC3D,QAAQ,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,EAAA,EAAI,eAAe,GAAA,EAAI;AAAA,EAC3D,QAAQ,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,EAAA,EAAI,eAAe,GAAA,EAAI;AAAA,EAC3D,OAAO,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,EAAA,EAAI,eAAe,GAAA,EAAI;AAAA,EAC1D,OAAO,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,EAAA,EAAI,eAAe,IAAA,EAAK;AAAA,EAC3D,OAAO,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,EAAA,EAAI,eAAe,GAAA;AACxD;AAeO,SAAS,SAAA,CAAU,SAAA,GAA4B,EAAC,EAAG;AACxD,EAAA,MAAM,OAAA,GAAU,SAAA,CAAU,OAAA,IAAW,IAAA,CAAK,MAAA;AAC1C,EAAA,MAAM,SAAA,GAAY,SAAA,CAAU,SAAA,IAAa,IAAA,CAAK,SAAA;AAE9C,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,OAAA,EAAS,QAAQ,GAAG,CAAA;AAAA,IACpB,YAAA,EAAc,QAAQ,GAAG,CAAA;AAAA,IACzB,aAAA,EAAe,QAAQ,GAAG,CAAA;AAAA,IAC1B,aAAA,EAAe,QAAQ,EAAE,CAAA;AAAA,IACzB,SAAA,EAAW,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA;AAAA,IAEzB,SAAA,EAAW,UAAU,GAAG,CAAA;AAAA,IACxB,cAAA,EAAgB,UAAU,GAAG,CAAA;AAAA,IAE7B,OAAA,EAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,IACzB,aAAA,EAAe,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA;AAAA,IAC9B,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAAA,IACvB,WAAA,EAAa,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAAA,IAC5B,YAAA,EAAc,IAAA,CAAK,MAAA,CAAO,EAAE,CAAA;AAAA,IAC5B,OAAA,EAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,IACzB,aAAA,EAAe,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA;AAAA,IAC9B,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AAAA,IACnB,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA;AAAA;AAAA,IAGxB,IAAA,EAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,IACtB,SAAA,EAAW,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,IAC3B,UAAA,EAAY,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,IAC5B,WAAA,EAAa,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC3B,QAAA,EAAU,QAAQ,GAAG,CAAA;AAAA;AAAA,IAGrB,OAAA,EAAS,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA;AAAA,IACvB,aAAA,EAAe,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA;AAAA,IAC9B,YAAA,EAAc,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,IAC9B,YAAA,EAAc,UAAU,EAAE,CAAA;AAAA;AAAA,IAG1B,MAAA,EAAQ,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,IACxB,YAAA,EAAc,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,IAC9B,OAAA,EAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA;AAAA;AAAA;AAAA,IAKzB,KAAA,EAAO;AAAA,GACT;AAEA,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA,EAAM,EAAE,GAAG,IAAA,EAAM,QAAQ,EAAE,GAAG,IAAA,CAAK,MAAA,EAAQ,GAAI,SAAA,CAAU,UAAA,IAAc,IAAI,EAAE;AAAA,IAC7E,IAAA;AAAA,IACA,QAAQ,EAAE,YAAA,EAAc,MAAM,MAAA,EAAQ,EAAA,EAAI,SAAS,EAAA,EAAG;AAAA,IACtD,cAAA,EAAgB;AAAA,GAClB;AACF;AAKO,IAAM,QAAQ,SAAA;ACjLrB,IAAM,YAAA,GAAeA,sBAAyB,KAAY,CAAA;AAYnD,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA,EAAAC,MAAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,KAAA,GAAQC,eAAA;AAAA,IACZ,MAAMD,MAAAA,IAAS,SAAA,CAAU,EAAE,OAAA,EAAS,SAAA,EAAW,YAAY,CAAA;AAAA,IAC3D,CAACA,MAAAA,EAAO,OAAA,EAAS,SAAA,EAAW,UAAU;AAAA,GACxC;AACA,EAAA,uBAAOE,cAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,OAAe,QAAA,EAAS,CAAA;AACxD;AAGO,SAAS,YAAA,GAA0B;AACxC,EAAA,OAAOC,mBAAW,YAAY,CAAA;AAChC;ACJO,SAAS,MAAA,CAAO;AAAA,EACrB,QAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,UAAA,GAAa,QAAA;AAAA,EACb,IAAA,GAAO,SAAA;AAAA,EACP,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,IAAA;AAAA,EACX,SAAA,GAAY,IAAA;AAAA,EACZ,KAAA,EAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA,kBAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgB;AACd,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMH,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,IAAIJ,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,IAAA,GAAa;AAAA,IACjB,OAAA,EAAS,EAAE,IAAA,EAAM,CAAA,CAAE,OAAA,EAAS,MAAA,EAAQ,CAAA,CAAE,aAAA,EAAe,IAAA,EAAM,CAAA,CAAE,aAAA,EAAe,EAAA,EAAI,EAAE,SAAA,EAAU;AAAA,IAC5F,SAAS,EAAE,IAAA,EAAM,CAAA,CAAE,OAAA,EAAS,QAAQA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,GAAG,IAAA,EAAM,CAAA,CAAE,aAAA,EAAe,EAAA,EAAI,EAAE,SAAA,EAAU;AAAA,IACpG,QAAQ,EAAE,IAAA,EAAM,CAAA,CAAE,MAAA,EAAQ,QAAQA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,GAAG,GAAG,IAAA,EAAM,CAAA,CAAE,YAAA,EAAc,EAAA,EAAI,EAAE,SAAA;AAAU,IAChG,OAAO,CAAA;AAET,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,OAAO,EAAE,MAAA,EAAQ,IAAI,QAAA,EAAU,EAAA,EAAI,MAAM,EAAA,EAAG;AAAA,IAC5C,SAAS,EAAE,MAAA,EAAQ,IAAI,QAAA,EAAU,EAAA,EAAI,MAAM,EAAA,EAAG;AAAA,IAC9C,OAAO,EAAE,MAAA,EAAQ,IAAI,QAAA,EAAU,EAAA,EAAI,MAAM,EAAA;AAAG,IAC5C,IAAI,CAAA;AAEN,EAAA,MAAM,WAAW,UAAA,KAAe,QAAA;AAEhC,EAAA,uBACEE,cAAAA;AAAA,IAACG,qBAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,iBAAA,EAAkB,QAAA;AAAA,MAClB,kBAAA;AAAA,MACA,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,MAC/B,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,MAC9B,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AACtB,QAAA,MAAM,UAAU,UAAA,KAAe,OAAA;AAC/B,QAAA,IAAI,EAAA,GAAK,aAAA;AACT,QAAA,IAAI,WAAA,GAAc,aAAA;AAElB,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,EAAA,GAAK,OAAA,GAAU,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,IAAA;AAAA,QACpC,WAAW,OAAA,EAAS;AAClB,UAAA,EAAA,GAAK,IAAA,CAAK,IAAA;AAAA,QACZ,CAAA,MAAA,IAAW,eAAe,UAAA,EAAY;AACpC,UAAA,EAAA,GAAK,OAAA,GAAU,KAAK,IAAA,GAAO,aAAA;AAC3B,UAAA,WAAA,GAAc,IAAA,CAAK,IAAA;AAAA,QACrB,CAAA,MAAO;AACL,UAAA,EAAA,GAAK,OAAA,GAAU,KAAK,IAAA,GAAO,aAAA;AAAA,QAC7B;AAEA,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,EAAA,GAAK,QAAA,GAAWL,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,GAAI,aAAA;AAC1C,UAAA,WAAA,GAAc,eAAe,UAAA,GAAaA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,GAAI,aAAA;AAAA,QACtE;AAEA,QAAA,MAAM,IAAA,GAAkB;AAAA,UACtB,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,QAAA;AAAA,UAChB,GAAA,EAAKA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,UAClB,QAAQ,KAAA,CAAM,MAAA;AAAA,UACd,mBAAmB,KAAA,CAAM,QAAA;AAAA,UACzB,SAAA,EAAW,YAAY,SAAA,GAAY,YAAA;AAAA,UACnC,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,UAC3B,WAAA,EAAaA,OAAM,MAAA,CAAO,EAAA;AAAA,UAC1B,WAAA;AAAA,UACA,eAAA,EAAiB;AAAA,SACnB;AAEA,QAAA,MAAM,SAAA,GACJ,OAAA,IAAW,CAAC,QAAA,GACR,EAAE,WAAA,EAAaA,MAAAA,CAAM,KAAA,CAAM,KAAA,EAAO,WAAA,EAAaA,MAAAA,CAAM,cAAA,EAAe,GACpE,IAAA;AAEN,QAAA,OAAO,CAAC,IAAA,EAAM,SAAA,EAAW,KAAK,CAAA;AAAA,MAChC,CAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA,MAAM;AACL,QAAA,IAAI,EAAA,GAAK,QAAA,GAAW,IAAA,CAAK,EAAA,GAAK,IAAA,CAAK,IAAA;AACnC,QAAA,IAAI,QAAA,EAAU,EAAA,GAAK,QAAA,GAAWA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,GAAIA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAE9E,QAAA,uBACEM,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,OAAO,QAAA,KAAa,QAAA,IAAY,OAAO,QAAA,KAAa,2BACnDL,cAAAA;AAAA,YAACM,gBAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,EAAA;AAAA,gBAC9B,UAAA,EAAY,KAAA;AAAA,gBACZ,UAAU,KAAA,CAAM,IAAA;AAAA,gBAChB,UAAA,EAAY,MAAM,IAAA,GAAO,GAAA;AAAA,gBACzB,aAAA,EAAe,IAAA;AAAA,gBACf,KAAA,EAAO;AAAA,eACT;AAAA,cACA,aAAA,EAAe,CAAA;AAAA,cAEd;AAAA;AAAA,WACH,GAEA,QAAA;AAAA,UAED;AAAA,SAAA,EACH,CAAA;AAAA,MAEJ;AAAA;AAAA,GACF;AAEJ;ACjHO,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,UAAA,GAAa,OAAA;AAAA,EACb,IAAA,GAAO,SAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,kBAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,IAAIJ,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,IAAIA,MAAAA,CAAM,IAAA;AAEhB,EAAA,MAAM,IAAA,GAAa;AAAA,IACjB,SAAS,EAAE,IAAA,EAAM,EAAE,OAAA,CAAQ,GAAG,GAAG,EAAA,EAAI,CAAA,CAAE,SAAS,KAAA,EAAO,CAAA,CAAE,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA,EAAE;AAAA,IAC5F,SAAS,EAAE,IAAA,EAAM,EAAE,MAAA,CAAO,GAAG,GAAG,EAAA,EAAI,CAAA,CAAE,SAAS,KAAA,EAAO,CAAA,CAAE,OAAO,GAAG,CAAA,EAAG,MAAM,CAAA,CAAE,MAAA,CAAO,EAAE,CAAA,EAAE;AAAA,IACxF,MAAA,EAAQ,EAAE,IAAA,EAAM,CAAA,CAAE,QAAQ,EAAA,EAAI,CAAA,CAAE,OAAA,EAAS,KAAA,EAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,EAAE,CAAA;AAAE,IAC7E,OAAO,CAAA;AAET,EAAA,MAAM,GAAA,GAAc,EAAE,KAAA,EAAO,EAAA,EAAI,SAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAG,CAAE,IAAI,CAAA;AAE9D,EAAA,uBACEE,cAAAA;AAAA,IAACG,qBAAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,iBAAA,EAAkB,QAAA;AAAA,MAClB,kBAAA;AAAA,MACA,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,MAC/B,OAAA,EAAS,GAAA,GAAM,EAAA,GAAA,CAAM,EAAA,GAAK,OAAO,CAAA,GAAI,MAAA;AAAA,MACrC,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,MAC9B,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AACtB,QAAA,IAAI,EAAA,GAAK,aAAA;AACT,QAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,UAAA,EAAA,GAAK,IAAA,CAAK,IAAA;AAAA,QACZ,CAAA,MAAA,IAAW,eAAe,QAAA,EAAU;AAClC,UAAA,EAAA,GAAK,IAAA,CAAK,KAAA;AAAA,QACZ,CAAA,MAAA,IAAW,OAAA,IAAW,CAAC,QAAA,EAAU;AAE/B,UAAA,EAAA,GAAK,IAAA,CAAK,IAAA;AAAA,QACZ;AAEA,QAAA,MAAM,IAAA,GAAkB;AAAA,UACtB,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,QAAA;AAAA,UAChB,KAAA,EAAO,GAAA;AAAA,UACP,MAAA,EAAQ,GAAA;AAAA,UACR,QAAA,EAAU,CAAA;AAAA,UACV,UAAA,EAAY,CAAA;AAAA,UACZ,OAAA,EAAS,CAAA;AAAA,UACT,YAAA,EAAcL,OAAM,MAAA,CAAO,EAAA;AAAA,UAC3B,WAAA,EAAaA,OAAM,MAAA,CAAO,IAAA;AAAA,UAC1B,WAAA,EAAa,aAAA;AAAA,UACb,eAAA,EAAiB,EAAA;AAAA,UACjB,OAAA,EAAS,WAAW,IAAA,GAAO;AAAA,SAC7B;AAEA,QAAA,MAAM,SAAA,GACJ,OAAA,IAAW,CAAC,QAAA,GACR,EAAE,WAAA,EAAaA,MAAAA,CAAM,KAAA,CAAM,KAAA,EAAO,WAAA,EAAaA,MAAAA,CAAM,cAAA,EAAe,GACpE,IAAA;AAEN,QAAA,OAAO,CAAC,IAAA,EAAM,SAAA,EAAW,KAAK,CAAA;AAAA,MAChC,CAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AC5EA,IAAM,UAAU,EAAE,KAAA,EAAO,IAAI,OAAA,EAAS,EAAA,EAAI,OAAO,EAAA,EAAG;AAE7C,SAAS,KAAA,CAAM;AAAA,EACpB,KAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,KAAA,GAAQ,SAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,IAAA;AAAA,EACX,SAAA,GAAY,IAAA;AAAA,EACZ,KAAA,EAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAe;AACb,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,MAAA,GAAS,QAAQ,IAAI,CAAA;AAC3B,EAAA,MAAM,WAAA,GACJ,UAAU,SAAA,GAAY,CAAA,CAAE,UAAU,KAAA,KAAU,OAAA,GAAU,CAAA,CAAE,MAAA,GAAS,CAAA,CAAE,SAAA;AACrE,EAAA,MAAM,WAAA,GACJ,KAAA,KAAU,OAAA,GACN,CAAA,CAAE,MAAA,GACF,KAAA,KAAU,SAAA,GACR,CAAA,CAAE,OAAA,GACF,OAAA,GACE,CAAA,CAAE,OAAA,GACF,CAAA,CAAE,MAAA;AAEZ,EAAA,uBACEE,eAAAA,CAACG,gBAAA,EAAA,EAAK,KAAA,EAAO,CAAC,EAAE,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA,EAAE,EAAG,cAAc,CAAA,EACtD,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,wBACRM,eAAAA;AAAA,MAACE,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,UAC9B,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAe,GAAA;AAAA,UACf,OAAO,CAAA,CAAE;AAAA,SACX;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA,QAAA,mBAAWE,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,EAAI,QAAA,EAAA,IAAA,EAAK,CAAA,GAAU;AAAA;AAAA;AAAA,KAChE;AAAA,oBAEFF,gBAACG,gBAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,cAAA,EAAgB,QAAA,EAAS,EAC3D,QAAA,EAAA;AAAA,MAAA,QAAA,IAAY,IAAA,oBACXP,cAAAA,CAACO,gBAAA,EAAA,EAAK,OAAO,EAAE,QAAA,EAAU,UAAA,EAAY,IAAA,EAAM,IAAI,MAAA,EAAQ,CAAA,EAAE,EAAG,aAAA,EAAc,QACvE,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,sBAEFP,cAAAA;AAAA,QAACQ,qBAAA;AAAA,QAAA;AAAA,UACC,oBAAoB,kBAAA,IAAsB,KAAA;AAAA,UAC1C,UAAU,CAAC,QAAA;AAAA,UACX,sBAAsB,CAAA,CAAE,UAAA;AAAA,UACxB,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,YAAA,UAAA,CAAW,IAAI,CAAA;AACf,YAAA,OAAA,GAAU,CAAC,CAAA;AAAA,UACb,CAAA;AAAA,UACA,MAAA,EAAQ,CAAC,CAAA,KAAM;AACb,YAAA,UAAA,CAAW,KAAK,CAAA;AAChB,YAAA,MAAA,GAAS,CAAC,CAAA;AAAA,UACZ,CAAA;AAAA,UACA,KAAA,EAAO;AAAA,YACL;AAAA,cACE,MAAA;AAAA,cACA,WAAA,EAAa,WAAW,EAAA,GAAK,EAAA;AAAA,cAC7B,YAAA,EAAc,YAAY,EAAA,GAAK,EAAA;AAAA,cAC/B,UAAA,EAAYV,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,cAC9B,QAAA,EAAU,EAAA;AAAA,cACV,OAAO,CAAA,CAAE,IAAA;AAAA,cACT,iBAAiB,QAAA,GAAWA,MAAAA,CAAM,KAAK,OAAA,CAAQ,GAAG,IAAI,CAAA,CAAE,OAAA;AAAA,cACxD,WAAA,EAAaA,OAAM,MAAA,CAAO,EAAA;AAAA,cAC1B,WAAA;AAAA,cACA,YAAA,EAAcA,OAAM,MAAA,CAAO;AAAA,aAC7B;AAAA,YACA;AAAA,WACF;AAAA,UACC,GAAG;AAAA;AAAA,OACN;AAAA,MACC,aAAa,IAAA,oBACZE,cAAAA,CAACO,gBAAA,EAAA,EAAK,OAAO,EAAE,QAAA,EAAU,UAAA,EAAY,KAAA,EAAO,IAAI,MAAA,EAAQ,CAAA,EAAE,EAAG,aAAA,EAAc,QACxE,QAAA,EAAA,SAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,IACC,UAAA,IAAc,wBACbP,cAAAA;AAAA,MAACM,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,UAC9B,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,EAAA;AAAA,UACZ,aAAA,EAAe,GAAA;AAAA,UACf,KAAA,EAAO;AAAA,SACT;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EAEJ,CAAA;AAEJ;AC7GA,IAAM,WAAA,GAAc,EAAA;AACpB,IAAM,OAAA,GAAU,EAAA;AAET,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,SAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,WAAA,GACJ,UAAU,SAAA,GAAY,CAAA,CAAE,UAAU,KAAA,KAAU,OAAA,GAAU,CAAA,CAAE,MAAA,GAAS,CAAA,CAAE,SAAA;AACrE,EAAA,MAAM,WAAA,GACJ,KAAA,KAAU,OAAA,GACN,CAAA,CAAE,MAAA,GACF,KAAA,KAAU,SAAA,GACR,CAAA,CAAE,OAAA,GACF,OAAA,GACE,CAAA,CAAE,OAAA,GACF,CAAA,CAAE,MAAA;AAEZ,EAAA,uBACEE,eAAAA,CAACG,gBAAAA,EAAA,EAAK,OAAO,CAAC,EAAE,GAAA,EAAKT,MAAAA,CAAM,MAAM,CAAC,CAAA,GAAI,CAAA,EAAE,EAAG,cAAc,CAAA,EACtD,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,wBACRM,eAAAA;AAAA,MAACE,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,UAC9B,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAe,GAAA;AAAA,UACf,OAAO,CAAA,CAAE;AAAA,SACX;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA,QAAA,mBAAWE,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,EAAI,QAAA,EAAA,IAAA,EAAK,CAAA,GAAU;AAAA;AAAA;AAAA,KAChE;AAAA,oBAEFN,cAAAA;AAAA,MAACQ,qBAAAA;AAAA,MAAA;AAAA,QACC,oBAAoB,kBAAA,IAAsB,KAAA;AAAA,QAC1C,UAAU,CAAC,QAAA;AAAA,QACX,SAAA,EAAS,IAAA;AAAA,QACT,iBAAA,EAAkB,KAAA;AAAA,QAClB,sBAAsB,CAAA,CAAE,UAAA;AAAA,QACxB,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,UAAA,UAAA,CAAW,IAAI,CAAA;AACf,UAAA,OAAA,GAAU,CAAC,CAAA;AAAA,QACb,CAAA;AAAA,QACA,MAAA,EAAQ,CAAC,CAAA,KAAM;AACb,UAAA,UAAA,CAAW,KAAK,CAAA;AAChB,UAAA,MAAA,GAAS,CAAC,CAAA;AAAA,QACZ,CAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,MAAA;AAAA,YACP,SAAA,EAAW,IAAA,GAAO,WAAA,GAAc,OAAA,GAAU,CAAA;AAAA,YAC1C,OAAA,EAAS,OAAA;AAAA,YACT,UAAA,EAAYV,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,YAC9B,QAAA,EAAU,EAAA;AAAA,YACV,UAAA,EAAY,WAAA;AAAA,YACZ,OAAO,CAAA,CAAE,IAAA;AAAA,YACT,iBAAiB,QAAA,GAAWA,MAAAA,CAAM,KAAK,OAAA,CAAQ,GAAG,IAAI,CAAA,CAAE,OAAA;AAAA,YACxD,WAAA,EAAaA,OAAM,MAAA,CAAO,EAAA;AAAA,YAC1B,WAAA;AAAA,YACA,YAAA,EAAcA,OAAM,MAAA,CAAO;AAAA,WAC7B;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IACC,UAAA,IAAc,wBACbE,cAAAA;AAAA,MAACM,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,UAC9B,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,EAAA;AAAA,UACZ,aAAA,EAAe,GAAA;AAAA,UACf,KAAA,EAAO;AAAA,SACT;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EAEJ,CAAA;AAEJ;ACjFA,IAAMW,WAAU,EAAE,KAAA,EAAO,IAAI,OAAA,EAAS,EAAA,EAAI,OAAO,EAAA,EAAG;AAEpD,SAAS,UAAU,CAAA,EAAwC;AACzD,EAAA,OAAO,OAAO,MAAM,QAAA,GAAW,EAAE,OAAO,CAAA,EAAG,KAAA,EAAO,GAAE,GAAI,CAAA;AAC1D;AAEO,SAAS,MAAA,CAAO;AAAA,EACrB,KAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAU,EAAC;AAAA,EACX,KAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,KAAA,GAAQ,SAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMX,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAII,gBAAAA,CAAiB,gBAAgB,EAAE,CAAA;AACnE,EAAA,MAAM,OAAA,GAAU,eAAe,KAAA,GAAQ,QAAA;AAEvC,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAItC,EAAA,MAAM,KAAA,GAAQH,gBAAQ,MAAM,OAAA,CAAQ,IAAI,SAAS,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAC7D,EAAA,MAAM,QAAA,GAAWA,eAAAA;AAAA,IACf,MAAM,MAAM,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,KAAA,KAAU,OAAO,CAAA,IAAK,IAAA;AAAA,IAChD,CAAC,OAAO,OAAO;AAAA,GACjB;AACA,EAAA,MAAM,YAAA,GAAe,QAAA,GAAW,QAAA,CAAS,KAAA,GAAQ,WAAA,IAAe,EAAA;AAChE,EAAA,MAAM,WAAW,QAAA,IAAY,IAAA;AAE7B,EAAA,MAAM,MAAA,GAASU,SAAQ,IAAI,CAAA;AAC3B,EAAA,MAAM,WAAA,GACJ,UAAU,SAAA,GAAY,CAAA,CAAE,UAAU,KAAA,KAAU,OAAA,GAAU,CAAA,CAAE,MAAA,GAAS,CAAA,CAAE,SAAA;AACrE,EAAA,MAAM,WAAA,GACJ,UAAU,OAAA,GAAU,CAAA,CAAE,SAAS,KAAA,KAAU,SAAA,GAAY,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,MAAA;AAErE,EAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAiB;AAC/B,IAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,IAAI,CAAA;AACnC,IAAA,QAAA,GAAW,IAAI,CAAA;AACf,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,gBAAA,GAA8B;AAAA,IAClC,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAYX,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO,QAAA,GAAW,CAAA,CAAE,IAAA,GAAO,CAAA,CAAE;AAAA,GAC/B;AAEA,EAAA,uBACEM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,OAAO,CAAC,EAAE,GAAA,EAAKT,MAAAA,CAAM,MAAM,CAAC,CAAA,GAAI,CAAA,EAAE,EAAG,cAAc,CAAA,EACtD,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,wBACRM,eAAAA;AAAA,MAACE,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,UAC9B,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAe,GAAA;AAAA,UACf,OAAO,CAAA,CAAE;AAAA,SACX;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA,QAAA,mBAAWE,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,EAAI,QAAA,EAAA,IAAA,EAAK,CAAA,GAAU;AAAA;AAAA;AAAA,KAChE;AAAA,oBAGFF,eAAAA;AAAA,MAACD,qBAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,QAAA;AAAA,QAClB,oBAAoB,KAAA,IAAS,WAAA;AAAA,QAC7B,kBAAA,EAAoB,EAAE,QAAA,EAAU,QAAA,EAAU,IAAA,EAAK;AAAA,QAC/C,QAAA;AAAA,QACA,OAAA,EAAS,QAAA;AAAA,QACT,KAAA,EAAO;AAAA,UACL;AAAA,YACE,aAAA,EAAe,KAAA;AAAA,YACf,UAAA,EAAY,QAAA;AAAA,YACZ,MAAA;AAAA,YACA,iBAAA,EAAmB,EAAA;AAAA,YACnB,iBAAiB,QAAA,GAAWL,MAAAA,CAAM,KAAK,OAAA,CAAQ,GAAG,IAAI,CAAA,CAAE,OAAA;AAAA,YACxD,WAAA,EAAaA,OAAM,MAAA,CAAO,EAAA;AAAA,YAC1B,WAAA;AAAA,YACA,YAAA,EAAcA,OAAM,MAAA,CAAO;AAAA,WAC7B;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAE,eAACM,gBAAAA,EAAA,EAAK,OAAO,gBAAA,EAAkB,aAAA,EAAe,GAC3C,QAAA,EAAA,YAAA,EACH,CAAA;AAAA,0BACAN,eAACO,gBAAAA,EAAA,EAAK,eAAc,MAAA,EAAO,KAAA,EAAO,EAAE,UAAA,EAAY,CAAA,EAAE,EAChD,0BAAAP,cAAAA,CAACU,sBAAA,EAAA,EAAI,OAAO,EAAA,EAAI,MAAA,EAAQ,IAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,kBAAAV,cAAAA;AAAA,YAACW,UAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,cAAA;AAAA,cACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,cAC9B,WAAA,EAAa,CAAA;AAAA,cACb,aAAA,EAAc,OAAA;AAAA,cACd,cAAA,EAAe;AAAA;AAAA,aAEnB,CAAA,EACF;AAAA;AAAA;AAAA,KACF;AAAA,IAEC,UAAA,IAAc,wBACbE,cAAAA;AAAA,MAACM,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,UAC9B,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,EAAA;AAAA,UACZ,aAAA,EAAe,GAAA;AAAA,UACf,KAAA,EAAO;AAAA,SACT;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBAGFE,cAAAA;AAAA,MAACY,iBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,IAAA;AAAA,QACT,WAAA,EAAW,IAAA;AAAA,QACX,aAAA,EAAc,MAAA;AAAA,QACd,cAAA,EAAgB,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,QAEnC,QAAA,kBAAAZ,cAAAA;AAAA,UAACG,qBAAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,YAC5B,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,QAAA;AAAA,cAChB,OAAA,EAASL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cACtB,eAAA,EAAiB;AAAA,aACnB;AAAA,YAEA,QAAA,kBAAAE,cAAAA;AAAA,cAACO,gBAAAA;AAAA,cAAA;AAAA,gBACC,wBAAA,EAAwB,IAAA;AAAA,gBACxB,2BAA2B,MAAM,IAAA;AAAA,gBACjC,KAAA,EAAO;AAAA,kBACL;AAAA,oBACE,KAAA,EAAO,MAAA;AAAA,oBACP,QAAA,EAAU,GAAA;AAAA,oBACV,iBAAiB,CAAA,CAAE,OAAA;AAAA,oBACnB,YAAA,EAAcT,OAAM,MAAA,CAAO,EAAA;AAAA,oBAC3B,eAAA,EAAiBA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,mBAChC;AAAA,kBACAA,OAAM,MAAA,CAAO;AAAA,iBACf;AAAA,gBAIA,QAAA,kBAAAE,cAAAA;AAAA,kBAACa,oBAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAM,KAAA;AAAA,oBACN,YAAA,EAAc,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA;AAAA,oBACvB,KAAA,EAAO,EAAE,SAAA,EAAW,GAAA,EAAI;AAAA,oBACxB,yBAAA,EAA0B,SAAA;AAAA,oBAC1B,UAAA,EAAY,CAAC,EAAE,IAAA,EAAM,GAAE,KAAM;AAC3B,sBAAA,MAAM,KAAA,GAAQ,EAAE,KAAA,KAAU,OAAA;AAC1B,sBAAA,uBACET,eAAAA;AAAA,wBAACD,qBAAAA;AAAA,wBAAA;AAAA,0BACC,iBAAA,EAAkB,QAAA;AAAA,0BAClB,kBAAA,EAAoB,EAAE,QAAA,EAAU,KAAA,EAAM;AAAA,0BACtC,OAAA,EAAS,MAAM,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA;AAAA,0BAC7B,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,MAAO;AAAA,4BACvB,aAAA,EAAe,KAAA;AAAA,4BACf,UAAA,EAAY,QAAA;AAAA,4BACZ,SAAA,EAAW,EAAA;AAAA,4BACX,iBAAA,EAAmBL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,4BAChC,eAAA,EAAiBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,4BAClC,eAAA,EAAiB,QACb,CAAA,CAAE,aAAA,GACF,UACEA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,GACtB;AAAA,2BACR,CAAA;AAAA,0BAEA,QAAA,EAAA;AAAA,4CAAAE,cAAAA;AAAA,8BAACM,gBAAAA;AAAA,8BAAA;AAAA,gCACC,KAAA,EAAO;AAAA,kCACL,IAAA,EAAM,CAAA;AAAA,kCACN,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,kCAC9B,QAAA,EAAU,EAAA;AAAA,kCACV,KAAA,EAAO,KAAA,GAAQ,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,IAAA;AAAA,kCAC7B,UAAA,EAAY,QAAQ,KAAA,GAAQ;AAAA,iCAC9B;AAAA,gCACA,aAAA,EAAe,CAAA;AAAA,gCAEd,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA,6BACL;AAAA,4BACC,KAAA,oBACCE,cAAAA,CAACU,sBAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,kBAAAV,cAAAA;AAAA,8BAACW,UAAA;AAAA,8BAAA;AAAA,gCACC,CAAA,EAAE,iBAAA;AAAA,gCACF,QAAQ,CAAA,CAAE,OAAA;AAAA,gCACV,WAAA,EAAa,CAAA;AAAA,gCACb,aAAA,EAAc,OAAA;AAAA,gCACd,cAAA,EAAe;AAAA;AAAA,6BACjB,EACF;AAAA;AAAA;AAAA,uBAEJ;AAAA,oBAEJ;AAAA;AAAA;AACF;AAAA;AACF;AAAA;AACF;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;ACxPO,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA,GAAiB,KAAA;AAAA,EACjB,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,aAAA,GAAgB,KAAA;AAAA,EAChB,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMb,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAII,iBAAS,cAAc,CAAA;AACvD,EAAA,MAAM,KAAA,GAAQ,eAAe,OAAA,GAAU,QAAA;AACvC,EAAA,MAAM,KAAK,KAAA,IAAS,aAAA;AAEpB,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,MAAM,OAAO,CAAC,KAAA;AACd,IAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,IAAI,CAAA;AACnC,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,uBACEE,eAAAA;AAAA,IAACD,qBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,UAAA;AAAA,MAClB,oBAAoB,EAAE,OAAA,EAAS,aAAA,GAAgB,OAAA,GAAU,OAAO,QAAA,EAAS;AAAA,MACzE,QAAA;AAAA,MACA,OAAA,EAAS,MAAA;AAAA,MACT,KAAA,EAAO;AAAA,QACL;AAAA,UACE,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,GAAA,EAAKL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,UACtB,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,SAC5B;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAE,cAAAA;AAAA,UAACO,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,EAAA;AAAA,cACP,MAAA,EAAQ,EAAA;AAAA,cACR,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,QAAA;AAAA,cAChB,YAAA,EAAcT,OAAM,MAAA,CAAO,EAAA;AAAA,cAC3B,WAAA,EAAaA,OAAM,MAAA,CAAO,EAAA;AAAA,cAC1B,aAAa,EAAA,GAAK,CAAA,CAAE,UAAUA,MAAAA,CAAM,IAAA,CAAK,QAAQ,GAAG,CAAA;AAAA,cACpD,eAAA,EAAiB,EAAA,GAAK,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE;AAAA,aACtC;AAAA,YAEC,QAAA,EAAA,EAAA,oBACCE,cAAAA,CAACU,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,QACnD,QAAA,kBAAAV,cAAAA;AAAA,cAACW,UAAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAG,gBAAgB,UAAA,GAAa,iBAAA;AAAA,gBAChC,QAAQ,CAAA,CAAE,SAAA;AAAA,gBACV,WAAA,EAAa,CAAA;AAAA,gBACb,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe;AAAA;AAAA,aACjB,EACF;AAAA;AAAA,SAEJ;AAAA,QACC,KAAA,IAAS,IAAA,KACP,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,mBAC7CX,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA,EAAM,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,CAAA,CAAE,IAAA,EAAK,EAC5E,QAAA,EAAA,KAAA,EACH,CAAA,GAEA,KAAA;AAAA;AAAA;AAAA,GAEN;AAEJ;ACvEO,SAAS,KAAA,CAAM;AAAA,EACpB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA,GAAiB,KAAA;AAAA,EACjB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAe;AACb,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,iBAAS,cAAc,CAAA;AACvD,EAAA,MAAM,EAAA,GAAK,eAAe,OAAA,GAAU,QAAA;AAEpC,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,IAAI,CAAA;AACnC,IAAA,QAAA,GAAW,OAAO,IAAI,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,uBACEE,eAAAA;AAAA,IAACD,qBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,OAAA;AAAA,MAClB,kBAAA,EACE,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,GAAW,MAAA,CAAO,KAAK,CAAA,GAAI,MAAA;AAAA,MAE3E,kBAAA,EAAoB,EAAE,OAAA,EAAS,EAAA,EAAI,QAAA,EAAS;AAAA,MAC5C,QAAA;AAAA,MACA,OAAA,EAAS,MAAA;AAAA,MACT,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,MAC9B,KAAA,EAAO;AAAA,QACL;AAAA,UACE,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,GAAA,EAAKL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,UACtB,SAAA,EAAW,EAAA;AAAA,UACX,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,SAC5B;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAE,cAAAA;AAAA,UAACO,gBAAAA;AAAA,UAAA;AAAA,YACC,2BAAA,EAA2B,IAAA;AAAA,YAC3B,yBAAA,EAA0B,qBAAA;AAAA,YAC1B,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,EAAA;AAAA,cACP,MAAA,EAAQ,EAAA;AAAA,cACR,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,QAAA;AAAA,cAChB,YAAA,EAAcT,OAAM,MAAA,CAAO,IAAA;AAAA,cAC3B,aAAa,OAAA,IAAW,CAAC,WAAWA,MAAAA,CAAM,cAAA,GAAiBA,OAAM,MAAA,CAAO,EAAA;AAAA,cACxE,WAAA,EAAa,OAAA,IAAW,CAAC,QAAA,GACrB,CAAA,CAAE,KAAA,GACF,EAAA,GACE,CAAA,CAAE,OAAA,GACFA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG;AAAA,aAC9B;AAAA,YAEC,gCACCE,cAAAA;AAAA,cAACO,gBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,KAAA,EAAO,EAAA;AAAA,kBACP,MAAA,EAAQ,EAAA;AAAA,kBACR,YAAA,EAAcT,OAAM,MAAA,CAAO,IAAA;AAAA,kBAC3B,iBAAiB,CAAA,CAAE;AAAA;AACrB;AAAA;AACF;AAAA,SAEJ;AAAA,QACC,KAAA,IAAS,IAAA,KACP,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,mBAC7CE,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA,EAAM,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,CAAA,CAAE,IAAA,EAAK,EAC5E,QAAA,EAAA,KAAA,EACH,CAAA,GAEA,KAAA;AAAA;AAAA;AAAA,GAEN;AAEJ;ACzFA,IAAM,WAAA,GAAc,EAAA;AACpB,IAAM,YAAA,GAAe,EAAA;AACrB,IAAM,aAAA,GAAgB,CAAA;AACtB,IAAM,UAAA,GAAa,EAAA;AACnB,IAAM,YAAA,GAAe,WAAA,GAAc,UAAA,GAAa,aAAA,GAAgB,CAAA;AAGzD,SAAS,MAAA,CAAO;AAAA,EACrB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA,GAAiB,KAAA;AAAA,EACjB,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAII,iBAAS,cAAc,CAAA;AACvD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,IAAA,GAAO,eAAe,OAAA,GAAU,QAAA;AAEtC,EAAA,MAAM,kBAAA,GACJ,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,GAAW,MAAA,CAAO,KAAK,CAAA,GAAI,MAAA;AAE3E,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,MAAM,OAAO,CAAC,IAAA;AACd,IAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,IAAI,CAAA;AACnC,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,uBACEE,eAAAA;AAAA,IAACD,qBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,QAAA;AAAA,MAClB,kBAAA;AAAA,MACA,kBAAA,EAAoB,EAAE,OAAA,EAAS,IAAA,EAAM,QAAA,EAAS;AAAA,MAC9C,QAAA;AAAA,MACA,OAAA,EAAS,MAAA;AAAA,MACT,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,MAC9B,KAAA,EAAO;AAAA,QACL;AAAA,UACE,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,SAAA,EAAW,EAAA;AAAA,UACX,GAAA,EAAKL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,UACtB,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,SAC5B;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAE,cAAAA;AAAA,UAACO,gBAAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAO,iBAAA;AAAA,YACP,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,WAAA;AAAA,cACP,MAAA,EAAQ,YAAA;AAAA,cACR,YAAA,EAAcT,OAAM,MAAA,CAAO,IAAA;AAAA,cAC3B,OAAA,EAAS,aAAA;AAAA,cACT,cAAA,EAAgB,QAAA;AAAA,cAChB,iBAAiB,IAAA,GAAO,CAAA,CAAE,UAAUA,MAAAA,CAAM,IAAA,CAAK,QAAQ,GAAG,CAAA;AAAA,cAC1D,WAAA,EAAa,OAAA,IAAW,CAAC,QAAA,GAAWA,OAAM,cAAA,GAAiB,CAAA;AAAA,cAC3D,WAAA,EAAa,OAAA,IAAW,CAAC,QAAA,GAAW,EAAE,KAAA,GAAQ;AAAA,aAChD;AAAA,YAEA,QAAA,kBAAAE,cAAAA;AAAA,cAACO,gBAAAA;AAAA,cAAA;AAAA,gBACC,MAAA,EAAO,iBAAA;AAAA,gBACP,KAAA,EAAO;AAAA,kBACL,KAAA,EAAO,UAAA;AAAA,kBACP,MAAA,EAAQ,UAAA;AAAA,kBACR,YAAA,EAAcT,OAAM,MAAA,CAAO,IAAA;AAAA,kBAC3B,eAAA,EAAiBA,OAAM,KAAA,CAAM,OAAA;AAAA,kBAC7B,WAAW,CAAC,EAAE,YAAY,IAAA,GAAO,YAAA,GAAe,GAAG,CAAA;AAAA,kBACnD,GAAGA,OAAM,MAAA,CAAO;AAAA;AAClB;AAAA;AACF;AAAA,SACF;AAAA,QACC,KAAA,IAAS,IAAA,KACP,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,mBAC7CE,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA,EAAM,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,CAAA,CAAE,IAAA,EAAK,EAC5E,QAAA,EAAA,KAAA,EACH,CAAA,GAEA,KAAA;AAAA;AAAA;AAAA,GAEN;AAEJ;AC5EA,IAAMW,QAAAA,GAAU,EAAE,OAAA,EAAS,EAAA,EAAI,OAAO,EAAA,EAAG;AAElC,SAAS,MAAA,CAAO;AAAA,EACrB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,IAAA,GAAO,SAAA;AAAA,EACP,KAAA,EAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMX,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAII,iBAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAA,GAAI,eAAe,KAAA,GAAQ,QAAA;AAEjC,EAAA,MAAM,GAAA,GAAM,CAAC,IAAA,KAAiB;AAC5B,IAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,IAAI,CAAA;AACnC,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,MAAA,GAASO,SAAQ,IAAI,CAAA;AAE3B,EAAA,MAAM,YAAA,GAAe,CACnB,EAAA,KACG;AACH,IAAA,QAAA,GAAW,CAAC,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,uBACEL,eAAAA;AAAA,IAACG,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAC,EAAE,QAAA,EAAU,YAAY,cAAA,EAAgB,QAAA,IAAY,cAAc,CAAA;AAAA,MAE1E,QAAA,EAAA;AAAA,wBAAAP,cAAAA;AAAA,UAACO,gBAAAA;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,QAAA,EAAU,YAAY,IAAA,EAAM,EAAA,EAAI,QAAQ,CAAA,EAAE;AAAA,YACnD,aAAA,EAAc,MAAA;AAAA,YAEd,QAAA,kBAAAH,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,8BAAAV,cAAAA;AAAA,gBAACW,UAAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EAAE,kBAAA;AAAA,kBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,kBAC9B,WAAA,EAAa,CAAA;AAAA,kBACb,aAAA,EAAc,OAAA;AAAA,kBACd,cAAA,EAAe;AAAA;AAAA,eACjB;AAAA,8BACAE,cAAAA;AAAA,gBAACc,YAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAI,EAAA;AAAA,kBACJ,EAAA,EAAI,EAAA;AAAA,kBACJ,CAAA,EAAG,CAAA;AAAA,kBACH,MAAA,EAAQhB,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,kBAC9B,WAAA,EAAa;AAAA;AAAA;AACf,aAAA,EACF;AAAA;AAAA,SACF;AAAA,wBAEAE,cAAAA;AAAA,UAACQ,qBAAAA;AAAA,UAAA;AAAA,YACC,iBAAA,EAAkB,QAAA;AAAA,YAClB,KAAA,EAAO,CAAA;AAAA,YACP,WAAA;AAAA,YACA,sBAAsB,CAAA,CAAE,UAAA;AAAA,YACxB,YAAA,EAAc,GAAA;AAAA,YACd,eAAA,EAAiB,YAAA;AAAA,YACjB,aAAA,EAAc,QAAA;AAAA,YACd,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,YAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,YAC9B,KAAA,EAAO;AAAA,cACL;AAAA,gBACE,KAAA,EAAO,MAAA;AAAA,gBACP,MAAA;AAAA,gBACA,WAAA,EAAa,EAAA;AAAA,gBACb,YAAA,EAAc,IAAI,EAAA,GAAK,EAAA;AAAA,gBACvB,UAAA,EAAYV,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,gBAC9B,QAAA,EAAU,EAAA;AAAA,gBACV,OAAO,CAAA,CAAE,IAAA;AAAA,gBACT,iBAAiB,CAAA,CAAE,OAAA;AAAA,gBACnB,WAAA,EAAa,OAAA,GAAUA,MAAAA,CAAM,cAAA,GAAiBA,OAAM,MAAA,CAAO,EAAA;AAAA,gBAC3D,WAAA,EAAa,OAAA,GAAU,CAAA,CAAE,KAAA,GAAQ,CAAA,CAAE,MAAA;AAAA,gBACnC,YAAA,EAAcA,OAAM,MAAA,CAAO;AAAA,eAC7B;AAAA,cACA;AAAA;AACF;AAAA,SACF;AAAA,QAEC,oBACCE,cAAAA;AAAA,UAACG,qBAAAA;AAAA,UAAA;AAAA,YACC,iBAAA,EAAkB,QAAA;AAAA,YAClB,kBAAA,EAAmB,OAAA;AAAA,YACnB,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,CAAA;AAAA,YACrB,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,UAAA;AAAA,cACV,KAAA,EAAO,EAAA;AAAA,cACP,KAAA,EAAO,EAAA;AAAA,cACP,MAAA,EAAQ,EAAA;AAAA,cACR,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,QAAA;AAAA,cAChB,YAAA,EAAcL,OAAM,MAAA,CAAO,IAAA;AAAA,cAC3B,eAAA,EAAiBA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG;AAAA,aACzC;AAAA,YACA,OAAA,EAAS,EAAA;AAAA,YAET,QAAA,kBAAAM,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,8BAAAV,cAAAA;AAAA,gBAACW,UAAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EAAE,YAAA;AAAA,kBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,kBAC9B,WAAA,EAAa,GAAA;AAAA,kBACb,aAAA,EAAc,OAAA;AAAA,kBACd,cAAA,EAAe;AAAA;AAAA,eACjB;AAAA,8BACAE,cAAAA;AAAA,gBAACW,UAAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EAAE,YAAA;AAAA,kBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,kBAC9B,WAAA,EAAa,GAAA;AAAA,kBACb,aAAA,EAAc,OAAA;AAAA,kBACd,cAAA,EAAe;AAAA;AAAA;AACjB,aAAA,EACF;AAAA;AAAA,SACF,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;AC9HA,IAAM,MAAA,GAAS;AAAA,EACb,SAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA;AACA,IAAM,GAAA,GAAM,CAAC,GAAA,EAAK,GAAA,EAAK,KAAK,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG,CAAA;AAE9C,IAAM,IAAA,GAAO,CAAC,CAAA,KAAsB,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAC7D,IAAM,QAAQ,CAAC,CAAA,KACb,GAAG,CAAA,CAAE,WAAA,EAAa,CAAA,CAAA,EAAI,IAAA,CAAK,EAAE,QAAA,EAAS,GAAI,CAAC,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,OAAA,EAAS,CAAC,CAAA,CAAA;AAGnE,IAAM,UAAA,GAAa,CAAC,CAAA,KAAsB;AACxC,EAAA,MAAM,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,GAAI,EAAE,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACzC,EAAA,OAAO,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,IAAI,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,IAAI,CAAC,CAAA,CAAA;AACrD,CAAA;AAGA,IAAM,WAAA,GAAc,CAAC,CAAA,EAAW,CAAA,EAAW,MACzC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,CAAC,CAAC,IAAI,CAAC,CAAA,CAAA;AAE9B,IAAM,SAAA,GAAY,CAAC,KAAA,KAAoC;AACrD,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,MAAM,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,GAAI,MAAM,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAC7C,IAAA,IACE,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,IACjB,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,IACjB,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,EACjB;AACA,MAAA,OAAO,IAAI,IAAA,CAAK,CAAA,EAAG,CAAA,GAAI,GAAG,CAAC,CAAA;AAAA,IAC7B;AAAA,EACF;AACA,EAAA,2BAAW,IAAA,EAAK;AAClB,CAAA;AAEO,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,eAAA;AAAA,EACd,GAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAII,iBAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,MAAM,OAAO,CAAA,GAAIA,iBAAe,MAAM,SAAA,CAAU,KAAK,CAAC,CAAA;AAE7D,EAAA,MAAM,eAAe,MAAY;AAC/B,IAAA,OAAA,CAAQ,SAAA,CAAU,KAAK,CAAC,CAAA;AACxB,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,CAAA,GAAI,KAAK,WAAA,EAAY;AAC3B,EAAA,MAAM,CAAA,GAAI,KAAK,QAAA,EAAS;AACxB,EAAA,MAAM,WAAW,IAAI,IAAA,CAAK,GAAG,CAAA,EAAG,CAAC,EAAE,MAAA,EAAO;AAC1C,EAAA,MAAM,WAAA,GAAc,IAAI,IAAA,CAAK,CAAA,EAAG,IAAI,CAAA,EAAG,CAAC,EAAE,OAAA,EAAQ;AAClD,EAAA,MAAM,KAAA,GAA2B;AAAA,IAC/B,GAAG,KAAA,CAAY,QAAQ,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,IAClC,GAAG,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,WAAA,EAAY,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC;AAAA,GACxD;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAuB;AAC5C,IAAA,MAAM,IAAI,KAAA,CAAM,IAAI,KAAK,CAAA,EAAG,CAAA,EAAG,CAAC,CAAC,CAAA;AACjC,IAAA,OAAQ,OAAO,IAAA,IAAQ,CAAA,GAAI,GAAA,IAAS,GAAA,IAAO,QAAQ,CAAA,GAAI,GAAA;AAAA,EACzD,CAAA;AAEA,EAAA,MAAM,IAAA,GAAO,CAAC,CAAA,KAAoB;AAChC,IAAA,IAAI,aAAA,CAAc,CAAC,CAAA,EAAG;AACtB,IAAA,MAAM,IAAI,KAAA,CAAM,IAAI,KAAK,CAAA,EAAG,CAAA,EAAG,CAAC,CAAC,CAAA;AACjC,IAAA,QAAA,GAAW,CAAC,CAAA;AACZ,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,KAAA,IAAS,IAAA,IAAQ,KAAA,KAAU,EAAA;AAC5C,EAAA,MAAM,YAAA,GAAe,QAAA,GAAW,UAAA,CAAW,KAAK,CAAA,GAAI,WAAA;AAEpD,EAAA,MAAM,gBAAA,GAA8B;AAAA,IAClC,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAYJ,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO,QAAA,GAAW,CAAA,CAAE,IAAA,GAAO,CAAA,CAAE;AAAA,GAC/B;AAEA,EAAA,MAAM,WAAA,GAAyB;AAAA,IAC7B,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,IAC3B,eAAA,EAAiBA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG;AAAA,GACzC;AAEA,EAAA,uBACEM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,OAAO,CAAC,EAAE,GAAA,EAAKT,MAAAA,CAAM,MAAM,CAAC,CAAA,GAAI,CAAA,EAAE,EAAG,cAAc,CAAA,EACtD,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,wBACRM,eAAAA;AAAA,MAACE,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,UAC9B,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAe,GAAA;AAAA,UACf,OAAO,CAAA,CAAE;AAAA,SACX;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA,QAAA,mBAAWE,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,EAAI,QAAA,EAAA,IAAA,EAAK,CAAA,GAAU;AAAA;AAAA;AAAA,KAChE;AAAA,oBAGFF,eAAAA;AAAA,MAACD,qBAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,QAAA;AAAA,QAClB,oBAAoB,KAAA,IAAS,WAAA;AAAA,QAC7B,kBAAA,EAAoB,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,QACrC,OAAA,EAAS,YAAA;AAAA,QACT,KAAA,EAAO;AAAA,UACL;AAAA,YACE,aAAA,EAAe,KAAA;AAAA,YACf,UAAA,EAAY,QAAA;AAAA,YACZ,GAAA,EAAKL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,YACtB,SAAA,EAAW,EAAA;AAAA,YACX,iBAAA,EAAmB,EAAA;AAAA,YACnB,iBAAiB,CAAA,CAAE,OAAA;AAAA,YACnB,WAAA,EAAaA,OAAM,MAAA,CAAO,EAAA;AAAA,YAC1B,aAAa,CAAA,CAAE,MAAA;AAAA,YACf,YAAA,EAAcA,OAAM,MAAA,CAAO;AAAA,WAC7B;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAE,eAACO,gBAAAA,EAAA,EAAK,aAAA,EAAc,MAAA,EAClB,0BAAAH,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACnD,QAAA,EAAA;AAAA,4BAAAV,cAAAA;AAAA,cAACW,UAAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,QAAA;AAAA,gBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,gBAC9B,WAAA,EAAa,CAAA;AAAA,gBACb,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe;AAAA;AAAA,aACjB;AAAA,4BACAE,cAAAA;AAAA,cAACW,UAAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,SAAA;AAAA,gBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,gBAC9B,WAAA,EAAa,CAAA;AAAA,gBACb,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe;AAAA;AAAA,aACjB;AAAA,4BACAE,cAAAA;AAAA,cAACe,UAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAG,CAAA;AAAA,gBACH,CAAA,EAAG,CAAA;AAAA,gBACH,KAAA,EAAO,EAAA;AAAA,gBACP,MAAA,EAAQ,EAAA;AAAA,gBACR,EAAA,EAAI,CAAA;AAAA,gBACJ,MAAA,EAAQjB,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,gBAC9B,WAAA,EAAa,CAAA;AAAA,gBACb,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe;AAAA;AAAA,aACjB;AAAA,4BACAE,cAAAA;AAAA,cAACW,UAAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,UAAA;AAAA,gBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,gBAC9B,WAAA,EAAa,CAAA;AAAA,gBACb,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe;AAAA;AAAA;AACjB,WAAA,EACF,CAAA,EACF,CAAA;AAAA,0BACAE,eAACM,gBAAAA,EAAA,EAAK,OAAO,gBAAA,EAAkB,aAAA,EAAe,GAC3C,QAAA,EAAA,YAAA,EACH;AAAA;AAAA;AAAA,KACF;AAAA,oBAEAN,cAAAA;AAAA,MAACY,iBAAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,IAAA;AAAA,QACT,WAAA,EAAW,IAAA;AAAA,QACX,aAAA,EAAc,MAAA;AAAA,QACd,cAAA,EAAgB,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,QAEnC,QAAA,kBAAAZ,cAAAA;AAAA,UAACG,qBAAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,YAC5B,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,QAAA;AAAA,cAChB,OAAA,EAASL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cACtB,eAAA,EAAiB;AAAA,aACnB;AAAA,YAEA,QAAA,kBAAAM,eAAAA;AAAA,cAACG,gBAAAA;AAAA,cAAA;AAAA,gBACC,wBAAA,EAAwB,IAAA;AAAA,gBACxB,2BAA2B,MAAM,IAAA;AAAA,gBACjC,KAAA,EAAO;AAAA,kBACL;AAAA,oBACE,KAAA,EAAO,MAAA;AAAA,oBACP,QAAA,EAAU,GAAA;AAAA,oBACV,OAAA,EAAST,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,oBACtB,iBAAiB,CAAA,CAAE,OAAA;AAAA,oBACnB,YAAA,EAAcA,OAAM,MAAA,CAAO;AAAA,mBAC7B;AAAA,kBACAA,OAAM,MAAA,CAAO;AAAA,iBACf;AAAA,gBAGA,QAAA,EAAA;AAAA,kCAAAM,eAAAA;AAAA,oBAACG,gBAAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,aAAA,EAAe,KAAA;AAAA,wBACf,UAAA,EAAY,QAAA;AAAA,wBACZ,cAAA,EAAgB,eAAA;AAAA,wBAChB,YAAA,EAAcT,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,uBAC7B;AAAA,sBAEA,QAAA,EAAA;AAAA,wCAAAE,cAAAA;AAAA,0BAACG,qBAAAA;AAAA,0BAAA;AAAA,4BACC,iBAAA,EAAkB,QAAA;AAAA,4BAClB,kBAAA,EAAmB,gBAAA;AAAA,4BACnB,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,KAAK,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,4BAC5C,KAAA,EAAO,WAAA;AAAA,4BAEP,QAAA,kBAAAH,cAAAA,CAACU,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,kBAAAV,cAAAA;AAAA,8BAACW,UAAAA;AAAA,8BAAA;AAAA,gCACC,CAAA,EAAE,gBAAA;AAAA,gCACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,gCAC9B,WAAA,EAAa,CAAA;AAAA,gCACb,aAAA,EAAc,OAAA;AAAA,gCACd,cAAA,EAAe;AAAA;AAAA,6BACjB,EACF;AAAA;AAAA,yBACF;AAAA,wCACAE,cAAAA;AAAA,0BAACM,gBAAAA;AAAA,0BAAA;AAAA,4BACC,KAAA,EAAO;AAAA,8BACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,8BAC9B,QAAA,EAAU,EAAA;AAAA,8BACV,UAAA,EAAY,KAAA;AAAA,8BACZ,OAAO,CAAA,CAAE;AAAA,6BACX;AAAA,4BAEC,QAAA,EAAA,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,IAAI,CAAC,CAAA;AAAA;AAAA,yBACpB;AAAA,wCACAE,cAAAA;AAAA,0BAACG,qBAAAA;AAAA,0BAAA;AAAA,4BACC,iBAAA,EAAkB,QAAA;AAAA,4BAClB,kBAAA,EAAmB,YAAA;AAAA,4BACnB,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,KAAK,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,4BAC5C,KAAA,EAAO,WAAA;AAAA,4BAEP,QAAA,kBAAAH,cAAAA,CAACU,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,kBAAAV,cAAAA;AAAA,8BAACW,UAAAA;AAAA,8BAAA;AAAA,gCACC,CAAA,EAAE,eAAA;AAAA,gCACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,gCAC9B,WAAA,EAAa,CAAA;AAAA,gCACb,aAAA,EAAc,OAAA;AAAA,gCACd,cAAA,EAAe;AAAA;AAAA,6BACjB,EACF;AAAA;AAAA;AACF;AAAA;AAAA,mBACF;AAAA,kCAGAE,cAAAA,CAACO,gBAAAA,EAAA,EAAK,OAAO,EAAE,aAAA,EAAe,KAAA,EAAM,EACjC,QAAA,EAAA,GAAA,CAAI,GAAA,CAAI,CAAC,CAAA,EAAG,sBACXP,cAAAA;AAAA,oBAACO,gBAAAA;AAAA,oBAAA;AAAA,sBAEC,KAAA,EAAO,EAAE,SAAA,EAAW,UAAA,EAAY,iBAAiB,CAAA,EAAE;AAAA,sBAEnD,QAAA,kBAAAP,cAAAA;AAAA,wBAACM,gBAAAA;AAAA,wBAAA;AAAA,0BACC,KAAA,EAAO;AAAA,4BACL,SAAA,EAAW,QAAA;AAAA,4BACX,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,4BAC9B,QAAA,EAAU,EAAA;AAAA,4BACV,UAAA,EAAY,KAAA;AAAA,4BACZ,OAAO,CAAA,CAAE;AAAA,2BACX;AAAA,0BAEC,QAAA,EAAA;AAAA;AAAA;AACH,qBAAA;AAAA,oBAbK,OAAO,CAAC,CAAA;AAAA,mBAehB,CAAA,EACH,CAAA;AAAA,kCAGAE,cAAAA,CAACO,gBAAAA,EAAA,EAAK,OAAO,EAAE,aAAA,EAAe,KAAA,EAAO,QAAA,EAAU,QAAO,EACnD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AACnB,oBAAA,IAAI,KAAK,IAAA,EAAM;AACb,sBAAA,uBACEP,cAAAA;AAAA,wBAACO,gBAAAA;AAAA,wBAAA;AAAA,0BAEC,KAAA,EAAO,EAAE,SAAA,EAAW,UAAA,EAAY,QAAQ,EAAA;AAAG,yBAAA;AAAA,wBADtC,SAAS,CAAC,CAAA;AAAA,uBAEjB;AAAA,oBAEJ;AACA,oBAAA,MAAM,QAAA,GAAW,YAAY,KAAA,CAAM,IAAI,KAAK,CAAA,EAAG,CAAA,EAAG,CAAC,CAAC,CAAA,KAAM,KAAA;AAC1D,oBAAA,MAAM,QAAA,GAAW,cAAc,CAAC,CAAA;AAChC,oBAAA,MAAM,QAAA,GAAW,QAAA,GACb,CAAA,CAAE,SAAA,GACF,QAAA,GACET,OAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,GACtB,CAAA,CAAE,IAAA;AACR,oBAAA,uBACEE,cAAAA;AAAA,sBAACO,gBAAAA;AAAA,sBAAA;AAAA,wBAEC,KAAA,EAAO;AAAA,0BACL,SAAA,EAAW,UAAA;AAAA,0BACX,MAAA,EAAQ,EAAA;AAAA,0BACR,OAAA,EAAS;AAAA,yBACX;AAAA,wBAEA,QAAA,kBAAAP,cAAAA;AAAA,0BAACG,qBAAAA;AAAA,0BAAA;AAAA,4BACC,iBAAA,EAAkB,QAAA;AAAA,4BAClB,kBAAA,EAAoB,WAAA,CAAY,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAAA,4BACvC,kBAAA,EAAoB,EAAE,QAAA,EAAU,QAAA,EAAS;AAAA,4BACzC,QAAA;AAAA,4BACA,OAAA,EAAS,MAAM,IAAA,CAAK,CAAC,CAAA;AAAA,4BACrB,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,MAAO;AAAA,8BACvB,IAAA,EAAM,CAAA;AAAA,8BACN,UAAA,EAAY,QAAA;AAAA,8BACZ,cAAA,EAAgB,QAAA;AAAA,8BAChB,YAAA,EAAcL,OAAM,MAAA,CAAO,EAAA;AAAA,8BAC3B,eAAA,EAAiB,QAAA,GACb,CAAA,CAAE,OAAA,GACF,OAAA,IAAW,CAAC,QAAA,GACVA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,GACtB;AAAA,6BACR,CAAA;AAAA,4BAEA,QAAA,kBAAAE,cAAAA;AAAA,8BAACM,gBAAAA;AAAA,8BAAA;AAAA,gCACC,KAAA,EAAO;AAAA,kCACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,kCAC9B,QAAA,EAAU,EAAA;AAAA,kCACV,UAAA,EAAY,WAAW,KAAA,GAAQ,KAAA;AAAA,kCAC/B,KAAA,EAAO;AAAA,iCACT;AAAA,gCAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AACF,uBAAA;AAAA,sBAnCK,OAAO,CAAC,CAAA;AAAA,qBAoCf;AAAA,kBAEJ,CAAC,CAAA,EACH;AAAA;AAAA;AAAA;AACF;AAAA;AACF;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AClWA,IAAMkB,aAAAA,GAAe,CAAA;AACrB,IAAMC,WAAAA,GAAa,EAAA;AAGnB,SAAS,QAAA,CAAS,GAAA,EAAa,GAAA,EAAa,GAAA,EAAa,IAAA,EAAsB;AAC7E,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,GAAA,EAAK,GAAG,CAAC,CAAA;AAChD,EAAA,IAAI,IAAA,IAAQ,GAAG,OAAO,OAAA;AACtB,EAAA,MAAM,UAAU,GAAA,GAAM,IAAA,CAAK,OAAO,OAAA,GAAU,GAAA,IAAO,IAAI,CAAA,GAAI,IAAA;AAC3D,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,GAAA,EAAK,OAAO,CAAC,CAAA;AAEpD,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,GAAG,CAAA,GAAI,GAAA;AACrC;AAGO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,GAAA,GAAM,CAAA;AAAA,EACN,GAAA,GAAM,GAAA;AAAA,EACN,IAAA,GAAO,CAAA;AAAA,EACP,QAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,IAAA,GAAO,EAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMnB,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAII,gBAAAA,CAAS,MAAM,QAAA,CAAS,YAAA,EAAc,GAAA,EAAK,GAAA,EAAK,IAAI,CAAC,CAAA;AACrF,EAAA,MAAM,OAAA,GAAU,SAAS,KAAA,KAAU,MAAA,GAAY,QAAQ,QAAA,EAAU,GAAA,EAAK,KAAK,IAAI,CAAA;AAE/E,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,iBAAS,CAAC,CAAA;AAE9C,EAAA,MAAM,OAAO,GAAA,GAAM,GAAA;AACnB,EAAA,MAAM,KAAA,GAAQ,IAAA,GAAO,CAAA,GAAA,CAAK,OAAA,GAAU,OAAO,IAAA,GAAO,CAAA;AAClD,EAAA,MAAM,MAAM,KAAA,GAAQ,GAAA;AAGpB,EAAA,MAAM,MAAA,GAASgB,eAAO,EAAE,UAAA,EAAY,KAAK,GAAA,EAAK,IAAA,EAAM,QAAA,EAAU,YAAA,EAAc,CAAA;AAC5E,EAAA,MAAA,CAAO,UAAU,EAAE,UAAA,EAAY,KAAK,GAAA,EAAK,IAAA,EAAM,UAAU,YAAA,EAAa;AACtE,EAAA,MAAM,WAAA,GAAcA,eAAO,QAAQ,CAAA;AACnC,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAEtB,EAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAiB;AAC/B,IAAA,IAAI,CAAC,MAAA,CAAO,OAAA,CAAQ,YAAA,cAA0B,IAAI,CAAA;AAClD,IAAA,WAAA,CAAY,UAAU,IAAI,CAAA;AAAA,EAC5B,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,CAAC,CAAA,KAAc;AAC9B,IAAA,MAAM,EAAE,UAAA,EAAY,CAAA,EAAG,GAAA,EAAK,EAAA,EAAI,KAAK,EAAA,EAAI,IAAA,EAAM,CAAA,EAAE,GAAI,MAAA,CAAO,OAAA;AAC5D,IAAA,IAAI,KAAK,CAAA,EAAG;AACZ,IAAA,MAAM,QAAA,GAAW,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,CAAA,EAAG,CAAC,CAAC,CAAA;AAC3C,IAAA,MAAM,GAAA,GAAM,EAAA,GAAM,QAAA,GAAW,CAAA,IAAM,EAAA,GAAK,EAAA,CAAA;AACxC,IAAA,MAAA,CAAO,QAAA,CAAS,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,CAAC,CAAC,CAAA;AAAA,EACjC,CAAA;AAEA,EAAA,MAAM,YAAA,GAAeA,cAAA;AAAA,IACnBC,yBAAa,MAAA,CAAO;AAAA,MAClB,4BAAA,EAA8B,MAAM,CAAC,MAAA,CAAO,OAAA,CAAQ,QAAA;AAAA,MACpD,2BAAA,EAA6B,MAAM,CAAC,MAAA,CAAO,OAAA,CAAQ,QAAA;AAAA,MACnD,mBAAA,EAAqB,CAAC,CAAA,KAA6B;AACjD,QAAA,IAAI,MAAA,CAAO,QAAQ,QAAA,EAAU;AAC7B,QAAA,QAAA,CAAS,CAAA,CAAE,YAAY,SAAS,CAAA;AAAA,MAClC,CAAA;AAAA,MACA,kBAAA,EAAoB,CAClB,EAAA,EACA,OAAA,KACG;AACH,QAAA,IAAI,MAAA,CAAO,QAAQ,QAAA,EAAU;AAC7B,QAAA,QAAA,CAAS,OAAA,CAAQ,KAAA,GAAQ,SAAA,CAAU,OAAO,CAAA;AAAA,MAC5C;AAAA,KACD;AAAA,GACH,CAAE,OAAA;AAGF,EAAA,MAAM,SAAA,GAAYD,eAAO,CAAC,CAAA;AAE1B,EAAA,MAAM,QAAA,GAAW,CAAC,CAAA,KAAyB;AACzC,IAAA,aAAA,CAAc,CAAA,CAAE,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA;AAAA,EAC1C,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,KAAgB;AAC7B,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,MAAA,CAAO,SAAS,OAAA,GAAU,GAAA,GAAM,MAAM,GAAA,EAAK,GAAA,EAAK,IAAI,CAAC,CAAA;AAAA,EACvD,CAAA;AAEA,EAAA,MAAM,qBAAA,GAAwB,CAAC,CAAA,KAAgC;AAC7D,IAAA,IAAI,CAAA,CAAE,WAAA,CAAY,UAAA,KAAe,WAAA,QAAmB,CAAC,CAAA;AAAA,SAAA,IAC5C,CAAA,CAAE,WAAA,CAAY,UAAA,KAAe,WAAA,QAAmB,EAAE,CAAA;AAAA,EAC7D,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAA,EAAG,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA;AACnC,EAAA,MAAM,SAAA,GAAY,UAAA,GAAa,CAAA,GAAI,KAAA,IAAS,aAAaD,WAAAA,CAAAA,GAAc,CAAA;AAEvE,EAAA,uBACEb,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAAC,EAAE,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,GAAG,OAAA,EAAS,QAAA,GAAW,MAAM,CAAA,EAAE,EAAG,KAAK,CAAA,EACrE,QAAA,EAAA;AAAA,IAAA,CAAA,KAAA,IAAS,IAAA,IAAQ,8BACjBM,eAAAA;AAAA,MAACG,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,aAAA,EAAe,KAAA;AAAA,UACf,cAAA,EAAgB,eAAA;AAAA,UAChB,UAAA,EAAY;AAAA,SACd;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA,IAAS,uBACRP,cAAAA;AAAA,YAACM,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,gBAC9B,QAAA,EAAU,EAAA;AAAA,gBACV,UAAA,EAAY,KAAA;AAAA,gBACZ,OAAO,CAAA,CAAE;AAAA,eACX;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH,mBAEAE,cAAAA,CAACO,gBAAAA,EAAA,EAAK,CAAA;AAAA,UAEP,6BACCP,cAAAA;AAAA,YAACM,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,gBAC9B,QAAA,EAAU,EAAA;AAAA,gBACV,UAAA,EAAY,KAAA;AAAA,gBACZ,KAAA,EAAOA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,GAAG;AAAA,eAC9B;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA,oBAGFE,cAAAA;AAAA,MAACO,gBAAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAU,IAAA;AAAA,QACV,iBAAA,EAAkB,YAAA;AAAA,QAClB,kBAAA,EAAoB,KAAA;AAAA,QACpB,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,QAC/B,oBAAoB,EAAE,GAAA,EAAK,KAAK,GAAA,EAAK,OAAA,EAAS,MAAM,SAAA,EAAU;AAAA,QAC9D,oBAAA,EAAsB,CAAC,EAAE,IAAA,EAAM,aAAY,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA;AAAA,QACnE,qBAAA;AAAA,QACA,QAAA,EAAU,CAAC,CAAA,KAAyB;AAClC,UAAA,SAAA,CAAU,OAAA,GAAU,CAAA,CAAE,WAAA,CAAY,MAAA,CAAO,CAAA;AAAA,QAC3C,CAAA;AAAA,QAEA,KAAA,EAAO;AAAA,UACL,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,EAAA,EAAIU,WAAU,CAAA;AAAA,UAC/B,cAAA,EAAgB;AAAA,SAClB;AAAA,QACC,GAAG,YAAA,CAAa,WAAA;AAAA,QAGjB,QAAA,kBAAAb,eAAAA;AAAA,UAACG,gBAAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAO,gBAAA;AAAA,YACP,QAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACL,MAAA,EAAQS,aAAAA;AAAA,cACR,YAAA,EAAclB,OAAM,MAAA,CAAO,IAAA;AAAA,cAC3B,eAAA,EAAiBA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,cACvC,cAAA,EAAgB;AAAA,aAClB;AAAA,YAGA,QAAA,EAAA;AAAA,8BAAAE,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBACC,MAAA,EAAO,eAAA;AAAA,kBACP,KAAA,EAAO;AAAA,oBACL,QAAA,EAAU,UAAA;AAAA,oBACV,IAAA,EAAM,CAAA;AAAA,oBACN,GAAA,EAAK,CAAA;AAAA,oBACL,MAAA,EAAQ,CAAA;AAAA,oBACR,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,oBACb,YAAA,EAAcT,OAAM,MAAA,CAAO,IAAA;AAAA,oBAC3B,iBAAiB,CAAA,CAAE;AAAA;AACrB;AAAA,eACF;AAAA,8BAEAE,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBACC,MAAA,EAAO,gBAAA;AAAA,kBACP,KAAA,EAAO;AAAA,oBACL,QAAA,EAAU,UAAA;AAAA,oBACV,IAAA,EAAM,SAAA;AAAA,oBACN,KAAA,EAAOU,WAAAA;AAAA,oBACP,MAAA,EAAQA,WAAAA;AAAA,oBACR,YAAA,EAAcnB,OAAM,MAAA,CAAO,IAAA;AAAA,oBAC3B,iBAAiB,CAAA,CAAE,OAAA;AAAA,oBACnB,WAAA,EAAaA,OAAM,MAAA,CAAO,KAAA;AAAA,oBAC1B,aAAa,CAAA,CAAE,OAAA;AAAA,oBACf,GAAGA,OAAM,MAAA,CAAO;AAAA;AAClB;AAAA;AACF;AAAA;AAAA;AACF;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;ACzMA,IAAM,gBAAA,GAAmB;AAAA,EACvB,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,MAAA,GAAS,EAAA;AACf,IAAM,GAAA,GAAM,EAAA;AAML,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA,GAAe,SAAA;AAAA,EACf,QAAA;AAAA,EACA,QAAA,GAAW,CAAC,GAAG,gBAAgB,CAAA;AAAA,EAC/B,WAAA,GAAc,IAAA;AAAA,EACd,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,IAAII,gBAAAA,CAAiB,YAAA,CAAa,aAAa,CAAA;AAC3E,EAAA,MAAM,OAAA,GAAA,CAAW,KAAA,IAAS,QAAA,EAAU,WAAA,EAAY;AAEhD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,iBAAwB,IAAI,CAAA;AAC1D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAEtC,EAAA,MAAM,MAAM,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,CAAA;AAE/C,EAAA,MAAM,GAAA,GAAM,CAAC,GAAA,KAAgB;AAC3B,IAAA,MAAM,CAAA,GAAI,IAAI,WAAA,EAAY;AAC1B,IAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,CAAC,CAAA;AAChC,IAAA,QAAA,GAAW,CAAC,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,GAAA,KAAgB;AAC9B,IAAA,GAAA,CAAI,GAAG,CAAA;AACP,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,GAAA,EAAa,IAAA,KAA0B;AACzD,IAAA,MAAM,SAAS,GAAA,KAAQ,OAAA;AACvB,IAAA,MAAM,SAAA,GAAY,OAAA,KAAY,CAAA,EAAG,IAAI,IAAI,GAAG,CAAA,CAAA;AAC5C,IAAA,MAAM,SAAA,GAAY,MAAA,GAAS,CAAA,CAAE,IAAA,GAAO,CAAA,CAAE,MAAA;AACtC,IAAA,uBACEF,cAAAA;AAAA,MAACG,qBAAAA;AAAA,MAAA;AAAA,QAEC,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAoB,IAAA,KAAS,OAAA,GAAU,CAAA,KAAA,EAAQ,GAAG,CAAA,CAAA,GAAK,GAAA;AAAA,QACvD,kBAAA,EAAoB,EAAE,QAAA,EAAU,MAAA,EAAO;AAAA,QACvC,OAAA,EAAS,MAAO,IAAA,KAAS,OAAA,GAAU,OAAO,GAAG,CAAA,GAAI,IAAI,GAAG,CAAA;AAAA,QACxD,SAAS,MAAM,UAAA,CAAW,GAAG,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AAAA,QAC1C,MAAA,EAAQ,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,QAC7B,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,GAAA;AAAA,UACP,MAAA,EAAQ,GAAA;AAAA,UACR,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB;AAAA,SAClB;AAAA,QAEA,QAAA,kBAAAH,cAAAA;AAAA,UAACO,gBAAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,CAAA,eAAA,EAAkB,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,YACrC,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,MAAA;AAAA,cACP,MAAA,EAAQ,MAAA;AAAA,cACR,YAAA,EAAcT,OAAM,MAAA,CAAO,EAAA;AAAA,cAC3B,eAAA,EAAiB,GAAA;AAAA,cACjB,WAAA,EAAaA,OAAM,MAAA,CAAO,KAAA;AAAA,cAC1B,WAAA,EAAa,SAAA,GAAY,CAAA,CAAE,KAAA,GAAQ;AAAA;AACrC;AAAA;AACF,OAAA;AAAA,MAxBK,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA;AAAA,KAyBrB;AAAA,EAEJ,CAAA;AAEA,EAAA,uBACEM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,OAAO,CAAC,EAAE,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAE,EAAG,KAAK,CAAA,EACzC,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,wBACRE,cAAAA;AAAA,MAACM,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,UAC9B,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAe,GAAA;AAAA,UACf,OAAO,CAAA,CAAE;AAAA,SACX;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBAGFM,eAAAA;AAAA,MAACG,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,QAAA,EAAU;AAAA,SACZ;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,GAAA,CAAI,IAAI,CAAC,GAAA,KAAQ,UAAA,CAAW,GAAA,EAAK,KAAK,CAAC,CAAA;AAAA,UAEvC,+BACCP,cAAAA;AAAA,YAACG,qBAAAA;AAAA,YAAA;AAAA,cACC,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAmB,wBAAA;AAAA,cACnB,kBAAA,EAAoB,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,cACrC,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,cAC3B,OAAA,EAAS,MAAM,UAAA,CAAW,QAAQ,CAAA;AAAA,cAClC,MAAA,EAAQ,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,cAC7B,KAAA,EAAO;AAAA,gBACL,KAAA,EAAO,GAAA;AAAA,gBACP,MAAA,EAAQ,GAAA;AAAA,gBACR,UAAA,EAAY,QAAA;AAAA,gBACZ,cAAA,EAAgB;AAAA,eAClB;AAAA,cAEA,QAAA,kBAAAH,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,KAAA,EAAO,MAAA;AAAA,oBACP,MAAA,EAAQ,MAAA;AAAA,oBACR,UAAA,EAAY,QAAA;AAAA,oBACZ,cAAA,EAAgB,QAAA;AAAA,oBAChB,YAAA,EAAcT,OAAM,MAAA,CAAO,EAAA;AAAA,oBAC3B,aAAa,OAAA,KAAY,QAAA,GAAWA,MAAAA,CAAM,cAAA,GAAiBA,OAAM,MAAA,CAAO,EAAA;AAAA,oBACxE,WAAA,EAAa,OAAA,KAAY,QAAA,GAAW,CAAA,CAAE,QAAQ,CAAA,CAAE,YAAA;AAAA,oBAChD,WAAA,EAAa;AAAA,mBACf;AAAA,kBAEA,QAAA,kBAAAM,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,oCAAAV,cAAAA;AAAA,sBAACW,UAAAA;AAAA,sBAAA;AAAA,wBACC,CAAA,EAAE,UAAA;AAAA,wBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,wBAC9B,WAAA,EAAa,CAAA;AAAA,wBACb,aAAA,EAAc,OAAA;AAAA,wBACd,cAAA,EAAe;AAAA;AAAA,qBACjB;AAAA,oCACAE,cAAAA;AAAA,sBAACW,UAAAA;AAAA,sBAAA;AAAA,wBACC,CAAA,EAAE,UAAA;AAAA,wBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,wBAC9B,WAAA,EAAa,CAAA;AAAA,wBACb,aAAA,EAAc,OAAA;AAAA,wBACd,cAAA,EAAe;AAAA;AAAA;AACjB,mBAAA,EACF;AAAA;AAAA;AACF;AAAA,WACF;AAAA,0BAGFE,cAAAA;AAAA,YAACM,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,gBAC9B,QAAA,EAAU,EAAA;AAAA,gBACV,OAAO,CAAA,CAAE,SAAA;AAAA,gBACT,UAAA,EAAYA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,eAC3B;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KACF;AAAA,oBAEAE,cAAAA;AAAA,MAACY,iBAAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,IAAA;AAAA,QACT,WAAA,EAAW,IAAA;AAAA,QACX,aAAA,EAAc,MAAA;AAAA,QACd,cAAA,EAAgB,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,QAEnC,QAAA,kBAAAZ,cAAAA;AAAA,UAACG,qBAAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,YAC5B,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,QAAA;AAAA,cAChB,OAAA,EAASL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cACtB,eAAA,EAAiB;AAAA,aACnB;AAAA,YAEA,QAAA,kBAAAM,eAAAA;AAAA,cAACG,gBAAAA;AAAA,cAAA;AAAA,gBACC,wBAAA,EAAwB,IAAA;AAAA,gBACxB,2BAA2B,MAAM,IAAA;AAAA,gBACjC,KAAA,EAAO;AAAA,kBACL;AAAA,oBACE,KAAA,EAAO,MAAA;AAAA,oBACP,QAAA,EAAU,GAAA;AAAA,oBACV,iBAAiB,CAAA,CAAE,OAAA;AAAA,oBACnB,YAAA,EAAcT,OAAM,MAAA,CAAO,EAAA;AAAA,oBAC3B,OAAA,EAASA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,oBACtB,GAAA,EAAKA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,mBACpB;AAAA,kBACAA,OAAM,MAAA,CAAO;AAAA,iBACf;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAE,cAAAA;AAAA,oBAACM,gBAAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,wBAC9B,QAAA,EAAU,EAAA;AAAA,wBACV,UAAA,EAAY,KAAA;AAAA,wBACZ,OAAO,CAAA,CAAE;AAAA,uBACX;AAAA,sBACD,QAAA,EAAA;AAAA;AAAA,mBAED;AAAA,kCACAE,eAACoB,sBAAA,EAAA,EAAW,KAAA,EAAO,EAAE,SAAA,EAAW,GAAA,IAC9B,QAAA,kBAAApB,cAAAA;AAAA,oBAACO,gBAAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,aAAA,EAAe,KAAA;AAAA,wBACf,QAAA,EAAU,MAAA;AAAA,wBACV,UAAA,EAAY;AAAA,uBACd;AAAA,sBAEC,cAAI,GAAA,CAAI,CAAC,QAAQ,UAAA,CAAW,GAAA,EAAK,OAAO,CAAC;AAAA;AAAA,mBAC5C,EACF;AAAA;AAAA;AAAA;AACF;AAAA;AACF;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AC1NA,SAAS,QAAQ,CAAA,EAAmB;AAClC,EAAA,IAAI,CAAA,GAAI,IAAA,EAAM,OAAO,CAAA,GAAI,IAAA;AACzB,EAAA,IAAI,CAAA,GAAI,OAAO,IAAA,EAAM,OAAA,CAAQ,IAAI,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA,GAAI,KAAA;AACpD,EAAA,OAAA,CAAQ,CAAA,GAAI,IAAA,GAAO,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA,GAAI,KAAA;AACxC;AAGO,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,IAAA,GAAO,iCAAA;AAAA,EACP,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMT,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAII,gBAAAA,CAAyB,EAAE,CAAA;AAC3D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,IAAA,GAAO,eAAe,KAAA,GAAQ,QAAA;AAEpC,EAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAyB;AACvC,IAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,IAAI,CAAA;AACnC,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,GAAA,GAAM,CAAC,MAAA,KAAuC;AAClD,IAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG;AACpC,IAAA,MAAA,CAAO,QAAA,GAAW,CAAC,GAAG,IAAA,EAAM,GAAG,MAAM,CAAA,GAAI,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,EAC7D,CAAA;AAEA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,MAAM,MAAA,GAAS,MAAA,GAAS,EAAE,MAAA,EAAQ,UAAU,CAAA;AAC5C,IAAA,IAAI,kBAAkB,OAAA,EAAS;AAC7B,MAAA,KAAK,MAAA,CAAO,KAAK,GAAG,CAAA;AAAA,IACtB,CAAA,MAAO;AACL,MAAA,GAAA,CAAI,MAAM,CAAA;AAAA,IACZ;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAc,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,KAAM,CAAC,CAAC,CAAA;AAEnE,EAAA,uBACEE,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAAC,EAAE,GAAA,EAAK,EAAA,EAAG,EAAG,KAAK,CAAA,EAC7B,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,wBACRP,cAAAA;AAAA,MAACM,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,UAC9B,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,KAAA;AAAA,UACZ,OAAO,CAAA,CAAE;AAAA,SACX;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBAGFM,eAAAA;AAAA,MAACD,qBAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAoB,KAAA;AAAA,QACpB,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,QAC/B,QAAA;AAAA,QACA,OAAA,EAAS,UAAA;AAAA,QACT,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,QAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,QAC9B,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AACtB,UAAA,MAAM,MAAA,GAAS,WAAW,CAAC,QAAA;AAC3B,UAAA,MAAM,IAAA,GACJ,OAAA,IAAW,CAAC,QAAA,GACR,EAAE,WAAA,EAAa,CAAA,CAAE,KAAA,EAAO,WAAA,EAAaL,MAAAA,CAAM,cAAA,EAAe,GAC1D,IAAA;AACN,UAAA,OAAO;AAAA,YACL;AAAA,cACE,WAAA,EAAaA,OAAM,MAAA,CAAO,EAAA;AAAA,cAC1B,WAAA,EAAa,QAAA;AAAA,cACb,WAAA,EAAa,MAAA,GAAS,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,YAAA;AAAA,cACpC,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,cAC3B,eAAA,EAAiB,EAAA;AAAA,cACjB,iBAAA,EAAmB,EAAA;AAAA,cACnB,UAAA,EAAY,QAAA;AAAA,cACZ,eAAA,EAAiB,MAAA,GAASA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,EAAE,CAAA,GAAIA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA;AAAA,cACvE,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,aAC5B;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAM,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,QAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,4BAAAV,cAAAA;AAAA,cAACW,UAAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,UAAA;AAAA,gBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,gBAC9B,WAAA,EAAa,CAAA;AAAA,gBACb,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe;AAAA;AAAA,aACjB;AAAA,4BACAE,cAAAA;AAAA,cAACW,UAAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,0DAAA;AAAA,gBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,gBAC9B,WAAA,EAAa,CAAA;AAAA,gBACb,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe;AAAA;AAAA,aACjB;AAAA,4BACAE,cAAAA;AAAA,cAACW,UAAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,eAAA;AAAA,gBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,gBAC9B,WAAA,EAAa,CAAA;AAAA,gBACb,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe;AAAA;AAAA;AACjB,WAAA,EACF,CAAA;AAAA,0BAEAM,eAAAA;AAAA,YAACE,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,gBAC9B,QAAA,EAAU,EAAA;AAAA,gBACV,OAAO,CAAA,CAAE,IAAA;AAAA,gBACT,SAAA,EAAW,CAAA;AAAA,gBACX,SAAA,EAAW;AAAA,eACb;AAAA,cACD,QAAA,EAAA;AAAA,gBAAA,sBAAA;AAAA,gBACsB,GAAA;AAAA,gCACrBE,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,CAAE,QAAA,EAAU,UAAA,EAAY,KAAA,EAAM,EAAG,QAAA,EAAA,QAAA,EAAM;AAAA;AAAA;AAAA,WAC/D;AAAA,0BACAN,cAAAA;AAAA,YAACM,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,gBAC9B,QAAA,EAAU,EAAA;AAAA,gBACV,OAAO,CAAA,CAAE,SAAA;AAAA,gBACT,SAAA,EAAW,CAAA;AAAA,gBACX,SAAA,EAAW;AAAA,eACb;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KACF;AAAA,IAEC,KAAK,MAAA,GAAS,CAAA,oBACbE,cAAAA,CAACO,kBAAA,EAAK,KAAA,EAAO,EAAE,GAAA,EAAK,GAAE,EACnB,QAAA,EAAA,IAAA,CAAK,IAAI,CAAC,CAAA,EAAG,sBACZH,eAAAA;AAAA,MAACG,gBAAAA;AAAA,MAAA;AAAA,QAEC,KAAA,EAAO;AAAA,UACL,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,GAAA,EAAK,EAAA;AAAA,UACL,eAAA,EAAiB,CAAA;AAAA,UACjB,iBAAA,EAAmB,EAAA;AAAA,UACnB,WAAA,EAAaT,OAAM,MAAA,CAAO,IAAA;AAAA,UAC1B,aAAa,CAAA,CAAE,MAAA;AAAA,UACf,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,UAC3B,iBAAiB,CAAA,CAAE;AAAA,SACrB;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAM,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,QAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,4BAAAV,cAAAA;AAAA,cAACW,UAAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,4DAAA;AAAA,gBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAAA,gBAC7B,WAAA,EAAa,CAAA;AAAA,gBACb,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe;AAAA;AAAA,aACjB;AAAA,4BACAE,cAAAA;AAAA,cAACW,UAAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,yBAAA;AAAA,gBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAAA,gBAC7B,WAAA,EAAa,CAAA;AAAA,gBACb,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe;AAAA;AAAA;AACjB,WAAA,EACF,CAAA;AAAA,0BAEAM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,CAAA,EAAE,EAClC,QAAA,EAAA;AAAA,4BAAAP,cAAAA;AAAA,cAACM,gBAAAA;AAAA,cAAA;AAAA,gBACC,aAAA,EAAe,CAAA;AAAA,gBACf,KAAA,EAAO;AAAA,kBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,kBAC9B,QAAA,EAAU,IAAA;AAAA,kBACV,UAAA,EAAY,KAAA;AAAA,kBACZ,OAAO,CAAA,CAAE;AAAA,iBACX;AAAA,gBAEC,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA,aACL;AAAA,4BACAE,cAAAA;AAAA,cAACM,gBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,kBAC9B,QAAA,EAAU,IAAA;AAAA,kBACV,OAAO,CAAA,CAAE;AAAA,iBACX;AAAA,gBAEC,QAAA,EAAA,OAAA,CAAQ,EAAE,IAAI;AAAA;AAAA;AACjB,WAAA,EACF,CAAA;AAAA,0BAEAE,cAAAA;AAAA,YAACG,qBAAAA;AAAA,YAAA;AAAA,cACC,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAmB,QAAA;AAAA,cACnB,OAAA,EAAS,MAAM,MAAA,CAAO,CAAC,CAAA;AAAA,cACvB,KAAA,EAAO;AAAA,gBACL,KAAA,EAAO,EAAA;AAAA,gBACP,MAAA,EAAQ,EAAA;AAAA,gBACR,UAAA,EAAY,QAAA;AAAA,gBACZ,cAAA,EAAgB,QAAA;AAAA,gBAChB,YAAA,EAAcL,OAAM,MAAA,CAAO;AAAA,eAC7B;AAAA,cAEA,QAAA,kBAAAM,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,gCAAAV,cAAAA;AAAA,kBAACW,UAAAA;AAAA,kBAAA;AAAA,oBACC,CAAA,EAAE,YAAA;AAAA,oBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,oBAC9B,WAAA,EAAa,CAAA;AAAA,oBACb,aAAA,EAAc,OAAA;AAAA,oBACd,cAAA,EAAe;AAAA;AAAA,iBACjB;AAAA,gCACAE,cAAAA;AAAA,kBAACW,UAAAA;AAAA,kBAAA;AAAA,oBACC,CAAA,EAAE,YAAA;AAAA,oBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,oBAC9B,WAAA,EAAa,CAAA;AAAA,oBACb,aAAA,EAAc,OAAA;AAAA,oBACd,cAAA,EAAe;AAAA;AAAA;AACjB,eAAA,EACF;AAAA;AAAA;AACF;AAAA,OAAA;AAAA,MAjFK,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA;AAAA,KAmFtB,CAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;AC1OO,SAAS,IAAA,CAAK;AAAA,EACnB,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,EAAA;AAAA,EACV,WAAA,GAAc,KAAA;AAAA,EACd,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,kBAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA;AACF,CAAA,EAAc;AACZ,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,IAAIJ,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,OAAA,GAAqB;AAAA,IACzB,iBAAiB,CAAA,CAAE,OAAA;AAAA,IACnB,aAAa,CAAA,CAAE,MAAA;AAAA,IACf,WAAA,EAAaA,OAAM,MAAA,CAAO,IAAA;AAAA,IAC1B,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,IAC3B,QAAA,EAAU,QAAA;AAAA,IACV,aAAA,EAAe,QAAA;AAAA,IACf,GAAI,eAAe,OAAA,IAAW,CAAC,WAAWA,MAAAA,CAAM,MAAA,CAAO,EAAA,GAAKA,MAAAA,CAAM,MAAA,CAAO;AAAA,GAC3E;AAEA,EAAA,MAAM,UAAA,GAAwB;AAAA,IAC5B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,IAC9B,OAAO,CAAA,CAAE,IAAA;AAAA,IACT,UAAA,EAAY;AAAA,GACd;AAEA,EAAA,MAAM,aAAA,GAA2B;AAAA,IAC/B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,OAAO,CAAA,CAAE,SAAA;AAAA,IACT,SAAA,EAAWA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,IACxB,UAAA,EAAY;AAAA,GACd;AAEA,EAAA,MAAM,IAAA,mBACJM,eAAAA,CAAAC,mBAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,wBACRL,cAAAA;AAAA,MAACO,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,MAAA;AAAA,UACP,aAAa,EAAA,GAAK,CAAA;AAAA,UAClB,QAAA,EAAU,QAAA;AAAA,UACV,eAAA,EAAiBT,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG;AAAA,SACzC;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IAAA,CAGA,KAAA,IAAS,IAAA,IAAQ,QAAA,IAAY,IAAA,qBAC7BM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,iBAAA,EAAmB,OAAA,EAAS,UAAA,EAAY,SAAQ,EAC5D,QAAA,EAAA;AAAA,MAAA,KAAA,IAAS,IAAA,KACP,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,mBAC7CP,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,UAAA,EAAa,iBAAM,CAAA,GAEhC,KAAA,CAAA;AAAA,MAEH,QAAA,IAAY,IAAA,KACV,OAAO,QAAA,KAAa,YAAY,OAAO,QAAA,KAAa,QAAA,mBACnDN,eAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,aAAA,EAAgB,oBAAS,CAAA,GAEtC,QAAA;AAAA,KAAA,EAEN,CAAA;AAAA,IAGD,QAAA,IAAY,IAAA,oBACXN,cAAAA,CAACO,gBAAAA,EAAA,EAAK,MAAA,EAAO,cAAA,EAAe,KAAA,EAAO,EAAE,OAAA,EAAQ,EAC1C,QAAA,EACH,CAAA;AAAA,IAAA,CAGA,MAAA,IAAU,IAAA,IAAQ,OAAA,IAAW,IAAA,qBAC7BH,eAAAA;AAAA,MAACG,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,OAAA,IAAW,IAAA,GAAO,UAAA,GAAa,YAAA;AAAA,UAC/C,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,UAClB,SAAA,EAAW,MAAA;AAAA,UACX,iBAAA,EAAmB,OAAA;AAAA,UACnB,aAAA,EAAe;AAAA,SACjB;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,MAAA;AAAA,UACA;AAAA;AAAA;AAAA;AACH,GAAA,EAEJ,CAAA;AAGF,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,uBACEE,cAAAA;AAAA,MAACG,qBAAAA;AAAA,MAAA;AAAA,QACC,MAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA,EAAW,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,QAChC,UAAA,EAAY,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,QAClC,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA;AAAA,QACA,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,QAC/B,KAAA,EAAO,CAAC,OAAA,EAAS,KAAK,CAAA;AAAA,QAErB,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEH,cAAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,kBAAA;AAAA,MACA,KAAA,EAAO,CAAC,OAAA,EAAS,KAAK,CAAA;AAAA,MAErB,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;ACpJO,SAAS,KAAA,CAAM;AAAA,EACpB,QAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,UAAA,GAAa,OAAA;AAAA,EACb,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAe;AACb,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMT,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,IAAIA,MAAAA,CAAM,IAAA;AAShB,EAAA,MAAM,IAAA,GAAa;AAAA,IACjB,SAAS,EAAE,KAAA,EAAO,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA,EAAG,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA,EAAE;AAAA,IAC7E,OAAA,EAAS,EAAE,KAAA,EAAO,CAAA,CAAE,OAAA,EAAS,IAAA,EAAM,CAAA,CAAE,aAAA,EAAe,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,GAAG,CAAA,EAAE;AAAA,IACxE,OAAA,EAAS,EAAE,KAAA,EAAO,CAAA,CAAE,OAAA,EAAS,IAAA,EAAM,CAAA,CAAE,aAAA,EAAe,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA,EAAE;AAAA,IACzE,MAAA,EAAQ,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,EAAQ,IAAA,EAAM,CAAA,CAAE,YAAA,EAAc,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,GAAG,CAAA,EAAE;AAAA,IACrE,OAAA,EAAS,EAAE,KAAA,EAAO,CAAA,CAAE,OAAA,EAAS,IAAA,EAAM,CAAA,CAAE,aAAA,EAAe,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA,EAAE;AAAA,IACzE,IAAA,EAAM,EAAE,KAAA,EAAO,CAAA,CAAE,IAAA,EAAM,IAAA,EAAM,CAAA,CAAE,UAAA,EAAY,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAE,IAC7D,OAAO,CAAA;AAET,EAAA,IAAI,eAAe,KAAA,EAAO;AACxB,IAAA,MAAM,QAAA,GAAsB;AAAA,MAC1B,KAAA,EAAO,CAAA;AAAA,MACP,MAAA,EAAQ,CAAA;AAAA,MACR,YAAA,EAAcA,OAAM,MAAA,CAAO,IAAA;AAAA,MAC3B,iBAAiB,IAAA,CAAK;AAAA,KACxB;AACA,IAAA,uBACEE,cAAAA;AAAA,MAACO,gBAAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAO,gBAAA;AAAA,QACP,2BAAA,EAA2B,IAAA;AAAA,QAC3B,yBAAA,EAA0B,qBAAA;AAAA,QAC1B,KAAA,EAAO;AAAA;AAAA,KACT;AAAA,EAEJ;AAEA,EAAA,MAAM,UAAU,UAAA,KAAe,OAAA;AAE/B,EAAA,MAAM,IAAA,GAAkB;AAAA,IACtB,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,IAClB,MAAA,EAAQ,EAAA;AAAA,IACR,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,IAChC,YAAA,EAAcA,OAAM,MAAA,CAAO,IAAA;AAAA,IAC3B,SAAA,EAAW,YAAA;AAAA,IACX,eAAA,EAAiB,OAAA,GAAU,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK;AAAA,GAC/C;AAEA,EAAA,MAAM,UAAA,GAAwB;AAAA,IAC5B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,IAC9B,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe,GAAA;AAAA,IACf,KAAA,EAAO,OAAA,GAAU,CAAA,CAAE,WAAA,GAAc,IAAA,CAAK;AAAA,GACxC;AAEA,EAAA,MAAM,KAAA,GACJ,OAAO,QAAA,KAAa,QAAA,IAAY,OAAO,QAAA,KAAa,QAAA,GAChD,MAAA,CAAO,QAAQ,CAAA,GACf,MAAA;AAEN,EAAA,uBACEE,cAAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,MAAA;AAAA,MAClB,kBAAA,EAAoB,KAAA;AAAA,MACpB,KAAA,EAAO,CAAC,IAAA,EAAM,KAAK,CAAA;AAAA,MAElB,QAAA,EAAA,OAAO,QAAA,KAAa,QAAA,IAAY,OAAO,aAAa,QAAA,mBACnDP,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,UAAA,EAAY,aAAA,EAAe,CAAA,EACrC,UACH,CAAA,GAEA;AAAA;AAAA,GAEJ;AAEJ;AC/EO,SAAS,IAAA,CAAK;AAAA,EACnB,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,IAAA,GAAO,IAAA;AAAA,EACP,OAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA;AACF,CAAA,EAAc;AACZ,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMR,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,SAAA,GAAY,CAAC,CAAC,OAAA;AAEpB,EAAA,MAAM,YAAA,GAAeJ,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAC1C,EAAA,MAAM,UAAA,GAAaA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,EAAE,CAAA;AAEvC,EAAA,MAAM,UAAA,GAAa,QAAA,GAAW,YAAA,GAAe,CAAA,CAAE,IAAA;AAE/C,EAAA,MAAM,SAAA,GACJ,OAAO,QAAA,KAAa,QAAA,IAAY,OAAO,QAAA,KAAa,QAAA,GAChD,MAAA,CAAO,QAAQ,CAAA,GACf,MAAA;AACN,EAAA,MAAM,aAAA,GACJ,uBACC,SAAA,IAAa,IAAA,GACV,WACE,CAAA,EAAG,SAAS,eACZ,SAAA,GACF,MAAA,CAAA;AAEN,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,CAAA;AAAA,IACL,MAAA,EAAQ,EAAA;AAAA,IACR,iBAAA,EAAmB,EAAA;AAAA,IACnB,YAAA,EAAcA,OAAM,MAAA,CAAO,IAAA;AAAA,IAC3B,WAAA,EAAaA,OAAM,MAAA,CAAO,IAAA;AAAA,IAC1B,WAAA,EAAa,QAAA,GAAW,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,MAAA;AAAA,IACtC,eAAA,EAAiB,QAAA,GAAW,UAAA,GAAa,CAAA,CAAE,OAAA;AAAA,IAC3C,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,GAC5B;AAEA,EAAA,MAAM,SAAA,GACJ,OAAA,IAAW,SAAA,IAAa,CAAC,QAAA,GACrB,EAAE,WAAA,EAAa,CAAA,CAAE,KAAA,EAAO,WAAA,EAAaA,MAAAA,CAAM,cAAA,EAAe,GAC1D,IAAA;AAEN,EAAA,MAAM,UAAA,GAAwB;AAAA,IAC5B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,MAAA;AAAA,IAC9B,UAAA,EAAY,EAAA;AAAA,IACZ,KAAA,EAAO;AAAA,GACT;AAEA,EAAA,MAAM,OAAA,mBACJM,eAAAA,CAAAC,mBAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,IAAA,IAAQ,wBACPL,cAAAA;AAAA,MAACO,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,QAAA;AAAA,UAChB,UAAA,EAAY;AAAA,SACd;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IAED,SAAA,IAAa,IAAA,mBACZP,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,UAAA,EAAY,aAAA,EAAe,CAAA,EACrC,QAAA,EAAA,SAAA,EACH,CAAA,GAEA,QAAA;AAAA,IAED,4BACCN,cAAAA;AAAA,MAACG,qBAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAmB,QAAA;AAAA,QACnB,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,QAC/B,QAAA;AAAA,QACA,OAAA,EAAS,EAAA;AAAA,QACT,OAAA,EAAS,CAAC,CAAA,KAA6B;AACrC,UAAA,IAAI,QAAA,EAAU;AACd,UAAA,QAAA,CAAS,CAAC,CAAA;AAAA,QACZ,CAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACL,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,QAAA;AAAA,UAChB,KAAA,EAAO,EAAA;AAAA,UACP,MAAA,EAAQ,EAAA;AAAA,UACR,WAAA,EAAa,EAAA;AAAA,UACb,YAAA,EAAcL,OAAM,MAAA,CAAO,IAAA;AAAA,UAC3B,eAAA,EAAiB;AAAA,SACnB;AAAA,QAEA,QAAA,kBAAAM,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,0BAAAV,cAAAA;AAAA,YAACW,UAAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,YAAA;AAAA,cACF,MAAA,EAAQ,UAAA;AAAA,cACR,WAAA,EAAa,GAAA;AAAA,cACb,aAAA,EAAc,OAAA;AAAA,cACd,cAAA,EAAe;AAAA;AAAA,WACjB;AAAA,0BACAX,cAAAA;AAAA,YAACW,UAAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,YAAA;AAAA,cACF,MAAA,EAAQ,UAAA;AAAA,cACR,WAAA,EAAa,GAAA;AAAA,cACb,aAAA,EAAc,OAAA;AAAA,cACd,cAAA,EAAe;AAAA;AAAA;AACjB,SAAA,EACF;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAGF,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBACEX,cAAAA;AAAA,MAACG,qBAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAoB,aAAA;AAAA,QACpB,kBAAA,EAAoB,EAAE,QAAA,EAAU,QAAA,EAAS;AAAA,QACzC,QAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,QAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,QAC9B,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AAAA,UACtB,SAAA;AAAA,UACA,OAAA,IAAW,CAAC,QAAA,GACR,EAAE,eAAA,EAAiB,QAAA,GAAWL,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,GAAI,CAAA,CAAE,eAAc,GACvE,IAAA;AAAA,UACJ,SAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEE,cAAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,kBAAA,EAAoB,aAAA;AAAA,MACpB,kBAAA,EAAoB,EAAE,QAAA,EAAU,QAAA,EAAS;AAAA,MACzC,KAAA,EAAO,CAAC,SAAA,EAAW,KAAK,CAAA;AAAA,MAEvB,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AChKO,SAAS,MAAA,CAAO;AAAA,EACrB,GAAA;AAAA,EACA,IAAA,GAAO,EAAA;AAAA,EACP,IAAA,GAAO,EAAA;AAAA,EACP,KAAA,GAAQ,QAAA;AAAA,EACR,MAAA,GAAS,IAAA;AAAA,EACT,KAAA,EAAO,SAAA;AAAA,EACP,MAAA;AAAA,EACA;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMT,SAAQ,SAAA,IAAa,QAAA;AAE3B,EAAA,MAAM,QAAA,GAAW,KACd,KAAA,CAAM,GAAG,EACT,MAAA,CAAO,OAAO,CAAA,CACd,KAAA,CAAM,CAAA,EAAG,CAAC,EACV,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,CAAC,CAAC,CAAA,CACf,IAAA,CAAK,EAAE,CAAA,CACP,WAAA,EAAY;AAEf,EAAA,MAAMuB,UAAS,KAAA,KAAU,SAAA,GAAYvB,OAAM,MAAA,CAAO,EAAA,GAAKA,OAAM,MAAA,CAAO,IAAA;AAEpE,EAAA,MAAM,WAAA,GAA0C;AAAA,IAC9C,MAAA,EAAQA,OAAM,KAAA,CAAM,OAAA;AAAA,IACpB,IAAA,EAAMA,OAAM,KAAA,CAAM,MAAA;AAAA,IAClB,IAAA,EAAMA,OAAM,KAAA,CAAM;AAAA,GACpB;AAEA,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,QAAA,EAAU,UAAA;AAAA,IACV,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAEA,EAAA,MAAM,UAAA,GAAyB;AAAA,IAC7B,KAAA,EAAO,MAAA;AAAA,IACP,MAAA,EAAQ,MAAA;AAAA,IACR,YAAA,EAAcuB;AAAA,GAChB;AAEA,EAAA,MAAM,WAAA,GAAyB;AAAA,IAC7B,KAAA,EAAO,MAAA;AAAA,IACP,MAAA,EAAQ,MAAA;AAAA,IACR,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,YAAA,EAAcA,OAAAA;AAAA,IACd,eAAA,EAAiBvB,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,GAAG;AAAA,GACxC;AAEA,EAAA,MAAM,YAAA,GAA0B;AAAA,IAC9B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,IAC9B,UAAU,IAAA,GAAO,GAAA;AAAA,IACjB,KAAA,EAAOA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,GAAG;AAAA,GAC9B;AAEA,EAAA,MAAM,UAAU,IAAA,GAAO,IAAA;AACvB,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,QAAA,EAAU,UAAA;AAAA,IACV,KAAA,EAAO,CAAA;AAAA,IACP,MAAA,EAAQ,CAAA;AAAA,IACR,KAAA,EAAO,OAAA;AAAA,IACP,MAAA,EAAQ,OAAA;AAAA,IACR,YAAA,EAAcA,OAAM,MAAA,CAAO,IAAA;AAAA,IAC3B,eAAA,EAAiB,MAAA,GAAS,WAAA,CAAY,MAAM,CAAA,GAAI,aAAA;AAAA,IAChD,WAAA,EAAaA,OAAM,MAAA,CAAO,KAAA;AAAA,IAC1B,WAAA,EAAaA,OAAM,KAAA,CAAM;AAAA,GAC3B;AAEA,EAAA,uBACEM,gBAACG,gBAAAA,EAAA,EAAK,OAAO,CAAC,SAAA,EAAW,KAAK,CAAA,EAAG,MAAA,EAC9B,QAAA,EAAA;AAAA,IAAA,GAAA,mBACCP,cAAAA;AAAA,MAACsB,iBAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,EAAE,GAAA,EAAK,GAAA,EAAI;AAAA,QACnB,UAAA,EAAW,OAAA;AAAA,QACX,KAAA,EAAO,UAAA;AAAA,QACP,UAAA,EAAU,IAAA;AAAA,QACV,iBAAA,EAAkB,OAAA;AAAA,QAClB,oBAAoB,IAAA,IAAQ;AAAA;AAAA,wBAG9BtB,cAAAA;AAAA,MAACO,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,WAAA;AAAA,QACP,UAAA,EAAU,IAAA;AAAA,QACV,iBAAA,EAAkB,OAAA;AAAA,QAClB,oBAAoB,IAAA,IAAQ,MAAA;AAAA,QAE5B,QAAA,kBAAAP,eAACM,gBAAAA,EAAA,EAAK,OAAO,YAAA,EAAc,aAAA,EAAe,CAAA,EACvC,QAAA,EAAA,QAAA,IAAY,GAAA,EACf;AAAA;AAAA,KACF;AAAA,IAED,MAAA,mBACCN,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,SAAA,EAAW,MAAA,EAAO,eAAA,EAAgB,CAAA,GAC7C;AAAA,GAAA,EACN,CAAA;AAEJ;ACjGA,SAAS,SAAS,IAAA,EAA+B;AAC/C,EAAA,MAAM,CAAA,GAAI,OAAO,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,EAAA;AAC5C,EAAA,OACE,CAAA,CACG,MAAM,KAAK,CAAA,CACX,OAAO,OAAO,CAAA,CACd,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CACV,IAAI,CAAC,CAAA,KAAM,EAAE,CAAC,CAAC,EACf,IAAA,CAAK,EAAE,CAAA,CACP,WAAA,EAAY,IAAK,GAAA;AAExB;AAGA,SAAS,YAAY,IAAA,EAA+B;AAClD,EAAA,OAAO,OAAO,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,SAAA;AAC3C;AAOO,SAAS,OAAA,CAAQ;AAAA,EACtB,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,KAAA,EAAO,SAAA;AAAA,EACP,MAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMT,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,aAAA,EAAe,KAAA;AAAA,IACf,GAAA,EAAKA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,GACpB;AAEA,EAAA,MAAM,aAAA,GAA2B;AAAA,IAC/B,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAcA,OAAM,MAAA,CAAO,IAAA;AAAA,IAC3B,iBAAiB,CAAA,CAAE,aAAA;AAAA,IACnB,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAEA,EAAA,MAAM,WAAA,GAAyB;AAAA,IAC7B,eAAA,EAAiB,SAAA,GAAY,CAAA,CAAE,aAAA,GAAgB,CAAA,CAAE,aAAA;AAAA,IACjD,WAAA,EAAaA,OAAM,MAAA,CAAO,IAAA;AAAA,IAC1B,aAAa,SAAA,GAAYA,MAAAA,CAAM,KAAK,MAAA,CAAO,GAAG,IAAI,CAAA,CAAE,OAAA;AAAA,IACpD,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,IAC3B,eAAA,EAAiBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,IAC9B,iBAAA,EAAmB;AAAA,GACrB;AAEA,EAAA,MAAM,WAAA,GAAyB;AAAA,IAC7B,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,UAAA;AAAA,IACZ,QAAA,EAAU,MAAA;AAAA,IACV,GAAA,EAAKA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,IAClB,YAAA,EAAcA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,GAC7B;AAEA,EAAA,MAAM,YAAA,GAA0B;AAAA,IAC9B,SAAA,EAAWA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,IACxB,WAAA,EAAaA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,IAC1B,eAAA,EAAiBA,OAAM,MAAA,CAAO,KAAA;AAAA,IAC9B,iBAAiB,CAAA,CAAE,OAAA;AAAA,IACnB,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAKA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,GACpB;AAEA,EAAA,uBACEM,eAAAA;AAAA,IAACG,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAC,SAAA,EAAW,KAAK,CAAA;AAAA,MACxB,MAAA;AAAA,MACA,iBAAA,EAAkB,MAAA;AAAA,MAClB,kBAAA,EAAoB,YAAY,MAAM,CAAA;AAAA,MAEtC,QAAA,EAAA;AAAA,wBAAAP,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,CAAA,EAAE,EAC1B,QAAA,EAAA,MAAA,oBACCP,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,eACX,QAAA,kBAAAP,cAAAA;AAAA,UAACM,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,cAC9B,QAAA,EAAU,EAAA;AAAA,cACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,cAC9B,OAAO,CAAA,CAAE;AAAA,aACX;AAAA,YAEC,mBAAS,MAAM;AAAA;AAAA,WAEpB,CAAA,EAEJ,CAAA;AAAA,wBAEAM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,CAAA,EAAE,EAClC,QAAA,EAAA;AAAA,0BAAAH,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,WAAA,EAAa,QAAQ,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,OAAA,CAAA,GAAY,MAAA,EAC9D,QAAA,EAAA;AAAA,4BAAAH,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,WAAA,EACV,QAAA,EAAA;AAAA,cAAA,OAAO,MAAA,KAAW,QAAA,IAAY,OAAO,MAAA,KAAW,2BAC/CP,cAAAA;AAAA,gBAACM,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,oBAC9B,QAAA,EAAU,EAAA;AAAA,oBACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,oBAC9B,OAAO,CAAA,CAAE;AAAA,mBACX;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA,eACH,GAEA,MAAA;AAAA,cAED,SAAA,IAAa,IAAA,IAAQ,SAAA,KAAc,KAAA,GAClC,OAAO,cAAc,QAAA,IAAY,OAAO,SAAA,KAAc,QAAA,mBACpDE,cAAAA;AAAA,gBAACM,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,oBAC9B,QAAA,EAAU,EAAA;AAAA,oBACV,OAAO,CAAA,CAAE;AAAA,mBACX;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA,kBAGH,SAAA,GAEA;AAAA,aAAA,EACN,CAAA;AAAA,YACC,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,IAAA,KAAS,2BAC3CE,cAAAA;AAAA,cAACM,gBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,kBAC9B,QAAA,EAAU,EAAA;AAAA,kBACV,YAAY,EAAA,GAAK,IAAA;AAAA,kBACjB,OAAO,CAAA,CAAE;AAAA,iBACX;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA,aACH,GAEA;AAAA,WAAA,EAEJ,CAAA;AAAA,UAEC,OAAA,IAAW,IAAA,IAAQ,OAAA,KAAY,KAAA,mBAC9BE,cAAAA;AAAA,YAACO,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,aAAA,EAAe,KAAA;AAAA,gBACf,UAAA,EAAY,QAAA;AAAA,gBACZ,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,gBAClB,UAAA,EAAYA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,gBACzB,iBAAA,EAAmB;AAAA,eACrB;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH,GACE,IAAA;AAAA,UAEH,QAAA,IAAY,IAAA,IAAQ,QAAA,KAAa,KAAA,mBAChCE,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,YAAA,EAAe,QAAA,EAAS,CAAA,GACnC;AAAA,SAAA,EACN;AAAA;AAAA;AAAA,GACF;AAEJ;AC5KA,SAAS,UAAA,CAAW,EAAE,IAAA,EAAM,KAAA,EAAM,EAA0C;AAC1E,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,MAAA,EAAQ,KAAA;AAAA,IACR,WAAA,EAAa,CAAA;AAAA,IACb,aAAA,EAAe,OAAA;AAAA,IACf,cAAA,EAAgB;AAAA,GAClB;AACA,EAAA,uBACEH,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAClD,QAAA,EAAA;AAAA,IAAA,IAAA,KAAS,MAAA,oBACRN,eAAAA,CAAAC,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAL,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAK,GAAG,MAAA,EAAQ,CAAA;AAAA,sBAC3Cd,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,WAAA,EAAa,GAAG,MAAA,EAAQ,CAAA;AAAA,sBAChCX,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,WAAA,EAAa,GAAG,MAAA,EAAQ;AAAA,KAAA,EAClC,CAAA;AAAA,IAED,IAAA,KAAS,SAAA,oBACRP,eAAAA,CAAAC,qBAAA,EACE,QAAA,EAAA;AAAA,sBAAAL,eAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,iCAAA,EAAmC,GAAG,MAAA,EAAQ,CAAA;AAAA,sBACtDX,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,gBAAA,EAAkB,GAAG,MAAA,EAAQ;AAAA,KAAA,EACvC,CAAA;AAAA,IAED,IAAA,KAAS,SAAA,oBACRP,eAAAA,CAAAC,qBAAA,EACE,QAAA,EAAA;AAAA,sBAAAL,cAAAA;AAAA,QAACW,UAAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,0EAAA;AAAA,UACD,GAAG;AAAA;AAAA,OACN;AAAA,sBACAX,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,SAAA,EAAW,GAAG,MAAA,EAAQ,CAAA;AAAA,sBAC9BX,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,YAAA,EAAc,GAAG,MAAA,EAAQ;AAAA,KAAA,EACnC,CAAA;AAAA,IAED,IAAA,KAAS,QAAA,oBACRP,eAAAA,CAAAC,qBAAA,EACE,QAAA,EAAA;AAAA,sBAAAL,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAK,GAAG,MAAA,EAAQ,CAAA;AAAA,sBAC3Cd,cAAAA,CAACuB,UAAA,EAAA,EAAK,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,EAAK,GAAG,MAAA,EAAQ,CAAA;AAAA,sBACjDvB,cAAAA,CAACuB,UAAA,EAAA,EAAK,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAK,GAAG,MAAA,EAAQ;AAAA,KAAA,EACvD;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAGO,SAAS,KAAA,CAAM;AAAA,EACpB,QAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,MAAA;AAAA,EACV,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAe;AACb,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMzB,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,IAAA;AAChB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAO5C,EAAA,MAAM,KAAA,GAAoC;AAAA,IACxC,MAAM,EAAE,EAAA,EAAI,EAAE,IAAA,CAAK,GAAG,GAAG,EAAA,EAAI,CAAA,CAAE,IAAA,CAAK,GAAG,GAAG,EAAA,EAAI,CAAA,CAAE,KAAK,EAAE,CAAA,EAAG,OAAO,MAAA,EAAO;AAAA,IACxE,OAAA,EAAS;AAAA,MACP,EAAA,EAAI,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA;AAAA,MACjB,EAAA,EAAI,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA;AAAA,MACjB,EAAA,EAAI,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,MAChB,KAAA,EAAO;AAAA,KACT;AAAA,IACA,OAAA,EAAS;AAAA,MACP,EAAA,EAAI,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA;AAAA,MACjB,EAAA,EAAI,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA;AAAA,MACjB,EAAA,EAAI,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,MAChB,KAAA,EAAO;AAAA,KACT;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,EAAA,EAAI,CAAA,CAAE,MAAA,CAAO,GAAG,CAAA;AAAA,MAChB,EAAA,EAAI,CAAA,CAAE,MAAA,CAAO,GAAG,CAAA;AAAA,MAChB,EAAA,EAAI,CAAA,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,MACf,KAAA,EAAO;AAAA;AACT,GACF;AACA,EAAA,MAAM,IAAA,GAAa,MAAM,OAAO,CAAA;AAEhC,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,aAAA,EAAe,KAAA;AAAA,IACf,GAAA,EAAKJ,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,IAClB,eAAA,EAAiBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,IAC9B,iBAAA,EAAmB,EAAA;AAAA,IACnB,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,IAC3B,iBAAiB,IAAA,CAAK,EAAA;AAAA,IACtB,WAAA,EAAaA,OAAM,MAAA,CAAO,IAAA;AAAA,IAC1B,aAAa,IAAA,CAAK;AAAA,GACpB;AAEA,EAAA,MAAM,UAAA,GAAwB;AAAA,IAC5B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,IAC9B,UAAA,EAAY,EAAA;AAAA,IACZ,OAAO,IAAA,CAAK,EAAA;AAAA,IACZ,YAAA,EAAc,WAAW,CAAA,GAAI;AAAA,GAC/B;AAEA,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,EAAA;AAAA,IACZ,KAAA,EAAO,CAAA,CAAE,OAAA,CAAQ,GAAG;AAAA,GACtB;AAEA,EAAA,uBACEM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,MAAA,EAAO,YAAA,EAAa,iBAAA,EAAkB,OAAA,EAAQ,KAAA,EAAO,CAAC,SAAA,EAAW,KAAK,CAAA,EAC1E,QAAA,EAAA;AAAA,oBAAAP,cAAAA;AAAA,MAACO,gBAAAA;AAAA,MAAA;AAAA,QACC,2BAAA,EAA2B,IAAA;AAAA,QAC3B,yBAAA,EAA0B,qBAAA;AAAA,QAC1B,OAAO,EAAE,aAAA,EAAe,OAAO,UAAA,EAAY,CAAA,EAAG,WAAW,CAAA,EAAE;AAAA,QAE3D,QAAA,kBAAAP,eAAC,UAAA,EAAA,EAAW,IAAA,EAAM,QAAQ,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,EAAA,EAAI;AAAA;AAAA,KACxD;AAAA,oBAEAI,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,CAAA,EAAE,EACjC,QAAA,EAAA;AAAA,MAAA,KAAA,IAAS,IAAA,KACP,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,mBAC7CP,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,UAAA,EAAa,iBAAM,CAAA,mBAEhCN,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,YAAA,EAAc,QAAA,GAAW,CAAA,GAAI,CAAA,EAAE,EAAI,QAAA,EAAA,KAAA,EAAM,CAAA,CAAA;AAAA,MAE3D,QAAA,IAAY,IAAA,KACV,OAAO,QAAA,KAAa,YAAY,OAAO,QAAA,KAAa,QAAA,mBACnDP,eAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,SAAA,EAAY,UAAS,CAAA,GAElC,QAAA;AAAA,KAAA,EAEN,CAAA;AAAA,IAEC,2BACCN,cAAAA;AAAA,MAACG,qBAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAmB,SAAA;AAAA,QACnB,OAAA,EAAS,EAAA;AAAA,QACT,OAAA,EAAS,OAAA;AAAA,QACT,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,QAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,QAC9B,KAAA,EAAO;AAAA,UACL,UAAA,EAAY,CAAA;AAAA,UACZ,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,QAAA;AAAA,UAChB,KAAA,EAAO,EAAA;AAAA,UACP,MAAA,EAAQ,EAAA;AAAA,UACR,SAAA,EAAW,EAAA;AAAA,UACX,YAAA,EAAcL,OAAM,MAAA,CAAO,EAAA;AAAA,UAC3B,WAAA,EAAa,OAAA,GAAUA,MAAAA,CAAM,cAAA,GAAiB,CAAA;AAAA,UAC9C,WAAA,EAAa,OAAA,GAAUA,MAAAA,CAAM,KAAA,CAAM,KAAA,GAAQ,aAAA;AAAA,UAC3C,eAAA,EAAiB;AAAA,SACnB;AAAA,QAEA,QAAA,kBAAAM,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,0BAAAV,cAAAA;AAAA,YAACW,UAAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,YAAA;AAAA,cACF,QAAQ,IAAA,CAAK,EAAA;AAAA,cACb,WAAA,EAAa,CAAA;AAAA,cACb,aAAA,EAAc,OAAA;AAAA,cACd,cAAA,EAAe;AAAA;AAAA,WACjB;AAAA,0BACAX,cAAAA;AAAA,YAACW,UAAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,YAAA;AAAA,cACF,QAAQ,IAAA,CAAK,EAAA;AAAA,cACb,WAAA,EAAa,CAAA;AAAA,cACb,aAAA,EAAc,OAAA;AAAA,cACd,cAAA,EAAe;AAAA;AAAA;AACjB,SAAA,EACF;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;ACpLO,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA,GAAW,KAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP,MAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMb,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,UAAA,GAAaA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AACzC,EAAA,MAAM,SAAA,GAAoB;AAAA,IACxB,SAAS,CAAA,CAAE,OAAA;AAAA,IACX,SAAS,CAAA,CAAE,OAAA;AAAA,IACX,QAAQ,CAAA,CAAE,MAAA;AAAA,IACV,SAAS,CAAA,CAAE;AAAA,IACX,OAAyB,CAAA;AAE3B,EAAA,MAAM,gBAAgB,KAAA,IAAS,IAAA;AAC/B,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,KAAA,CAAM,KAAA,IAAS,CAAC,CAAC,CAAC,CAAA;AAE7D,EAAA,MAAM,kBAAA,GAAqB,gBACvB,MAAA,GACA,EAAE,KAAK,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAI;AACjC,EAAA,MAAM,kBAAA,GAAqB,aAAA,GAAgB,EAAE,IAAA,EAAM,MAAK,GAAI,MAAA;AAE5D,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAM,CAAA,GAAI,EAAA;AACV,IAAA,MAAM,aAAA,GAAgB,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,CAAA;AACpC,IAAA,MAAM,GAAA,GAAM,EAAA;AACZ,IAAA,MAAM,aAAa,aAAA,GACf,aAAA,GAAgB,GAAA,GAChB,aAAA,IAAiB,IAAI,GAAA,GAAM,GAAA,CAAA;AAE/B,IAAA,uBACEM,eAAAA;AAAA,MAACG,gBAAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAU,IAAA;AAAA,QACV,iBAAA,EAAkB,aAAA;AAAA,QAClB,kBAAA;AAAA,QACA,kBAAA;AAAA,QACA,kBAAA;AAAA,QACA,MAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,GAAA;AAAA,YACP,MAAA,EAAQ,GAAA;AAAA,YACR,UAAA,EAAY,QAAA;AAAA,YACZ,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAP,cAAAA,CAACU,sBAAAA,EAAA,EAAI,KAAA,EAAO,KAAK,MAAA,EAAQ,GAAA,EAAK,OAAA,EAAQ,WAAA,EAEpC,0BAAAN,eAAAA,CAACoB,OAAA,EAAA,EAAE,QAAA,EAAU,GAAA,EAAK,QAAO,QAAA,EACvB,QAAA,EAAA;AAAA,4BAAAxB,cAAAA;AAAA,cAACc,YAAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,EAAA;AAAA,gBACJ,EAAA,EAAI,EAAA;AAAA,gBACJ,CAAA;AAAA,gBACA,IAAA,EAAK,MAAA;AAAA,gBACL,MAAA,EAAQ,UAAA;AAAA,gBACR,WAAA,EAAa;AAAA;AAAA,aACf;AAAA,4BACAd,cAAAA;AAAA,cAACc,YAAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,EAAA;AAAA,gBACJ,EAAA,EAAI,EAAA;AAAA,gBACJ,CAAA;AAAA,gBACA,IAAA,EAAK,MAAA;AAAA,gBACL,MAAA,EAAQ,SAAA;AAAA,gBACR,WAAA,EAAa,CAAA;AAAA,gBACb,aAAA,EAAc,OAAA;AAAA,gBACd,eAAA,EAAiB,aAAA;AAAA,gBACjB,gBAAA,EAAkB;AAAA;AAAA;AACpB,WAAA,EACF,CAAA,EACF,CAAA;AAAA,UACC,SAAA,IAAa,CAAC,aAAA,oBACbd,cAAAA;AAAA,YAACO,gBAAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAc,MAAA;AAAA,cACd,KAAA,EAAO;AAAA,gBACL,QAAA,EAAU,UAAA;AAAA,gBACV,GAAA,EAAK,CAAA;AAAA,gBACL,IAAA,EAAM,CAAA;AAAA,gBACN,KAAA,EAAO,CAAA;AAAA,gBACP,MAAA,EAAQ,CAAA;AAAA,gBACR,UAAA,EAAY,QAAA;AAAA,gBACZ,cAAA,EAAgB;AAAA,eAClB;AAAA,cAEA,0BAAAH,eAAAA,CAACE,gBAAAA,EAAA,EAAK,KAAA,EAAO,kBAAA,CAAmBR,MAAK,CAAA,EAAI,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBAAI;AAAA,eAAA,EAAC;AAAA;AAAA;AAChD;AAAA;AAAA,KAEJ;AAAA,EAEJ;AAEA,EAAA,MAAM,UAAA,GAAa,IAAA,KAAS,IAAA,GAAO,CAAA,GAAI,CAAA;AAEvC,EAAA,MAAM,YAAuB,aAAA,GACzB;AAAA,IACE,KAAA,EAAO,KAAA;AAAA,IACP,MAAA,EAAQ,MAAA;AAAA,IACR,eAAA,EAAiB,SAAA;AAAA,IACjB,YAAA,EAAcA,OAAM,MAAA,CAAO;AAAA,GAC7B,GACA;AAAA,IACE,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,IACb,MAAA,EAAQ,MAAA;AAAA,IACR,eAAA,EAAiB,SAAA;AAAA,IACjB,YAAA,EAAcA,OAAM,MAAA,CAAO;AAAA,GAC7B;AAEJ,EAAA,uBACEM,eAAAA;AAAA,IAACG,gBAAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAU,IAAA;AAAA,MACV,iBAAA,EAAkB,aAAA;AAAA,MAClB,kBAAA;AAAA,MACA,kBAAA;AAAA,MACA,kBAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA,EAAO,CAAC,EAAE,aAAA,EAAe,KAAA,EAAO,YAAY,QAAA,EAAU,GAAA,EAAK,EAAA,EAAG,EAAG,KAAK,CAAA;AAAA,MAEtE,QAAA,EAAA;AAAA,wBAAAP,cAAAA;AAAA,UAACO,gBAAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,KAAA,CAAA,GAAU,MAAA;AAAA,YACpC,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,MAAA,EAAQ,UAAA;AAAA,cACR,eAAA,EAAiB,UAAA;AAAA,cACjB,YAAA,EAAcT,OAAM,MAAA,CAAO,IAAA;AAAA,cAC3B,QAAA,EAAU;AAAA,aACZ;AAAA,YAEA,QAAA,kBAAAE,cAAAA,CAACO,gBAAAA,EAAA,EAAK,MAAA,EAAQ,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,KAAA,CAAA,GAAU,MAAA,EAAW,KAAA,EAAO,SAAA,EAAW;AAAA;AAAA,SACzE;AAAA,QACC,SAAA,IAAa,CAAC,aAAA,oBACbH,eAAAA,CAACE,kBAAA,EAAK,KAAA,EAAO,gBAAA,CAAiBR,MAAK,CAAA,EAAI,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAI;AAAA,SAAA,EAAC;AAAA;AAAA;AAAA,GAEhD;AAEJ;AAEA,SAAS,iBAAiBA,MAAAA,EAA6B;AACrD,EAAA,OAAO;AAAA,IACL,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,IAC9B,KAAA,EAAOA,OAAM,KAAA,CAAM,SAAA;AAAA,IACnB,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AACF;AAEA,SAAS,mBAAmBA,MAAAA,EAA6B;AACvD,EAAA,OAAO;AAAA,IACL,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,IAC9B,KAAA,EAAOA,OAAM,KAAA,CAAM;AAAA,GACrB;AACF;AC1KO,SAAS,OAAA,CAAQ;AAAA,EACtB,IAAA,GAAO,EAAA;AAAA,EACP,KAAA;AAAA,EACA,KAAA,GAAQ,SAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,QAAA,GAAW,KAAA,IAASA,MAAAA,CAAM,KAAA,CAAM,OAAA;AACtC,EAAA,MAAM,UAAA,GAAaA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAEzC,EAAA,uBACEE,cAAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAU,IAAA;AAAA,MACV,iBAAA,EAAkB,aAAA;AAAA,MAClB,kBAAA,EAAoB,KAAA;AAAA,MACpB,kBAAA,EAAoB,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,MACjC,KAAA,EAAO,CAAC,EAAE,KAAA,EAAO,MAAM,MAAA,EAAQ,IAAA,IAAQ,KAAK,CAAA;AAAA,MAE5C,QAAA,kBAAAH,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACvD,QAAA,EAAA;AAAA,wBAAAV,cAAAA;AAAA,UAACc,YAAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAO,eAAA;AAAA,YACP,EAAA,EAAI,EAAA;AAAA,YACJ,EAAA,EAAI,EAAA;AAAA,YACJ,CAAA,EAAG,CAAA;AAAA,YACH,MAAA,EAAQ,UAAA;AAAA,YACR,WAAA,EAAa;AAAA;AAAA,SACf;AAAA,wBACAd,cAAAA;AAAA,UAACW,UAAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAO,aAAA;AAAA,YACP,CAAA,EAAE,sBAAA;AAAA,YACF,MAAA,EAAQ,QAAA;AAAA,YACR,WAAA,EAAa,CAAA;AAAA,YACb,aAAA,EAAc;AAAA;AAAA;AAChB,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;AChDO,SAAS,UAAA,CAAW;AAAA,EACzB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMb,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,aAAA,EAAe,QAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,SAAA;AAAA,IACX,eAAA,EAAiBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA;AAAA,IAC9B,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA;AAAA,IAChC,GAAA,EAAK;AAAA,GACP;AAEA,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ,EAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,YAAA,EAAcA,OAAM,MAAA,CAAO,IAAA;AAAA,IAC3B,eAAA,EAAiBA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,EAAE;AAAA,GACvC;AAEA,EAAA,MAAM,UAAA,GAAwB;AAAA,IAC5B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,IAC9B,OAAO,CAAA,CAAE,IAAA;AAAA,IACT,SAAA,EAAW;AAAA,GACb;AAEA,EAAA,MAAM,gBAAA,GAA8B;AAAA,IAClC,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,EAAA;AAAA,IACZ,OAAO,CAAA,CAAE,SAAA;AAAA,IACT,QAAA,EAAU,GAAA;AAAA,IACV,SAAA,EAAW;AAAA,GACb;AAEA,EAAA,MAAM,WAAA,GAAyB;AAAA,IAC7B,SAAA,EAAW;AAAA,GACb;AAKA,EAAA,MAAM,kBAAA,GAAqB,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,MAAA;AAE/D,EAAA,uBACEM,eAAAA;AAAA,IAACG,gBAAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,iBAAA,EAAkB,SAAA;AAAA,MAClB,kBAAA;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MAEN,QAAA,EAAA;AAAA,QAAA,IAAA,mBACCP,eAACO,gBAAAA,EAAA,EAAK,QAAO,kBAAA,EAAmB,KAAA,EAAO,SAAA,EACpC,QAAA,EAAA,IAAA,EACH,CAAA,GACE,IAAA;AAAA,QAEH,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,mBAC7CP,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,UAAA,EAAa,iBAAM,CAAA,GAEhC,KAAA;AAAA,QAGD,eAAe,IAAA,IAAQ,WAAA,KAAgB,QACpC,OAAO,WAAA,KAAgB,YAAY,OAAO,WAAA,KAAgB,QAAA,mBACxDN,eAACM,gBAAAA,EAAA,EAAK,OAAO,gBAAA,EAAmB,QAAA,EAAA,WAAA,EAAY,IAC5C,WAAA,GACF,IAAA;AAAA,QAEH,MAAA,IAAU,IAAA,IAAQ,MAAA,KAAW,KAAA,mBAC5BN,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,WAAA,EAAc,QAAA,EAAA,MAAA,EAAO,CAAA,GAChC;AAAA;AAAA;AAAA,GACN;AAEJ;ACjEA,IAAM,eAAA,GAAoC;AAAA,EACxC,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,WAAA,EAAY;AAAA,EAC/B,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,MAAA,EAAO;AAAA,EAC1B,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,MAAA,EAAO;AAAA,EAC1B,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,MAAA,EAAO;AAAA,EAC1B,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,WAAA;AACrB,CAAA;AAEA,IAAM,MAAA,GAAiC;AAAA,EACrC,CAAA,EAAG,8BAAA;AAAA,EACH,CAAA,EAAG,8BAAA;AAAA,EACH,CAAA,EAAG,kBAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AAEA,SAAS,IAAA,CAAK;AAAA,EACZ,KAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,MAAM,MAAA,GAAS,KAAK,KAAA,GAAQ,IAAA;AAC5B,EAAA,MAAM,OAAA,GAAU,KAAK,KAAA,GAAQ,IAAA;AAC7B,EAAA,uBACEH,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,oBAAAV,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,MAAM,EAAA,GAAK,IAAA,GAAO,MAAA,EAAQ,MAAA,EAAgB,aAAa,GAAA,EAAK,CAAA;AAAA,oBAC5Fd,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,IAAA,EAAM,OAAA,EAAS,CAAA;AAAA,oBAC9Cd,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,IAAA,EAAM,OAAA,EAAS,CAAA;AAAA,oBAC/Cd,cAAAA;AAAA,MAACW,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,IAAK,OAAO,CAAC,CAAA;AAAA,QAC5B,MAAA;AAAA,QACA,WAAA,EAAa,GAAA;AAAA,QACb,aAAA,EAAc;AAAA;AAAA;AAChB,GAAA,EACF,CAAA;AAEJ;AAQO,SAAS,cAAA,CAAe;AAAA,EAC7B,QAAA,GAAW,cAAA;AAAA,EACX,YAAA,GAAe,UAAA;AAAA,EACf,KAAA,GAAQ,qBAAA;AAAA,EACR,MAAA,GAAS,0BAAA;AAAA,EACT,OAAA,GAAU,eAAA;AAAA,EACV,UAAA;AAAA,EACA,WAAA,GAAc,kDAAA;AAAA,EACd,QAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,WAAA,GAAc,KAAA;AAAA,EACd,KAAA,EAAO;AACT,CAAA,EAAwB;AACtB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMb,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAII,iBAAS,WAAW,CAAA;AAC5C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,iBAAwB,IAAI,CAAA;AACxD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,iBAA6B,MAAS,CAAA;AACtE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,iBAAS,EAAE,CAAA;AACzC,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,iBAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAC5D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAEtD,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,IAAI,UAAU,IAAA,EAAM;AACpB,IAAA,QAAA,GAAW,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,CAAA;AACxC,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,OAAA,CAAQ,KAAK,CAAA;AACb,IAAA,OAAA,CAAQ,KAAK,CAAA;AACb,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,WAAA,CAAY,MAAS,CAAA;AACrB,IAAA,UAAA,CAAW,EAAE,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,OAAO,QAAA,KAAa,aAAA;AAE1B,EAAA,MAAM,OAAkB,MAAA,GACpB,EAAE,UAAU,UAAA,EAAY,SAAA,EAAW,cAAa,GAChD;AAAA,IACE,QAAA,EAAU,UAAA;AAAA,IACV,MAAA,EAAQJ,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,IACrB,GAAI,IAAA,GAAO,EAAE,IAAA,EAAMA,OAAM,KAAA,CAAM,CAAC,CAAA,EAAE,GAAI,EAAE,KAAA,EAAOA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAE;AAAA,IAC9D,MAAA,EAAQ;AAAA,GACV;AAEJ,EAAA,MAAM,aAAA,GACJ,MAAA,IAAU,IAAA,GAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU,MAAM,CAAA,EAAG,KAAA,GAAQ,MAAA;AAEpE,EAAA,uBACEM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,OAAO,IAAA,EACV,QAAA,EAAA;AAAA,IAAA,CAAC,wBACAH,eAAAA;AAAA,MAACD,qBAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAoB,YAAA;AAAA,QACpB,kBAAA,EAAoB,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,QACrC,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,QAC3B,OAAA,EAAS,MAAM,kBAAA,CAAmB,IAAI,CAAA;AAAA,QACtC,MAAA,EAAQ,MAAM,kBAAA,CAAmB,KAAK,CAAA;AAAA,QACtC,KAAA,EAAO;AAAA,UACL,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,GAAA,EAAKL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,UAClB,SAAA,EAAW,EAAA;AAAA,UACX,eAAA,EAAiB,EAAA;AAAA,UACjB,iBAAA,EAAmB,EAAA;AAAA,UACnB,YAAA,EAAcA,OAAM,MAAA,CAAO,IAAA;AAAA,UAC3B,aAAaA,MAAAA,CAAM,cAAA;AAAA,UACnB,WAAA,EAAa,eAAA,GAAkB,CAAA,CAAE,KAAA,GAAQ,aAAA;AAAA,UACzC,iBAAiB,CAAA,CAAE,OAAA;AAAA,UACnB,GAAGA,OAAM,MAAA,CAAO;AAAA,SAClB;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAE,cAAAA,CAACU,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,kBAAAV,cAAAA;AAAA,YAACW,UAAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,+DAAA;AAAA,cACF,QAAQ,CAAA,CAAE,SAAA;AAAA,cACV,WAAA,EAAa,CAAA;AAAA,cACb,aAAA,EAAc,OAAA;AAAA,cACd,cAAA,EAAe;AAAA;AAAA,WACjB,EACF,CAAA;AAAA,0BACAX,cAAAA;AAAA,YAACM,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,EAAA;AAAA,gBAC9B,UAAA,EAAY,KAAA;AAAA,gBACZ,QAAA,EAAU,EAAA;AAAA,gBACV,OAAO,CAAA,CAAE;AAAA,eACX;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KACF;AAAA,IAGD,wBACCE,cAAAA;AAAA,MAACO,gBAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,OAAA;AAAA,QAClB,kBAAA,EAAoB,KAAA;AAAA,QACpB,KAAA,EAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,GAAA;AAAA,YACP,OAAA,EAAST,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,YACtB,iBAAiB,CAAA,CAAE,OAAA;AAAA,YACnB,WAAA,EAAaA,OAAM,MAAA,CAAO,IAAA;AAAA,YAC1B,aAAa,CAAA,CAAE,MAAA;AAAA,YACf,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,YAC3B,GAAI,MAAA,GACA,KACA,EAAE,QAAA,EAAU,YAAY,MAAA,EAAQ,CAAA,EAAG,GAAI,IAAA,GAAO,EAAE,IAAA,EAAM,CAAA,KAAM,EAAE,KAAA,EAAO,GAAE;AAAG,WAChF;AAAA,UACAA,OAAM,MAAA,CAAO;AAAA,SACf;AAAA,QAEC,QAAA,EAAA,CAAC,IAAA,mBACAM,eAAAA,CAAAC,qBAAA,EACE,QAAA,EAAA;AAAA,0BAAAD,eAAAA;AAAA,YAACG,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,aAAA,EAAe,KAAA;AAAA,gBACf,cAAA,EAAgB,eAAA;AAAA,gBAChB,UAAA,EAAY,YAAA;AAAA,gBACZ,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,eACpB;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAM,gBAACG,gBAAAA,EAAA,EAAK,OAAO,EAAE,IAAA,EAAM,GAAE,EACrB,QAAA,EAAA;AAAA,kCAAAP,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,IAAA,IACtD,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,kCACAN,cAAAA,CAACM,gBAAAA,EAAA,EAAK,OAAO,EAAE,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,CAAA,CAAE,SAAA,EAAW,SAAA,EAAW,CAAA,IACzD,QAAA,EAAA,MAAA,EACH;AAAA,iBAAA,EACF,CAAA;AAAA,gCACAN,cAAAA;AAAA,kBAACG,qBAAAA;AAAA,kBAAA;AAAA,oBACC,iBAAA,EAAkB,QAAA;AAAA,oBAClB,kBAAA,EAAmB,OAAA;AAAA,oBACnB,OAAA,EAAS,EAAA;AAAA,oBACT,OAAA,EAAS,KAAA;AAAA,oBACT,KAAA,EAAO,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,oBAEpB,QAAA,kBAAAC,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,sCAAAV,cAAAA;AAAA,wBAACW,UAAAA;AAAA,wBAAA;AAAA,0BACC,CAAA,EAAE,YAAA;AAAA,0BACF,QAAQ,CAAA,CAAE,SAAA;AAAA,0BACV,WAAA,EAAa,CAAA;AAAA,0BACb,aAAA,EAAc;AAAA;AAAA,uBAChB;AAAA,sCACAX,cAAAA;AAAA,wBAACW,UAAAA;AAAA,wBAAA;AAAA,0BACC,CAAA,EAAE,YAAA;AAAA,0BACF,QAAQ,CAAA,CAAE,SAAA;AAAA,0BACV,WAAA,EAAa,CAAA;AAAA,0BACb,aAAA,EAAc;AAAA;AAAA;AAChB,qBAAA,EACF;AAAA;AAAA;AACF;AAAA;AAAA,WACF;AAAA,0BAEAX,cAAAA;AAAA,YAACO,gBAAAA;AAAA,YAAA;AAAA,cACC,iBAAA,EAAkB,YAAA;AAAA,cAClB,kBAAA,EAAoB,MAAA;AAAA,cACpB,KAAA,EAAO;AAAA,gBACL,aAAA,EAAe,KAAA;AAAA,gBACf,cAAA,EAAgB,eAAA;AAAA,gBAChB,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,gBAClB,SAAA,EAAWA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,gBACxB,YAAA,EAAc;AAAA,eAChB;AAAA,cAEC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM;AAClB,gBAAA,MAAM,IAAA,GAAO,WAAW,CAAA,CAAE,KAAA;AAC1B,gBAAA,uBACEE,cAAAA;AAAA,kBAACG,qBAAAA;AAAA,kBAAA;AAAA,oBAEC,iBAAA,EAAkB,OAAA;AAAA,oBAClB,oBAAoB,CAAA,CAAE,KAAA;AAAA,oBACtB,kBAAA,EAAoB,EAAE,OAAA,EAAS,IAAA,EAAK;AAAA,oBACpC,OAAA,EAAS,CAAA;AAAA,oBACT,OAAA,EAAS,MAAM,SAAA,CAAU,CAAA,CAAE,KAAK,CAAA;AAAA,oBAChC,KAAA,EAAO;AAAA,sBACL,IAAA,EAAM,CAAA;AAAA,sBACN,UAAA,EAAY,QAAA;AAAA,sBACZ,GAAA,EAAKL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,sBAClB,eAAA,EAAiBA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,qBAChC;AAAA,oBAEA,QAAA,kBAAAE,cAAAA;AAAA,sBAAC,IAAA;AAAA,sBAAA;AAAA,wBACC,OAAO,CAAA,CAAE,KAAA;AAAA,wBACT,EAAA,EAAI,IAAA;AAAA,wBACJ,OAAO,CAAA,CAAE,OAAA;AAAA,wBACT,MAAM,CAAA,CAAE,aAAA;AAAA,wBACR,IAAA,EAAMF,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG;AAAA;AAAA;AAC9B,mBAAA;AAAA,kBAnBK,CAAA,CAAE;AAAA,iBAoBT;AAAA,cAEJ,CAAC;AAAA;AAAA,WACH;AAAA,UACC,aAAA,IAAiB,wBAChBE,cAAAA;AAAA,YAACM,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,SAAA,EAAW,QAAA;AAAA,gBACX,QAAA,EAAU,EAAA;AAAA,gBACV,UAAA,EAAY,KAAA;AAAA,gBACZ,OAAO,CAAA,CAAE,OAAA;AAAA,gBACT,YAAA,EAAc;AAAA,eAChB;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAGD,UAAA,IAAc,IAAA,IAAQ,UAAA,CAAW,MAAA,GAAS,qBACzCN,cAAAA;AAAA,YAACO,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,aAAA,EAAe,KAAA;AAAA,gBACf,QAAA,EAAU,MAAA;AAAA,gBACV,GAAA,EAAK,CAAA;AAAA,gBACL,YAAA,EAAcT,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,eAC7B;AAAA,cAEC,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,GAAA,KAAQ;AACvB,gBAAA,MAAM,QAAQ,QAAA,KAAa,GAAA;AAC3B,gBAAA,uBACEE,cAAAA;AAAA,kBAACG,qBAAAA;AAAA,kBAAA;AAAA,oBAEC,iBAAA,EAAkB,QAAA;AAAA,oBAClB,kBAAA,EAAoB,GAAA;AAAA,oBACpB,kBAAA,EAAoB,EAAE,QAAA,EAAU,KAAA,EAAM;AAAA,oBACtC,OAAA,EAAS,CAAA;AAAA,oBACT,OAAA,EAAS,MACP,WAAA,CAAY,CAAC,MAAO,CAAA,KAAM,GAAA,GAAM,SAAY,GAAI,CAAA;AAAA,oBAElD,KAAA,EAAO;AAAA,sBACL,eAAA,EAAiB,CAAA;AAAA,sBACjB,iBAAA,EAAmB,EAAA;AAAA,sBACnB,YAAA,EAAcL,OAAM,MAAA,CAAO,IAAA;AAAA,sBAC3B,WAAA,EAAaA,OAAM,MAAA,CAAO,IAAA;AAAA,sBAC1B,WAAA,EAAa,KAAA,GAAQ,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,MAAA;AAAA,sBACnC,eAAA,EAAiB,KAAA,GAAQ,CAAA,CAAE,aAAA,GAAgB,CAAA,CAAE;AAAA,qBAC/C;AAAA,oBAEA,QAAA,kBAAAE,cAAAA;AAAA,sBAACM,gBAAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,QAAA,EAAU,EAAA;AAAA,0BACV,UAAA,EAAY,QAAQ,KAAA,GAAQ,KAAA;AAAA,0BAC5B,OAAO,KAAA,GAAQR,MAAAA,CAAM,KAAK,MAAA,CAAO,GAAG,IAAI,CAAA,CAAE;AAAA,yBAC5C;AAAA,wBAEC,QAAA,EAAA;AAAA;AAAA;AACH,mBAAA;AAAA,kBAzBK;AAAA,iBA0BP;AAAA,cAEJ,CAAC;AAAA;AAAA,WACH;AAAA,0BAGFE,cAAAA;AAAA,YAACQ,qBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,OAAA;AAAA,cACP,YAAA,EAAc,UAAA;AAAA,cACd,WAAA;AAAA,cACA,sBAAsB,CAAA,CAAE,UAAA;AAAA,cACxB,SAAA,EAAS,IAAA;AAAA,cACT,aAAA,EAAe,CAAA;AAAA,cACf,kBAAA,EAAoB,WAAA;AAAA,cACpB,OAAA,EAAS,MAAM,eAAA,CAAgB,IAAI,CAAA;AAAA,cACnC,MAAA,EAAQ,MAAM,eAAA,CAAgB,KAAK,CAAA;AAAA,cACnC,KAAA,EAAO;AAAA,gBACL,SAAA,EAAW,EAAA;AAAA,gBACX,iBAAA,EAAmB,KAAA;AAAA,gBACnB,UAAA,EAAYV,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,gBAC9B,QAAA,EAAU,EAAA;AAAA,gBACV,OAAO,CAAA,CAAE,IAAA;AAAA,gBACT,eAAA,EAAiB,CAAA;AAAA,gBACjB,iBAAA,EAAmB,EAAA;AAAA,gBACnB,WAAA,EAAaA,OAAM,MAAA,CAAO,EAAA;AAAA,gBAC1B,WAAA,EAAa,YAAA,GAAe,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,MAAA;AAAA,gBAC1C,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,gBAC3B,iBAAiB,CAAA,CAAE;AAAA;AACrB;AAAA,WACF;AAAA,0BAEAE,cAAAA;AAAA,YAACG,qBAAAA;AAAA,YAAA;AAAA,cACC,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAmB,eAAA;AAAA,cACnB,kBAAA,EAAoB,EAAE,QAAA,EAAU,MAAA,IAAU,IAAA,EAAK;AAAA,cAC/C,UAAU,MAAA,IAAU,IAAA;AAAA,cACpB,OAAA,EAAS,MAAA;AAAA,cACT,KAAA,EAAO;AAAA,gBACL,SAAA,EAAW,EAAA;AAAA,gBACX,SAAA,EAAWL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,gBACxB,UAAA,EAAY,QAAA;AAAA,gBACZ,cAAA,EAAgB,QAAA;AAAA,gBAChB,eAAA,EAAiB,EAAA;AAAA,gBACjB,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,gBAC3B,eAAA,EACE,UAAU,IAAA,GAAOA,MAAAA,CAAM,KAAK,OAAA,CAAQ,GAAG,IAAI,CAAA,CAAE;AAAA,eACjD;AAAA,cAEA,QAAA,kBAAAE,cAAAA;AAAA,gBAACM,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,EAAA;AAAA,oBAC9B,UAAA,EAAY,KAAA;AAAA,oBACZ,QAAA,EAAU,EAAA;AAAA,oBACV,OAAO,CAAA,CAAE;AAAA,mBACX;AAAA,kBACD,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AACF,SAAA,EACF,oBAEAM,eAAAA,CAACG,kBAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,QAAA,EAAU,iBAAiBT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAG,iBAAA,EAAmBA,OAAM,KAAA,CAAM,CAAC,GAAE,EACtG,QAAA,EAAA;AAAA,0BAAAE,cAAAA;AAAA,YAACO,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,KAAA,EAAO,EAAA;AAAA,gBACP,MAAA,EAAQ,EAAA;AAAA,gBACR,UAAA,EAAY,QAAA;AAAA,gBACZ,cAAA,EAAgB,QAAA;AAAA,gBAChB,YAAA,EAAcT,OAAM,MAAA,CAAO,IAAA;AAAA,gBAC3B,iBAAiB,CAAA,CAAE,aAAA;AAAA,gBACnB,YAAA,EAAcA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,eAC7B;AAAA,cAEA,QAAA,kBAAAE,cAAAA,CAACU,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,kBAAAV,cAAAA;AAAA,gBAACW,UAAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EAAE,iBAAA;AAAA,kBACF,QAAQ,CAAA,CAAE,OAAA;AAAA,kBACV,WAAA,EAAa,GAAA;AAAA,kBACb,aAAA,EAAc,OAAA;AAAA,kBACd,cAAA,EAAe;AAAA;AAAA,eACjB,EACF;AAAA;AAAA,WACF;AAAA,0BACAX,cAAAA,CAACM,gBAAAA,EAAA,EAAK,OAAO,EAAE,QAAA,EAAU,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,IAAA,IAAQ,QAAA,EAAA,WAAA,EAEjE,CAAA;AAAA,0BACAN,cAAAA;AAAA,YAACM,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,QAAA,EAAU,EAAA;AAAA,gBACV,OAAO,CAAA,CAAE,SAAA;AAAA,gBACT,SAAA,EAAWR,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,gBACxB,SAAA,EAAW;AAAA,eACb;AAAA,cACD,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACAE,cAAAA;AAAA,YAACG,qBAAAA;AAAA,YAAA;AAAA,cACC,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAmB,MAAA;AAAA,cACnB,OAAA,EAAS,CAAA;AAAA,cACT,OAAA,EAAS,KAAA;AAAA,cACT,KAAA,EAAO;AAAA,gBACL,SAAA,EAAWL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,gBACxB,eAAA,EAAiB,CAAA;AAAA,gBACjB,iBAAA,EAAmB,EAAA;AAAA,gBACnB,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,gBAC3B,iBAAiB,CAAA,CAAE;AAAA,eACrB;AAAA,cAEA,QAAA,kBAAAE,cAAAA;AAAA,gBAACM,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,EAAA;AAAA,oBAC9B,UAAA,EAAY,KAAA;AAAA,oBACZ,QAAA,EAAU,EAAA;AAAA,oBACV,OAAO,CAAA,CAAE;AAAA,mBACX;AAAA,kBACD,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AACF,SAAA,EACF;AAAA;AAAA;AAEJ,GAAA,EAEJ,CAAA;AAEJ;AC5bA,IAAM,YAAY,EAAE,EAAA,EAAI,KAAK,EAAA,EAAI,GAAA,EAAK,IAAI,GAAA,EAAI;AAEvC,SAAS,KAAA,CAAM;AAAA,EACpB,IAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA;AAAA,EACA,KAAA,EAAO;AACT,CAAA,EAAe;AACb,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,uBACEE,cAAAA,CAACY,iBAAAA,EAAA,EAAQ,OAAA,EAAO,IAAA,EAAC,WAAA,EAAW,IAAA,EAAC,aAAA,EAAc,MAAA,EAAO,cAAA,EAAgB,OAAA,EAChE,QAAA,kBAAAZ,cAAAA;AAAA,IAACG,qBAAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,MAAM,OAAA,IAAU;AAAA,MACzB,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,CAAA;AAAA,QACN,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,QAAA;AAAA,QAChB,OAAA,EAASL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,QACtB,eAAA,EAAiB;AAAA,OACnB;AAAA,MAEA,QAAA,kBAAAM,eAAAA;AAAA,QAACG,gBAAAA;AAAA,QAAA;AAAA,UACC,wBAAA,EAAwB,IAAA;AAAA,UACxB,2BAA2B,MAAM,IAAA;AAAA,UACjC,KAAA,EAAO;AAAA,YACL;AAAA,cACE,KAAA,EAAO,MAAA;AAAA,cACP,QAAA,EAAU,UAAU,IAAI,CAAA;AAAA,cACxB,iBAAiB,CAAA,CAAE,OAAA;AAAA,cACnB,YAAA,EAAcT,MAAAA,CAAM,MAAA,CAAO,KAAK;AAAA,aAClC;AAAA,YACAA,OAAM,MAAA,CAAO;AAAA,WACf;AAAA,UAEE,QAAA,EAAA;AAAA,YAAA,CAAA,KAAA,IAAS,IAAA,IAAQ,CAAC,SAAA,qBAClBM,eAAAA;AAAA,cAACG,gBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,aAAA,EAAe,KAAA;AAAA,kBACf,UAAA,EAAY,YAAA;AAAA,kBACZ,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,kBAClB,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,kBAChC,UAAA,EAAYA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,iBAC3B;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAM,gBAACG,gBAAAA,EAAA,EAAK,OAAO,EAAE,IAAA,EAAM,GAAE,EACpB,QAAA,EAAA;AAAA,oBAAA,KAAA,IAAS,SACP,OAAO,KAAA,KAAU,YAAY,OAAO,KAAA,KAAU,2BAC7CP,cAAAA;AAAA,sBAACM,gBAAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,0BAC9B,QAAA,EAAU,EAAA;AAAA,0BACV,UAAA,EAAY,KAAA;AAAA,0BACZ,UAAA,EAAY,EAAA;AAAA,0BACZ,OAAO,CAAA,CAAE;AAAA,yBACX;AAAA,wBAEC,QAAA,EAAA;AAAA;AAAA,qBACH,GAEA,KAAA,CAAA;AAAA,oBAEH,WAAA,IAAe,SACb,OAAO,WAAA,KAAgB,YAAY,OAAO,WAAA,KAAgB,2BACzDE,cAAAA;AAAA,sBAACM,gBAAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,0BAC9B,QAAA,EAAU,EAAA;AAAA,0BACV,UAAA,EAAY,EAAA;AAAA,0BACZ,SAAA,EAAWA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,0BAC5B,OAAO,CAAA,CAAE;AAAA,yBACX;AAAA,wBAEC,QAAA,EAAA;AAAA;AAAA,qBACH,GAEA,WAAA;AAAA,mBAAA,EAEN,CAAA;AAAA,kBACC,CAAC,6BACAE,cAAAA;AAAA,oBAACG,qBAAAA;AAAA,oBAAA;AAAA,sBACC,iBAAA,EAAkB,QAAA;AAAA,sBAClB,kBAAA,EAAmB,OAAA;AAAA,sBACnB,OAAA,EAAS,MAAM,OAAA,IAAU;AAAA,sBACzB,KAAA,EAAO;AAAA,wBACL,KAAA,EAAO,EAAA;AAAA,wBACP,MAAA,EAAQ,EAAA;AAAA,wBACR,UAAA,EAAY,QAAA;AAAA,wBACZ,cAAA,EAAgB,QAAA;AAAA,wBAChB,YAAA,EAAcL,OAAM,MAAA,CAAO;AAAA,uBAC7B;AAAA,sBAEA,QAAA,kBAAAM,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,wCAAAV,cAAAA;AAAA,0BAACW,UAAAA;AAAA,0BAAA;AAAA,4BACC,CAAA,EAAE,YAAA;AAAA,4BACF,QAAQ,CAAA,CAAE,SAAA;AAAA,4BACV,WAAA,EAAa,CAAA;AAAA,4BACb,aAAA,EAAc,OAAA;AAAA,4BACd,cAAA,EAAe;AAAA;AAAA,yBACjB;AAAA,wCACAX,cAAAA;AAAA,0BAACW,UAAAA;AAAA,0BAAA;AAAA,4BACC,CAAA,EAAE,YAAA;AAAA,4BACF,QAAQ,CAAA,CAAE,SAAA;AAAA,4BACV,WAAA,EAAa,CAAA;AAAA,4BACb,aAAA,EAAc,OAAA;AAAA,4BACd,cAAA,EAAe;AAAA;AAAA;AACjB,uBAAA,EACF;AAAA;AAAA;AACF;AAAA;AAAA,aAEJ;AAAA,YAED,QAAA,IAAY,wBACXX,cAAAA;AAAA,cAACoB,sBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,EAAE,SAAA,EAAW,GAAA,EAAI;AAAA,gBACxB,uBAAuB,EAAE,OAAA,EAAStB,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAE;AAAA,gBAEhD,iBAAO,QAAA,KAAa,QAAA,IAAY,OAAO,QAAA,KAAa,2BACnDE,cAAAA;AAAA,kBAACM,gBAAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,sBAC9B,QAAA,EAAU,EAAA;AAAA,sBACV,UAAA,EAAY,EAAA;AAAA,sBACZ,OAAO,CAAA,CAAE;AAAA,qBACX;AAAA,oBAEC;AAAA;AAAA,iBACH,GAEA;AAAA;AAAA,aAEJ;AAAA,YAED,MAAA,IAAU,wBACTE,cAAAA;AAAA,cAACO,gBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,aAAA,EAAe,KAAA;AAAA,kBACf,cAAA,EAAgB,UAAA;AAAA,kBAChB,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,kBACtB,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,kBAChC,aAAA,EAAeA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,kBAC5B,YAAY,QAAA,IAAY,IAAA,GAAO,CAAA,GAAIA,MAAAA,CAAM,MAAM,CAAC;AAAA,iBAClD;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA;AAEJ;AAAA,GACF,EACF,CAAA;AAEJ;AClKA,IAAM,GAAA,GAAM,CAAA;AAOL,SAAS,OAAA,CAAQ;AAAA,EACtB,KAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA;AAAA,EACA,KAAA,EAAO;AACT,CAAA,EAAiB;AACf,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAII,iBAAS,KAAK,CAAA;AAEtC,EAAA,MAAM,UAAA,GAAkD;AAAA,IACtD,KAAK,EAAE,MAAA,EAAQ,QAAQ,YAAA,EAAc,GAAA,EAAK,WAAW,QAAA,EAAS;AAAA,IAC9D,QAAQ,EAAE,GAAA,EAAK,QAAQ,SAAA,EAAW,GAAA,EAAK,WAAW,QAAA,EAAS;AAAA,IAC3D,IAAA,EAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,WAAA,EAAa,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,cAAA,EAAgB,QAAA,EAAS;AAAA,IACrF,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAA,EAAY,GAAA,EAAK,GAAA,EAAK,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,cAAA,EAAgB,QAAA;AAAS,GACtF;AACA,EAAA,MAAM,cAAA,GAA4B,WAAW,SAAS,CAAA;AAEtD,EAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAI,CAAA;AAC/B,EAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,KAAK,CAAA;AAChC,EAAA,MAAM,SAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAEtC,EAAA,uBACEE,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,SAAA,EAAW,YAAA,EAAa,EAC3D,QAAA,EAAA;AAAA,oBAAAP,cAAAA;AAAA,MAACG,qBAAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,CAAC,EAAA,KAA8B,MAAA,EAAO;AAAA,QAC/C,WAAA,EAAa,IAAA;AAAA,QACb,OAAA,EAAS,IAAA;AAAA,QACT,MAAA,EAAQ,IAAA;AAAA,QACR,kBAAA,EAAoB,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,QAEpC;AAAA;AAAA,KACH;AAAA,IAEC,wBACCH,cAAAA;AAAA,MAACO,gBAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,OAAA;AAAA,QAClB,kBAAA,EAAoB,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,MAAA;AAAA,QACxD,MAAA,EAAO,qBAAA;AAAA,QACP,aAAA,EAAc,MAAA;AAAA,QACd,KAAA,EAAO;AAAA,UACL;AAAA,YACE,QAAA,EAAU,UAAA;AAAA,YACV,MAAA,EAAQ,GAAA;AAAA,YACR,eAAA,EAAiBT,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,YACvC,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,YAC3B,eAAA,EAAiB,CAAA;AAAA,YACjB,iBAAA,EAAmB;AAAA,WACrB;AAAA,UACA,cAAA;AAAA,UACAA,OAAM,MAAA,CAAO;AAAA,SACf;AAAA,QAEC,iBAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU,2BAC7CE,cAAAA;AAAA,UAACM,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,KAAA,EAAOR,OAAM,KAAA,CAAM,OAAA;AAAA,cACnB,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,cAC9B,QAAA,EAAU,EAAA;AAAA,cACV,UAAA,EAAY,EAAA;AAAA,cACZ,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH,GAEA;AAAA;AAAA;AAEJ,GAAA,EAEJ,CAAA;AAEJ;AC7DO,SAAS,IAAA,CAAK;AAAA,EACnB,OAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA,GAAQ,MAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAc;AACZ,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAII,iBAAS,KAAK,CAAA;AAEtC,EAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,KAAK,CAAA;AAEjC,EAAA,MAAM,aAAA,GACH,OAAA,CAAQ,KAAA,CACN,kBAAA,IAAsB,EAAC;AAE5B,EAAA,MAAM,SAAA,GAAYuB,wBAAAA,CAAM,YAAA,CAAmC,OAAA,EAAS;AAAA,IAClE,SAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,IAChC,kBAAA,EAAoB,EAAE,GAAG,aAAA,EAAe,UAAU,IAAA;AAAK,GACxD,CAAA;AAED,EAAA,MAAM,UAAA,GAAmC;AAAA,IACvC;AAAA,MACE,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,SAAA,EAAW,KAAA,KAAU,OAAA,GAAU,UAAA,GAAa,YAAA;AAAA,MAC5C,iBAAiB,CAAA,CAAE,OAAA;AAAA,MACnB,aAAa,CAAA,CAAE,MAAA;AAAA,MACf,WAAA,EAAa3B,OAAM,MAAA,CAAO,IAAA;AAAA,MAC1B,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,MAC3B,OAAA,EAASA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,MAC1B,SAAA,EAAWA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI;AAAA,KAC9B;AAAA,IACAA,OAAM,MAAA,CAAO;AAAA,GACf;AAEA,EAAA,uBACEM,gBAACG,gBAAAA,EAAA,EAAK,OAAO,EAAE,SAAA,EAAW,cAAa,EACpC,QAAA,EAAA;AAAA,IAAA,SAAA;AAAA,oBACDP,cAAAA;AAAA,MAACY,iBAAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,IAAA;AAAA,QACT,WAAA,EAAW,IAAA;AAAA,QACX,aAAA,EAAc,MAAA;AAAA,QACd,cAAA,EAAgB,KAAA;AAAA,QAEhB,QAAA,kBAAAZ,cAAAA;AAAA,UAACG,qBAAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,YACrC,OAAA,EAAS,KAAA;AAAA,YACT,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,UAAA,EAAY,KAAA,KAAU,OAAA,GAAU,UAAA,GAAa,YAAA;AAAA,cAC7C,cAAA,EAAgB,YAAA;AAAA,cAChB,UAAA,EAAYL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cACzB,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cAChC,eAAA,EAAiB;AAAA,aACnB;AAAA,YAEA,QAAA,kBAAAE,cAAAA;AAAA,cAACO,gBAAAA;AAAA,cAAA;AAAA,gBACC,MAAA,EAAQ,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,gBACrC,iBAAA,EAAkB,MAAA;AAAA,gBAClB,2BAA2B,MAAM,IAAA;AAAA,gBACjC,KAAA,EAAO,UAAA;AAAA,gBAEN,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,sBAChBP,cAAAA;AAAA,kBAAC,OAAA;AAAA,kBAAA;AAAA,oBAEC,IAAA;AAAA,oBACA,KAAA,EAAOF,MAAAA;AAAA,oBACP,QAAQ,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,MAAA,EAAS,CAAC,CAAA,CAAA,GAAK,MAAA;AAAA,oBACzC,UAAU,MAAM;AACd,sBAAA,IAAA,CAAK,OAAA,IAAU;AACf,sBAAA,KAAA,EAAM;AAAA,oBACR;AAAA,mBAAA;AAAA,kBAPK;AAAA,iBASR;AAAA;AAAA;AACH;AAAA;AACF;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AASA,SAAS,QAAQ,EAAE,IAAA,EAAM,OAAAA,MAAAA,EAAO,QAAA,EAAU,QAAO,EAAiB;AAChE,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,QAAA,GAAW,KAAK,QAAA,IAAY,KAAA;AAClC,EAAA,MAAM,MAAA,GAAS,KAAK,MAAA,IAAU,KAAA;AAE9B,EAAA,MAAM,EAAA,GAAK,MAAA,GAAS,CAAA,CAAE,MAAA,GAAS,CAAA,CAAE,IAAA;AACjC,EAAA,MAAM,SAAS,MAAA,GAAS,CAAA,CAAE,SAASA,MAAAA,CAAM,IAAA,CAAK,QAAQ,GAAG,CAAA;AAEzD,EAAA,MAAM,WAAW,CAAC;AAAA,IAChB;AAAA,GACF,KAE4B;AAC1B,IAAA,IAAI,EAAA,GAAa,aAAA;AACjB,IAAA,IAAI,OAAA,IAAW,CAAC,QAAA,EAAU;AACxB,MAAA,EAAA,GAAK,SAAS,CAAA,CAAE,YAAA,GAAeA,MAAAA,CAAM,IAAA,CAAK,QAAQ,GAAG,CAAA;AAAA,IACvD;AACA,IAAA,OAAO;AAAA,MACL,aAAA,EAAe,KAAA;AAAA,MACf,UAAA,EAAY,QAAA;AAAA,MACZ,GAAA,EAAKA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,MACtB,KAAA,EAAO,MAAA;AAAA,MACP,SAAA,EAAW,EAAA;AAAA,MACX,eAAA,EAAiBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,MAC9B,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,MACpC,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,MAC3B,eAAA,EAAiB,EAAA;AAAA,MACjB,OAAA,EAAS,WAAW,GAAA,GAAM;AAAA,KAC5B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,UAAA,GAAwB;AAAA,IAC5B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,EAAA;AAAA,IACZ,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA,EAAO;AAAA,GACT;AAEA,EAAA,MAAM,SAAA,GACJ,OAAO,IAAA,CAAK,KAAA,KAAU,QAAA,IAAY,OAAO,IAAA,CAAK,KAAA,KAAU,QAAA,GACpD,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,GACjB,MAAA;AAEN,EAAA,uBACEM,eAAAA;AAAA,IAACD,qBAAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,iBAAA,EAAkB,UAAA;AAAA,MAClB,kBAAA,EAAoB,SAAA;AAAA,MACpB,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,MAC/B,QAAA;AAAA,MACA,SAAS,MAAM;AACb,QAAA,IAAI,CAAC,UAAU,QAAA,EAAS;AAAA,MAC1B,CAAA;AAAA,MACA,KAAA,EAAO,QAAA;AAAA,MAEN,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,IAAA,IAAQ,IAAA,oBACZH,cAAAA,CAACO,kBAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,UAAU,cAAA,EAAgB,QAAA,EAAS,EAC3D,QAAA,EAAA,OAAO,KAAK,IAAA,KAAS,QAAA,IAAY,OAAO,IAAA,CAAK,IAAA,KAAS,QAAA,mBACrDP,cAAAA,CAACM,kBAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,QAAO,EAAI,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAA,GAE3C,KAAK,IAAA,EAET,CAAA;AAAA,QAED,OAAO,IAAA,CAAK,KAAA,KAAU,YAAY,OAAO,IAAA,CAAK,UAAU,QAAA,mBACvDN,eAACM,gBAAAA,EAAA,EAAK,OAAO,UAAA,EAAY,aAAA,EAAe,GACrC,QAAA,EAAA,IAAA,CAAK,KAAA,EACR,IAEA,IAAA,CAAK;AAAA;AAAA;AAAA,GAET;AAEJ;AC9KA,SAAS,SAAA,CAAU,EAAE,OAAA,EAAS,KAAA,EAAM,EAA6C;AAC/E,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,MAAA,EAAQ,KAAA;AAAA,IACR,WAAA,EAAa,CAAA;AAAA,IACb,aAAA,EAAe,OAAA;AAAA,IACf,cAAA,EAAgB,OAAA;AAAA,IAChB,IAAA,EAAM;AAAA,GACR;AACA,EAAA,uBACEF,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAClD,QAAA,EAAA;AAAA,IAAA,OAAA,KAAY,MAAA,oBACXN,eAAAA,CAAAC,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAL,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAK,GAAG,MAAA,EAAQ,CAAA;AAAA,sBAC3Cd,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,WAAA,EAAa,GAAG,MAAA,EAAQ,CAAA;AAAA,sBAChCX,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,WAAA,EAAa,GAAG,MAAA,EAAQ;AAAA,KAAA,EAClC,CAAA;AAAA,IAED,OAAA,KAAY,SAAA,oBACXP,eAAAA,CAAAC,qBAAA,EACE,QAAA,EAAA;AAAA,sBAAAL,eAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,iCAAA,EAAmC,GAAG,MAAA,EAAQ,CAAA;AAAA,sBACtDX,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,gBAAA,EAAkB,GAAG,MAAA,EAAQ;AAAA,KAAA,EACvC,CAAA;AAAA,IAED,OAAA,KAAY,SAAA,oBACXP,eAAAA,CAAAC,qBAAA,EACE,QAAA,EAAA;AAAA,sBAAAL,cAAAA;AAAA,QAACW,UAAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,0EAAA;AAAA,UACD,GAAG;AAAA;AAAA,OACN;AAAA,sBACAX,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,SAAA,EAAW,GAAG,MAAA,EAAQ,CAAA;AAAA,sBAC9BX,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,YAAA,EAAc,GAAG,MAAA,EAAQ;AAAA,KAAA,EACnC,CAAA;AAAA,IAED,OAAA,KAAY,QAAA,oBACXP,eAAAA,CAAAC,qBAAA,EACE,QAAA,EAAA;AAAA,sBAAAL,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAK,GAAG,MAAA,EAAQ,CAAA;AAAA,sBAC3Cd,cAAAA,CAACuB,UAAAA,EAAA,EAAK,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,EAAK,GAAG,MAAA,EAAQ,CAAA;AAAA,sBACjDvB,cAAAA,CAACuB,UAAAA,EAAA,EAAK,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAK,GAAG,MAAA,EAAQ;AAAA,KAAA,EACvD;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAEO,SAAS,KAAA,CAAM;AAAA,EACpB,OAAA,GAAU,MAAA;AAAA,EACV,KAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,MAAA;AAAA,EACA;AACF,CAAA,EAAe;AACb,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMzB,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA4B,iBAAA,CAAU,MAAM;AACd,IAAA,IAAI,QAAA,IAAY,IAAA,IAAQ,OAAA,IAAW,IAAA,EAAM;AACzC,IAAA,MAAM,EAAA,GAAK,UAAA,CAAW,MAAM,OAAA,IAAW,QAAQ,CAAA;AAC/C,IAAA,OAAO,MAAM,aAAa,EAAE,CAAA;AAAA,EAC9B,CAAA,EAAG,CAAC,QAAA,EAAU,OAAO,CAAC,CAAA;AAEtB,EAAA,MAAM,KAAA,GAAoC;AAAA,IACxC,IAAA,EAAM,EAAE,GAAA,EAAK5B,MAAAA,CAAM,KAAK,IAAA,CAAK,GAAG,CAAA,EAAG,IAAA,EAAM,MAAA,EAAO;AAAA,IAChD,OAAA,EAAS,EAAE,GAAA,EAAKA,MAAAA,CAAM,KAAK,OAAA,CAAQ,GAAG,CAAA,EAAG,IAAA,EAAM,SAAA,EAAU;AAAA,IACzD,OAAA,EAAS,EAAE,GAAA,EAAKA,MAAAA,CAAM,KAAK,OAAA,CAAQ,GAAG,CAAA,EAAG,IAAA,EAAM,SAAA,EAAU;AAAA,IACzD,MAAA,EAAQ,EAAE,GAAA,EAAKA,MAAAA,CAAM,KAAK,MAAA,CAAO,GAAG,CAAA,EAAG,IAAA,EAAM,QAAA;AAAS,GACxD;AACA,EAAA,MAAM,IAAA,GAAa,MAAM,OAAO,CAAA;AAEhC,EAAA,MAAM,IAAA,GAAkB;AAAA,IACtB,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,YAAA;AAAA,IACZ,GAAA,EAAKA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,IAClB,KAAA,EAAO,GAAA;AAAA,IACP,QAAA,EAAU,MAAA;AAAA,IACV,UAAA,EAAY,EAAA;AAAA,IACZ,aAAA,EAAe,EAAA;AAAA,IACf,WAAA,EAAaA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,IAC1B,YAAA,EAAc,EAAA;AAAA,IACd,iBAAiB,CAAA,CAAE,OAAA;AAAA,IACnB,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,IAC3B,eAAA,EAAiB,CAAA;AAAA,IACjB,iBAAiB,IAAA,CAAK;AAAA,GACxB;AAEA,EAAA,uBACEM,eAAAA;AAAA,IAACG,gBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,OAAA;AAAA,MAClB,MAAA;AAAA,MACA,OAAO,CAAC,IAAA,EAAMT,MAAAA,CAAM,MAAA,CAAO,GAAG,KAAK,CAAA;AAAA,MAEnC,QAAA,EAAA;AAAA,wBAAAE,eAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,WAAW,CAAA,EAAE,EAC1B,QAAA,kBAAAP,cAAAA,CAAC,aAAU,OAAA,EAAS,IAAA,CAAK,MAAM,KAAA,EAAO,IAAA,CAAK,KAAK,CAAA,EAClD,CAAA;AAAA,wBACAI,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,CAAA,EAAE,EACjC,QAAA,EAAA;AAAA,UAAA,KAAA,IAAS,SACP,OAAO,KAAA,KAAU,YAAY,OAAO,KAAA,KAAU,2BAC7CP,cAAAA;AAAA,YAACM,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,gBAC9B,QAAA,EAAU,EAAA;AAAA,gBACV,UAAA,EAAY,KAAA;AAAA,gBACZ,OAAO,CAAA,CAAE;AAAA,eACX;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH,GAEA,KAAA,CAAA;AAAA,UAEH,QAAA,IAAY,SACV,OAAO,QAAA,KAAa,YAAY,OAAO,QAAA,KAAa,2BACnDE,cAAAA;AAAA,YAACM,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,gBAC9B,QAAA,EAAU,EAAA;AAAA,gBACV,UAAA,EAAY,EAAA;AAAA,gBACZ,OAAO,CAAA,CAAE,SAAA;AAAA,gBACT,SAAA,EAAW,KAAA,IAAS,IAAA,GAAO,CAAA,GAAI;AAAA,eACjC;AAAA,cAEC;AAAA;AAAA,WACH,GAEA,QAAA;AAAA,SAAA,EAEN,CAAA;AAAA,QACC,OAAA,IAAW,wBACVE,cAAAA;AAAA,UAACG,qBAAAA;AAAA,UAAA;AAAA,YACC,iBAAA,EAAkB,QAAA;AAAA,YAClB,kBAAA,EAAmB,SAAA;AAAA,YACnB,OAAA,EAAS,MAAM,OAAA,EAAQ;AAAA,YACvB,OAAA,EAAS,EAAA;AAAA,YACT,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,EAAA;AAAA,cACP,MAAA,EAAQ,EAAA;AAAA,cACR,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB;AAAA,aAClB;AAAA,YAEA,QAAA,kBAAAC,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,8BAAAV,cAAAA;AAAA,gBAACW,UAAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EAAE,YAAA;AAAA,kBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,kBAC9B,WAAA,EAAa,CAAA;AAAA,kBACb,aAAA,EAAc,OAAA;AAAA,kBACd,cAAA,EAAe;AAAA;AAAA,eACjB;AAAA,8BACAE,cAAAA;AAAA,gBAACW,UAAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EAAE,YAAA;AAAA,kBACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,kBAC9B,WAAA,EAAa,CAAA;AAAA,kBACb,aAAA,EAAc,OAAA;AAAA,kBACd,cAAA,EAAe;AAAA;AAAA;AACjB,aAAA,EACF;AAAA;AAAA;AACF;AAAA;AAAA,GAEJ;AAEJ;AC1KA,IAAM6B,IAAAA,GAAM,EAAA;AACZ,IAAM,KAAA,GAAQ,EAAA;AAOP,SAAS,OAAA,CAAQ;AAAA,EACtB,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,KAAA,GAAQ,GAAA;AAAA,EACR,WAAA,GAAc,KAAA;AAAA,EACd,KAAA,EAAO;AACT,CAAA,EAAiB;AACf,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAM7B,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAII,iBAAS,WAAW,CAAA;AAG5C,EAAA,MAAM,WAAsB,EAAE,QAAA,EAAU,UAAA,EAAY,MAAA,EAAQ,IAAI,KAAA,EAAM;AACtE,EAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,IAAA,QAAA,CAAS,GAAA,GAAM,MAAA;AACf,IAAA,QAAA,CAAS,SAAA,GAAYyB,IAAAA;AACrB,IAAA,QAAA,CAAS,SAAA,GAAY,QAAA;AAAA,EACvB,CAAA,MAAA,IAAW,cAAc,KAAA,EAAO;AAC9B,IAAA,QAAA,CAAS,MAAA,GAAS,MAAA;AAClB,IAAA,QAAA,CAAS,YAAA,GAAeA,IAAAA;AACxB,IAAA,QAAA,CAAS,SAAA,GAAY,QAAA;AAAA,EACvB,CAAA,MAAA,IAAW,cAAc,OAAA,EAAS;AAChC,IAAA,QAAA,CAAS,IAAA,GAAO,MAAA;AAChB,IAAA,QAAA,CAAS,UAAA,GAAaA,IAAAA;AAAA,EACxB,CAAA,MAAO;AACL,IAAA,QAAA,CAAS,KAAA,GAAQ,MAAA;AACjB,IAAA,QAAA,CAAS,WAAA,GAAcA,IAAAA;AAAA,EACzB;AAGA,EAAA,MAAM,KAAA,GAAmB;AAAA,IACvB,QAAA,EAAU,UAAA;AAAA,IACV,KAAA,EAAO,KAAA;AAAA,IACP,MAAA,EAAQ,KAAA;AAAA,IACR,iBAAiB,CAAA,CAAE,OAAA;AAAA,IACnB,cAAA,EAAgB7B,OAAM,MAAA,CAAO,IAAA;AAAA,IAC7B,eAAA,EAAiBA,OAAM,MAAA,CAAO,IAAA;AAAA,IAC9B,gBAAgB,CAAA,CAAE,MAAA;AAAA,IAClB,iBAAiB,CAAA,CAAE,MAAA;AAAA,IACnB,SAAA,EAAW,CAAC,EAAE,MAAA,EAAQ,SAAS;AAAA,GACjC;AACA,EAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,IAAA,KAAA,CAAM,GAAA,GAAM,CAAC,KAAA,GAAQ,CAAA,GAAI,CAAA;AACzB,IAAA,KAAA,CAAM,IAAA,GAAO,KAAA,GAAQ,CAAA,GAAI,KAAA,GAAQ,CAAA;AAAA,EACnC,CAAA,MAAA,IAAW,cAAc,KAAA,EAAO;AAC9B,IAAA,KAAA,CAAM,MAAA,GAAS,CAAC,KAAA,GAAQ,CAAA,GAAI,CAAA;AAC5B,IAAA,KAAA,CAAM,IAAA,GAAO,KAAA,GAAQ,CAAA,GAAI,KAAA,GAAQ,CAAA;AACjC,IAAA,KAAA,CAAM,SAAA,GAAY,CAAC,EAAE,MAAA,EAAQ,UAAU,CAAA;AAAA,EACzC,CAAA,MAAA,IAAW,cAAc,OAAA,EAAS;AAChC,IAAA,KAAA,CAAM,IAAA,GAAO,CAAC,KAAA,GAAQ,CAAA,GAAI,CAAA;AAC1B,IAAA,KAAA,CAAM,GAAA,GAAM,KAAA;AACZ,IAAA,KAAA,CAAM,SAAA,GAAY,CAAC,KAAA,GAAQ,CAAA;AAC3B,IAAA,KAAA,CAAM,SAAA,GAAY,CAAC,EAAE,MAAA,EAAQ,UAAU,CAAA;AAAA,EACzC,CAAA,MAAO;AACL,IAAA,KAAA,CAAM,KAAA,GAAQ,CAAC,KAAA,GAAQ,CAAA,GAAI,CAAA;AAC3B,IAAA,KAAA,CAAM,GAAA,GAAM,KAAA;AACZ,IAAA,KAAA,CAAM,SAAA,GAAY,CAAC,KAAA,GAAQ,CAAA;AAC3B,IAAA,KAAA,CAAM,SAAA,GAAY,CAAC,EAAE,MAAA,EAAQ,UAAU,CAAA;AAAA,EACzC;AAEA,EAAA,MAAM,UAAA,GAAwB;AAAA,IAC5B,GAAG,QAAA;AAAA,IACH,iBAAiB,CAAA,CAAE,OAAA;AAAA,IACnB,WAAA,EAAaA,OAAM,MAAA,CAAO,IAAA;AAAA,IAC1B,aAAa,CAAA,CAAE,MAAA;AAAA,IACf,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,IAC3B,OAAA,EAASA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,GACxB;AAEA,EAAA,uBACEM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,SAAA,EAAW,YAAA,EAAa,EAC3D,QAAA,EAAA;AAAA,oBAAAP,cAAAA;AAAA,MAACG,qBAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAoB,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,QACrC,SAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,QAChC,KAAA,EAAO,EAAE,SAAA,EAAW,YAAA,EAAa;AAAA,QAEhC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IACC,wBACCC,eAAAA;AAAA,MAACG,gBAAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAO,oBAAA;AAAA,QACP,IAAA,EAAK,QAAA;AAAA,QACL,kBAAA,EAAoB,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,MAAA;AAAA,QACxD,KAAA,EAAO,CAAC,UAAA,EAAYT,MAAAA,CAAM,OAAO,CAAC,CAAA;AAAA,QAElC,QAAA,EAAA;AAAA,0BAAAE,cAAAA;AAAA,YAACO,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,KAAA;AAAA,cACP,2BAAA,EAA2B,IAAA;AAAA,cAC3B,yBAAA,EAA0B;AAAA;AAAA,WAC5B;AAAA,UACC,KAAA,IAAS,SACP,OAAO,KAAA,KAAU,YAAY,OAAO,KAAA,KAAU,2BAC7CP,cAAAA;AAAA,YAACM,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,gBAC9B,QAAA,EAAU,EAAA;AAAA,gBACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,gBAC9B,OAAO,CAAA,CAAE,IAAA;AAAA,gBACT,YAAA,EAAcA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI;AAAA,eACjC;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH,GAEA,KAAA,CAAA;AAAA,UAEH,OAAO,QAAA,KAAa,QAAA,IAAY,OAAO,QAAA,KAAa,2BACnDE,cAAAA;AAAA,YAACM,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,gBAC9B,QAAA,EAAU,EAAA;AAAA,gBACV,UAAA,EAAY,EAAA;AAAA,gBACZ,OAAO,CAAA,CAAE;AAAA,eACX;AAAA,cAEC;AAAA;AAAA,WACH,GAEA;AAAA;AAAA;AAAA;AAEJ,GAAA,EAEJ,CAAA;AAEJ;ACrGO,SAAS,KAAA,CAAuC;AAAA,EACrD,OAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA;AAAA,EAEV,OAAO,MAAA,GAAS,IAAA;AAAA,EAChB,KAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,MAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,YAAA,GAA0B;AAAA,IAC9B,KAAA,EAAO,MAAA;AAAA,IACP,QAAA,EAAU,QAAA;AAAA,IACV,iBAAiB,CAAA,CAAE,OAAA;AAAA,IACnB,WAAA,EAAaA,OAAM,MAAA,CAAO,IAAA;AAAA,IAC1B,aAAa,CAAA,CAAE,MAAA;AAAA,IACf,YAAA,EAAcA,OAAM,MAAA,CAAO;AAAA,GAC7B;AAEA,EAAA,MAAM,eAAA,GAA6B;AAAA,IACjC,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,IAC9B,aAAA,EAAe,GAAA;AAAA,IACf,aAAA,EAAe,WAAA;AAAA,IACf,OAAO,CAAA,CAAE;AAAA,GACX;AAEA,EAAA,MAAM,aAAA,GAA2B;AAAA,IAC/B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,OAAO,CAAA,CAAE;AAAA,GACX;AAGA,EAAA,MAAM,SAAA,GAAY,CAAC,GAAA,KACjB,OAAO,IAAI,KAAA,KAAU,QAAA,GACjB,EAAE,KAAA,EAAO,GAAA,CAAI,OAAO,QAAA,EAAU,CAAA,EAAG,YAAY,CAAA,EAAE,GAC/C,EAAE,IAAA,EAAM,CAAA,EAAG,WAAW,CAAA,EAAE;AAE9B,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KACnB,KAAA,KAAU,UAAU,UAAA,GAAa,KAAA,KAAU,WAAW,QAAA,GAAW,YAAA;AAEnE,EAAA,uBACEE,cAAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,iBAAA,EAAkB,MAAA;AAAA,MAClB,KAAA,EAAO,CAAC,YAAA,EAAc,KAAK,CAAA;AAAA,MAE3B,QAAA,kBAAAH,eAAAA;AAAA,QAACgB,sBAAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAU,IAAA;AAAA,UACV,8BAAA,EAAgC,KAAA;AAAA,UAChC,qBAAA,EAAuB,EAAE,QAAA,EAAU,CAAA,EAAG,eAAe,QAAA,EAAS;AAAA,UAG9D,QAAA,EAAA;AAAA,4BAAApB,cAAAA;AAAA,cAACO,gBAAAA;AAAA,cAAA;AAAA,gBACC,iBAAA,EAAkB,QAAA;AAAA,gBAClB,KAAA,EAAO;AAAA,kBACL,aAAA,EAAe,KAAA;AAAA,kBACf,iBAAiB,CAAA,CAAE,aAAA;AAAA,kBACnB,iBAAA,EAAmBT,OAAM,MAAA,CAAO,IAAA;AAAA,kBAChC,mBAAmB,CAAA,CAAE;AAAA,iBACvB;AAAA,gBAEC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,qBACZE,cAAAA;AAAA,kBAACO,gBAAAA;AAAA,kBAAA;AAAA,oBAEC,KAAA,EAAO;AAAA,sBACL;AAAA,wBACE,eAAA,EAAiBT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,wBAC9B,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,wBAChC,UAAA,EAAY,WAAA,CAAY,GAAA,CAAI,KAAK;AAAA,uBACnC;AAAA,sBACA,UAAU,GAAG;AAAA,qBACf;AAAA,oBAEC,QAAA,EAAA,OAAO,IAAI,MAAA,KAAW,QAAA,IAAY,OAAO,GAAA,CAAI,MAAA,KAAW,2BACvDE,cAAAA;AAAA,sBAACM,gBAAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO,CAAC,eAAA,EAAiB,EAAE,WAAW,GAAA,CAAI,KAAA,IAAS,QAAQ,CAAA;AAAA,wBAC3D,aAAA,EAAe,CAAA;AAAA,wBAEd,QAAA,EAAA,GAAA,CAAI;AAAA;AAAA,wBAGP,GAAA,CAAI;AAAA,mBAAA;AAAA,kBAlBD,GAAA,CAAI;AAAA,iBAqBZ;AAAA;AAAA,aACH;AAAA,YAGC,IAAA,CAAK,MAAA,KAAW,CAAA,mBACfN,cAAAA;AAAA,cAACO,gBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,eAAA,EAAiBT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,kBAC9B,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,kBAChC,UAAA,EAAY,QAAA;AAAA,kBACZ,cAAA,EAAgB;AAAA,iBAClB;AAAA,gBAEC,mBAAS,IAAA,GACR,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,mBAC5CE,cAAAA,CAACM,kBAAA,EAAK,KAAA,EAAO,CAAC,aAAA,EAAe,EAAE,KAAA,EAAO,CAAA,CAAE,SAAA,EAAW,GAAI,QAAA,EAAA,KAAA,EAAM,CAAA,GAE7D,KAAA,mBAGFN,eAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,CAAC,eAAe,EAAE,KAAA,EAAO,EAAE,SAAA,EAAW,GAAG,QAAA,EAAA,YAAA,EAAU;AAAA;AAAA,aAEpE,GAEA,IAAA,CAAK,GAAA,CAAI,CAAC,KAAK,EAAA,KAAO;AACpB,cAAA,MAAM,MAAA,GAAS,EAAA,KAAO,IAAA,CAAK,MAAA,GAAS,CAAA;AACpC,cAAA,MAAM,QAAQ,OAAA,IAAW,EAAA,GAAK,CAAA,KAAM,CAAA,GAAI,EAAE,aAAA,GAAgB,aAAA;AAE1D,cAAA,uBACEN,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBAEC,MAAA,EAAQ,aAAa,EAAE,CAAA,CAAA;AAAA,kBACvB,KAAA,EAAO;AAAA,oBACL,aAAA,EAAe,KAAA;AAAA,oBACf,eAAA,EAAiB,KAAA;AAAA,oBACjB,iBAAA,EAAmB,MAAA,GAAS,CAAA,GAAIT,MAAAA,CAAM,MAAA,CAAO,IAAA;AAAA,oBAC7C,iBAAA,EAAmB,MAAA,GAAS,aAAA,GAAgB,CAAA,CAAE;AAAA,mBAChD;AAAA,kBAEC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,KAAQ;AACpB,oBAAA,MAAM,OAAA,GAA2B,IAAI,MAAA,GACjC,GAAA,CAAI,OAAO,GAAG,CAAA,GACd,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA;AAEf,oBAAA,uBACEE,cAAAA;AAAA,sBAACO,gBAAAA;AAAA,sBAAA;AAAA,wBAEC,KAAA,EAAO;AAAA,0BACL;AAAA,4BACE,eAAA,EAAiBT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,4BAC9B,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,4BAChC,UAAA,EAAY,WAAA,CAAY,GAAA,CAAI,KAAK;AAAA,2BACnC;AAAA,0BACA,UAAU,GAAG;AAAA,yBACf;AAAA,wBAEC,QAAA,EAAA,OAAO,YAAY,QAAA,IAAY,OAAO,YAAY,QAAA,mBACjDE,eAACM,gBAAAA,EAAA,EAAK,OAAO,CAAC,aAAA,EAAe,EAAE,SAAA,EAAW,GAAA,CAAI,SAAS,MAAA,EAAQ,CAAA,EAC5D,QAAA,EAAA,OAAA,EACH,CAAA,GAEA;AAAA,uBAAA;AAAA,sBAfG,GAAA,CAAI;AAAA,qBAiBX;AAAA,kBAEJ,CAAC;AAAA,iBAAA;AAAA,gBAnCI;AAAA,eAoCP;AAAA,YAEJ,CAAC;AAAA;AAAA;AAAA;AAEL;AAAA,GACF;AAEJ;AClMA,SAAS,UAAA,CACP,MACA,SAAA,EACiB;AACjB,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,SAAS,QAAA,EAAU;AACxD,IAAA,uBAAON,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,WAAY,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,EACvC;AACA,EAAA,OAAO,IAAA;AACT;AAGO,SAAS,SAAA,CAAU;AAAA,EACxB,KAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,cAAc,EAAC;AAAA,EACf,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMR,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAII,iBAAmB,WAAW,CAAA;AACtD,EAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KACd,OAAA;AAAA,IAAQ,CAAC,QACP,GAAA,CAAI,QAAA,CAAS,CAAC,CAAA,GACV,GAAA,CAAI,OAAO,CAAC,CAAA,KAAM,MAAM,CAAC,CAAA,GACzB,WACE,CAAC,GAAG,KAAK,CAAC,CAAA,GACV,CAAC,CAAC;AAAA,GACV;AAEF,EAAA,MAAM,UAAA,GAAwB;AAAA,IAC5B,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAYJ,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,OAAO,CAAA,CAAE;AAAA,GACX;AAEA,EAAA,MAAM,YAAA,GAA0B;AAAA,IAC9B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,EAAA;AAAA,IACZ,OAAO,CAAA,CAAE;AAAA,GACX;AAEA,EAAA,uBACEE,cAAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL;AAAA,UACE,WAAA,EAAaT,OAAM,MAAA,CAAO,IAAA;AAAA,UAC1B,aAAa,CAAA,CAAE,MAAA;AAAA,UACf,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,UAC3B,QAAA,EAAU,QAAA;AAAA,UACV,iBAAiB,CAAA,CAAE;AAAA,SACrB;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,EAAI,CAAA,KAAM;AACpB,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA;AACrC,QAAA,MAAM,QAAQ,OAAO,EAAA,CAAG,KAAA,KAAU,QAAA,GAAW,GAAG,KAAA,GAAQ,MAAA;AACxD,QAAA,uBACEM,eAAAA;AAAA,UAACG,gBAAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EACE,CAAA,GACI,EAAE,cAAA,EAAgBT,MAAAA,CAAM,OAAO,IAAA,EAAM,cAAA,EAAgB,CAAA,CAAE,OAAA,EAAQ,GAC/D,MAAA;AAAA,YAGN,QAAA,EAAA;AAAA,8BAAAM,eAAAA;AAAA,gBAACD,qBAAAA;AAAA,gBAAA;AAAA,kBACC,iBAAA,EAAkB,QAAA;AAAA,kBAClB,kBAAA,EAAoB,KAAA;AAAA,kBACpB,kBAAA,EAAoB,EAAE,QAAA,EAAU,MAAA,EAAO;AAAA,kBACvC,OAAA,EAAS,MAAM,MAAA,CAAO,EAAA,CAAG,KAAK,CAAA;AAAA,kBAC9B,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,MAAO;AAAA,oBACvB,aAAA,EAAe,KAAA;AAAA,oBACf,UAAA,EAAY,QAAA;AAAA,oBACZ,cAAA,EAAgB,eAAA;AAAA,oBAChB,GAAA,EAAKL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,oBAClB,KAAA,EAAO,MAAA;AAAA,oBACP,SAAA,EAAW,EAAA;AAAA,oBACX,eAAA,EAAiBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,oBAC9B,iBAAA,EAAmB,EAAA;AAAA,oBACnB,eAAA,EAAiB,MAAA,GACbA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA,GACrB,OAAA,GACEA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,IACtB,CAAA,CAAE;AAAA,mBACV,CAAA;AAAA,kBAEC,QAAA,EAAA;AAAA,oBAAA,UAAA,CAAW,EAAA,CAAG,OAAO,UAAU,CAAA;AAAA,oCAChCE,cAAAA;AAAA,sBAACO,gBAAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,WAAW,CAAC,EAAE,QAAQ,MAAA,GAAS,QAAA,GAAW,QAAQ;AAAA,yBACpD;AAAA,wBAEA,QAAA,kBAAAP,cAAAA,CAACU,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,kBAAAV,cAAAA;AAAA,0BAACW,UAAAA;AAAA,0BAAA;AAAA,4BACC,CAAA,EAAE,cAAA;AAAA,4BACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,4BAC9B,WAAA,EAAa,CAAA;AAAA,4BACb,aAAA,EAAc,OAAA;AAAA,4BACd,cAAA,EAAe;AAAA;AAAA,yBACjB,EACF;AAAA;AAAA;AACF;AAAA;AAAA,eACF;AAAA,cACC,0BACCE,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,UAAA,EAAY,CAAA;AAAA,oBACZ,iBAAA,EAAmB,EAAA;AAAA,oBACnB,aAAA,EAAe,EAAA;AAAA,oBACf,iBAAiB,CAAA,CAAE;AAAA,mBACrB;AAAA,kBAEC,QAAA,EAAA,UAAA,CAAW,EAAA,CAAG,OAAA,EAAS,YAAY;AAAA;AAAA;AACtC;AAAA,WAAA;AAAA,UAvDG,EAAA,CAAG;AAAA,SAyDV;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ;ACpIA,IAAM,QAAA,GAAW,QAAA;AAOjB,SAAS,OAAA,CAAQ,EAAE,GAAA,EAAK,KAAA,EAAM,EAA4C;AACxE,EAAA,uBACEP,cAAAA,CAACU,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,kBAAAV,cAAAA;AAAA,IAACW,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,GAAA,KAAQ,MAAA,GAAS,gBAAA,GAAmB,eAAA;AAAA,MACvC,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA,EAAa,CAAA;AAAA,MACb,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAGO,SAAS,UAAA,CAAW;AAAA,EACzB,IAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,CAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMb,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAwB,IAAI,CAAA;AAG1D,EAAA,MAAM,QAAqB,EAAC;AAC5B,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,OAAO,QAAQ,CAAA;AACtC,EAAA,MAAM,KAAK,IAAA,CAAK,GAAA,CAAI,SAAA,GAAY,CAAA,EAAG,OAAO,QAAQ,CAAA;AAClD,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,EAAA,IAAI,EAAA,GAAK,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,QAAQ,CAAA;AAC/B,EAAA,KAAA,IAAS,IAAI,EAAA,EAAI,CAAA,IAAK,IAAI,CAAA,EAAA,EAAK,KAAA,CAAM,KAAK,CAAC,CAAA;AAC3C,EAAA,IAAI,EAAA,GAAK,SAAA,GAAY,CAAA,EAAG,KAAA,CAAM,KAAK,QAAQ,CAAA;AAC3C,EAAA,IAAI,SAAA,GAAY,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,SAAS,CAAA;AAEvC,EAAA,MAAM,UAAA,GAAa,CAAC,MAAA,MAAgC;AAAA,IAClD,UAAA,EAAYJ,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,SAASA,MAAAA,CAAM,IAAA,CAAK,OAAO,QAAA,GAAWA,MAAAA,CAAM,KAAK,MAAA,CAAO,MAAA;AAAA,IACpE,OAAO,MAAA,GAASA,MAAAA,CAAM,KAAK,MAAA,CAAO,GAAG,IAAI,CAAA,CAAE;AAAA,GAC7C,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAChB,MAAA,EACA,OAAA,EACA,WACA,QAAA,KACc;AACd,IAAA,MAAM,SAAA,GACJ,aAAa,CAAC,QAAA,GACV,EAAE,WAAA,EAAa,CAAA,CAAE,KAAA,EAAO,WAAA,EAAaA,MAAAA,CAAM,cAAA,KAC3C,EAAE,WAAA,EAAa,SAAS,CAAA,CAAE,OAAA,GAAU,EAAE,MAAA,EAAQ,WAAA,EAAaA,MAAAA,CAAM,MAAA,CAAO,IAAA,EAAK;AACnF,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,EAAA;AAAA,MACV,MAAA,EAAQ,EAAA;AAAA,MACR,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,MAChC,aAAA,EAAe,KAAA;AAAA,MACf,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAgB,QAAA;AAAA,MAChB,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,MAC3B,eAAA,EAAiB,MAAA,GACbA,MAAAA,CAAM,IAAA,CAAK,OAAO,EAAE,CAAA,GACpB,OAAA,IAAW,CAAC,WACVA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,IACtB,CAAA,CAAE,OAAA;AAAA,MACR,OAAA,EAAS,WAAW,GAAA,GAAM,CAAA;AAAA,MAC1B,GAAG;AAAA,KACL;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,GAAA,KAAyB;AAC5C,IAAA,MAAM,QAAA,GAAW,GAAA,KAAQ,MAAA,GAAS,IAAA,IAAQ,IAAI,IAAA,IAAQ,SAAA;AACtD,IAAA,MAAM,GAAA,GAAM,GAAA;AACZ,IAAA,uBACEE,cAAAA;AAAA,MAACG,qBAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAoB,GAAA;AAAA,QACpB,kBAAA,EAAoB,EAAE,QAAA,EAAS;AAAA,QAC/B,QAAA;AAAA,QACA,OAAA,EAAS,MAAM,QAAA,CAAS,GAAA,KAAQ,SAAS,IAAA,GAAO,CAAA,GAAI,OAAO,CAAC,CAAA;AAAA,QAC5D,OAAA,EAAS,MAAM,UAAA,CAAW,GAAG,CAAA;AAAA,QAC7B,MAAA,EAAQ,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,QAC7B,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAChB,UAAU,KAAA,EAAO,OAAA,EAAS,OAAA,KAAY,GAAA,EAAK,QAAQ,CAAA;AAAA,QAGrD,0BAAAH,cAAAA,CAAC,OAAA,EAAA,EAAQ,GAAA,EAAU,KAAA,EAAO,EAAE,IAAA,EAAM;AAAA;AAAA,KACpC;AAAA,EAEJ,CAAA;AAEA,EAAA,uBACEI,eAAAA;AAAA,IAACG,gBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,MAAA;AAAA,MAClB,kBAAA,EAAmB,YAAA;AAAA,MACnB,KAAA,EAAO;AAAA,QACL,EAAE,aAAA,EAAe,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,KAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA,EAAE;AAAA,QACtE;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,WAAA,CAAY,MAAM,CAAA;AAAA,QAClB,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACnB,UAAA,IAAI,MAAM,QAAA,EAAU;AAClB,YAAA,uBACEE,cAAAA;AAAA,cAACO,gBAAAA;AAAA,cAAA;AAAA,gBAEC,KAAA,EAAO;AAAA,kBACL,QAAA,EAAU,EAAA;AAAA,kBACV,aAAA,EAAe,KAAA;AAAA,kBACf,cAAA,EAAgB;AAAA,iBAClB;AAAA,gBAEA,QAAA,kBAAAP,cAAAA;AAAA,kBAACM,gBAAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,sBAC9B,OAAO,CAAA,CAAE,UAAA;AAAA,sBACT,SAAA,EAAW;AAAA,qBACb;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA;AACH,eAAA;AAAA,cAfK,YAAY,CAAC,CAAA;AAAA,aAgBpB;AAAA,UAEJ;AACA,UAAA,MAAM,SAAS,CAAA,KAAM,IAAA;AACrB,UAAA,MAAM,GAAA,GAAM,QAAQ,CAAC,CAAA,CAAA;AACrB,UAAA,uBACEE,cAAAA;AAAA,YAACG,qBAAAA;AAAA,YAAA;AAAA,cAEC,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAoB,QAAQ,CAAC,CAAA,CAAA;AAAA,cAC7B,kBAAA,EAAoB,EAAE,QAAA,EAAU,MAAA,EAAO;AAAA,cACvC,OAAA,EAAS,MAAM,QAAA,CAAS,CAAC,CAAA;AAAA,cACzB,OAAA,EAAS,MAAM,UAAA,CAAW,GAAG,CAAA;AAAA,cAC7B,MAAA,EAAQ,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,cAC7B,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAChB,UAAU,MAAA,EAAQ,OAAA,EAAS,OAAA,KAAY,GAAA,EAAK,KAAK,CAAA;AAAA,cAGnD,QAAA,kBAAAH,eAACM,gBAAAA,EAAA,EAAK,OAAO,UAAA,CAAW,MAAM,GAAI,QAAA,EAAA,CAAA,EAAE;AAAA,aAAA;AAAA,YAX/B;AAAA,WAYP;AAAA,QAEJ,CAAC,CAAA;AAAA,QACA,YAAY,MAAM;AAAA;AAAA;AAAA,GACrB;AAEJ;ACjIA,SAASsB,QAAAA,CAAQ,EAAE,KAAA,EAAM,EAAsB;AAC7C,EAAA,uBACE5B,cAAAA;AAAA,IAACU,sBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAA;AAAA,MACP,MAAA,EAAQ,EAAA;AAAA,MACR,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,kBAAA,EAAmB,MAAA;AAAA,MAEnB,QAAA,kBAAAV,cAAAA;AAAA,QAACW,UAAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,eAAA;AAAA,UACF,MAAA,EAAQ,KAAA;AAAA,UACR,WAAA,EAAa,CAAA;AAAA,UACb,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe;AAAA;AAAA;AACjB;AAAA,GACF;AAEJ;AAGA,SAAS,SAAS,KAAA,EAA4C;AAC5D,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,OAAO,UAAU,QAAA,GACjD,MAAA,CAAO,KAAK,CAAA,GACZ,MAAA;AACN;AAOO,SAAS,IAAA,CAAK;AAAA,EACnB,KAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,WAAA,GAAc,KAAA;AAAA,EACd,QAAA,GAAW,IAAA;AAAA,EACX,OAAA,GAAU,KAAA;AAAA,EACV,KAAA,EAAO,SAAA;AAAA,EACP,MAAA;AAAA,EACA;AACF,CAAA,EAAc;AACZ,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMb,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,YAAA,GAA0B;AAAA,IAC9B,KAAA,EAAO,MAAA;AAAA,IACP,aAAA,EAAe,QAAA;AAAA,IACf,QAAA,EAAU,QAAA;AAAA,IACV,GAAI,QAAA,GACA;AAAA,MACE,iBAAiB,CAAA,CAAE,OAAA;AAAA,MACnB,WAAA,EAAaA,OAAM,MAAA,CAAO,IAAA;AAAA,MAC1B,aAAa,CAAA,CAAE,MAAA;AAAA,MACf,YAAA,EAAcA,OAAM,MAAA,CAAO;AAAA,KAC7B,GACA;AAAA,GACN;AAEA,EAAA,MAAM,aAAA,GAA2B;AAAA,IAC/B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,IAC9B,aAAA,EAAe,GAAA;AAAA,IACf,aAAA,EAAe,WAAA;AAAA,IACf,OAAO,CAAA,CAAE;AAAA,GACX;AAEA,EAAA,MAAM,cAAA,GAA4B;AAAA,IAChC,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,MAAA;AAAA,IAC9B,OAAO,CAAA,CAAE;AAAA,GACX;AAEA,EAAA,MAAM,gBAAA,GAA8B;AAAA,IAClC,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,YAAY,EAAA,GAAK,GAAA;AAAA,IACjB,OAAO,CAAA,CAAE;AAAA,GACX;AAEA,EAAA,uBACEE,cAAAA,CAACO,gBAAAA,EAAA,EAAK,OAAO,CAAC,YAAA,EAAc,KAAK,CAAA,EAAG,MAAA,EACjC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAI,CAAA,KAAM;AACpB,IAAA,MAAM,SAAA,GAAY,CAAC,EAAA,CAAG,QAAA,KAAa,eAAe,EAAA,CAAG,IAAA,IAAQ,IAAA,IAAQ,EAAA,CAAG,OAAA,IAAW,IAAA,CAAA;AACnF,IAAA,MAAM,WAAA,GAAc,QAAA,IAAY,CAAA,GAAI,KAAA,CAAM,MAAA,GAAS,CAAA;AAEnD,IAAA,MAAM,eACJ,EAAA,CAAG,QAAA,IAAY,IAAA,GACX,EAAA,CAAG,WACH,OAAA,mBACEP,cAAAA,CAAC4B,QAAAA,EAAA,EAAQ,KAAA,EAAO9B,MAAAA,CAAM,KAAK,OAAA,CAAQ,GAAG,GAAG,CAAA,GACzC,IAAA;AAER,IAAA,MAAM,UAAA,mBACJM,eAAAA,CAAAC,mBAAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,EAAA,CAAG,OAAA,IAAW,wBACbL,cAAAA;AAAA,QAACO,gBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,UAAA,EAAY,CAAA;AAAA,YACZ,UAAA,EAAY,QAAA;AAAA,YACZ,cAAA,EAAgB;AAAA,WAClB;AAAA,UAEC,QAAA,EAAA,EAAA,CAAG;AAAA;AAAA,OACN;AAAA,sBAGFH,eAAAA,CAACG,gBAAAA,EAAA,EAAK,OAAO,EAAE,IAAA,EAAM,CAAA,EAAG,QAAA,EAAU,CAAA,EAAG,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,GAAE,EAClE,QAAA,EAAA;AAAA,QAAA,EAAA,CAAG,YAAY,IAAA,KACb,OAAO,GAAG,QAAA,KAAa,QAAA,IAAY,OAAO,EAAA,CAAG,QAAA,KAAa,2BACzDP,cAAAA,CAACM,kBAAA,EAAK,KAAA,EAAO,eAAgB,QAAA,EAAA,EAAA,CAAG,QAAA,EAAS,IAEzC,EAAA,CAAG,QAAA,CAAA;AAAA,QAGN,OAAO,EAAA,CAAG,KAAA,KAAU,YAAY,OAAO,EAAA,CAAG,UAAU,QAAA,mBACnDN,eAACM,gBAAAA,EAAA,EAAK,OAAO,cAAA,EAAgB,aAAA,EAAe,GACzC,QAAA,EAAA,EAAA,CAAG,KAAA,EACN,IAEA,EAAA,CAAG,KAAA;AAAA,QAGJ,EAAA,CAAG,eAAe,IAAA,KAChB,OAAO,GAAG,WAAA,KAAgB,QAAA,IAAY,OAAO,EAAA,CAAG,WAAA,KAAgB,2BAC/DN,cAAAA,CAACM,kBAAA,EAAK,KAAA,EAAO,kBAAmB,QAAA,EAAA,EAAA,CAAG,WAAA,EAAY,IAE/C,EAAA,CAAG,WAAA;AAAA,OAAA,EAET,CAAA;AAAA,MAEC,YAAA,IAAgB,wBACfN,cAAAA;AAAA,QAACO,gBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,UAAA,EAAY,CAAA;AAAA,YACZ,aAAA,EAAe,KAAA;AAAA,YACf,UAAA,EAAY,QAAA;AAAA,YACZ,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,WACpB;AAAA,UAEC,iBAAO,YAAA,KAAiB,QAAA,IAAY,OAAO,YAAA,KAAiB,2BAC3DE,cAAAA;AAAA,YAACM,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,gBAC9B,QAAA,EAAU,EAAA;AAAA,gBACV,OAAO,CAAA,CAAE;AAAA,eACX;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH,GAEA;AAAA;AAAA;AAEJ,KAAA,EAEJ,CAAA;AAGF,IAAA,MAAM,OAAA,GAAqB;AAAA,MACzB,aAAA,EAAe,KAAA;AAAA,MACf,UAAA,EAAY,QAAA;AAAA,MACZ,GAAA,EAAK,EAAA;AAAA,MACL,eAAA,EAAiB,EAAA;AAAA,MACjB,iBAAA,EAAmB,EAAA;AAAA,MACnB,SAAA,EAAW,EAAA;AAAA,MACX,OAAA,EAAS,EAAA,CAAG,QAAA,GAAW,GAAA,GAAM,CAAA;AAAA,MAC7B,iBAAA,EAAmB,WAAA,GAAcA,MAAAA,CAAM,MAAA,CAAO,IAAA,GAAO,CAAA;AAAA,MACrD,iBAAA,EAAmB,WAAA,GAAc,CAAA,CAAE,OAAA,GAAU,aAAA;AAAA,MAC7C,eAAA,EAAiB,EAAA,CAAG,MAAA,GAAS,CAAA,GAAI,CAAA;AAAA,MACjC,eAAA,EAAiB,EAAA,CAAG,MAAA,GAAS,CAAA,CAAE,OAAA,GAAU;AAAA,KAC3C;AAEA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,uBACEE,cAAAA;AAAA,QAACG,qBAAAA;AAAA,QAAA;AAAA,UAEC,SAAS,EAAA,CAAG,OAAA;AAAA,UACZ,iBAAA,EAAkB,QAAA;AAAA,UAClB,kBAAA,EAAoB,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA;AAAA,UACrC,kBAAA,EAAoB,EAAE,QAAA,EAAU,CAAC,CAAC,EAAA,CAAG,QAAA,EAAU,QAAA,EAAU,CAAC,CAAC,EAAA,CAAG,MAAA,EAAO;AAAA,UACrE,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AACtB,YAAA,MAAM,KAAK,EAAA,CAAG,MAAA,GACV,EAAE,aAAA,GACF,OAAA,GACE,EAAE,YAAA,GACF,aAAA;AACN,YAAA,OAAO,CAAC,OAAA,EAAS,EAAE,eAAA,EAAiB,IAAI,CAAA;AAAA,UAC1C,CAAA;AAAA,UAEC,QAAA,EAAA;AAAA,SAAA;AAAA,QAdI;AAAA,OAeP;AAAA,IAEJ;AAEA,IAAA,uBACEH,cAAAA;AAAA,MAACO,gBAAAA;AAAA,MAAA;AAAA,QAEC,kBAAA,EAAoB,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA;AAAA,QACrC,oBAAoB,EAAA,CAAG,QAAA,GAAW,EAAE,QAAA,EAAU,MAAK,GAAI,MAAA;AAAA,QACvD,KAAA,EAAO;AAAA,UACL,OAAA;AAAA,UACA,EAAE,eAAA,EAAiB,EAAA,CAAG,MAAA,GAAS,CAAA,CAAE,gBAAgB,aAAA;AAAc,SACjE;AAAA,QAEC,QAAA,EAAA;AAAA,OAAA;AAAA,MARI;AAAA,KASP;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;ACtMO,IAAM,kBAAA,GAAqB;AAAA,EAChC,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW;AAC/E;AAEA,SAAS,SAAA,CAAU,KAAa,CAAA,EAAmB;AACjD,EAAA,MAAM,CAAA,GAAI,GAAA,CAAI,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAA;AAC7B,EAAA,MAAM,OAAO,CAAA,CAAE,MAAA,KAAW,CAAA,GAAI,CAAA,CAAE,MAAM,EAAE,CAAA,CAAE,GAAA,CAAI,CAAC,MAAM,CAAA,GAAI,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA,GAAI,CAAA;AACvE,EAAA,MAAM,CAAA,GAAI,QAAA,CAAS,IAAA,EAAM,EAAE,CAAA;AAC3B,EAAA,OAAO,CAAA,KAAA,EAAS,CAAA,IAAK,EAAA,GAAM,GAAG,CAAA,EAAA,EAAM,CAAA,IAAK,CAAA,GAAK,GAAG,CAAA,EAAA,EAAK,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,CAAA;AACrE;AAEA,SAAS,WAAW,EAAA,EAAuD;AACzE,EAAA,IAAI,EAAA,IAAM,MAAM,OAAO,MAAA;AACvB,EAAA,OAAO,MAAM,OAAA,CAAQ,EAAE,CAAA,GAAI,EAAA,CAAG,CAAC,CAAA,GAAI,EAAA;AACrC;AAEA,IAAM,YAAA,GAA0C;AAAA,EAC9C,GAAA,EAAK,WAAA;AAAA,EACL,IAAA,EAAM,YAAA;AAAA,EACN,GAAA,EAAK,WAAA;AAAA,EACL,QAAA,EAAU,gBAAA;AAAA,EACV,KAAA,EAAO,aAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA;AAOO,SAAS,KAAA,CAAM;AAAA,EACpB,IAAA,EAAAsB,KAAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA,GAAS,GAAA;AAAA,EACT,OAAA,GAAU,kBAAA;AAAA,EACV,KAAA,EAAO,SAAA;AAAA,EACP,MAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAA,EAAe;AACb,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAM/B,SAAQ,SAAA,IAAa,QAAA;AAE3B,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,IAAU,EAAC;AAC/B,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,QAAA,IAAY,EAAC;AACnC,EAAA,MAAM,UAAA,GAAa,SAAS,UAAA,IAAc,IAAA;AAE1C,EAAA,MAAM,SAAA,GAAY,kBAAA,IAAsB,YAAA,CAAa+B,KAAI,CAAA;AAEzD,EAAA,MAAM,QAAA,GAAWA,KAAAA,KAAS,KAAA,IAASA,KAAAA,KAAS,cAAcA,KAAAA,KAAS,WAAA;AAEnE,EAAA,MAAM,cAAc,CAAC,CAAA,KAAsB,OAAA,CAAQ,CAAA,GAAI,QAAQ,MAAM,CAAA;AACrE,EAAA,MAAM,aAAa,CAAC,CAAA,KAAsB,OAAA,CAAQ,CAAA,GAAI,QAAQ,MAAM,CAAA;AAGpE,EAAA,MAAM,MAAA,GAA4C,WAC9C,MAAA,CAAO,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,MAAO,EAAE,KAAA,EAAO,UAAA,CAAW,CAAC,CAAA,EAAG,IAAA,EAAM,KAAI,CAAE,CAAA,GAC5D,SAAS,GAAA,CAAI,CAAC,IAAI,CAAA,MAAO;AAAA,IACvB,KAAA,EAAO,WAAW,EAAA,CAAG,eAAe,KAAK,EAAA,CAAG,WAAA,IAAe,YAAY,CAAC,CAAA;AAAA,IACxE,IAAA,EAAM,EAAA,CAAG,KAAA,IAAS,CAAA,OAAA,EAAU,IAAI,CAAC,CAAA;AAAA,GACnC,CAAE,CAAA;AAEN,EAAA,uBACEzB,eAAAA;AAAA,IAACG,gBAAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,UAAA,EAAU,IAAA;AAAA,MACV,iBAAA,EAAkB,OAAA;AAAA,MAClB,kBAAA,EAAoB,SAAA;AAAA,MACpB,OAAO,CAAC,EAAE,OAAO,MAAA,EAAQ,MAAA,IAAU,KAAK,CAAA;AAAA,MAExC,QAAA,EAAA;AAAA,wBAAAP,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,CAAA,EAAE,EACnC,QAAA,EAAAsB,KAAAA,KAAS,wBACR7B,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAOF,MAAAA;AAAA,YACP,MAAA;AAAA,YACA,QAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AAAA,SACF,GACE+B,UAAS,MAAA,mBACX7B,eAAC,SAAA,EAAA,EAAU,KAAA,EAAOF,MAAAA,EAAO,MAAA,EAAgB,QAAA,EAAoB,WAAA,EAA0B,IACrF+B,KAAAA,KAAS,OAAA,mBACX7B,cAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAOF,QAAO,MAAA,EAAgB,QAAA,EAAoB,WAAA,EAA0B,CAAA,mBAExFE,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAOF,MAAAA;AAAA,YACP,IAAA,EAAM+B,KAAAA;AAAA,YACN,MAAA;AAAA,YACA,QAAA;AAAA,YACA;AAAA;AAAA,SACF,EAEJ,CAAA;AAAA,QAEC,UAAA,IAAc,MAAA,CAAO,MAAA,GAAS,CAAA,oBAC7B7B,cAAAA;AAAA,UAACO,gBAAAA;AAAA,UAAA;AAAA,YACC,iBAAA,EAAkB,MAAA;AAAA,YAClB,KAAA,EAAO;AAAA,cACL,aAAA,EAAe,KAAA;AAAA,cACf,QAAA,EAAU,MAAA;AAAA,cACV,cAAA,EAAgB,QAAA;AAAA,cAChB,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cAClB,UAAA,EAAYA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,aAC3B;AAAA,YAEC,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,sBAClBM,eAAAA;AAAA,cAACG,gBAAAA;AAAA,cAAA;AAAA,gBAEC,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,UAAA,EAAY,UAAU,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAE;AAAA,gBAEzE,QAAA,EAAA;AAAA,kCAAAE,cAAAA;AAAA,oBAACO,gBAAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,KAAA,EAAO,EAAA;AAAA,wBACP,MAAA,EAAQ,EAAA;AAAA,wBACR,YAAA,EAAcT,OAAM,MAAA,CAAO,IAAA;AAAA,wBAC3B,iBAAiB,KAAA,CAAM;AAAA;AACzB;AAAA,mBACF;AAAA,kCACAE,eAACM,gBAAAA,EAAA,EAAK,OAAO,eAAA,CAAgBR,MAAK,CAAA,EAAI,QAAA,EAAA,KAAA,CAAM,IAAA,EAAK;AAAA;AAAA,eAAA;AAAA,cAX5C;AAAA,aAaR;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AAYA,SAAS,QAAA,CAAS,EAAE,KAAA,EAAAA,MAAAA,EAAO,QAAQ,QAAA,EAAU,WAAA,EAAa,QAAO,EAAa;AAC5E,EAAA,MAAM,GAAA,GAAM,QAAQ,QAAQ,CAAA;AAC5B,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,QAAQ,CAAC,CAAA;AAE5C,EAAA,uBACEM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,aAAA,EAAe,QAAA,EAAS,EAC9C,QAAA,EAAA;AAAA,oBAAAP,cAAAA;AAAA,MAACO,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,IAAA,EAAM,CAAA;AAAA,UACN,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,UAAA;AAAA,UACZ,iBAAA,EAAmBT,OAAM,MAAA,CAAO,IAAA;AAAA,UAChC,iBAAA,EAAmBA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,UACzC,eAAA,EAAiBA,OAAM,MAAA,CAAO,IAAA;AAAA,UAC9B,eAAA,EAAiBA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG;AAAA,SACzC;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,YAAW,EAAG,CAAC,CAAA,EAAG,EAAA,qBACtCE,cAAAA;AAAA,UAACO,gBAAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,MAAA,EAAQ,MAAA;AAAA,cACR,aAAA,EAAe,KAAA;AAAA,cACf,UAAA,EAAY,UAAA;AAAA,cACZ,cAAA,EAAgB,QAAA;AAAA,cAChB,GAAA,EAAK,CAAA;AAAA,cACL,iBAAA,EAAmB;AAAA,aACrB;AAAA,YAEC,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,EAAA,EAAI,EAAA,KAAO;AACxB,cAAA,MAAM,KAAA,GAAQ,EAAA,CAAG,IAAA,CAAK,EAAE,CAAA,IAAK,CAAA;AAC7B,cAAA,MAAM,GAAA,GAAM,MAAM,CAAA,GAAI,IAAA,CAAK,IAAI,CAAA,EAAG,KAAA,GAAQ,GAAG,CAAA,GAAI,CAAA;AACjD,cAAA,MAAM,QAAQ,UAAA,CAAW,EAAA,CAAG,eAAe,CAAA,IAAK,YAAY,EAAE,CAAA;AAC9D,cAAA,uBACEP,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBAEC,MAAA,EAAQ,SAAS,CAAA,EAAG,MAAM,QAAQ,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,GAAK,MAAA;AAAA,kBAC/C,KAAA,EAAO;AAAA,oBACL,IAAA,EAAM,CAAA;AAAA,oBACN,QAAA,EAAU,EAAA;AAAA,oBACV,MAAA,EAAQ,CAAA,EAAG,GAAA,GAAM,GAAG,CAAA,CAAA,CAAA;AAAA,oBACpB,SAAA,EAAW,KAAA,GAAQ,CAAA,GAAI,CAAA,GAAI,CAAA;AAAA,oBAC3B,eAAA,EAAiB,KAAA;AAAA,oBACjB,mBAAA,EAAqBT,OAAM,MAAA,CAAO,EAAA;AAAA,oBAClC,oBAAA,EAAsBA,OAAM,MAAA,CAAO;AAAA;AACrC,iBAAA;AAAA,gBAVK;AAAA,eAWP;AAAA,YAEJ,CAAC;AAAA,WAAA;AAAA,UA9BI;AAAA,SAgCR;AAAA;AAAA,KACH;AAAA,oBACAE,eAACO,gBAAAA,EAAA,EAAK,OAAO,EAAE,aAAA,EAAe,OAAO,UAAA,EAAYT,MAAAA,CAAM,MAAM,CAAC,CAAA,IAC3D,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,qBAChBE,cAAAA,CAACO,gBAAAA,EAAA,EAAa,KAAA,EAAO,EAAE,MAAM,CAAA,EAAG,UAAA,EAAY,UAAS,EACnD,QAAA,kBAAAP,eAACM,gBAAAA,EAAA,EAAK,OAAO,aAAA,CAAcR,MAAK,GAAG,aAAA,EAAe,CAAA,EAC/C,eACH,CAAA,EAAA,EAHS,CAIX,CACD,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAWA,IAAM,MAAA,GAAS,GAAA;AACf,IAAM,MAAA,GAAS,GAAA;AACf,IAAM,GAAA,GAAM,EAAA;AAEZ,SAAS,UAAU,EAAE,KAAA,EAAAA,QAAO,MAAA,EAAQ,QAAA,EAAU,aAAY,EAAmB;AAC3E,EAAA,MAAM,GAAA,GAAM,QAAQ,QAAQ,CAAA;AAC5B,EAAA,MAAM,MAAA,GAAS,SAAS,GAAA,GAAM,CAAA;AAC9B,EAAA,MAAM,MAAA,GAAS,SAAS,GAAA,GAAM,CAAA;AAE9B,EAAA,MAAM,CAAA,GAAI,CAAC,CAAA,EAAW,CAAA,KACpB,CAAA,IAAK,CAAA,GAAI,GAAA,GAAM,MAAA,GAAS,CAAA,GAAI,GAAA,GAAO,MAAA,GAAS,CAAA,IAAM,CAAA,GAAI,CAAA,CAAA;AACxD,EAAA,MAAM,CAAA,GAAI,CAAC,CAAA,KAAsB,GAAA,GAAM,UAAU,CAAA,IAAK,GAAA,GAAM,CAAA,GAAI,CAAA,GAAI,GAAA,GAAM,CAAA,CAAA,CAAA;AAE1E,EAAA,uBACEM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,aAAA,EAAe,QAAA,EAAS,EAC9C,QAAA,EAAA;AAAA,oBAAAH,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,MAAA,EAAO,OAAA,EAAS,CAAA,IAAA,EAAO,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAE9D,QAAA,EAAA;AAAA,sBAAAV,cAAAA;AAAA,QAACuB,UAAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,GAAA;AAAA,UACJ,IAAI,MAAA,GAAS,GAAA;AAAA,UACb,IAAI,MAAA,GAAS,GAAA;AAAA,UACb,IAAI,MAAA,GAAS,GAAA;AAAA,UACb,MAAA,EAAQzB,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,UAC9B,WAAA,EAAa;AAAA;AAAA,OACf;AAAA,sBACAE,cAAAA;AAAA,QAACuB,UAAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,GAAA;AAAA,UACJ,EAAA,EAAI,GAAA;AAAA,UACJ,EAAA,EAAI,GAAA;AAAA,UACJ,IAAI,MAAA,GAAS,GAAA;AAAA,UACb,MAAA,EAAQzB,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,UAC9B,WAAA,EAAa;AAAA;AAAA,OACf;AAAA,MACC,QAAA,CAAS,GAAA,CAAI,CAAC,EAAA,EAAI,EAAA,KAAO;AACxB,QAAA,MAAM,MAAA,GAAS,EAAA,CAAG,WAAA,IAAe,WAAA,CAAY,EAAE,CAAA;AAC/C,QAAA,MAAM,CAAA,GAAI,GAAG,IAAA,CAAK,MAAA;AAClB,QAAA,MAAM,MAAM,EAAA,CAAG,IAAA,CAAK,IAAI,CAAC,CAAA,EAAG,MAAM,CAAA,EAAG,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC,CAAC,CAAA,CAAE,CAAA,CAAE,KAAK,GAAG,CAAA;AAChE,QAAA,MAAM,WAAW,GAAA,GAAM,GAAA,CAAI,MAAM,GAAG,CAAA,CAAE,KAAK,IAAI,CAAA;AAC/C,QAAA,MAAM,QAAA,GAAW,GAAG,IAAA,GAChB,CAAA,EAAG,QAAQ,CAAA,EAAA,EAAK,CAAA,CAAE,CAAA,GAAI,CAAA,EAAG,CAAC,CAAC,IAAI,MAAA,GAAS,GAAG,KAAK,CAAA,CAAE,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,MAAA,GAAS,GAAG,CAAA,EAAA,CAAA,GACvE,IAAA;AACJ,QAAA,uBACEM,eAAAA,CAACoB,OAAAA,EAAA,EACE,QAAA,EAAA;AAAA,UAAA,QAAA,IAAY,IAAA,oBACXxB,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAG,QAAA,EAAU,IAAA,EAAM,SAAA,CAAU,MAAA,EAAQ,IAAI,CAAA,EAAG,QAAO,MAAA,EAAO,CAAA;AAAA,0BAElEX,cAAAA;AAAA,YAACW,UAAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAG,QAAA;AAAA,cACH,IAAA,EAAK,MAAA;AAAA,cACL,MAAA;AAAA,cACA,WAAA,EAAa,GAAG,WAAA,IAAe,CAAA;AAAA,cAC/B,aAAA,EAAc,OAAA;AAAA,cACd,cAAA,EAAe;AAAA;AAAA,WACjB;AAAA,UACC,EAAA,CAAG,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,EAAG,sBACfX,cAAAA,CAACc,YAAAA,EAAA,EAAe,EAAA,EAAI,CAAA,CAAE,GAAG,CAAC,CAAA,EAAG,EAAA,EAAI,CAAA,CAAE,CAAC,CAAA,EAAG,GAAG,CAAA,EAAG,IAAA,EAAM,MAAA,EAAA,EAAtC,CAA8C,CAC5D;AAAA,SAAA,EAAA,EAdK,EAeR,CAAA;AAAA,MAEJ,CAAC;AAAA,KAAA,EACH,CAAA;AAAA,oBACAd,eAACO,gBAAAA,EAAA,EAAK,OAAO,EAAE,aAAA,EAAe,OAAO,UAAA,EAAYT,MAAAA,CAAM,MAAM,CAAC,CAAA,IAC3D,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,qBAChBE,cAAAA,CAACO,gBAAAA,EAAA,EAAa,KAAA,EAAO,EAAE,MAAM,CAAA,EAAG,UAAA,EAAY,UAAS,EACnD,QAAA,kBAAAP,eAACM,gBAAAA,EAAA,EAAK,OAAO,aAAA,CAAcR,MAAK,GAAG,aAAA,EAAe,CAAA,EAC/C,eACH,CAAA,EAAA,EAHS,CAIX,CACD,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAIA,SAAS,WAAW,EAAE,KAAA,EAAAA,QAAO,MAAA,EAAQ,QAAA,EAAU,aAAY,EAAmB;AAC5E,EAAA,MAAM,IAAA,GAAO,GAAA;AACb,EAAA,MAAM,KAAK,IAAA,GAAO,CAAA;AAClB,EAAA,MAAM,KAAK,IAAA,GAAO,CAAA;AAClB,EAAA,MAAM,CAAA,GAAI,OAAO,CAAA,GAAI,EAAA;AACrB,EAAA,MAAM,GAAA,GAAM,QAAQ,QAAQ,CAAA;AAC5B,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,QAAQ,CAAC,CAAA;AAEnC,EAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,EAAW,KAAA,KAA8C;AACtE,IAAA,MAAM,QAAS,IAAA,CAAK,EAAA,GAAK,IAAI,CAAA,GAAK,CAAA,GAAI,KAAK,EAAA,GAAK,CAAA;AAChD,IAAA,MAAMuB,OAAAA,GAAAA,CAAU,GAAA,GAAM,CAAA,GAAI,KAAA,GAAQ,MAAM,CAAA,IAAK,CAAA;AAC7C,IAAA,OAAO,EAAE,EAAA,EAAI,EAAA,GAAKA,OAAAA,GAAS,KAAK,GAAA,CAAI,KAAK,CAAA,EAAG,EAAA,EAAI,EAAA,GAAKA,OAAAA,GAAS,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,EAAE;AAAA,EAChF,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAA0C;AAC3D,IAAA,MAAM,QAAS,IAAA,CAAK,EAAA,GAAK,IAAI,CAAA,GAAK,CAAA,GAAI,KAAK,EAAA,GAAK,CAAA;AAChD,IAAA,OAAO,EAAE,EAAA,EAAI,EAAA,GAAK,CAAA,GAAI,KAAK,GAAA,CAAI,KAAK,CAAA,EAAG,EAAA,EAAI,EAAA,GAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,EAAE;AAAA,EACtE,CAAA;AAEA,EAAA,uBACErB,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,QAAA,EAAU,cAAA,EAAgB,QAAA,EAAS,EACrE,0BAAAH,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,CAAA,IAAA,EAAO,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAEzD,QAAA,EAAA;AAAA,IAAA,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACpB,MAAA,MAAM,CAAA,GAAI,UAAU,CAAC,CAAA;AACrB,MAAA,uBACEV,cAAAA;AAAA,QAACuB,UAAAA;AAAA,QAAA;AAAA,UAEC,EAAA,EAAI,EAAA;AAAA,UACJ,EAAA,EAAI,EAAA;AAAA,UACJ,IAAI,CAAA,CAAE,EAAA;AAAA,UACN,IAAI,CAAA,CAAE,EAAA;AAAA,UACN,MAAA,EAAQzB,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,UAC9B,WAAA,EAAa;AAAA,SAAA;AAAA,QANR,SAAS,CAAC,CAAA;AAAA,OAOjB;AAAA,IAEJ,CAAC,CAAA;AAAA,oBAEDE,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAQ,IAAQ,CAAA,EAAM,IAAA,EAAK,MAAA,EAAO,MAAA,EAAQhB,OAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,EAAG,aAAa,CAAA,EAAG,CAAA;AAAA,IAC1F,QAAA,CAAS,GAAA,CAAI,CAAC,EAAA,EAAI,EAAA,KAAO;AACxB,MAAA,MAAM,MAAA,GAAS,EAAA,CAAG,WAAA,IAAe,WAAA,CAAY,EAAE,CAAA;AAC/C,MAAA,MAAM,OAAO,EAAA,CAAG,IAAA,CACb,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AACb,QAAA,MAAM,CAAA,GAAI,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AACpB,QAAA,OAAO,CAAA,EAAG,CAAA,CAAE,EAAE,CAAA,CAAA,EAAI,EAAE,EAAE,CAAA,CAAA;AAAA,MACxB,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AACX,MAAA,uBACEE,cAAAA;AAAA,QAAC8B,aAAA;AAAA,QAAA;AAAA,UAEC,MAAA,EAAQ,IAAA;AAAA,UACR,IAAA,EAAM,SAAA,CAAU,MAAA,EAAQ,IAAI,CAAA;AAAA,UAC5B,MAAA;AAAA,UACA,WAAA,EAAa,GAAG,WAAA,IAAe;AAAA,SAAA;AAAA,QAJ1B;AAAA,OAKP;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA,EACF,CAAA;AAEJ;AAYA,SAAS,aAAA,CAAc,EAAE,KAAA,EAAAhC,MAAAA,EAAO,MAAA+B,KAAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,UAAA,EAAW,EAAkB;AACnF,EAAA,MAAM,IAAA,GAAO,GAAA;AACb,EAAA,MAAM,KAAK,IAAA,GAAO,CAAA;AAClB,EAAA,MAAM,KAAK,IAAA,GAAO,CAAA;AAClB,EAAA,MAAM,CAAA,GAAI,OAAO,CAAA,GAAI,CAAA;AACrB,EAAA,MAAM,MAAA,GAASA,KAAAA,KAAS,UAAA,GAAa,CAAA,GAAI,IAAA,GAAO,CAAA;AAEhD,EAAA,MAAM,EAAA,GAAK,SAAS,CAAC,CAAA;AACrB,EAAA,MAAM,MAAA,GAAS,EAAA,EAAI,IAAA,IAAQ,EAAC;AAC5B,EAAA,MAAM,iBAAiB,KAAA,CAAM,OAAA,CAAQ,IAAI,eAAe,CAAA,GAAI,IAAI,eAAA,GAAkB,MAAA;AAClF,EAAA,MAAM,WAAW,CAAC,CAAA,KAAsB,iBAAiB,CAAC,CAAA,IAAK,WAAW,CAAC,CAAA;AAE3E,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,CAAC,CAAA,EAAG,CAAC,CAAA;AAG3D,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,CAAC,CAAA,EAAG,CAAC,CAAA;AAExD,EAAA,MAAM,OAA0C,EAAC;AACjD,EAAA,IAAIA,UAAS,WAAA,EAAa;AACxB,IAAA,MAAM,IAAA,GAAQ,KAAK,EAAA,GAAK,CAAA,GAAK,KAAK,GAAA,CAAI,MAAA,CAAO,QAAQ,CAAC,CAAA;AACtD,IAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,KAAM;AACvB,MAAA,MAAM,EAAA,GAAK,CAAC,IAAA,CAAK,EAAA,GAAK,IAAI,IAAA,GAAO,CAAA;AACjC,MAAA,MAAM,KAAK,EAAA,GAAK,IAAA;AAChB,MAAA,MAAMR,OAAAA,GAAS,MAAA,GAAS,CAAA,GAAK,CAAA,GAAI,SAAU,CAAA,GAAI,CAAA;AAC/C,MAAA,IAAA,CAAK,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,CAAU,IAAI,EAAA,EAAIA,OAAAA,EAAQ,CAAA,EAAG,EAAA,EAAI,EAAE,CAAA,EAAG,KAAA,EAAO,QAAA,CAAS,CAAC,GAAG,CAAA;AAAA,IAC9E,CAAC,CAAA;AAAA,EACH,CAAA,MAAO;AACL,IAAA,IAAI,EAAA,GAAK,CAAC,IAAA,CAAK,EAAA,GAAK,CAAA;AACpB,IAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,KAAM;AACvB,MAAA,MAAM,IAAA,GAAO,QAAQ,CAAA,GAAI,IAAA,CAAK,IAAI,CAAA,EAAG,CAAC,IAAI,KAAA,GAAQ,CAAA;AAClD,MAAA,MAAM,EAAA,GAAK,EAAA,GAAK,IAAA,GAAO,IAAA,CAAK,EAAA,GAAK,CAAA;AACjC,MAAA,IAAA,CAAK,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,CAAU,IAAI,EAAA,EAAI,CAAA,EAAG,MAAA,EAAQ,EAAA,EAAI,EAAE,CAAA,EAAG,KAAA,EAAO,QAAA,CAAS,CAAC,GAAG,CAAA;AAC5E,MAAA,EAAA,GAAK,EAAA;AAAA,IACP,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,uBACErB,cAAAA,CAACO,gBAAAA,EAAA,EAAK,OAAO,EAAE,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,QAAA,EAAU,cAAA,EAAgB,QAAA,EAAS,EACrE,0BAAAP,cAAAA,CAACU,sBAAAA,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,OAAO,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EACzD,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,sBACdV,cAAAA;AAAA,IAACW,UAAAA;AAAA,IAAA;AAAA,MAEC,GAAG,GAAA,CAAI,IAAA;AAAA,MACP,MAAM,GAAA,CAAI,KAAA;AAAA,MACV,MAAA,EAAQb,OAAM,KAAA,CAAM,OAAA;AAAA,MACpB,WAAA,EAAa;AAAA,KAAA;AAAA,IAJR;AAAA,GAMR,GACH,CAAA,EACF,CAAA;AAEJ;AAIA,SAAS,KAAA,CAAM,EAAA,EAAY,EAAA,EAAYuB,OAAAA,EAAgB,KAAA,EAAiC;AACtF,EAAA,OAAO,CAAC,EAAA,GAAKA,OAAAA,GAAS,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,EAAG,EAAA,GAAKA,OAAAA,GAAS,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC,CAAA;AACtE;AAGA,SAAS,UACP,EAAA,EACA,EAAA,EACA,MAAA,EACA,MAAA,EACA,IACA,EAAA,EACQ;AACR,EAAA,MAAM,KAAA,GAAQ,EAAA,GAAK,EAAA,GAAK,IAAA,CAAK,KAAK,CAAA,GAAI,CAAA;AACtC,EAAA,MAAM,CAAC,KAAK,GAAG,CAAA,GAAI,MAAM,EAAA,EAAI,EAAA,EAAI,QAAQ,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,KAAK,GAAG,CAAA,GAAI,MAAM,EAAA,EAAI,EAAA,EAAI,QAAQ,EAAE,CAAA;AAC3C,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,OAAO;AAAA,MACL,CAAA,EAAA,EAAK,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAAA,MACb,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,MACf,CAAA,EAAA,EAAK,MAAM,CAAA,CAAA,EAAI,MAAM,MAAM,KAAK,CAAA,GAAA,EAAM,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,MAChD;AAAA,KACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACZ;AACA,EAAA,MAAM,CAAC,KAAK,GAAG,CAAA,GAAI,MAAM,EAAA,EAAI,EAAA,EAAI,QAAQ,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,KAAK,GAAG,CAAA,GAAI,MAAM,EAAA,EAAI,EAAA,EAAI,QAAQ,EAAE,CAAA;AAC3C,EAAA,OAAO;AAAA,IACL,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,IACf,CAAA,EAAA,EAAK,MAAM,CAAA,CAAA,EAAI,MAAM,MAAM,KAAK,CAAA,GAAA,EAAM,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,IAChD,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,IACf,CAAA,EAAA,EAAK,MAAM,CAAA,CAAA,EAAI,MAAM,MAAM,KAAK,CAAA,GAAA,EAAM,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,IAChD;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AACZ;AAGA,SAAS,QAAQ,QAAA,EAAkC;AACjD,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,KAAA,MAAW,MAAM,QAAA,EAAU;AACzB,IAAA,KAAA,MAAW,KAAK,EAAA,CAAG,IAAA,EAAM,IAAI,CAAA,GAAI,MAAM,IAAA,GAAO,CAAA;AAAA,EAChD;AACA,EAAA,IAAI,IAAA,IAAQ,GAAG,OAAO,CAAA;AACtB,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,MAAM,IAAA,CAAK,KAAA,CAAM,IAAI,CAAC,CAAC,CAAA;AACrD,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAA,GAAO,GAAG,CAAA,GAAI,GAAA;AACjC;AAEA,SAAS,cAAcvB,MAAAA,EAA6B;AAClD,EAAA,OAAO;AAAA,IACL,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAOA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG;AAAA,GAC/B;AACF;AAEA,SAAS,gBAAgBA,MAAAA,EAA6B;AACpD,EAAA,OAAO;AAAA,IACL,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAOA,OAAM,KAAA,CAAM;AAAA,GACrB;AACF;;;AClhBO,IAAM,aAAA,GAAgB;AAEtB,IAAM,YAAA,GAAgC;AAAA,EAC3C,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,2BAAA,EAA6B,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,u/GAAA,EAAw/G;AAAA,EAC9kH,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,gBAAA,EAAkB,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,yrLAAA,EAA0rL;AAAA,EACxwL,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,w0GAAA,EAAy0G;AAAA,EAC15G,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,qoHAAA,EAAsoH;AAAA,EAC3sH,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,gwHAAA,EAAiwH;AAAA,EACt0H,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,kGAAA,EAAmG;AAAA,EAC1K,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,k0IAAA,EAAm0I;AAAA,EAC/4I,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,sBAAA,EAAwB,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,8QAAA,EAA+Q;AAAA,EAChW,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,kLAAA,EAAmL;AAAA,EAC1P,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,oXAAA,EAAqX;AAAA,EACvb,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,0kBAAA,EAA2kB;AAAA,EAC9oB,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,CAAA,EAAG,2mMAAA,EAA4mM;AAAA,EAC9qM,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,s/GAAA,EAAu/G;AAAA,EAC5jH,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,kBAAA,EAAoB,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,w6EAAA,EAAy6E;AAAA,EACz/E,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,IAAA,EAAM,CAAA,EAAG,osHAAA,EAAqsH;AAAA,EACnxH,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,80HAAA,EAA+0H;AAAA,EACt5H,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,0hMAAA,EAA2hM;AAAA,EACpmM,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,s9DAAA,EAAu9D;AAAA,EAC7hE,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,wWAAA,EAAyW;AAAA,EACjb,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,gBAAA,EAAkB,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,wmTAAA,EAAymT;AAAA,EACvrT,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,gvOAAA,EAAivO;AAAA,EAC5zO,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,grCAAA,EAAirC;AAAA,EACxvC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,GAAA,EAAK,CAAA,EAAG,g7CAAA,EAAi7C;AAAA,EACx/C,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,ksCAAA,EAAmsC;AAAA,EAC1wC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,0pCAAA,EAA2pC;AAAA,EACjuC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,q4IAAA,EAAs4I;AAAA,EAC58I,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,wZAAA,EAAyZ;AAAA,EAChe,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,k6EAAA,EAAm6E;AAAA,EACz+E,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,s4NAAA,EAAu4N;AAAA,EACh9N,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,8kBAAA,EAA+kB;AAAA,EACrpB,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,+0GAAA,EAAg1G;AAAA,EAC15G,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,g2GAAA,EAAi2G;AAAA,EAC16G,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,oiCAAA,EAAqiC;AAAA,EAC5mC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,gzPAAA,EAAizP;AAAA,EAC53P,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,81EAAA,EAA+1E;AAAA,EAC16E,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,0nTAAA;AAC7E;ACTA,IAAM,aAAA,GAAgB;AAAA,EACpB,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA;AAEA,SAAS,QAAA,CAAS,CAAA,EAAW,GAAA,EAAa,GAAA,EAAa,CAAA,EAAmB;AACxE,EAAA,IAAI,GAAA,IAAO,GAAA,EAAK,OAAO,CAAA,GAAI,CAAA;AAC3B,EAAA,MAAM,CAAA,GAAA,CAAK,CAAA,GAAI,GAAA,KAAQ,GAAA,GAAM,GAAA,CAAA;AAC7B,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,CAAC,CAAC,CAAC,CAAA;AACvD;AAQO,SAAS,QAAA,CAAS;AAAA,EACvB,SAAS,EAAC;AAAA,EACV,UAAA,GAAa,aAAA;AAAA,EACb,MAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,CAAC,CAAA,KAAc,MAAA,CAAO,CAAC,CAAA;AAAA,EACrC,WAAA,GAAc,OAAA;AAAA,EACd,UAAA,GAAa,IAAA;AAAA,EACb,MAAA,GAAS,GAAA;AAAA,EACT,OAAAA,MAAAA,GAAQ,OAAA;AAAA,EACR,OAAA;AAAA,EACA;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAM,IAAI,OAAA,IAAW,QAAA;AACrB,EAAA,MAAM,IAAI,CAAA,CAAE,KAAA;AAEZ,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAII,iBAAwB,IAAI,CAAA;AAExD,EAAA,MAAM,OAAOJ,MAAAA,KAAU,MAAA;AACvB,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AACjC,EAAA,MAAM,GAAA,GAAM,MAAA,GAAS,MAAA,CAAO,CAAC,CAAA,GAAI,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,GAAG,IAAI,CAAA,GAAI,CAAA;AACnE,EAAA,MAAM,GAAA,GAAM,MAAA,GAAS,MAAA,CAAO,CAAC,CAAA,GAAI,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,GAAG,IAAI,CAAA,GAAI,CAAA;AACnE,EAAA,MAAM,MAAA,GAAS,UAAA,KAAe,IAAA,GAAO,SAAA,GAAY,SAAA,CAAA;AACjD,EAAA,MAAM,MAAA,GAAS,OAAO,SAAA,GAAY,SAAA;AAElC,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAyB;AACxC,IAAA,MAAM,CAAA,GAAI,OAAO,IAAI,CAAA;AACrB,IAAA,IAAI,CAAA,IAAK,MAAM,OAAO,MAAA;AACtB,IAAA,OAAO,WAAW,QAAA,CAAS,CAAA,EAAG,KAAK,GAAA,EAAK,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA,EAC5D,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAA2B;AACzC,IAAA,SAAA,CAAU,EAAE,IAAI,CAAA;AAChB,IAAA,QAAA,GAAW,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,KAAA,EAAO,MAAA;AAAA,IACP,aAAA,EAAe;AAAA,GACjB;AAEA,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,QAAA,EAAU,MAAA;AAAA,IACV,GAAA,EAAK,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA;AAAA,IACd,SAAA,EAAW,CAAA,CAAE,KAAA,CAAM,CAAC;AAAA,GACtB;AAEA,EAAA,MAAM,cAAA,GAA4B;AAAA,IAChC,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,YAAA,EAAc,EAAE,MAAA,CAAO,EAAA;AAAA,IACvB,QAAA,EAAU;AAAA,GACZ;AAEA,EAAA,MAAM,gBAAA,GAA8B;AAAA,IAClC,UAAA,EAAY,CAAA,CAAE,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC1B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,CAAA,CAAE,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,IAC1B,KAAA,EAAO,IAAA,GAAO,SAAA,GAAY,CAAA,CAAE;AAAA,GAC9B;AAEA,EAAA,MAAM,gBAAA,GAA8B;AAAA,IAClC,UAAA,EAAY,CAAA,CAAE,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC1B,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO,IAAA,GAAO,SAAA,GAAY,CAAA,CAAE;AAAA,GAC9B;AAEA,EAAA,uBACEM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,MAAA,EAAgB,OAAO,SAAA,EAC3B,QAAA,EAAA;AAAA,oBAAAP,cAAAA;AAAA,MAACU,sBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,MAAA;AAAA,QACN,MAAA;AAAA,QACA,OAAA,EAAS,aAAA;AAAA,QACT,mBAAA,EAAoB,eAAA;AAAA,QACpB,iBAAA,EAAkB,OAAA;AAAA,QAClB,kBAAA,EAAmB,mDAAA;AAAA,QAElB,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,CAAA,KAAM;AACvB,UAAA,MAAM,QACJ,QAAA,KAAa,CAAA,CAAE,QAAS,QAAA,IAAY,IAAA,IAAQ,WAAW,CAAA,CAAE,IAAA;AAC3D,UAAA,MAAM,CAAA,GAAI,MAAA,CAAO,CAAA,CAAE,IAAI,CAAA;AAIvB,UAAA,MAAM,QAAQ,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,EACrB,KAAK,IAAA,GAAO,CAAA,EAAA,EAAK,WAAA,CAAY,CAAC,CAAC,CAAA,CAAA,GAAK,WACtC,CAAA,EAAG,KAAA,GAAQ,eAAe,EAAE,CAAA,CAAA;AAC5B,UAAA,MAAM,YAAA,GAAe,KAAA,GAAQ,CAAA,CAAE,OAAA,GAAU,MAAA;AACzC,UAAA,MAAM,iBAAA,GAAoB,QAAQ,GAAA,GAAM,GAAA;AACxC,UAAA,uBACEV,cAAAA;AAAA,YAACW,UAAAA;AAAA,YAAA;AAAA,cAEC,MAAA,EAAQ,CAAA,gBAAA,EAAmB,CAAA,CAAE,IAAI,CAAA,CAAA;AAAA,cACjC,GAAG,CAAA,CAAE,CAAA;AAAA,cACL,IAAA,EAAM,OAAA,CAAQ,CAAA,CAAE,IAAI,CAAA;AAAA,cACpB,MAAA,EAAQ,YAAA;AAAA,cACR,WAAA,EAAa,iBAAA;AAAA,cACb,OAAA,EAAS,MAAM,MAAA,CAAO,CAAC,CAAA;AAAA,cACvB,UAAA,EAAU,IAAA;AAAA,cACV,kBAAA,EAAoB;AAAA,aAAA;AAAA,YARf,CAAA,CAAE;AAAA,WAST;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH;AAAA,IAEC,6BACCP,eAAAA,CAACG,gBAAAA,EAAA,EAAK,OAAO,SAAA,EACX,QAAA,EAAA;AAAA,sBAAAP,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,kBAAmB,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,sBAC5CN,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,cAAA,EACV,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,MAAA,EAAQ,CAAA,qBACvBP,cAAAA;AAAA,QAACO,gBAAAA;AAAA,QAAA;AAAA,UAEC,MAAA,EAAQ,2BAA2B,CAAC,CAAA,CAAA;AAAA,UACpC,OAAO,EAAE,KAAA,EAAO,IAAI,MAAA,EAAQ,EAAA,EAAI,iBAAiB,MAAA;AAAO,SAAA;AAAA,QAFnD,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,CAAC,CAAA;AAAA,OAItB,CAAA,EACH,CAAA;AAAA,sBACAP,eAACM,gBAAAA,EAAA,EAAK,OAAO,gBAAA,EAAmB,QAAA,EAAA,WAAA,CAAY,GAAG,CAAA,EAAE,CAAA;AAAA,sBACjDN,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,kBAAmB,QAAA,EAAA,CAAA,OAAA,EAAK,WAAA,CAAY,GAAG,CAAC,CAAA,CAAA,EAAG;AAAA,KAAA,EAC1D,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AC9JA,SAASyB,WAAAA,CACP,MACA,SAAA,EACiB;AACjB,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,SAAS,QAAA,EAAU;AACxD,IAAA,uBAAO/B,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,WAAY,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,EACvC;AACA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,IAAA,CAAK;AAAA,EACnB,OAAO,EAAC;AAAA,EACR,KAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAc;AACZ,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMR,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,OAAkB,IAAA,CAAK,GAAA;AAAA,IAAI,CAAC,CAAA,KAChC,OAAO,CAAA,KAAM,QAAA,GAAW,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE,GAAI;AAAA,GACnD;AAEA,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAII,gBAAAA;AAAA,IAC9B,YAAA,IAAgB,IAAA,CAAK,CAAC,CAAA,EAAG;AAAA,GAC3B;AACA,EAAA,MAAM,SAAS,KAAA,IAAS,QAAA;AAExB,EAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAc;AAC5B,IAAA,IAAI,KAAA,KAAU,MAAA,EAAW,WAAA,CAAY,CAAC,CAAA;AACtC,IAAA,QAAA,GAAW,CAAC,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,uBACEF,cAAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,SAAA;AAAA,MAClB,KAAA,EAAO;AAAA,QACL;AAAA,UACE,aAAA,EAAe,KAAA;AAAA,UACf,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,UAClB,iBAAA,EAAmBA,OAAM,MAAA,CAAO,IAAA;AAAA,UAChC,mBAAmB,CAAA,CAAE;AAAA,SACvB;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AACf,QAAA,MAAM,EAAA,GAAK,EAAE,KAAA,KAAU,MAAA;AACvB,QAAA,MAAM,QAAA,GAAW,EAAE,QAAA,IAAY,KAAA;AAC/B,QAAA,MAAM,QAAQ,OAAO,CAAA,CAAE,KAAA,KAAU,QAAA,GAAW,EAAE,KAAA,GAAQ,MAAA;AAEtD,QAAA,MAAM,UAAA,GAAwB;AAAA,UAC5B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,UAC9B,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,KAAK,KAAA,GAAQ,KAAA;AAAA,UACzB,aAAA,EAAe,GAAA;AAAA,UACf,KAAA,EAAO,EAAA,GAAK,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE;AAAA,SAC5B;AAEA,QAAA,MAAM,cAAA,GAA4B;AAAA,UAChC,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,UAC9B,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,KAAA;AAAA,UACZ,KAAA,EAAO,EAAA,GAAKA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,GAAIA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG;AAAA,SAC7D;AAEA,QAAA,uBACEM,eAAAA;AAAA,UAACD,qBAAAA;AAAA,UAAA;AAAA,YAEC,iBAAA,EAAkB,KAAA;AAAA,YAClB,kBAAA,EAAoB,KAAA;AAAA,YACpB,kBAAA,EAAoB,EAAE,QAAA,EAAU,EAAA,EAAI,QAAA,EAAS;AAAA,YAC7C,QAAA;AAAA,YACA,SAAS,MAAM;AACb,cAAA,IAAI,CAAC,QAAA,EAAU,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA;AAAA,YAC/B,CAAA;AAAA,YACA,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAA4B;AAC5C,cAAA,MAAM,IAAA,GAAkB;AAAA,gBACtB,aAAA,EAAe,KAAA;AAAA,gBACf,UAAA,EAAY,QAAA;AAAA,gBACZ,cAAA,EAAgB,QAAA;AAAA,gBAChB,GAAA,EAAK,CAAA;AAAA,gBACL,IAAA,EAAM,YAAY,CAAA,GAAI,MAAA;AAAA,gBACtB,SAAA,EAAW,EAAA;AAAA,gBACX,eAAA,EAAiB,EAAA;AAAA,gBACjB,iBAAA,EAAmB,EAAA;AAAA,gBACnB,YAAA,EAAc,CAACL,MAAAA,CAAM,MAAA,CAAO,IAAA;AAAA,gBAC5B,OAAA,EAAS,WAAW,GAAA,GAAM,CAAA;AAAA,gBAC1B,iBAAA,EAAmB,CAAA;AAAA,gBACnB,iBAAA,EAAmB,EAAA,GAAK,CAAA,CAAE,OAAA,GAAU,aAAA;AAAA,gBACpC,eAAA,EACE,OAAA,IAAW,CAAC,QAAA,GAAW,EAAE,aAAA,GAAgB;AAAA,eAC7C;AACA,cAAA,OAAO,IAAA;AAAA,YACT,CAAA;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,CAAA,CAAE,IAAA,IAAQ,uBACTE,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBACC,2BAAA,EAA2B,IAAA;AAAA,kBAC3B,yBAAA,EAA0B,qBAAA;AAAA,kBAC1B,KAAA,EAAO,QAAA;AAAA,kBAEN,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA,eACL,GACE,IAAA;AAAA,cACHwB,WAAAA,CAAW,CAAA,CAAE,KAAA,EAAO,UAAU,CAAA;AAAA,cAC9B,CAAA,CAAE,KAAA,IAAS,IAAA,mBACV/B,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,UAAA,EAAY,CAAA;AAAA,oBACZ,QAAA,EAAU,EAAA;AAAA,oBACV,MAAA,EAAQ,EAAA;AAAA,oBACR,iBAAA,EAAmB,CAAA;AAAA,oBACnB,aAAA,EAAe,KAAA;AAAA,oBACf,UAAA,EAAY,QAAA;AAAA,oBACZ,cAAA,EAAgB,QAAA;AAAA,oBAChB,YAAA,EAAcT,OAAM,MAAA,CAAO,IAAA;AAAA,oBAC3B,eAAA,EAAiB,EAAA,GACbA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,GACrBA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG;AAAA,mBAC5B;AAAA,kBAEC,QAAA,EAAAiC,WAAAA,CAAW,CAAA,CAAE,KAAA,EAAO,cAAc;AAAA;AAAA,eACrC,GACE;AAAA;AAAA,WAAA;AAAA,UAxDC,CAAA,CAAE;AAAA,SAyDT;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ;AAEA,IAAM,QAAA,GAAsB;AAAA,EAC1B,aAAA,EAAe,KAAA;AAAA,EACf,UAAA,EAAY,QAAA;AAAA,EACZ,cAAA,EAAgB;AAClB,CAAA;AC/IA,SAAS,SAAA,CAAU,EAAE,KAAA,EAAM,EAAsB;AAC/C,EAAA,uBACE/B,cAAAA;AAAA,IAACU,sBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAA;AAAA,MACP,MAAA,EAAQ,EAAA;AAAA,MACR,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,2BAAA,EAA2B,IAAA;AAAA,MAC3B,yBAAA,EAA0B,qBAAA;AAAA,MAE1B,QAAA,kBAAAV,cAAAA;AAAA,QAACW,UAAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,eAAA;AAAA,UACF,MAAA,EAAQ,KAAA;AAAA,UACR,WAAA,EAAa,CAAA;AAAA,UACb,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe;AAAA;AAAA;AACjB;AAAA,GACF;AAEJ;AAGO,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMb,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,uBACEE,cAAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,YAAA;AAAA,MACL,YAAA,EAAW,YAAA;AAAA,MACX,kBAAA,EAAmB,YAAA;AAAA,MACnB,KAAA,EAAO;AAAA,QACL;AAAA,UACE,aAAA,EAAe,KAAA;AAAA,UACf,QAAA,EAAU,MAAA;AAAA,UACV,UAAA,EAAY;AAAA,SACd;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,EAAI,CAAA,KAAM;AACpB,QAAA,MAAM,IAAA,GAAO,CAAA,KAAM,KAAA,CAAM,MAAA,GAAS,CAAA;AAClC,QAAA,MAAM,MAAA,GAAS,CAAC,IAAA,IAAQ,EAAA,CAAG,IAAA,KAAS,MAAA;AAEpC,QAAA,uBACEH,eAAAA;AAAA,UAACG,gBAAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO;AAAA,cACL,aAAA,EAAe,KAAA;AAAA,cACf,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,MAAA,mBACCP,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,EAAA;AAAA,kBACN,KAAA,EAAO,CAAA;AAAA,kBACP,KAAA,EAAOF,MAAAA;AAAA,kBACP;AAAA;AAAA,eACF,mBAEAE,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,iBAAiBT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAE,EAC5C,iBAAO,EAAA,CAAG,KAAA,KAAU,YAAY,OAAO,EAAA,CAAG,KAAA,KAAU,QAAA,mBACnDE,cAAAA;AAAA,gBAACM,gBAAAA;AAAA,gBAAA;AAAA,kBACC,iBAAA,EAAkB,MAAA;AAAA,kBAClB,kBAAA,EAAoB,IAAA,GAAO,EAAE,QAAA,EAAU,MAAK,GAAI,MAAA;AAAA,kBAChD,KAAA,EAAO;AAAA,oBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,oBAC9B,QAAA,EAAU,EAAA;AAAA,oBACV,UAAA,EAAY,EAAA;AAAA,oBACZ,UAAA,EAAY,OACRA,MAAAA,CAAM,IAAA,CAAK,OAAO,QAAA,GAClBA,MAAAA,CAAM,KAAK,MAAA,CAAO,OAAA;AAAA,oBACtB,KAAA,EAAO,IAAA,GAAO,CAAA,CAAE,IAAA,GAAO,CAAA,CAAE;AAAA,mBAC3B;AAAA,kBAEC,QAAA,EAAA,EAAA,CAAG;AAAA;AAAA,eACN,GAEA,GAAG,KAAA,EAEP,CAAA;AAAA,cAGD,CAAC,uBACAE,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,EAAE,iBAAA,EAAmB,CAAA,EAAE;AAAA,kBAC9B,aAAA,EAAc,MAAA;AAAA,kBAEd,QAAA,kBAAAP,eAAC,SAAA,EAAA,EAAU,KAAA,EAAOF,OAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,EAAG;AAAA;AAAA,eAC7C,GACE;AAAA;AAAA,WAAA;AAAA,UA5CC;AAAA,SA6CP;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ;AAUA,SAAS,MAAM,EAAE,IAAA,EAAM,OAAO,KAAA,EAAAA,MAAAA,EAAO,aAAY,EAAe;AAC9D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,IAAIJ,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,cACJ,OAAO,IAAA,CAAK,UAAU,QAAA,IAAY,OAAO,KAAK,KAAA,KAAU,QAAA;AAE1D,EAAA,uBACEE,cAAAA;AAAA,IAACG,qBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,MAAA;AAAA,MAClB,kBAAA,EAAoB,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,GAAI,MAAA;AAAA,MACvD,OAAA,EAAS,MAAM,WAAA,GAAc,IAAA,EAAM,KAAK,CAAA;AAAA,MACxC,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,MAC9B,OAAA,EAAS,CAAA;AAAA,MACT,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,MAA6B;AAAA,QAC7C,SAAA,EAAW,EAAA;AAAA,QACX,cAAA,EAAgB,QAAA;AAAA,QAChB,eAAA,EAAiBL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,QAC9B,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,QAC3B,WAAA,EAAa,OAAA,GAAUA,MAAAA,CAAM,cAAA,GAAiB,CAAA;AAAA,QAC9C,WAAA,EAAa,OAAA,GAAU,CAAA,CAAE,KAAA,GAAQ,aAAA;AAAA,QACjC,OAAA,EAAS,UAAU,GAAA,GAAM;AAAA,OAC3B,CAAA;AAAA,MAEC,wCACCE,cAAAA;AAAA,QAACM,gBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,YAC9B,QAAA,EAAU,EAAA;AAAA,YACV,UAAA,EAAY,EAAA;AAAA,YACZ,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,OAAA;AAAA,YAC9B,OAAO,CAAA,CAAE;AAAA,WACX;AAAA,UAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,UAGR,IAAA,CAAK;AAAA;AAAA,GAET;AAEJ;AC3JA,SAAS,UAAA,CAAW,EAAE,KAAA,EAAM,EAAsB;AAChD,EAAA,uBACEE,cAAAA;AAAA,IAACU,sBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAA;AAAA,MACP,MAAA,EAAQ,EAAA;AAAA,MACR,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,2BAAA,EAA2B,IAAA;AAAA,MAC3B,yBAAA,EAA0B,qBAAA;AAAA,MAE1B,QAAA,kBAAAV,cAAAA;AAAA,QAACW,UAAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,iBAAA;AAAA,UACF,MAAA,EAAQ,KAAA;AAAA,UACR,WAAA,EAAa,CAAA;AAAA,UACb,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe;AAAA;AAAA;AACjB;AAAA,GACF;AAEJ;AAGO,SAAS,OAAA,CAAQ;AAAA,EACtB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc,YAAA;AAAA,EACd,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMb,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,WAAW,WAAA,KAAgB,UAAA;AAEjC,EAAA,MAAM,UAAU,CAAA,CAAE,OAAA;AAClB,EAAA,MAAM,QAAA,GAAWA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAEvC,EAAA,MAAM,QAAQ,KAAA,CAAM,MAAA;AACpB,EAAA,MAAM,UAAA,GAAa,UAAU,CAAA,GAAI,CAAA,GAAI,KAAK,GAAA,CAAI,OAAA,GAAU,GAAG,KAAK,CAAA;AAEhE,EAAA,uBACEE,cAAAA;AAAA,IAACO,gBAAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAU,IAAA;AAAA,MACV,iBAAA,EAAkB,aAAA;AAAA,MAClB,kBAAA,EAAmB,UAAA;AAAA,MACnB,kBAAA,EAAoB;AAAA,QAClB,GAAA,EAAK,CAAA;AAAA,QACL,GAAA,EAAK,KAAA;AAAA,QACL,GAAA,EAAK,UAAA;AAAA,QACL,MAAM,KAAA,KAAU,CAAA,GAAI,SAAY,CAAA,KAAA,EAAQ,UAAU,OAAO,KAAK,CAAA;AAAA,OAChE;AAAA,MACA,KAAA,EAAO;AAAA,QACL;AAAA,UACE,aAAA,EAAe,WAAW,QAAA,GAAW,KAAA;AAAA,UACrC,UAAA,EAAY,WAAW,SAAA,GAAY;AAAA,SACrC;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACnB,QAAA,MAAM,OAAO,CAAA,GAAI,OAAA;AACjB,QAAA,MAAM,SAAS,CAAA,KAAM,OAAA;AACrB,QAAA,MAAM,MAAA,GAAS,QAAQ,MAAA,GAAS,CAAA,CAAE,UAAUT,MAAAA,CAAM,IAAA,CAAK,QAAQ,GAAG,CAAA;AAElE,QAAA,MAAM,QAAA,GAAW,IAAA,GACb,CAAA,CAAE,OAAA,GACF,MAAA,GACE,EAAE,aAAA,GACFA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC5B,QAAA,MAAM,WAAA,GAAc,IAAA,GAAO,CAAA,CAAE,OAAA,GAAU,MAAA;AAEvC,QAAA,MAAM,cACJ,OAAO,CAAA,CAAE,UAAU,QAAA,IAAY,OAAO,EAAE,KAAA,KAAU,QAAA;AACpD,QAAA,MAAM,aACJ,OAAO,CAAA,CAAE,gBAAgB,QAAA,IACzB,OAAO,EAAE,WAAA,KAAgB,QAAA;AAE3B,QAAA,MAAM,SAAA,GAAY,MAAA,GACd,EAAE,QAAA,EAAU,MAAM,IAAA,EAAM,IAAA,EAAK,GAC7B,IAAA,GACE,EAAE,QAAA,EAAU,KAAA,EAAM,GAClB,EAAE,UAAU,KAAA,EAAM;AAExB,QAAA,uBACEM,eAAAA;AAAA,UAACG,gBAAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO;AAAA,cACL,aAAA,EAAe,WAAW,KAAA,GAAQ,QAAA;AAAA,cAClC,UAAA,EAAY,WAAW,YAAA,GAAe,QAAA;AAAA,cACtC,QAAA,EAAU,WAAW,CAAA,GAAI,CAAA;AAAA,cACzB,UAAA,EAAY,WAAW,CAAA,GAAI,CAAA;AAAA,cAC3B,SAAA,EAAW,WAAW,MAAA,GAAS,CAAA;AAAA,cAC/B,SAAA,EAAW,QAAA,GAAWT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,cACvC,QAAA,EAAU;AAAA,aACZ;AAAA,YAGA,QAAA,EAAA;AAAA,8BAAAM,eAAAA;AAAA,gBAACG,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,aAAA,EAAe,WAAW,QAAA,GAAW,KAAA;AAAA,oBACrC,UAAA,EAAY,QAAA;AAAA,oBACZ,SAAA,EAAW,WAAW,SAAA,GAAY,MAAA;AAAA,oBAClC,KAAA,EAAO,WAAW,MAAA,GAAY;AAAA,mBAChC;AAAA,kBAGC,QAAA,EAAA;AAAA,oBAAA,CAAC,QAAA,IAAY,CAAA,GAAI,CAAA,mBAChBP,cAAAA;AAAA,sBAACO,gBAAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,QAAA,EAAU,CAAA;AAAA,0BACV,UAAA,EAAY,CAAA;AAAA,0BACZ,SAAA,EAAW,CAAA;AAAA,0BACX,MAAA,EAAQ,CAAA;AAAA,0BACR,eAAA,EAAiB,IAAA,IAAQ,MAAA,GAAS,OAAA,GAAU;AAAA;AAC9C;AAAA,qBACF,GACE,IAAA;AAAA,oCAGJP,cAAAA;AAAA,sBAACO,gBAAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,KAAA,EAAO,EAAA;AAAA,0BACP,MAAA,EAAQ,EAAA;AAAA,0BACR,YAAA,EAAcT,OAAM,MAAA,CAAO,IAAA;AAAA,0BAC3B,UAAA,EAAY,QAAA;AAAA,0BACZ,cAAA,EAAgB,QAAA;AAAA,0BAChB,eAAA,EAAiB,QAAA;AAAA,0BACjB,WAAA,EAAaA,OAAM,MAAA,CAAO,KAAA;AAAA,0BAC1B,WAAA,EAAa;AAAA,yBACf;AAAA,wBAEC,QAAA,EAAA,IAAA,mBACCE,cAAAA,CAAC,UAAA,EAAA,EAAW,OAAO,CAAA,CAAE,OAAA,EAAS,oBAE9BA,cAAAA;AAAA,0BAACM,gBAAAA;AAAA,0BAAA;AAAA,4BACC,KAAA,EAAO;AAAA,8BACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,8BAC9B,QAAA,EAAU,EAAA;AAAA,8BACV,UAAA,EAAY,EAAA;AAAA,8BACZ,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,8BAC9B,KAAA,EAAO;AAAA,6BACT;AAAA,4BAEC,QAAA,EAAA,CAAA,GAAI;AAAA;AAAA;AACP;AAAA,qBAEJ;AAAA,oBAGC,CAAC,QAAA,IAAY,CAAA,GAAI,KAAA,CAAM,MAAA,GAAS,oBAC/BE,cAAAA;AAAA,sBAACO,gBAAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,QAAA,EAAU,CAAA;AAAA,0BACV,UAAA,EAAY,CAAA;AAAA,0BACZ,SAAA,EAAW,CAAA;AAAA,0BACX,MAAA,EAAQ,CAAA;AAAA,0BACR,eAAA,EAAiB,CAAA,GAAI,OAAA,GAAU,OAAA,GAAU;AAAA;AAC3C;AAAA,qBACF,GACE,IAAA;AAAA,oBACH,QAAA,IAAY,CAAA,GAAI,KAAA,CAAM,MAAA,GAAS,oBAC9BP,cAAAA;AAAA,sBAACO,gBAAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,KAAA,EAAO,CAAA;AAAA,0BACP,QAAA,EAAU,CAAA;AAAA,0BACV,UAAA,EAAY,CAAA;AAAA,0BACZ,SAAA,EAAW,EAAA;AAAA,0BACX,cAAA,EAAgBT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,0BAC7B,eAAA,EAAiB,CAAA,GAAI,OAAA,GAAU,OAAA,GAAU;AAAA;AAC3C;AAAA,qBACF,GACE;AAAA;AAAA;AAAA,eACN;AAAA,8BAGAM,eAAAA;AAAA,gBAACG,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,UAAA,EAAY,WAAW,YAAA,GAAe,QAAA;AAAA,oBACtC,SAAA,EAAW,QAAA,GAAW,CAAA,GAAIT,MAAAA,CAAM,MAAM,CAAC,CAAA;AAAA,oBACvC,aAAA,EAAe,QAAA,GAAWA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,oBAC3C,QAAA,EAAU,WAAW,MAAA,GAAY;AAAA,mBACnC;AAAA,kBAEC,QAAA,EAAA;AAAA,oBAAA,WAAA,mBACCE,cAAAA;AAAA,sBAACM,gBAAAA;AAAA,sBAAA;AAAA,wBACC,kBAAA,EAAoB,SAAA;AAAA,wBACpB,KAAA,EAAO;AAAA,0BACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,0BAC9B,QAAA,EAAU,EAAA;AAAA,0BACV,UAAA,EAAY,EAAA;AAAA,0BACZ,SAAA,EAAW,WAAW,MAAA,GAAS,QAAA;AAAA,0BAC/B,UAAA,EAAY,SACRA,MAAAA,CAAM,IAAA,CAAK,OAAO,QAAA,GAClBA,MAAAA,CAAM,KAAK,MAAA,CAAO,MAAA;AAAA,0BACtB,KAAA,EAAO,MAAA,IAAU,IAAA,GAAO,CAAA,CAAE,OAAO,CAAA,CAAE;AAAA,yBACrC;AAAA,wBAEC,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA,wBAGL,CAAA,CAAE,KAAA;AAAA,oBAGH,EAAE,WAAA,KAAgB,MAAA,IAAa,EAAE,WAAA,KAAgB,IAAA,GAChD,6BACEE,cAAAA;AAAA,sBAACM,gBAAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,0BAC9B,QAAA,EAAU,EAAA;AAAA,0BACV,UAAA,EAAY,EAAA;AAAA,0BACZ,SAAA,EAAW,CAAA;AAAA,0BACX,SAAA,EAAW,WAAW,MAAA,GAAS,QAAA;AAAA,0BAC/B,OAAO,CAAA,CAAE;AAAA,yBACX;AAAA,wBAEC,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA,qBACL,GAEA,EAAE,WAAA,GAEF;AAAA;AAAA;AAAA;AACN;AAAA,WAAA;AAAA,UAxIK;AAAA,SAyIP;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ;ACnNA,SAAS,QAAA,GAAW;AAClB,EAAA,uBACEM,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,oBAAAV,cAAAA,CAACwB,SAAA,EAAE,CAAA,EAAG,OAAO,CAAA,EAAG,KAAA,EAAO,IAAA,EAAK,SAAA,EAC1B,QAAA,kBAAAxB,cAAAA;AAAA,MAACW,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,uvBAAA;AAAA,QACF,QAAA,EAAS;AAAA;AAAA,KACX,EACF,CAAA;AAAA,oBACAX,cAAAA,CAACwB,OAAAA,EAAA,EAAE,CAAA,EAAG,OAAO,CAAA,EAAG,KAAA,EAAO,IAAA,EAAK,SAAA,EAC1B,QAAA,kBAAAxB,cAAAA;AAAA,MAACW,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,26CAAA;AAAA,QACF,QAAA,EAAS;AAAA;AAAA,KACX,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAGA,SAAS,YAAA,CAAa,EAAE,KAAA,EAAAb,MAAAA,EAAM,EAAyB;AACrD,EAAA,uBACEM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,OAAO,EAAE,aAAA,EAAe,KAAA,EAAO,UAAA,EAAY,UAAU,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,GAAE,EAC7E,QAAA,EAAA;AAAA,oBAAAM,eAAAA;AAAA,MAACG,gBAAAA;AAAA,MAAA;AAAA,QACC,2BAAA,EAA2B,IAAA;AAAA,QAC3B,yBAAA,EAA0B,qBAAA;AAAA,QAC1B,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,EAAA;AAAA,UACP,MAAA,EAAQ,EAAA;AAAA,UACR,YAAA,EAAc,CAAA;AAAA,UACd,QAAA,EAAU,QAAA;AAAA,UACV,WAAA,EAAa,GAAA;AAAA,UACb,WAAA,EAAaT,OAAM,KAAA,CAAM;AAAA,SAC3B;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAE,cAAAA,CAACO,kBAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,eAAA,EAAiB,SAAA,EAAU,EAAG,CAAA;AAAA,0BACtDP,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,eAAA,EAAiB,SAAA,EAAU,EAAG,CAAA;AAAA,0BACtDP,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,eAAA,EAAiB,SAAA,EAAU,EAAG;AAAA;AAAA;AAAA,KACxD;AAAA,oBACAP,cAAAA;AAAA,MAACM,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,UAC9B,QAAA,EAAU,IAAA;AAAA,UACV,aAAA,EAAe,GAAA;AAAA,UACf,KAAA,EAAOA,OAAM,KAAA,CAAM;AAAA,SACrB;AAAA,QACD,QAAA,EAAA;AAAA;AAAA;AAED,GAAA,EACF,CAAA;AAEJ;AAGA,SAASiC,WAAAA,CAAW,MAAuB,SAAA,EAAuC;AAChF,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,SAAS,QAAA,EAAU;AACxD,IAAA,uBAAO/B,cAAAA,CAACM,gBAAAA,EAAA,EAAK,KAAA,EAAO,WAAY,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,EACvC;AACA,EAAA,OAAO,IAAA;AACT;AAIO,SAAS,MAAA,CAAO;AAAA,EACrB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAQ,EAAC;AAAA,EACT,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMR,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,UAAA,GAAwB;AAAA,IAC5B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,IAC9B,OAAO,CAAA,CAAE;AAAA,GACX;AACA,EAAA,MAAM,aAAA,GAA2B;AAAA,IAC/B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,OAAO,CAAA,CAAE;AAAA,GACX;AAEA,EAAA,uBACEM,eAAAA;AAAA,IAACG,gBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,QAAA;AAAA,MAClB,KAAA,EAAO;AAAA,QACL;AAAA,UACE,iBAAiB,CAAA,CAAE,OAAA;AAAA,UACnB,iBAAA,EAAmBT,OAAM,MAAA,CAAO,IAAA;AAAA,UAChC,mBAAmB,CAAA,CAAE,MAAA;AAAA,UACrB,KAAA,EAAO;AAAA,SACT;AAAA,QACA,MAAA,GAAS,EAAE,QAAA,EAAU,UAAA,EAAY,KAAK,CAAA,EAAG,MAAA,EAAQ,IAAG,GAAI,IAAA;AAAA,QACxD;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,QAAA,mBACCE,cAAAA;AAAA,UAACO,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,iBAAiB,CAAA,CAAE,aAAA;AAAA,cACnB,iBAAA,EAAmBT,OAAM,MAAA,CAAO,IAAA;AAAA,cAChC,mBAAmB,CAAA,CAAE;AAAA,aACvB;AAAA,YAEA,QAAA,kBAAAE,cAAAA;AAAA,cAACO,gBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,aAAA,EAAe,KAAA;AAAA,kBACf,UAAA,EAAY,QAAA;AAAA,kBACZ,cAAA,EAAgB,eAAA;AAAA,kBAChB,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,kBAClB,eAAA,EAAiB,CAAA;AAAA,kBACjB,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,iBAClC;AAAA,gBAEC,uBAAa,IAAA,mBAAOE,eAAC,YAAA,EAAA,EAAa,KAAA,EAAOF,QAAO,CAAA,GAAK;AAAA;AAAA;AACxD;AAAA,SACF,GACE,IAAA;AAAA,wBAEJM,eAAAA;AAAA,UAACG,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,aAAA,EAAe,KAAA;AAAA,cACf,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,QAAA;AAAA,cACZ,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cAClB,SAAA,EAAW,EAAA;AAAA,cACX,eAAA,EAAiBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,cAClC,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,aAClC;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAM,eAAAA;AAAA,gBAACG,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,aAAA,EAAe,KAAA;AAAA,oBACf,UAAA,EAAY,QAAA;AAAA,oBACZ,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,oBAClB,UAAA,EAAY;AAAA,mBACd;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAAE,cAAAA;AAAA,sBAACO,gBAAAA;AAAA,sBAAA;AAAA,wBACC,6BAA6B,IAAA,IAAQ,IAAA;AAAA,wBACrC,yBAAA,EAA2B,IAAA,IAAQ,IAAA,GAAO,qBAAA,GAAwB,MAAA;AAAA,wBAClE,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,YAAY,QAAA,EAAS;AAAA,wBAEnD,QAAA,EAAA,IAAA,IAAQ,IAAA,GAAO,IAAA,mBAAOP,eAAC,QAAA,EAAA,EAAS;AAAA;AAAA,qBACnC;AAAA,oCACAI,gBAACG,gBAAAA,EAAA,EAAK,OAAO,EAAE,aAAA,EAAe,UAAS,EACpC,QAAA,EAAA;AAAA,sBAAAwB,WAAAA,CAAW,OAAO,UAAU,CAAA;AAAA,sBAC5B,QAAA,IAAY,IAAA,GAAOA,WAAAA,CAAW,QAAA,EAAU,aAAa,CAAA,GAAI;AAAA,qBAAA,EAC5D;AAAA;AAAA;AAAA,eACF;AAAA,cAEC,KAAA,CAAM,MAAA,GAAS,CAAA,mBACd/B,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,YAAA;AAAA,kBACL,kBAAA,EAAmB,SAAA;AAAA,kBACnB,KAAA,EAAO;AAAA,oBACL,aAAA,EAAe,KAAA;AAAA,oBACf,QAAA,EAAU,MAAA;AAAA,oBACV,UAAA,EAAY,QAAA;AAAA,oBACZ,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,oBAClB,UAAA,EAAYA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,mBAC3B;AAAA,kBAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,qBAChBE,cAAAA,CAAC,WAAA,EAAA,EAAoB,IAAA,EAAY,KAAA,EAAOF,MAAAA,EAAAA,EAAtB,CAA6B,CAChD;AAAA;AAAA,eACH,GACE,IAAA;AAAA,cAEH,OAAA,IAAW,uBACVE,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,UAAA,EAAY,MAAA;AAAA,oBACZ,aAAA,EAAe,KAAA;AAAA,oBACf,UAAA,EAAY,QAAA;AAAA,oBACZ,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,oBAClB,UAAA,EAAY;AAAA,mBACd;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA,eACH,GACE;AAAA;AAAA;AAAA;AACN;AAAA;AAAA,GACF;AAEJ;AAQA,SAAS,WAAA,CAAY,EAAE,IAAA,EAAM,KAAA,EAAAA,QAAM,EAAqB;AACtD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,IAAIJ,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,MAAA,GAAS,KAAK,MAAA,IAAU,KAAA;AAC9B,EAAA,MAAM,cACJ,OAAO,IAAA,CAAK,UAAU,QAAA,IAAY,OAAO,KAAK,KAAA,KAAU,QAAA;AAE1D,EAAA,MAAM,UAAA,GAAwB;AAAA,IAC5B,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,IAC9B,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,SAASA,MAAAA,CAAM,IAAA,CAAK,OAAO,QAAA,GAAWA,MAAAA,CAAM,KAAK,MAAA,CAAO,MAAA;AAAA,IACpE,KAAA,EAAO,MAAA,GAAS,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE;AAAA,GAChC;AAEA,EAAA,uBACEE,cAAAA;AAAA,IAACG,qBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,MAAA;AAAA,MAClB,kBAAA,EAAoB,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,GAAI,MAAA;AAAA,MACvD,kBAAA,EAAoB,EAAE,QAAA,EAAU,MAAA,EAAO;AAAA,MACvC,OAAA,EAAS,MAAM,IAAA,CAAK,OAAA,IAAU;AAAA,MAC9B,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,MAC9B,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAA4B;AAC5C,QAAA,IAAI,eAAA,GAAkB,aAAA;AACtB,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,eAAA,GAAkB,CAAA,CAAE,aAAA;AAAA,QACtB,WAAW,OAAA,EAAS;AAClB,UAAA,eAAA,GAAkBL,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,QAC1C;AACA,QAAA,OAAO;AAAA,UACL,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,SAAA,EAAW,EAAA;AAAA,UACX,eAAA,EAAiBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,UAC9B,iBAAA,EAAmB,EAAA;AAAA,UACnB,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,UAC3B,WAAA,EAAa,OAAA,GAAUA,MAAAA,CAAM,cAAA,GAAiB,CAAA;AAAA,UAC9C,WAAA,EAAa,OAAA,GAAU,CAAA,CAAE,KAAA,GAAQ,aAAA;AAAA,UACjC;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MAEC,QAAA,EAAAiC,WAAAA,CAAW,IAAA,CAAK,KAAA,EAAO,UAAU;AAAA;AAAA,GACpC;AAEJ;ACtOA,SAASC,SAAAA,GAAW;AAClB,EAAA,uBACE5B,eAAAA;AAAA,IAACM,sBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAA;AAAA,MACP,MAAA,EAAQ,EAAA;AAAA,MACR,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,iBAAA,EAAkB,OAAA;AAAA,MAClB,kBAAA,EAAmB,MAAA;AAAA,MAEnB,QAAA,EAAA;AAAA,wBAAAV,cAAAA,CAACwB,SAAA,EAAE,CAAA,EAAG,OAAO,CAAA,EAAG,KAAA,EAAO,IAAA,EAAK,SAAA,EAC1B,QAAA,kBAAAxB,cAAAA;AAAA,UAACW,UAAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAE,uvBAAA;AAAA,YACF,QAAA,EAAS;AAAA;AAAA,SACX,EACF,CAAA;AAAA,wBACAX,cAAAA,CAACwB,OAAAA,EAAA,EAAE,CAAA,EAAG,OAAO,CAAA,EAAG,KAAA,EAAO,IAAA,EAAK,SAAA,EAC1B,QAAA,kBAAAxB,cAAAA;AAAA,UAACW,UAAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAE,26CAAA;AAAA,YACF,QAAA,EAAS;AAAA;AAAA,SACX,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AAWA,SAAS,OAAA,CAAQ,EAAE,IAAA,EAAM,KAAA,EAAAb,QAAO,KAAA,EAAO,QAAA,EAAU,SAAQ,EAAiB;AACxE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,IAAIJ,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,cACJ,OAAO,IAAA,CAAK,UAAU,QAAA,IAAY,OAAO,KAAK,KAAA,KAAU,QAAA;AAE1D,EAAA,uBACEE,cAAAA;AAAA,IAACG,qBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,MAAA;AAAA,MAClB,kBAAA,EAAoB,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,GAAI,MAAA;AAAA,MACvD,OAAA,EAAS,MAAM,OAAA,GAAU,IAAI,CAAA;AAAA,MAC7B,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,MAC9B,OAAA,EAAS,CAAA;AAAA,MACT,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,MAA6B;AAAA,QAC7C,SAAA,EAAW,EAAA;AAAA,QACX,cAAA,EAAgB,QAAA;AAAA,QAChB,YAAA,EAAcL,OAAM,MAAA,CAAO,EAAA;AAAA,QAC3B,WAAA,EAAa,OAAA,GAAUA,MAAAA,CAAM,cAAA,GAAiB,CAAA;AAAA,QAC9C,WAAA,EAAa,OAAA,GAAU,CAAA,CAAE,KAAA,GAAQ,aAAA;AAAA,QACjC,OAAA,EAAS,UAAU,GAAA,GAAM;AAAA,OAC3B,CAAA;AAAA,MAEC,wCACCE,cAAAA;AAAA,QAACM,gBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,YAC9B,QAAA;AAAA,YACA,YAAY,QAAA,GAAW,EAAA;AAAA,YACvB,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,OAAA;AAAA,YAC9B;AAAA,WACF;AAAA,UAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,UAGR,IAAA,CAAK;AAAA;AAAA,GAET;AAEJ;AASA,SAAS,aAAa,EAAE,IAAA,EAAM,KAAA,EAAAA,MAAAA,EAAO,SAAQ,EAAsB;AACjE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,IAAIJ,MAAAA,CAAM,KAAA;AAEhB,EAAA,uBACEE,cAAAA;AAAA,IAACG,qBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,MAAA;AAAA,MAClB,oBAAoB,IAAA,CAAK,KAAA;AAAA,MACzB,OAAA,EAAS,MAAM,OAAA,GAAU,IAAI,CAAA;AAAA,MAC7B,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,MAC9B,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,MAA6B;AAAA,QAC7C,KAAA,EAAO,EAAA;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,QAAA;AAAA,QAChB,YAAA,EAAcL,OAAM,MAAA,CAAO,EAAA;AAAA,QAC3B,WAAA,EAAa,OAAA,GAAUA,MAAAA,CAAM,cAAA,GAAiBA,OAAM,MAAA,CAAO,IAAA;AAAA,QAC3D,aAAa,OAAA,GAAU,CAAA,CAAE,QAAQ,OAAA,GAAU,CAAA,CAAE,UAAU,CAAA,CAAE,MAAA;AAAA,QACzD,eAAA,EAAiB,OAAA,GAAU,CAAA,CAAE,aAAA,GAAgB;AAAA,OAC/C,CAAA;AAAA,MAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,GACR;AAEJ;AAOO,SAAS,MAAA,CAAO;AAAA,EACrB,IAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAU,EAAC;AAAA,EACX,SAAS,EAAC;AAAA,EACV,SAAA;AAAA,EACA,cAAc,EAAC;AAAA,EACf,WAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,aAAA,GACJ,OAAO,OAAA,KAAY,QAAA,IAAY,OAAO,OAAA,KAAY,QAAA;AACpD,EAAA,MAAM,eAAA,GACJ,OAAO,SAAA,KAAc,QAAA,IAAY,OAAO,SAAA,KAAc,QAAA;AACxD,EAAA,MAAM,KAAA,GAAQA,MAAAA,CAAM,IAAA,CAAK,SAAA,CAAU,GAAG,CAAA;AACtC,EAAA,MAAM,SAAA,GAAY,wBAAA;AAElB,EAAA,uBACEM,eAAAA;AAAA,IAACG,gBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,SAAA;AAAA,MAClB,kBAAA,EAAmB,QAAA;AAAA,MACnB,KAAA,EAAO;AAAA,QACL;AAAA,UACE,iBAAiB,CAAA,CAAE,OAAA;AAAA,UACnB,cAAA,EAAgBT,OAAM,MAAA,CAAO,IAAA;AAAA,UAC7B,gBAAgB,CAAA,CAAE;AAAA,SACpB;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAM,eAAAA;AAAA,UAACG,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAUT,OAAM,MAAA,CAAO,YAAA;AAAA,cACvB,KAAA,EAAO,MAAA;AAAA,cACP,SAAA,EAAW,QAAA;AAAA,cACX,eAAA,EAAiBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cAC9B,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cAChC,aAAA,EAAe,KAAA;AAAA,cACf,QAAA,EAAU,MAAA;AAAA,cACV,GAAA,EAAKA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cAClB,cAAA,EAAgB;AAAA,aAClB;AAAA,YAGA,QAAA,EAAA;AAAA,8BAAAM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAG,QAAA,EAAU,GAAA,EAAI,EAChD,QAAA,EAAA;AAAA,gCAAAE,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,SAAA,EAAW,YAAA,EAAa,EACpC,QAAA,EAAA,IAAA,oBAAQP,cAAAA,CAACgC,SAAAA,EAAA,EAAS,CAAA,EACrB,CAAA;AAAA,gBAEC,OAAA,IAAW,IAAA,IAAQ,OAAA,KAAY,KAAA,GAC9B,gCACEhC,cAAAA;AAAA,kBAACM,gBAAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,sBAC9B,QAAA,EAAU,EAAA;AAAA,sBACV,UAAA,EAAY,EAAA;AAAA,sBACZ,OAAO,CAAA,CAAE;AAAA,qBACX;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA,oBAGH,OAAA,GAEA,IAAA;AAAA,gBAEH,MAAA,CAAO,SAAS,CAAA,mBACfE,eAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,KAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAE,EACtD,iBAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACdE,cAAAA;AAAA,kBAAC,YAAA;AAAA,kBAAA;AAAA,oBAEC,IAAA,EAAM,CAAA;AAAA,oBACN,KAAA,EAAOF,MAAAA;AAAA,oBACP,OAAA,EAAS;AAAA,mBAAA;AAAA,kBAHJ;AAAA,iBAKR,GACH,CAAA,GACE;AAAA,eAAA,EACN,CAAA;AAAA,8BAGAE,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,aAAA,EAAe,KAAA;AAAA,oBACf,QAAA,EAAU,MAAA;AAAA,oBACV,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,mBACpB;AAAA,kBAEC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,KAAM;AACvB,oBAAA,MAAM,cACJ,OAAO,GAAA,CAAI,UAAU,QAAA,IAAY,OAAO,IAAI,KAAA,KAAU,QAAA;AACxD,oBAAA,uBACEM,gBAACG,gBAAAA,EAAA,EAAa,OAAO,EAAE,QAAA,EAAU,KAAI,EAClC,QAAA,EAAA;AAAA,sBAAA,WAAA,mBACCP,cAAAA;AAAA,wBAACM,gBAAAA;AAAA,wBAAA;AAAA,0BACC,iBAAA,EAAkB,QAAA;AAAA,0BAClB,KAAA,EAAO;AAAA,4BACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,4BAC9B,QAAA,EAAU,EAAA;AAAA,4BACV,UAAA,EAAY,EAAA;AAAA,4BACZ,UAAA,EAAYA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA;AAAA,4BAC9B,OAAO,CAAA,CAAE,IAAA;AAAA,4BACT,aAAA,EAAe,GAAA;AAAA,4BACf,YAAA,EAAcA,MAAAA,CAAM,KAAA,CAAM,CAAC;AAAA,2BAC7B;AAAA,0BAEC,QAAA,EAAA,GAAA,CAAI;AAAA;AAAA,0BAGP,GAAA,CAAI,KAAA;AAAA,sBAEL,IAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,sBACjBE,cAAAA;AAAA,wBAAC,OAAA;AAAA,wBAAA;AAAA,0BAEC,IAAA,EAAM,CAAA;AAAA,0BACN,KAAA,EAAOF,MAAAA;AAAA,0BACP,OAAO,CAAA,CAAE,SAAA;AAAA,0BACT,QAAA,EAAU,EAAA;AAAA,0BACV,OAAA,EAAS;AAAA,yBAAA;AAAA,wBALJ;AAAA,uBAOR;AAAA,qBAAA,EAAA,EA5BQ,CA6BX,CAAA;AAAA,kBAEJ,CAAC;AAAA;AAAA;AACH;AAAA;AAAA,SACF;AAAA,wBAGAE,eAACO,gBAAAA,EAAA,EAAK,OAAO,EAAE,eAAA,EAAiB,KAAA,EAAM,EACpC,QAAA,kBAAAH,eAAAA;AAAA,UAACG,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAUT,OAAM,MAAA,CAAO,YAAA;AAAA,cACvB,KAAA,EAAO,MAAA;AAAA,cACP,SAAA,EAAW,QAAA;AAAA,cACX,eAAA,EAAiBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cAC9B,iBAAA,EAAmBA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cAChC,aAAA,EAAe,KAAA;AAAA,cACf,QAAA,EAAU,MAAA;AAAA,cACV,GAAA,EAAKA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cAClB,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB;AAAA,aAClB;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,eAAA,IAAmB,SAAA,IAAa,uBAC/BE,cAAAA;AAAA,gBAACM,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,oBAC9B,QAAA,EAAU,EAAA;AAAA,oBACV,UAAA,EAAY,EAAA;AAAA,oBACZ,KAAA,EAAO;AAAA,mBACT;AAAA,kBAEC,QAAA,EAAA,SAAA,IAAa;AAAA;AAAA,eAChB,GAEA,SAAA;AAAA,cAGD,WAAA,CAAY,MAAA,GAAS,CAAA,mBACpBE,cAAAA;AAAA,gBAACO,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,aAAA,EAAe,KAAA;AAAA,oBACf,QAAA,EAAU,MAAA;AAAA,oBACV,GAAA,EAAKT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,oBAClB,UAAA,EAAY;AAAA,mBACd;AAAA,kBAEC,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,EAAG,sBACnBE,cAAAA;AAAA,oBAAC,OAAA;AAAA,oBAAA;AAAA,sBAEC,IAAA,EAAM,CAAA;AAAA,sBACN,KAAA,EAAOF,MAAAA;AAAA,sBACP,KAAA,EAAO,SAAA;AAAA,sBACP,QAAA,EAAU,EAAA;AAAA,sBACV,OAAA,EAAS;AAAA,qBAAA;AAAA,oBALJ;AAAA,mBAOR;AAAA;AAAA,eACH,GACE;AAAA;AAAA;AAAA,SACN,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;ACjVA,SAAS8B,QAAAA,CAAQ,EAAE,GAAA,EAAK,KAAA,EAAM,EAA4C;AACxE,EAAA,uBACE5B,cAAAA,CAACU,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,kBAAAV,cAAAA;AAAA,IAACW,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,GAAA,KAAQ,MAAA,GAAS,gBAAA,GAAmB,eAAA;AAAA,MACvC,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA,EAAa,CAAA;AAAA,MACb,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAGO,SAAS,QAAA,CAAS;AAAA,EACvB,QAAA;AAAA,EACA,MAAA,GAAS,GAAA;AAAA,EACT,QAAA,GAAW,CAAA;AAAA,EACX,MAAA,GAAS,IAAA;AAAA,EACT,IAAA,GAAO,IAAA;AAAA,EACP,KAAA,EAAO,SAAA;AAAA,EACP;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMb,SAAQ,SAAA,IAAa,QAAA;AAE3B,EAAA,MAAM,MAAA,GAAS2B,wBAAAA,CAAM,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA;AAC9C,EAAA,MAAM,IAAI,MAAA,CAAO,MAAA;AAEjB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIvB,iBAAS,CAAC,CAAA;AACtC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,iBAAS,CAAC,CAAA;AACpC,EAAA,MAAM,SAAA,GAAYgB,eAAmB,IAAI,CAAA;AAGzC,EAAA,MAAM,EAAA,GAAKe,mBAAA;AAAA,IACT,CAAC,IAAA,KAAiB;AAChB,MAAA,IAAI,IAAI,CAAA,EAAG;AACX,MAAA,MAAM,MAAA,GAAA,CAAW,IAAA,GAAO,CAAA,GAAK,CAAA,IAAK,CAAA;AAClC,MAAA,SAAA,CAAU,MAAM,CAAA;AAChB,MAAA,IAAI,QAAQ,CAAA,EAAG;AACb,QAAA,SAAA,CAAU,OAAA,EAAS,SAAS,EAAE,CAAA,EAAG,SAAS,KAAA,EAAO,QAAA,EAAU,MAAM,CAAA;AAAA,MACnE;AAAA,IACF,CAAA;AAAA,IACA,CAAC,GAAG,KAAK;AAAA,GACX;AAEA,EAAA,MAAM,QAAA,GAAWA,mBAAA,CAAY,CAAC,CAAA,KAAyB;AACrD,IAAA,QAAA,CAAS,CAAA,CAAE,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA;AAAA,EACrC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,mBAAA,GAAsBA,mBAAA;AAAA,IAC1B,CAAC,CAAA,KAA+C;AAC9C,MAAA,MAAM,CAAA,GAAI,CAAA,CAAE,WAAA,CAAY,iBAAA,CAAkB,KAAA,IAAS,KAAA;AACnD,MAAA,IAAI,KAAK,CAAA,EAAG;AACZ,MAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,EAAE,WAAA,CAAY,aAAA,CAAc,IAAI,CAAC,CAAA;AACxD,MAAA,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,GAAI,CAAA,EAAG,GAAG,CAAC,CAAC,CAAA;AAAA,IAC7C,CAAA;AAAA,IACA,CAAC,GAAG,KAAK;AAAA,GACX;AAGA,EAAAP,kBAAU,MAAM;AACd,IAAA,IAAI,CAAC,QAAA,IAAY,CAAA,GAAI,CAAA,EAAG;AACxB,IAAA,MAAM,CAAA,GAAI,YAAY,MAAM;AAC1B,MAAA,SAAA,CAAU,CAAC,CAAA,KAAM;AACf,QAAA,MAAM,IAAA,GAAA,CAAQ,IAAI,CAAA,IAAK,CAAA;AACvB,QAAA,IAAI,QAAQ,CAAA,EAAG;AACb,UAAA,SAAA,CAAU,OAAA,EAAS,SAAS,EAAE,CAAA,EAAG,OAAO,KAAA,EAAO,QAAA,EAAU,MAAM,CAAA;AAAA,QACjE;AACA,QAAA,OAAO,IAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,GAAG,QAAQ,CAAA;AACX,IAAA,OAAO,MAAM,cAAc,CAAC,CAAA;AAAA,EAC9B,CAAA,EAAG,CAAC,QAAA,EAAU,CAAA,EAAG,KAAK,CAAC,CAAA;AAEvB,EAAA,MAAM,cAAA,GAA4B;AAAA,IAChC,QAAA,EAAU,UAAA;AAAA,IACV,KAAA,EAAO,MAAA;AAAA,IACP,MAAA;AAAA,IACA,YAAA,EAAc5B,MAAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAAA,IAChC,QAAA,EAAU,QAAA;AAAA,IACV,eAAA,EAAiBA,OAAM,KAAA,CAAM;AAAA,GAC/B;AAEA,EAAA,uBACEM,eAAAA,CAACG,gBAAAA,EAAA,EAAK,MAAA,EAAO,iBAAgB,KAAA,EAAO,CAAC,cAAA,EAAgB,KAAK,CAAA,EACxD,QAAA,EAAA;AAAA,oBAAAP,cAAAA;AAAA,MAACoB,sBAAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAO,sBAAA;AAAA,QACP,GAAA,EAAK,SAAA;AAAA,QACL,UAAA,EAAU,IAAA;AAAA,QACV,aAAA,EAAa,IAAA;AAAA,QACb,8BAAA,EAAgC,KAAA;AAAA,QAChC,QAAA;AAAA,QACA,mBAAA;AAAA,QACA,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,QAAQ,MAAA,EAAO;AAAA,QAEtC,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,wBAClBpB,cAAAA;AAAA,UAACO,gBAAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,GAAQ,CAAA,GAAI,QAAQ,MAAA,EAAW,MAAA,EAAQ,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAS;AAAA,YAEjF,QAAA,EAAA;AAAA,WAAA;AAAA,UAHI;AAAA,SAKR;AAAA;AAAA,KACH;AAAA,IAEC,MAAA,IAAU,CAAA,GAAI,CAAA,GACV,CAAC,MAAA,EAAQ,MAAM,CAAA,CAAY,GAAA,CAAI,CAAC,GAAA,qBAC/BP,cAAAA;AAAA,MAACG,qBAAAA;AAAA,MAAA;AAAA,QAEC,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAoB,GAAA;AAAA,QACpB,OAAA,EAAS,MAAM,EAAA,CAAG,GAAA,KAAQ,SAAS,MAAA,GAAS,CAAA,GAAI,SAAS,CAAC,CAAA;AAAA,QAC1D,OAAA,EAAS,CAAA;AAAA,QACT,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AACtB,UAAA,MAAM,UAAA,GAAwB;AAAA,YAC5B,QAAA,EAAU,UAAA;AAAA,YACV,GAAA,EAAK,KAAA;AAAA,YACL,SAAA,EAAW,GAAA;AAAA,YACX,CAAC,QAAQ,MAAA,GAAS,MAAA,GAAS,OAAO,GAAGL,MAAAA,CAAM,MAAM,CAAC,CAAA;AAAA,YAClD,KAAA,EAAO,EAAA;AAAA,YACP,MAAA,EAAQ,EAAA;AAAA,YACR,UAAA,EAAY,QAAA;AAAA,YACZ,cAAA,EAAgB,QAAA;AAAA,YAChB,YAAA,EAAcA,OAAM,MAAA,CAAO,IAAA;AAAA,YAC3B,iBAAiB,OAAA,GACbA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,GACtB,wBAAA;AAAA,YACJ,GAAGA,OAAM,MAAA,CAAO;AAAA,WAClB;AACA,UAAA,OAAO,UAAA;AAAA,QACT,CAAA;AAAA,QAEA,QAAA,kBAAAE,cAAAA,CAAC4B,QAAAA,EAAA,EAAQ,GAAA,EAAU,OAAO9B,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,EAAG;AAAA,OAAA;AAAA,MAxB9C;AAAA,KA0BR,CAAA,GACD,IAAA;AAAA,IAEH,IAAA,IAAQ,CAAA,GAAI,CAAA,mBACXE,cAAAA;AAAA,MAACO,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,QAAA,EAAU,UAAA;AAAA,UACV,MAAA,EAAQT,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,UACrB,IAAA,EAAM,CAAA;AAAA,UACN,KAAA,EAAO,CAAA;AAAA,UACP,aAAA,EAAe,KAAA;AAAA,UACf,cAAA,EAAgB,QAAA;AAAA,UAChB,UAAA,EAAY,QAAA;AAAA,UACZ,GAAA,EAAK;AAAA,SACP;AAAA,QAEC,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,GAAA,KAAQ;AACtB,UAAA,MAAM,WAAW,GAAA,KAAQ,MAAA;AACzB,UAAA,uBACEE,cAAAA;AAAA,YAACG,qBAAAA;AAAA,YAAA;AAAA,cAEC,iBAAA,EAAkB,QAAA;AAAA,cAClB,kBAAA,EAAoB,CAAA,YAAA,EAAe,GAAA,GAAM,CAAC,CAAA,CAAA;AAAA,cAC1C,kBAAA,EAAoB,EAAE,QAAA,EAAU,QAAA,EAAS;AAAA,cACzC,OAAA,EAAS,MAAM,EAAA,CAAG,GAAG,CAAA;AAAA,cACrB,OAAA,EAAS,EAAA;AAAA,cACT,KAAA,EAAO;AAAA,gBACL,KAAA,EAAO,WAAW,EAAA,GAAK,CAAA;AAAA,gBACvB,MAAA,EAAQ,CAAA;AAAA,gBACR,YAAA,EAAcL,OAAM,MAAA,CAAO,IAAA;AAAA,gBAC3B,eAAA,EAAiB,QAAA,GACbA,MAAAA,CAAM,KAAA,CAAM,OAAA,GACZ;AAAA;AACN,aAAA;AAAA,YAbK;AAAA,WAcP;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;ACnJA,IAAM,QAAA,GAAkC;AAAA,EACtC,SAAA,EAAW,CAAA;AAAA,EACX,OAAA,EAAS,CAAA;AAAA,EACT,IAAA,EAAM,CAAA;AAAA,EACN,QAAA,EAAU,KAAA;AAAA,EACV,IAAA,EAAM,KAAA;AAAA,EACN,UAAA,EAAY,CAAA;AAAA,EACZ,IAAA,EAAM,KAAA;AAAA,EACN,MAAA,EAAQ,KAAA;AAAA,EACR,KAAA,EAAO,KAAA;AAAA,EACP,GAAA,EAAK,KAAA;AAAA,EACL,MAAA,EAAQ,KAAA;AAAA,EACR,KAAA,EAAO,KAAA;AAAA,EACP,UAAA,EAAY,KAAA;AAAA,EACZ,QAAA,EAAU;AACZ,CAAA;AAEA,IAAM,UAAA,GAAa,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAC9B,IAAM,QAAA,GAAW,CAAC,EAAA,EAAI,SAAA,EAAW,SAAS,UAAU,CAAA;AACpD,IAAM,OAAA,GAAU,CAAC,EAAA,EAAI,KAAA,EAAO,QAAQ,MAAM,CAAA;AAU1C,IAAM,IAAA,GAAO;AAAA,EACX,KAAA,EAAO,EAAA;AAAA,EACP,MAAA,EAAQ,EAAA;AAAA,EACR,OAAA,EAAS,WAAA;AAAA,EACT,IAAA,EAAM;AACR,CAAA;AAEA,SAAS,QAAA,CAAS,EAAE,KAAA,EAAO,GAAA,EAAI,EAAkC;AAC/D,EAAA,uBACEM,eAAAA,CAACM,sBAAAA,EAAA,EAAK,GAAG,IAAA,EACP,QAAA,EAAA;AAAA,oBAAAV,cAAAA,CAACkC,UAAA,EAAA,EAAQ,CAAA,EAAG,CAAA,EAAG,GAAG,EAAA,EAAI,QAAA,EAAU,GAAA,GAAM,CAAA,GAAI,EAAA,EAAI,UAAA,EAAW,KAAA,EAAM,IAAA,EAAM,OAAO,QAAA,EAAA,GAAA,EAE5E,CAAA;AAAA,oBACAlC,cAAAA,CAACkC,UAAA,EAAA,EAAQ,CAAA,EAAG,GAAA,GAAM,KAAK,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,QAAA,EAAU,MAAM,EAAA,GAAK,CAAA,EAAG,YAAW,KAAA,EAAM,IAAA,EAAM,OAAO,QAAA,EAAA,GAAA,EAExF;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,KAAA,EAAM,EAAc;AACzC,EAAA,uBACE9B,eAAAA,CAACM,sBAAAA,EAAA,EAAK,GAAG,IAAA,EACP,QAAA,EAAA;AAAA,oBAAAV,cAAAA,CAACkC,UAAA,EAAA,EAAQ,CAAA,EAAG,EAAA,EAAI,GAAG,EAAA,EAAI,QAAA,EAAU,EAAA,EAAI,UAAA,EAAW,KAAA,EAAM,UAAA,EAAW,QAAA,EAAS,IAAA,EAAM,OAAO,QAAA,EAAA,GAAA,EAEvF,CAAA;AAAA,oBACAlC,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,UAAA,EAAW,MAAA,EAAQ,KAAA,EAAO,WAAA,EAAa,CAAA,EAAG,aAAA,EAAc,OAAA,EAAQ,gBAAe,OAAA,EAAQ,CAAA;AAAA,oBAC/FX,cAAAA;AAAA,MAACW,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,6BAAA;AAAA,QACF,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA,EAAa,CAAA;AAAA,QACb,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA;AACjB,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,QAAA,CAAS,EAAE,KAAA,EAAM,EAAc;AACtC,EAAA,uBACEP,eAAAA,CAACM,sBAAAA,EAAA,EAAK,GAAG,IAAA,EACP,QAAA,EAAA;AAAA,oBAAAV,cAAAA;AAAA,MAACW,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,4BAAA;AAAA,QACF,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA,EAAa,CAAA;AAAA,QACb,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA,KACjB;AAAA,oBACAX,cAAAA;AAAA,MAACW,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,iEAAA;AAAA,QACF,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA,EAAa,CAAA;AAAA,QACb,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA;AACjB,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,SAAA,CAAU,EAAE,KAAA,EAAO,KAAA,EAAM,EAAkC;AAClE,EAAA,uBACEX,eAACU,sBAAAA,EAAA,EAAK,GAAG,IAAA,EACP,QAAA,kBAAAV,cAAAA,CAACkC,UAAA,EAAA,EAAQ,CAAA,EAAG,EAAA,EAAI,GAAG,EAAA,EAAI,QAAA,EAAU,IAAI,UAAA,EAAW,KAAA,EAAM,YAAW,QAAA,EAAS,IAAA,EAAM,KAAA,EAC7E,QAAA,EAAA,KAAA,EACH,CAAA,EACF,CAAA;AAEJ;AAEA,SAAS,QAAA,CAAS,EAAE,KAAA,EAAM,EAAc;AACtC,EAAA,uBACE9B,eAAAA,CAACM,sBAAAA,EAAA,EAAK,GAAG,IAAA,EACP,QAAA,EAAA;AAAA,oBAAAV,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,WAAA,EAAa,CAAA,EAAG,CAAA;AAAA,oBAC/Dd,cAAAA;AAAA,MAACW,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,qDAAA;AAAA,QACF,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA,EAAa,CAAA;AAAA,QACb,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA;AACjB,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,QAAA,CAAS,EAAE,KAAA,EAAM,EAAc;AACtC,EAAA,uBACEP,eAAAA,CAACM,sBAAAA,EAAA,EAAK,GAAG,IAAA,EACP,QAAA,EAAA;AAAA,oBAAAV,cAAAA;AAAA,MAACW,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,wDAAA;AAAA,QACF,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA,EAAa,CAAA;AAAA,QACb,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA,KACjB;AAAA,oBACAX,eAACW,UAAAA,EAAA,EAAK,GAAE,yBAAA,EAA0B,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS,IAAA,EAAM;AAAA,GAAA,EAChE,CAAA;AAEJ;AAEA,SAAS,QAAA,CAAS,EAAE,KAAA,EAAM,EAAc;AACtC,EAAA,uBACEX,cAAAA,CAACU,sBAAAA,EAAA,EAAK,GAAG,MACP,QAAA,kBAAAV,cAAAA;AAAA,IAACW,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAE,iDAAA;AAAA,MACF,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA,EAAa,CAAA;AAAA,MACb,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,KAAA,EAAM,EAAc;AACxC,EAAA,uBACEP,eAAAA,CAACM,sBAAAA,EAAA,EAAK,GAAG,IAAA,EACP,QAAA,EAAA;AAAA,oBAAAV,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,WAAA,EAAa,CAAA,EAAG,CAAA;AAAA,oBAC/Dd,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,6BAAA,EAA8B,MAAM,KAAA,EAAO;AAAA,GAAA,EACrD,CAAA;AAEJ;AAEA,SAAS,QAAA,CAAS,EAAE,KAAA,EAAM,EAAc;AACtC,EAAA,uBACEP,eAAAA,CAACM,sBAAAA,EAAA,EAAK,GAAG,IAAA,EACP,QAAA,EAAA;AAAA,oBAAAV,cAAAA;AAAA,MAACW,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,6DAAA;AAAA,QACF,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA,EAAa,CAAA;AAAA,QACb,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA,KACjB;AAAA,oBACAX,cAAAA;AAAA,MAACW,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,8DAAA;AAAA,QACF,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA,EAAa,CAAA;AAAA,QACb,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA;AACjB,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,KAAA,EAAM,EAAc;AACxC,EAAA,uBACEX,cAAAA,CAACU,sBAAAA,EAAA,EAAK,GAAG,MACP,QAAA,kBAAAV,cAAAA;AAAA,IAACW,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAE,uCAAA;AAAA,MACF,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA,EAAa,CAAA;AAAA,MACb,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,KAAA,EAAM,EAAc;AACxC,EAAA,uBACEX,cAAAA,CAACU,sBAAAA,EAAA,EAAK,GAAG,MACP,QAAA,kBAAAV,cAAAA;AAAA,IAACW,UAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAE,0CAAA;AAAA,MACF,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA,EAAa,CAAA;AAAA,MACb,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEA,SAAS,SAAA,CAAU,EAAE,KAAA,EAAM,EAAc;AACvC,EAAA,uBACEP,eAAAA,CAACM,sBAAAA,EAAA,EAAK,GAAG,IAAA,EACP,QAAA,EAAA;AAAA,oBAAAV,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,WAAA,EAAa,CAAA,EAAG,CAAA;AAAA,oBAC/Dd,cAAAA;AAAA,MAACW,UAAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,gBAAA;AAAA,QACF,MAAA,EAAQ,KAAA;AAAA,QACR,WAAA,EAAa,CAAA;AAAA,QACb,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA;AACjB,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,KAAA,EAAM,EAAc;AACzC,EAAA,uBACEP,eAAAA,CAACM,sBAAAA,EAAA,EAAK,GAAG,IAAA,EACP,QAAA,EAAA;AAAA,oBAAAV,eAACe,UAAAA,EAAA,EAAK,CAAA,EAAG,CAAA,EAAG,GAAG,GAAA,EAAK,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,IAAI,EAAA,EAAI,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,aAAa,CAAA,EAAG,CAAA;AAAA,oBACnFf,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,eAAA,EAAgB,MAAA,EAAQ,KAAA,EAAO,WAAA,EAAa,CAAA,EAAG,aAAA,EAAc,OAAA,EAAQ,gBAAe,OAAA,EAAQ,CAAA;AAAA,oBACpGX,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,aAAa,CAAA,EAAG,CAAA;AAAA,oBAClEd,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,gBAAA,EAAiB,MAAA,EAAQ,KAAA,EAAO,WAAA,EAAa,CAAA,EAAG,aAAA,EAAc,OAAA,EAAQ,gBAAe,OAAA,EAAQ;AAAA,GAAA,EACvG,CAAA;AAEJ;AAEA,SAAS,YAAA,CAAa,EAAE,KAAA,EAAM,EAAc;AAC1C,EAAA,uBACEP,eAAAA,CAACM,sBAAAA,EAAA,EAAK,GAAG,IAAA,EACP,QAAA,EAAA;AAAA,oBAAAV,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,WAAA,EAAa,CAAA,EAAG,CAAA;AAAA,oBAC/Dd,cAAAA,CAACW,UAAAA,EAAA,EAAK,CAAA,EAAE,gCAAA,EAAiC,MAAM,KAAA,EAAO;AAAA,GAAA,EACxD,CAAA;AAEJ;AAcA,SAAS,IAAA,CAAK,EAAE,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,OAAA,EAAS,QAAA,GAAW,KAAA,EAAO,KAAA,EAAAb,MAAAA,EAAM,EAAc;AAC3F,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAChB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAII,iBAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,YAAwB,MAAA,GAAS,CAAA,CAAE,UAAUJ,MAAAA,CAAM,IAAA,CAAK,QAAQ,GAAG,CAAA;AAEzE,EAAA,uBACEM,eAAAA;AAAA,IAACD,qBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,QAAA;AAAA,MAClB,kBAAA,EAAoB,KAAA;AAAA,MACpB,kBAAA,EAAoB,EAAE,OAAA,EAAS,MAAA,EAAQ,QAAA,EAAS;AAAA,MAChD,QAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MAC9B,MAAA,EAAQ,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,MAC9B,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,KAAM;AACtB,QAAA,MAAM,IAAA,GAAkB;AAAA,UACtB,KAAA,EAAO,KAAA;AAAA,UACP,SAAA,EAAW,GAAA;AAAA,UACX,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,YAAA;AAAA,UAChB,GAAA,EAAK,CAAA;AAAA,UACL,UAAA,EAAY,EAAA;AAAA,UACZ,aAAA,EAAe,EAAA;AAAA,UACf,iBAAA,EAAmB,CAAA;AAAA,UACnB,YAAA,EAAcL,OAAM,MAAA,CAAO,EAAA;AAAA,UAC3B,WAAA,EAAaA,OAAM,MAAA,CAAO,EAAA;AAAA,UAC1B,WAAA,EAAa,MAAA,GAAS,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,MAAA;AAAA,UACpC,eAAA,EAAiB,MAAA,GACbA,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,EAAE,CAAA,GACpB,OAAA,GACEA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,EAAE,IACrB,CAAA,CAAE,OAAA;AAAA,UACR,OAAA,EAAS,WAAW,IAAA,GAAO;AAAA,SAC7B;AACA,QAAA,MAAM,SAAA,GACJ,OAAA,IAAW,CAAC,QAAA,GACR,EAAE,WAAA,EAAa,CAAA,CAAE,KAAA,EAAO,WAAA,EAAaA,MAAAA,CAAM,cAAA,EAAe,GAC1D,IAAA;AACN,QAAA,OAAO,CAAC,MAAM,SAAS,CAAA;AAAA,MACzB,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAE,cAAAA,CAACO,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,MAAA,EAAQ,EAAA,EAAI,UAAA,EAAY,QAAA,EAAU,cAAA,EAAgB,QAAA,EAAS,EACvE,QAAA,EAAA,IAAA,CAAK,SAAS,CAAA,EACjB,CAAA;AAAA,wBACAP,cAAAA;AAAA,UAACM,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,SAAA,EAAW,EAAA;AAAA,cACX,SAAA,EAAW,QAAA;AAAA,cACX,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,cAC9B,QAAA,EAAU,IAAA;AAAA,cACV,UAAA,EAAY,KAAA;AAAA,cACZ,UAAA,EAAY,EAAA;AAAA,cACZ,OAAO,MAAA,GAASA,MAAAA,CAAM,KAAK,MAAA,CAAO,GAAG,IAAI,CAAA,CAAE;AAAA,aAC7C;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QACC,OAAA,IAAW,wBACVE,cAAAA;AAAA,UAACM,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,cAC9B,QAAA,EAAU,EAAA;AAAA,cACV,UAAA,EAAY,KAAA;AAAA,cACZ,OAAO,CAAA,CAAE;AAAA,aACX;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AAaO,SAAS,mBAAA,CAAoB;AAAA,EAClC,QAAA,GAAW,cAAA;AAAA,EACX,WAAA,GAAc,KAAA;AAAA,EACd,gBAAA;AAAA,EACA,KAAA,EAAO;AACT,CAAA,EAA6B;AAC3B,EAAA,MAAM,WAAW,YAAA,EAAa;AAC9B,EAAA,MAAMA,SAAQ,SAAA,IAAa,QAAA;AAC3B,EAAA,MAAM,IAAIA,MAAAA,CAAM,KAAA;AAEhB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAII,iBAAS,WAAW,CAAA;AAC5C,EAAA,MAAM,CAAC,CAAA,EAAG,IAAI,CAAA,GAAIA,iBAAgC,QAAQ,CAAA;AAC1D,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAE5D,EAAAwB,kBAAU,MAAM;AACd,IAAA,gBAAA,GAAmB,CAAC,CAAA;AAAA,EACtB,CAAA,EAAG,CAAC,CAAA,EAAG,gBAAgB,CAAC,CAAA;AAExB,EAAA,MAAM,GAAA,GAAM,CAAC,KAAA,KAA0C,IAAA,CAAK,CAAC,GAAA,MAAS,EAAE,GAAG,GAAA,EAAK,GAAG,KAAA,EAAM,CAAE,CAAA;AAC3F,EAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,QAAQ,CAAA;AAEjC,EAAA,MAAM,WAAA,GAAc3B,eAAAA;AAAA,IAClB,MAAO,MAAA,CAAO,IAAA,CAAK,CAAC,EAAoB,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,KAAM,QAAA,CAAS,CAAC,CAAC,CAAA,CAAE,MAAA;AAAA,IAC5E,CAAC,CAAC;AAAA,GACJ;AAEA,EAAA,MAAM,OAAO,QAAA,KAAa,aAAA;AAC1B,EAAA,MAAM,IAAA,GAAkB,IAAA,GAAO,EAAE,IAAA,EAAMD,OAAM,KAAA,CAAM,CAAC,CAAA,EAAE,GAAI,EAAE,KAAA,EAAOA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAE;AAElF,EAAA,MAAM,OAAA,GAAU,CAAA,CAAE,SAAA,KAAc,CAAA,GAAI,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,SAAA,GAAY,GAAG,CAAC,CAAA,CAAA,CAAA,GAAM,MAAA;AAE1E,EAAA,uBACEM,eAAAA,CAAAC,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAL,cAAAA;AAAA,MAACG,qBAAAA;AAAA,MAAA;AAAA,QACC,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAmB,uBAAA;AAAA,QACnB,kBAAA,EAAoB,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,QACrC,SAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,QAChC,OAAA,EAAS,MAAM,kBAAA,CAAmB,IAAI,CAAA;AAAA,QACtC,MAAA,EAAQ,MAAM,kBAAA,CAAmB,KAAK,CAAA;AAAA,QACtC,KAAA,EAAO;AAAA,UACL,QAAA,EAAU,UAAA;AAAA,UACV,MAAA,EAAQL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,UACrB,GAAG,IAAA;AAAA,UACH,MAAA,EAAQ,IAAA;AAAA,UACR,KAAA,EAAO,EAAA;AAAA,UACP,MAAA,EAAQ,EAAA;AAAA,UACR,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,QAAA;AAAA,UAChB,YAAA,EAAcA,OAAM,MAAA,CAAO,IAAA;AAAA,UAC3B,aAAaA,MAAAA,CAAM,cAAA;AAAA,UACnB,WAAA,EAAa,eAAA,GAAkB,CAAA,CAAE,KAAA,GAAQ,aAAA;AAAA,UACzC,iBAAiB,CAAA,CAAE,OAAA;AAAA,UACnB,GAAGA,OAAM,MAAA,CAAO;AAAA,SAClB;AAAA,QAEA,QAAA,kBAAAM,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,0BAAAV,cAAAA,CAACc,YAAAA,EAAA,EAAO,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,IAAA,EAAM,CAAA,CAAE,SAAA,EAAW,CAAA;AAAA,0BACpDd,cAAAA;AAAA,YAACW,UAAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,+CAAA;AAAA,cACF,QAAQ,CAAA,CAAE,SAAA;AAAA,cACV,WAAA,EAAa,CAAA;AAAA,cACb,aAAA,EAAc,OAAA;AAAA,cACd,cAAA,EAAe;AAAA;AAAA,WACjB;AAAA,0BACAX,cAAAA;AAAA,YAACW,UAAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,aAAA;AAAA,cACF,QAAQ,CAAA,CAAE,SAAA;AAAA,cACV,WAAA,EAAa,CAAA;AAAA,cACb,aAAA,EAAc,OAAA;AAAA,cACd,cAAA,EAAe;AAAA;AAAA,WACjB;AAAA,0BACAX,cAAAA;AAAA,YAACW,UAAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,qBAAA;AAAA,cACF,QAAQ,CAAA,CAAE,SAAA;AAAA,cACV,WAAA,EAAa,CAAA;AAAA,cACb,aAAA,EAAc,OAAA;AAAA,cACd,cAAA,EAAe;AAAA;AAAA;AACjB,SAAA,EACF;AAAA;AAAA,KACF;AAAA,oBAEAX,cAAAA;AAAA,MAACY,iBAAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,IAAA;AAAA,QACT,WAAA,EAAW,IAAA;AAAA,QACX,aAAA,EAAc,MAAA;AAAA,QACd,cAAA,EAAgB,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,QAEnC,QAAA,kBAAAZ,cAAAA;AAAA,UAACG,qBAAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,YAC5B,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,cAAA,EAAgB,UAAA;AAAA,cAChB,UAAA,EAAY,OAAO,YAAA,GAAe,UAAA;AAAA,cAClC,OAAA,EAASL,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,cACtB,eAAeA,MAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,GAAIA,MAAAA,CAAM,MAAM,CAAC,CAAA;AAAA,cAC7C,eAAA,EAAiB;AAAA,aACnB;AAAA,YAEA,QAAA,kBAAAM,eAAAA;AAAA,cAACG,gBAAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,kBAAA,EAAmB,uBAAA;AAAA,gBACnB,wBAAA,EAAwB,IAAA;AAAA,gBACxB,2BAA2B,MAAM,IAAA;AAAA,gBACjC,KAAA,EAAO;AAAA,kBACL;AAAA,oBACE,KAAA,EAAO,MAAA;AAAA,oBACP,QAAA,EAAU,GAAA;AAAA,oBACV,SAAA,EAAW,KAAA;AAAA,oBACX,OAAA,EAAS,EAAA;AAAA,oBACT,iBAAiB,CAAA,CAAE,OAAA;AAAA,oBACnB,WAAA,EAAaT,OAAM,MAAA,CAAO,IAAA;AAAA,oBAC1B,aAAa,CAAA,CAAE,MAAA;AAAA,oBACf,YAAA,EAAcA,MAAAA,CAAM,MAAA,CAAO,KAAK;AAAA,mBAClC;AAAA,kBACAA,OAAM,MAAA,CAAO;AAAA,iBACf;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAM,eAAAA;AAAA,oBAACG,gBAAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,aAAA,EAAe,KAAA;AAAA,wBACf,UAAA,EAAY,QAAA;AAAA,wBACZ,cAAA,EAAgB,eAAA;AAAA,wBAChB,YAAA,EAAc;AAAA,uBAChB;AAAA,sBAEA,QAAA,EAAA;AAAA,wCAAAP,cAAAA;AAAA,0BAACM,gBAAAA;AAAA,0BAAA;AAAA,4BACC,KAAA,EAAO;AAAA,8BACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,8BAC9B,QAAA,EAAU,EAAA;AAAA,8BACV,UAAA,EAAY,KAAA;AAAA,8BACZ,OAAO,CAAA,CAAE;AAAA,6BACX;AAAA,4BACD,QAAA,EAAA;AAAA;AAAA,yBAED;AAAA,wCACAE,cAAAA;AAAA,0BAACG,qBAAAA;AAAA,0BAAA;AAAA,4BACC,iBAAA,EAAkB,QAAA;AAAA,4BAClB,kBAAA,EAAmB,OAAA;AAAA,4BACnB,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,4BAC5B,KAAA,EAAO;AAAA,8BACL,KAAA,EAAO,EAAA;AAAA,8BACP,MAAA,EAAQ,EAAA;AAAA,8BACR,UAAA,EAAY,QAAA;AAAA,8BACZ,cAAA,EAAgB,QAAA;AAAA,8BAChB,YAAA,EAAcL,OAAM,MAAA,CAAO,EAAA;AAAA,8BAC3B,eAAA,EAAiBA,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG;AAAA,6BACzC;AAAA,4BACA,OAAA,EAAS,CAAA;AAAA,4BAET,QAAA,kBAAAM,eAAAA,CAACM,sBAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,EAAA;AAAA,8CAAAV,cAAAA;AAAA,gCAACW,UAAAA;AAAA,gCAAA;AAAA,kCACC,CAAA,EAAE,YAAA;AAAA,kCACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,kCAC9B,WAAA,EAAa,CAAA;AAAA,kCACb,aAAA,EAAc,OAAA;AAAA,kCACd,cAAA,EAAe;AAAA;AAAA,+BACjB;AAAA,8CACAE,cAAAA;AAAA,gCAACW,UAAAA;AAAA,gCAAA;AAAA,kCACC,CAAA,EAAE,YAAA;AAAA,kCACF,MAAA,EAAQb,MAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAAA,kCAC9B,WAAA,EAAa,CAAA;AAAA,kCACb,aAAA,EAAc,OAAA;AAAA,kCACd,cAAA,EAAe;AAAA;AAAA;AACjB,6BAAA,EACF;AAAA;AAAA;AACF;AAAA;AAAA,mBACF;AAAA,kCAEAE,cAAAA;AAAA,oBAACM,gBAAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,wBAC9B,QAAA,EAAU,IAAA;AAAA,wBACV,OAAO,CAAA,CAAE,SAAA;AAAA,wBACT,YAAA,EAAc;AAAA,uBAChB;AAAA,sBACD,QAAA,EAAA;AAAA;AAAA,mBAED;AAAA,kCAEAM,gBAACgB,sBAAAA,EAAA,EAAW,uBAAuB,EAAE,aAAA,EAAe,GAAE,EACpD,QAAA,EAAA;AAAA,oCAAAhB,eAAAA;AAAA,sBAACG,gBAAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,aAAA,EAAe,KAAA;AAAA,0BACf,QAAA,EAAU,MAAA;AAAA,0BACV,cAAA,EAAgB,eAAA;AAAA,0BAChB,MAAA,EAAQ;AAAA,yBACV;AAAA,wBAEA,QAAA,EAAA;AAAA,0CAAAP,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,aAAA;AAAA,8BACN,MAAA,EAAQ,EAAE,SAAA,GAAY,CAAA;AAAA,8BACtB,QAAA,EAAU,EAAE,SAAA,IAAa,GAAA;AAAA,8BACzB,IAAA,EAAM,CAAC,GAAA,qBAAQE,eAAC,QAAA,EAAA,EAAS,KAAA,EAAO,GAAA,EAAK,GAAA,EAAG,IAAA,EAAC,CAAA;AAAA,8BACzC,OAAA,EAAS,OAAA;AAAA,8BACT,SAAS,MAAM,GAAA,CAAI,EAAE,SAAA,EAAW,KAAK,GAAA,CAAI,GAAA,EAAK,CAAA,CAAE,CAAA,CAAE,YAAY,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,GAAG;AAAA;AAAA,2BAClF;AAAA,0CACAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,cAAA;AAAA,8BACN,MAAA,EAAQ,EAAE,SAAA,GAAY,CAAA;AAAA,8BACtB,QAAA,EAAU,EAAE,SAAA,IAAa,GAAA;AAAA,8BACzB,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,QAAA,EAAA,EAAS,OAAO,GAAA,EAAK,CAAA;AAAA,8BACrC,OAAA,EAAS,OAAA;AAAA,8BACT,SAAS,MAAM,GAAA,CAAI,EAAE,SAAA,EAAW,KAAK,GAAA,CAAI,GAAA,EAAK,CAAA,CAAE,CAAA,CAAE,YAAY,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,GAAG;AAAA;AAAA,2BAClF;AAAA,0CACAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,cAAA;AAAA,8BACN,MAAA,EAAQ,EAAE,OAAA,GAAU,CAAA;AAAA,8BACpB,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,WAAA,EAAA,EAAY,OAAO,GAAA,EAAK,CAAA;AAAA,8BACxC,OAAA,EAAS,EAAE,OAAA,GAAU,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,OAAO,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,8BACrD,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,UAAU,CAAA,CAAE,OAAA,GAAU,CAAA,IAAK,CAAA,EAAG;AAAA;AAAA,2BACrD;AAAA,0CAEAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,aAAA;AAAA,8BACN,MAAA,EAAQ,EAAE,IAAA,GAAO,CAAA;AAAA,8BACjB,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,QAAA,EAAA,EAAS,OAAO,GAAA,EAAK,CAAA;AAAA,8BACrC,OAAA,EAAS,QAAA,CAAS,CAAA,CAAE,IAAI,CAAA,IAAK,MAAA;AAAA,8BAC7B,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,OAAO,CAAA,CAAE,IAAA,GAAO,CAAA,IAAK,CAAA,EAAG;AAAA;AAAA,2BAC/C;AAAA,0CACAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,mBAAA;AAAA,8BACN,QAAQ,CAAA,CAAE,QAAA;AAAA,8BACV,IAAA,EAAM,CAAC,GAAA,qBAAQE,eAAC,SAAA,EAAA,EAAU,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM,IAAA,EAAK,CAAA;AAAA,8BACjD,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,UAAU,CAAC,CAAA,CAAE,UAAU;AAAA;AAAA,2BAC9C;AAAA,0CACAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,WAAA;AAAA,8BACN,QAAQ,CAAA,CAAE,IAAA;AAAA,8BACV,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,QAAA,EAAA,EAAS,OAAO,GAAA,EAAK,CAAA;AAAA,8BACrC,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,MAAM,CAAC,CAAA,CAAE,MAAM;AAAA;AAAA,2BACtC;AAAA,0CAEAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,YAAA;AAAA,8BACN,MAAA,EAAQ,EAAE,UAAA,GAAa,CAAA;AAAA,8BACvB,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,QAAA,EAAA,EAAS,OAAO,GAAA,EAAK,CAAA;AAAA,8BACrC,OAAA,EAAS,OAAA,CAAQ,CAAA,CAAE,UAAU,CAAA,IAAK,MAAA;AAAA,8BAClC,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,aAAa,CAAA,CAAE,UAAA,GAAa,CAAA,IAAK,CAAA,EAAG;AAAA;AAAA,2BAC3D;AAAA,0CACAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,YAAA;AAAA,8BACN,QAAQ,CAAA,CAAE,IAAA;AAAA,8BACV,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,QAAA,EAAA,EAAS,OAAO,GAAA,EAAK,CAAA;AAAA,8BACrC,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,IAAA,EAAM,CAAC,CAAA,CAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO;AAAA;AAAA,2BACrD;AAAA,0CACAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,eAAA;AAAA,8BACN,QAAQ,CAAA,CAAE,MAAA;AAAA,8BACV,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,UAAA,EAAA,EAAW,OAAO,GAAA,EAAK,CAAA;AAAA,8BACvC,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO;AAAA;AAAA,2BACvD;AAAA,0CAEAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,iBAAA;AAAA,8BACN,QAAQ,CAAA,CAAE,KAAA;AAAA,8BACV,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,QAAA,EAAA,EAAS,OAAO,GAAA,EAAK,CAAA;AAAA,8BACrC,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,OAAO,CAAC,CAAA,CAAE,OAAO;AAAA;AAAA,2BACxC;AAAA,0CACAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,gBAAA;AAAA,8BACN,QAAQ,CAAA,CAAE,GAAA;AAAA,8BACV,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,UAAA,EAAA,EAAW,OAAO,GAAA,EAAK,CAAA;AAAA,8BACvC,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,KAAK,CAAC,CAAA,CAAE,KAAK;AAAA;AAAA,2BACpC;AAAA,0CACAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,QAAA;AAAA,8BACN,QAAQ,CAAA,CAAE,MAAA;AAAA,8BACV,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,UAAA,EAAA,EAAW,OAAO,GAAA,EAAK,CAAA;AAAA,8BACvC,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,QAAQ,CAAC,CAAA,CAAE,QAAQ;AAAA;AAAA,2BAC1C;AAAA,0CAEAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,iBAAA;AAAA,8BACN,QAAQ,CAAA,CAAE,KAAA;AAAA,8BACV,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,SAAA,EAAA,EAAU,OAAO,GAAA,EAAK,CAAA;AAAA,8BACtC,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,OAAO,CAAC,CAAA,CAAE,OAAO;AAAA;AAAA,2BACxC;AAAA,0CACAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,aAAA;AAAA,8BACN,QAAQ,CAAA,CAAE,UAAA;AAAA,8BACV,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,WAAA,EAAA,EAAY,OAAO,GAAA,EAAK,CAAA;AAAA,8BACxC,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,YAAY,CAAC,CAAA,CAAE,YAAY;AAAA;AAAA,2BAClD;AAAA,0CACAA,cAAAA;AAAA,4BAAC,IAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAOF,MAAAA;AAAA,8BACP,KAAA,EAAM,UAAA;AAAA,8BACN,QAAQ,CAAA,CAAE,QAAA;AAAA,8BACV,MAAM,CAAC,GAAA,qBAAQE,cAAAA,CAAC,YAAA,EAAA,EAAa,OAAO,GAAA,EAAK,CAAA;AAAA,8BACzC,OAAA,EAAS,MAAM,GAAA,CAAI,EAAE,UAAU,CAAC,CAAA,CAAE,UAAU;AAAA;AAAA;AAC9C;AAAA;AAAA,qBACF;AAAA,oCAEAA,cAAAA;AAAA,sBAACG,qBAAAA;AAAA,sBAAA;AAAA,wBACC,iBAAA,EAAkB,QAAA;AAAA,wBAClB,oBAAoB,CAAA,SAAA,EAAY,WAAA,GAAc,CAAA,EAAA,EAAK,WAAW,MAAM,EAAE,CAAA,CAAA;AAAA,wBACtE,kBAAA,EAAoB,EAAE,QAAA,EAAU,WAAA,KAAgB,CAAA,EAAE;AAAA,wBAClD,UAAU,WAAA,KAAgB,CAAA;AAAA,wBAC1B,OAAA,EAAS,KAAA;AAAA,wBACT,KAAA,EAAO;AAAA,0BACL,SAAA,EAAW,EAAA;AAAA,0BACX,MAAA,EAAQ,EAAA;AAAA,0BACR,UAAA,EAAY,QAAA;AAAA,0BACZ,cAAA,EAAgB,QAAA;AAAA,0BAChB,WAAA,EAAaL,OAAM,MAAA,CAAO,EAAA;AAAA,0BAC1B,aAAa,CAAA,CAAE,MAAA;AAAA,0BACf,YAAA,EAAcA,OAAM,MAAA,CAAO,EAAA;AAAA,0BAC3B,iBAAiB,CAAA,CAAE;AAAA,yBACrB;AAAA,wBAEA,QAAA,kBAAAE,cAAAA;AAAA,0BAACM,gBAAAA;AAAA,0BAAA;AAAA,4BACC,KAAA,EAAO;AAAA,8BACL,UAAA,EAAYR,MAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,EAAA;AAAA,8BAC9B,QAAA,EAAU,EAAA;AAAA,8BACV,UAAA,EAAY,KAAA;AAAA,8BACZ,OAAO,WAAA,GAAc,CAAA,CAAE,UAAUA,MAAAA,CAAM,IAAA,CAAK,QAAQ,GAAG;AAAA,6BACzD;AAAA,4BAEC,QAAA,EAAA,CAAA,SAAA,EAAY,WAAA,GAAc,CAAA,EAAA,EAAK,WAAW,MAAM,EAAE,CAAA;AAAA;AAAA;AACrD;AAAA;AACF,mBAAA,EACF;AAAA;AAAA;AAAA;AACF;AAAA;AACF;AAAA;AACF,GAAA,EACF,CAAA;AAEJ","file":"index.cjs","sourcesContent":["// AUTO-GENERATED from tokens/ux4g.primitives.tokens.json (DTCG). Do not edit by hand.\n// Regenerate with: node scripts/gen-tokens.mjs\n// This is the single source of truth for the raw design-token primitives that\n// every component reads through the theme. Semantic aliases live in theme.ts.\n\nexport const ramp = {\n violet: {\n 50: \"#F4F3FE\",\n 100: \"#ECD0FF\",\n 200: \"#DAB2FF\",\n 300: \"#C495FF\",\n 400: \"#AC7AFF\",\n 500: \"#7C5BF7\",\n 600: \"#613AF5\",\n 700: \"#4A26C4\",\n 800: \"#381C8A\",\n 900: \"#2A1466\",\n },\n secondary: {\n 50: \"#F4F3F9\",\n 100: \"#ECEAF3\",\n 200: \"#D9D6E7\",\n 300: \"#C0BBD7\",\n 400: \"#A7A0C6\",\n 500: \"#8981AB\",\n 600: \"#746D96\",\n 700: \"#60597F\",\n 800: \"#4D4768\",\n 900: \"#3A364F\",\n },\n success: {\n 50: \"#EDF7E6\",\n 100: \"#E3F2D9\",\n 200: \"#C6E5B5\",\n 300: \"#9BCF80\",\n 400: \"#69B349\",\n 500: \"#389314\",\n 600: \"#107400\",\n 700: \"#005A00\",\n 800: \"#024900\",\n 900: \"#013300\",\n },\n danger: {\n 50: \"#FFEEEA\",\n 100: \"#FEDAD3\",\n 200: \"#FEAEAE\",\n 300: \"#FF7A7A\",\n 400: \"#F35B5B\",\n 500: \"#DB2829\",\n 600: \"#C21D22\",\n 700: \"#B7131A\",\n 800: \"#8E0F15\",\n 900: \"#6B0B10\",\n },\n warning: {\n 50: \"#FEF1E7\",\n 100: \"#FDDCC2\",\n 200: \"#FBC499\",\n 300: \"#F6A766\",\n 400: \"#F2933F\",\n 500: \"#EE8033\",\n 600: \"#D86A1E\",\n 700: \"#B5551A\",\n 800: \"#8F4314\",\n 900: \"#6B320F\",\n },\n info: {\n 50: \"#E8F1FB\",\n 100: \"#C7DDF5\",\n 200: \"#8FBBEB\",\n 300: \"#5798DD\",\n 400: \"#2E80D2\",\n 500: \"#2384C5\",\n 600: \"#1F6FB0\",\n 700: \"#1937B2\",\n 800: \"#15296F\",\n 900: \"#0F1C4B\",\n },\n neutral: {\n 0: \"#FFFFFF\",\n 50: \"#F8F8F8\",\n 100: \"#F3F3F3\",\n 200: \"#EEEEEE\",\n 300: \"#DBDBDB\",\n 400: \"#C6C6C6\",\n 500: \"#ABABAB\",\n 600: \"#727272\",\n 700: \"#525252\",\n 800: \"#393939\",\n 900: \"#212121\",\n 1000: \"#000000\",\n },\n} as const;\n\nexport const space = {\n 0: 0,\n 1: 4,\n 2: 8,\n 3: 12,\n 4: 16,\n 5: 24,\n 6: 32,\n 7: 40,\n 8: 48,\n 9: 56,\n 10: 64,\n 12: 80,\n 14: 96,\n 16: 120,\n 20: 160,\n} as const;\n\nexport const radius = {\n xs: 4,\n sm: 5,\n md: 8,\n lg: 12,\n xl: 16,\n \"2xl\": 24,\n full: 999,\n} as const;\n\nexport const border = {\n thin: 1,\n md: 1.5,\n thick: 2,\n} as const;\n","/* ============================================================\n * UX4G Design System — React Native theme\n * ------------------------------------------------------------\n * Single source of truth for the RN package. Transcoded 1:1 from\n * the canonical CSS tokens (tokens/colors.css, typography.css,\n * spacing.css). RN has no CSS custom properties at runtime, so\n * the web's `var(--token)` references are RESOLVED to their final\n * values here and consumed as `theme.color.primary`, etc.\n *\n * Themeable: `primary`, `secondary` and the font families are the\n * intended override points (UX4G \"Theme Craft\"). Provide a partial\n * override to `makeTheme()` and the semantic aliases recompute.\n *\n * Keep this in sync with tokens/*.css — these are authoritative.\n * ============================================================ */\n\n// ---- Raw primitives (ramps + scales) ----------------------------------\n// Single source of truth: tokens/ux4g.primitives.tokens.json (DTCG), emitted by\n// `node scripts/gen-tokens.mjs`. Edit the JSON, never the generated file.\n\nimport { ramp, space, radius, border } from \"./tokens.generated\";\nexport { ramp, space, radius, border };\n\n// ---- Elevation -------------------------------------------------------\n// Web ships a 6-step soft-shadow scale on ink rgba(33,33,33,a). RN shadows\n// don't map 1:1 (iOS shadow* + Android elevation), so each step is given as\n// a ready-to-spread ViewStyle fragment. Use `shadow.md`, etc.\n\ntype ShadowStyle = {\n shadowColor: string;\n shadowOffset: { width: number; height: number };\n shadowOpacity: number;\n shadowRadius: number;\n elevation: number; // Android\n};\n\nconst ink = '#212121';\nconst sh = (h: number, blur: number, opacity: number, elevation: number): ShadowStyle => ({\n shadowColor: ink,\n shadowOffset: { width: 0, height: h },\n shadowOpacity: opacity,\n shadowRadius: blur / 2, // RN shadowRadius ≈ CSS blur / 2\n elevation,\n});\n\nexport const shadow = {\n none: { shadowColor: 'transparent', shadowOffset: { width: 0, height: 0 }, shadowOpacity: 0, shadowRadius: 0, elevation: 0 } as ShadowStyle,\n xs: sh(1, 2, 0.08, 1),\n s: sh(2, 3, 0.12, 2),\n md: sh(4, 8, 0.12, 4),\n l: sh(8, 16, 0.14, 8),\n xl: sh(12, 24, 0.16, 12),\n xxl: sh(20, 40, 0.20, 20),\n} as const;\n\n// ---- Motion -----------------------------------------------------------\n// RN animations use Easing.bezier(...) from 'react-native'. Durations in ms.\n\nexport const motion = {\n duration: { fast: 120, base: 200, slow: 300 },\n // standard: Easing.bezier(0.2, 0, 0, 1)\n // emphasized: Easing.bezier(0.3, 0, 0, 1)\n easing: { standard: [0.2, 0, 0, 1], emphasized: [0.3, 0, 0, 1] },\n} as const;\n\n// ---- Typography -------------------------------------------------------\n// Families = the names you register natively (see HANDOFF-react-native.md §4).\n// RN has no letter-spacing shorthand inside fontFamily; each scale step gives\n// fontSize / lineHeight / letterSpacing as numbers, ready to spread into a\n// <Text> style. weight is a real numeric fontWeight where the platform honours\n// it; otherwise register a weighted family (e.g. \"NotoSans-Medium\").\n\nexport const font = {\n family: {\n sans: 'NotoSans', // Noto Sans — body / display\n ui: 'Roboto-Medium', // Roboto Medium — button labels\n mono: 'RedHatMono', // Red Hat Mono — code / tokens\n },\n weight: { regular: '400', medium: '500', semibold: '600', bold: '700' },\n} as const;\n\ntype TypeStep = { fontSize: number; lineHeight: number; letterSpacing?: number };\n\nexport const type: Record<string, TypeStep> = {\n display1: { fontSize: 80, lineHeight: 100, letterSpacing: -0.5 },\n display2: { fontSize: 72, lineHeight: 88 },\n display3: { fontSize: 64, lineHeight: 80 },\n display5: { fontSize: 48, lineHeight: 56 },\n display6: { fontSize: 40, lineHeight: 48 },\n headline1: { fontSize: 40, lineHeight: 48 },\n headline2: { fontSize: 32, lineHeight: 40 },\n headline3: { fontSize: 28, lineHeight: 32 },\n headline4: { fontSize: 24, lineHeight: 28 },\n headline5: { fontSize: 20, lineHeight: 24 },\n headline6: { fontSize: 16, lineHeight: 20 },\n title1: { fontSize: 22, lineHeight: 28 },\n title2: { fontSize: 16, lineHeight: 24, letterSpacing: 0.15 },\n title3: { fontSize: 14, lineHeight: 20, letterSpacing: 0.1 },\n label1: { fontSize: 14, lineHeight: 20, letterSpacing: 0.1 },\n label2: { fontSize: 12, lineHeight: 16, letterSpacing: 0.5 },\n label3: { fontSize: 11, lineHeight: 16, letterSpacing: 0.5 },\n body1: { fontSize: 16, lineHeight: 24, letterSpacing: 0.5 },\n body2: { fontSize: 14, lineHeight: 20, letterSpacing: 0.25 },\n body3: { fontSize: 12, lineHeight: 16, letterSpacing: 0.4 },\n};\n\n// ---- Semantic color aliases (themeable) -------------------------------\n// Mirrors the --color-* aliases in tokens/colors.css. ALWAYS reference these\n// in components, never the raw ramp — so re-theming via makeTheme() works.\n\n/** A full colour ramp (50..900) of hex strings — the shape an override supplies. */\nexport type ColorRamp = Record<keyof typeof ramp.violet, string>;\n\nexport type ThemeOverrides = {\n primary?: ColorRamp; // swap the whole primary ramp\n secondary?: ColorRamp;\n fontFamily?: Partial<typeof font.family>;\n};\n\nexport function makeTheme(overrides: ThemeOverrides = {}) {\n const primary = overrides.primary ?? ramp.violet;\n const secondary = overrides.secondary ?? ramp.secondary;\n\n const color = {\n primary: primary[600],\n primaryHover: primary[700],\n primaryActive: primary[800],\n primarySubtle: primary[50],\n onPrimary: ramp.neutral[0],\n\n secondary: secondary[500],\n secondaryHover: secondary[600],\n\n success: ramp.success[600],\n successSubtle: ramp.success[50],\n danger: ramp.danger[500],\n dangerHover: ramp.danger[600],\n dangerSubtle: ramp.danger[50],\n warning: ramp.warning[500],\n warningSubtle: ramp.warning[50],\n info: ramp.info[700],\n infoSubtle: ramp.info[50],\n\n // Text\n text: ramp.neutral[900],\n textMuted: ramp.neutral[600],\n textSubtle: ramp.neutral[500],\n textInverse: ramp.neutral[0],\n textLink: primary[600],\n\n // Surfaces\n surface: ramp.neutral[0],\n surfaceSubtle: ramp.neutral[50],\n surfaceMuted: ramp.neutral[100],\n surfaceBrand: secondary[50],\n\n // Borders & dividers\n border: ramp.neutral[300],\n borderStrong: ramp.neutral[400],\n divider: ramp.neutral[200],\n\n // Focus — the 4px violet halo, expressed as a ring color + width.\n // RN has no box-shadow focus ring; render a bordered View or use the\n // focus helper in HANDOFF-react-native.md §5.\n focus: 'rgba(97, 58, 245, 0.48)',\n } as const;\n\n return {\n color,\n ramp,\n space,\n radius,\n border,\n shadow,\n motion,\n font: { ...font, family: { ...font.family, ...(overrides.fontFamily ?? {}) } },\n type,\n layout: { containerMax: 1280, gutter: 24, columns: 12 },\n focusRingWidth: 4,\n };\n}\n\nexport type UX4GTheme = ReturnType<typeof makeTheme>;\n\n// Default theme (violet primary). Most apps wrap this in a ThemeProvider.\nexport const theme = makeTheme();\nexport default theme;\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport {\n makeTheme,\n theme as defaultTheme,\n type UX4GTheme,\n type ThemeOverrides,\n} from \"./theme\";\n\nconst ThemeContext = createContext<UX4GTheme>(defaultTheme);\n\nexport interface ThemeProviderProps extends ThemeOverrides {\n /** A fully built theme. When set, the override fields are ignored. */\n theme?: UX4GTheme;\n children: React.ReactNode;\n}\n\n/**\n * Seeds the UX4G theme for the subtree. Pass `primary` / `secondary` /\n * `fontFamily` to re-skin (UX4G \"Theme Craft\"), or a fully built `theme`.\n */\nexport function ThemeProvider({\n theme,\n primary,\n secondary,\n fontFamily,\n children,\n}: ThemeProviderProps) {\n const value = useMemo(\n () => theme ?? makeTheme({ primary, secondary, fontFamily }),\n [theme, primary, secondary, fontFamily],\n );\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n/** Read the active UX4G theme. Returns the default violet theme outside a provider. */\nexport function useUX4GTheme(): UX4GTheme {\n return useContext(ThemeContext);\n}\n","import React, { useState } from \"react\";\nimport {\n Pressable,\n Text,\n type StyleProp,\n type ViewStyle,\n type PressableProps,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface ButtonProps extends Omit<PressableProps, \"style\" | \"children\"> {\n children?: React.ReactNode;\n /** Colourway. @default \"primary\" */\n variant?: \"primary\" | \"success\" | \"danger\";\n /** Fill treatment. @default \"filled\" */\n appearance?: \"filled\" | \"outlined\" | \"text\" | \"tonal\";\n /** @default \"default\" */\n size?: \"small\" | \"default\" | \"large\";\n /** Stretch to container width. @default false */\n fullWidth?: boolean;\n disabled?: boolean;\n /** Leading icon node (e.g. a react-native-svg element). */\n iconLeft?: React.ReactNode;\n /** Trailing icon node. */\n iconRight?: React.ReactNode;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n style?: StyleProp<ViewStyle>;\n}\n\ntype Tone = { base: string; active: string; tint: string; on: string };\n\nexport function Button({\n children,\n variant = \"primary\",\n appearance = \"filled\",\n size = \"default\",\n fullWidth = false,\n disabled = false,\n iconLeft = null,\n iconRight = null,\n theme: themeProp,\n style,\n accessibilityLabel,\n ...rest\n}: ButtonProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const [focused, setFocused] = useState(false);\n const c = theme.color;\n\n const tone: Tone = {\n primary: { base: c.primary, active: c.primaryActive, tint: c.primarySubtle, on: c.onPrimary },\n success: { base: c.success, active: theme.ramp.success[800], tint: c.successSubtle, on: c.onPrimary },\n danger: { base: c.danger, active: theme.ramp.danger[700], tint: c.dangerSubtle, on: c.onPrimary },\n }[variant];\n\n const sizes = {\n small: { height: 32, paddingH: 16, font: 14 },\n default: { height: 40, paddingH: 24, font: 16 },\n large: { height: 48, paddingH: 28, font: 16 },\n }[size];\n\n const isFilled = appearance === \"filled\";\n\n return (\n <Pressable\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled }}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={({ pressed }) => {\n const isTonal = appearance === \"tonal\";\n let bg = \"transparent\";\n let borderColor = \"transparent\";\n\n if (isFilled) {\n bg = pressed ? tone.active : tone.base;\n } else if (isTonal) {\n bg = tone.tint;\n } else if (appearance === \"outlined\") {\n bg = pressed ? tone.tint : \"transparent\";\n borderColor = tone.base;\n } else {\n bg = pressed ? tone.tint : \"transparent\";\n }\n\n if (disabled) {\n bg = isFilled ? theme.ramp.neutral[200] : \"transparent\";\n borderColor = appearance === \"outlined\" ? theme.ramp.neutral[300] : \"transparent\";\n }\n\n const base: ViewStyle = {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: theme.space[2],\n height: sizes.height,\n paddingHorizontal: sizes.paddingH,\n alignSelf: fullWidth ? \"stretch\" : \"flex-start\",\n borderRadius: theme.radius.md,\n borderWidth: theme.border.md,\n borderColor,\n backgroundColor: bg,\n };\n\n const focusRing: ViewStyle | null =\n focused && !disabled\n ? { borderColor: theme.color.focus, borderWidth: theme.focusRingWidth }\n : null;\n\n return [base, focusRing, style];\n }}\n {...rest}\n >\n {() => {\n let fg = isFilled ? tone.on : tone.base;\n if (disabled) fg = isFilled ? theme.ramp.neutral[500] : theme.ramp.neutral[400];\n\n return (\n <>\n {iconLeft}\n {typeof children === \"string\" || typeof children === \"number\" ? (\n <Text\n style={{\n fontFamily: theme.font.family.ui,\n fontWeight: \"500\",\n fontSize: sizes.font,\n lineHeight: sizes.font * 1.5,\n letterSpacing: 0.15,\n color: fg,\n }}\n numberOfLines={1}\n >\n {children}\n </Text>\n ) : (\n children\n )}\n {iconRight}\n </>\n );\n }}\n </Pressable>\n );\n}\n\nexport default Button;\n","import React, { useState } from \"react\";\nimport {\n Pressable,\n type StyleProp,\n type ViewStyle,\n type PressableProps,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface IconButtonProps\n extends Omit<PressableProps, \"style\" | \"children\" | \"accessibilityLabel\"> {\n /** The icon node (e.g. a react-native-svg element). */\n children?: React.ReactNode;\n /** Colourway. @default \"neutral\" */\n variant?: \"neutral\" | \"primary\" | \"danger\";\n /** Fill treatment. @default \"ghost\" */\n appearance?: \"ghost\" | \"tonal\" | \"filled\";\n /** Box size — small (32) · default (40) · large (48). @default \"default\" */\n size?: \"small\" | \"default\" | \"large\";\n /** Accessible name — required for icon-only controls. */\n accessibilityLabel: string;\n disabled?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n style?: StyleProp<ViewStyle>;\n}\n\ntype Tone = { base: string; on: string; solid: string; tint: string };\n\n/**\n * UX4G IconButton — a square, icon-only action (close, menu, more, edit).\n * Pass an icon node (e.g. a react-native-svg element) as children, and an\n * `accessibilityLabel` for the screen-reader name.\n */\nexport function IconButton({\n children,\n variant = \"neutral\",\n appearance = \"ghost\",\n size = \"default\",\n disabled = false,\n accessibilityLabel,\n theme: themeProp,\n style,\n ...rest\n}: IconButtonProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const [focused, setFocused] = useState(false);\n const c = theme.color;\n const r = theme.ramp;\n\n const tone: Tone = {\n neutral: { base: r.neutral[700], on: c.surface, solid: r.neutral[800], tint: r.neutral[100] },\n primary: { base: r.violet[600], on: c.surface, solid: r.violet[600], tint: r.violet[50] },\n danger: { base: c.danger, on: c.surface, solid: c.danger, tint: r.danger[50] },\n }[variant];\n\n const dim: number = { small: 32, default: 40, large: 48 }[size];\n\n return (\n <Pressable\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled }}\n hitSlop={dim < 44 ? (44 - dim) / 2 : undefined}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={({ pressed }) => {\n let bg = \"transparent\";\n if (appearance === \"tonal\") {\n bg = tone.tint;\n } else if (appearance === \"filled\") {\n bg = tone.solid;\n } else if (pressed && !disabled) {\n // ghost: tint the surface on press to echo the web :hover/:active state\n bg = tone.tint;\n }\n\n const base: ViewStyle = {\n alignItems: \"center\",\n justifyContent: \"center\",\n width: dim,\n height: dim,\n flexGrow: 0,\n flexShrink: 0,\n padding: 0,\n borderRadius: theme.radius.md,\n borderWidth: theme.border.thin,\n borderColor: \"transparent\",\n backgroundColor: bg,\n opacity: disabled ? 0.45 : 1,\n };\n\n const focusRing: ViewStyle | null =\n focused && !disabled\n ? { borderColor: theme.color.focus, borderWidth: theme.focusRingWidth }\n : null;\n\n return [base, focusRing, style];\n }}\n {...rest}\n >\n {children}\n </Pressable>\n );\n}\n\nexport default IconButton;\n","import React, { useState } from \"react\";\nimport {\n View,\n Text,\n TextInput,\n type TextInputProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface InputProps extends Omit<TextInputProps, \"editable\" | \"style\"> {\n label?: string;\n helperText?: string;\n /** @default \"default\" */\n size?: \"small\" | \"default\" | \"large\";\n /** @default \"default\" */\n state?: \"default\" | \"error\" | \"success\";\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n required?: boolean;\n disabled?: boolean;\n theme?: UX4GTheme;\n /** Style for the field box itself. */\n style?: StyleProp<TextStyle>;\n /** Style for the outer group (label + field + helper). */\n containerStyle?: StyleProp<ViewStyle>;\n}\n\nconst HEIGHTS = { small: 40, default: 44, large: 48 } as const;\n\nexport function Input({\n label,\n helperText,\n size = \"default\",\n state = \"default\",\n disabled = false,\n required = false,\n iconLeft = null,\n iconRight = null,\n theme: themeProp,\n style,\n containerStyle,\n accessibilityLabel,\n onFocus,\n onBlur,\n ...rest\n}: InputProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n const [focused, setFocused] = useState(false);\n\n const height = HEIGHTS[size];\n const helperColor =\n state === \"success\" ? c.success : state === \"error\" ? c.danger : c.textMuted;\n const borderColor =\n state === \"error\"\n ? c.danger\n : state === \"success\"\n ? c.success\n : focused\n ? c.primary\n : c.border;\n\n return (\n <View style={[{ gap: theme.space[1] + 2 }, containerStyle]}>\n {label != null && (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: \"500\",\n letterSpacing: 0.1,\n color: c.text,\n }}\n >\n {label}\n {required ? <Text style={{ color: c.danger }}>{\" *\"}</Text> : null}\n </Text>\n )}\n <View style={{ position: \"relative\", justifyContent: \"center\" }}>\n {iconLeft != null && (\n <View style={{ position: \"absolute\", left: 12, zIndex: 1 }} pointerEvents=\"none\">\n {iconLeft}\n </View>\n )}\n <TextInput\n accessibilityLabel={accessibilityLabel ?? label}\n editable={!disabled}\n placeholderTextColor={c.textSubtle}\n onFocus={(e) => {\n setFocused(true);\n onFocus?.(e);\n }}\n onBlur={(e) => {\n setFocused(false);\n onBlur?.(e);\n }}\n style={[\n {\n height,\n paddingLeft: iconLeft ? 40 : 12,\n paddingRight: iconRight ? 40 : 12,\n fontFamily: theme.font.family.sans,\n fontSize: 16,\n color: c.text,\n backgroundColor: disabled ? theme.ramp.neutral[100] : c.surface,\n borderWidth: theme.border.md,\n borderColor,\n borderRadius: theme.radius.md,\n },\n style,\n ]}\n {...rest}\n />\n {iconRight != null && (\n <View style={{ position: \"absolute\", right: 12, zIndex: 1 }} pointerEvents=\"none\">\n {iconRight}\n </View>\n )}\n </View>\n {helperText != null && (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 12,\n lineHeight: 16,\n letterSpacing: 0.4,\n color: helperColor,\n }}\n >\n {helperText}\n </Text>\n )}\n </View>\n );\n}\n\nexport default Input;\n","import React, { useState } from \"react\";\nimport {\n View,\n Text,\n TextInput,\n type TextInputProps,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface TextareaProps\n extends Omit<TextInputProps, \"editable\" | \"style\" | \"multiline\" | \"numberOfLines\"> {\n label?: string;\n helperText?: string;\n /** Visible line count — drives the field's minimum height. @default 4 */\n rows?: number;\n /** @default \"default\" */\n state?: \"default\" | \"error\" | \"success\";\n required?: boolean;\n disabled?: boolean;\n theme?: UX4GTheme;\n /** Style for the field box itself. */\n style?: StyleProp<TextStyle>;\n /** Style for the outer group (label + field + helper). */\n containerStyle?: StyleProp<ViewStyle>;\n}\n\nconst LINE_HEIGHT = 24;\nconst PADDING = 12;\n\nexport function Textarea({\n label,\n helperText,\n rows = 4,\n state = \"default\",\n disabled = false,\n required = false,\n theme: themeProp,\n style,\n containerStyle,\n accessibilityLabel,\n onFocus,\n onBlur,\n ...rest\n}: TextareaProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n const [focused, setFocused] = useState(false);\n\n const helperColor =\n state === \"success\" ? c.success : state === \"error\" ? c.danger : c.textMuted;\n const borderColor =\n state === \"error\"\n ? c.danger\n : state === \"success\"\n ? c.success\n : focused\n ? c.primary\n : c.border;\n\n return (\n <View style={[{ gap: theme.space[1] + 2 }, containerStyle]}>\n {label != null && (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: \"500\",\n letterSpacing: 0.1,\n color: c.text,\n }}\n >\n {label}\n {required ? <Text style={{ color: c.danger }}>{\" *\"}</Text> : null}\n </Text>\n )}\n <TextInput\n accessibilityLabel={accessibilityLabel ?? label}\n editable={!disabled}\n multiline\n textAlignVertical=\"top\"\n placeholderTextColor={c.textSubtle}\n onFocus={(e) => {\n setFocused(true);\n onFocus?.(e);\n }}\n onBlur={(e) => {\n setFocused(false);\n onBlur?.(e);\n }}\n style={[\n {\n width: \"100%\",\n minHeight: rows * LINE_HEIGHT + PADDING * 2,\n padding: PADDING,\n fontFamily: theme.font.family.sans,\n fontSize: 16,\n lineHeight: LINE_HEIGHT,\n color: c.text,\n backgroundColor: disabled ? theme.ramp.neutral[100] : c.surface,\n borderWidth: theme.border.md,\n borderColor,\n borderRadius: theme.radius.md,\n },\n style,\n ]}\n {...rest}\n />\n {helperText != null && (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 12,\n lineHeight: 16,\n letterSpacing: 0.4,\n color: helperColor,\n }}\n >\n {helperText}\n </Text>\n )}\n </View>\n );\n}\n\nexport default Textarea;\n","import React, { useState, useMemo } from \"react\";\nimport {\n FlatList,\n Modal as RNModal,\n Pressable,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport interface SelectProps {\n label?: string;\n helperText?: string;\n placeholder?: string;\n /** Options as strings or {value,label}. */\n options?: (string | SelectOption)[];\n /** Controlled selected value. */\n value?: string;\n /** Initial value when uncontrolled. */\n defaultValue?: string;\n /** Reports the chosen option's value when the user selects it. */\n onChange?: (value: string) => void;\n /** @default \"default\" */\n size?: \"small\" | \"default\" | \"large\";\n /** @default \"default\" */\n state?: \"default\" | \"error\" | \"success\";\n required?: boolean;\n disabled?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Style for the field box (trigger) itself. */\n style?: StyleProp<ViewStyle>;\n /** Style for the outer group (label + field + helper). */\n containerStyle?: StyleProp<ViewStyle>;\n}\n\nconst HEIGHTS = { small: 36, default: 44, large: 48 } as const;\n\nfunction normalise(o: string | SelectOption): SelectOption {\n return typeof o === \"string\" ? { value: o, label: o } : o;\n}\n\nexport function Select({\n label,\n helperText,\n placeholder,\n options = [],\n value,\n defaultValue,\n onChange,\n size = \"default\",\n state = \"default\",\n required = false,\n disabled = false,\n theme: themeProp,\n style,\n containerStyle,\n}: SelectProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState<string>(defaultValue ?? \"\");\n const current = isControlled ? value : internal;\n\n const [open, setOpen] = useState(false);\n\n // Memoised so the (potentially large) option list is normalised/scanned only\n // when `options`/`current` change — not on every parent or press-state render.\n const items = useMemo(() => options.map(normalise), [options]);\n const selected = useMemo(\n () => items.find((o) => o.value === current) ?? null,\n [items, current],\n );\n const triggerLabel = selected ? selected.label : placeholder ?? \"\";\n const hasValue = selected != null;\n\n const height = HEIGHTS[size];\n const helperColor =\n state === \"success\" ? c.success : state === \"error\" ? c.danger : c.textMuted;\n const borderColor =\n state === \"error\" ? c.danger : state === \"success\" ? c.success : c.border;\n\n const choose = (next: string) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n setOpen(false);\n };\n\n const openList = () => {\n if (disabled) return;\n setOpen(true);\n };\n\n const triggerTextStyle: TextStyle = {\n flex: 1,\n fontFamily: theme.font.family.sans,\n fontSize: 16,\n color: hasValue ? c.text : c.textSubtle,\n };\n\n return (\n <View style={[{ gap: theme.space[1] + 2 }, containerStyle]}>\n {label != null && (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: \"500\",\n letterSpacing: 0.1,\n color: c.text,\n }}\n >\n {label}\n {required ? <Text style={{ color: c.danger }}>{\" *\"}</Text> : null}\n </Text>\n )}\n\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={label ?? placeholder}\n accessibilityState={{ disabled, expanded: open }}\n disabled={disabled}\n onPress={openList}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n height,\n paddingHorizontal: 12,\n backgroundColor: disabled ? theme.ramp.neutral[100] : c.surface,\n borderWidth: theme.border.md,\n borderColor,\n borderRadius: theme.radius.md,\n },\n style,\n ]}\n >\n <Text style={triggerTextStyle} numberOfLines={1}>\n {triggerLabel}\n </Text>\n <View pointerEvents=\"none\" style={{ marginLeft: 8 }}>\n <Svg width={22} height={22} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"m6 9 6 6 6-6\"\n stroke={theme.ramp.neutral[600]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </View>\n </Pressable>\n\n {helperText != null && (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 12,\n lineHeight: 16,\n letterSpacing: 0.4,\n color: helperColor,\n }}\n >\n {helperText}\n </Text>\n )}\n\n <RNModal\n visible={open}\n transparent\n animationType=\"fade\"\n onRequestClose={() => setOpen(false)}\n >\n <Pressable\n onPress={() => setOpen(false)}\n style={{\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: theme.space[5],\n backgroundColor: \"rgba(33,33,33,0.45)\",\n }}\n >\n <View\n accessibilityViewIsModal\n onStartShouldSetResponder={() => true}\n style={[\n {\n width: \"100%\",\n maxWidth: 420,\n backgroundColor: c.surface,\n borderRadius: theme.radius.lg,\n paddingVertical: theme.space[2],\n },\n theme.shadow.xl,\n ]}\n >\n {/* FlatList virtualises the options so a long list (countries,\n currencies, large lookups) mounts only the visible window. */}\n <FlatList\n data={items}\n keyExtractor={(o) => o.value}\n style={{ maxHeight: 320 }}\n keyboardShouldPersistTaps=\"handled\"\n renderItem={({ item: o }) => {\n const isSel = o.value === current;\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ selected: isSel }}\n onPress={() => choose(o.value)}\n style={({ pressed }) => ({\n flexDirection: \"row\",\n alignItems: \"center\",\n minHeight: 44,\n paddingHorizontal: theme.space[4],\n paddingVertical: theme.space[2] + 2,\n backgroundColor: isSel\n ? c.primarySubtle\n : pressed\n ? theme.ramp.neutral[100]\n : \"transparent\",\n })}\n >\n <Text\n style={{\n flex: 1,\n fontFamily: theme.font.family.sans,\n fontSize: 16,\n color: isSel ? c.primary : c.text,\n fontWeight: isSel ? \"600\" : \"400\",\n }}\n numberOfLines={1}\n >\n {o.label}\n </Text>\n {isSel && (\n <Svg width={20} height={20} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M20 6 9 17l-5-5\"\n stroke={c.primary}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n )}\n </Pressable>\n );\n }}\n />\n </View>\n </Pressable>\n </RNModal>\n </View>\n );\n}\n\nexport default Select;\n","import React, { useState } from \"react\";\nimport { Pressable, Text, View, type StyleProp, type ViewStyle } from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface CheckboxProps {\n label?: React.ReactNode;\n /** Controlled checked state. */\n checked?: boolean;\n /** Initial checked state when uncontrolled. */\n defaultChecked?: boolean;\n /** Reports the intended next value on press. */\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n indeterminate?: boolean;\n theme?: UX4GTheme;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function Checkbox({\n label,\n checked,\n defaultChecked = false,\n onChange,\n disabled = false,\n indeterminate = false,\n theme: themeProp,\n style,\n}: CheckboxProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n const isControlled = checked !== undefined;\n const [internal, setInternal] = useState(defaultChecked);\n const value = isControlled ? checked : internal;\n const on = value || indeterminate;\n\n const toggle = () => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInternal(next);\n onChange?.(next);\n };\n\n return (\n <Pressable\n accessibilityRole=\"checkbox\"\n accessibilityState={{ checked: indeterminate ? \"mixed\" : value, disabled }}\n disabled={disabled}\n onPress={toggle}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: theme.space[2] + 2,\n opacity: disabled ? 0.5 : 1,\n },\n style,\n ]}\n >\n <View\n style={{\n width: 20,\n height: 20,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.xs,\n borderWidth: theme.border.md,\n borderColor: on ? c.primary : theme.ramp.neutral[400],\n backgroundColor: on ? c.primary : c.surface,\n }}\n >\n {on && (\n <Svg width={16} height={16} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={indeterminate ? \"M5 12h14\" : \"M20 6 9 17l-5-5\"}\n stroke={c.onPrimary}\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n )}\n </View>\n {label != null &&\n (typeof label === \"string\" || typeof label === \"number\" ? (\n <Text style={{ fontFamily: theme.font.family.sans, fontSize: 16, color: c.text }}>\n {label}\n </Text>\n ) : (\n label\n ))}\n </Pressable>\n );\n}\n\nexport default Checkbox;\n","import React, { useState } from \"react\";\nimport { Pressable, Text, View, type StyleProp, type ViewStyle } from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\n/** UX4G Radio — circular single-select control. Group options via a shared `name`. */\nexport interface RadioProps {\n label?: React.ReactNode;\n /** Controlled checked state. */\n checked?: boolean;\n /** Initial checked state when uncontrolled. */\n defaultChecked?: boolean;\n /** Groups options for single-select; give every option in a group the same name. */\n name?: string;\n /** This option's value, reported to `onChange` when selected. */\n value?: string;\n /** Fired with the option's `value` (and `true`) when the radio is selected. */\n onChange?: (value: string | undefined, checked: boolean) => void;\n disabled?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n style?: StyleProp<ViewStyle>;\n}\n\nexport function Radio({\n label,\n checked,\n defaultChecked = false,\n name,\n value,\n onChange,\n disabled = false,\n theme: themeProp,\n style,\n}: RadioProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n const [focused, setFocused] = useState(false);\n const isControlled = checked !== undefined;\n const [internal, setInternal] = useState(defaultChecked);\n const on = isControlled ? checked : internal;\n\n const select = () => {\n if (disabled) return;\n if (!isControlled) setInternal(true);\n onChange?.(value, true);\n };\n\n return (\n <Pressable\n accessibilityRole=\"radio\"\n accessibilityLabel={\n typeof label === \"string\" || typeof label === \"number\" ? String(label) : undefined\n }\n accessibilityState={{ checked: on, disabled }}\n disabled={disabled}\n onPress={select}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: theme.space[2] + 2,\n minHeight: 44,\n opacity: disabled ? 0.5 : 1,\n },\n style,\n ]}\n >\n <View\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{\n width: 20,\n height: 20,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.full,\n borderWidth: focused && !disabled ? theme.focusRingWidth : theme.border.md,\n borderColor: focused && !disabled\n ? c.focus\n : on\n ? c.primary\n : theme.ramp.neutral[400],\n }}\n >\n {on && (\n <View\n style={{\n width: 10,\n height: 10,\n borderRadius: theme.radius.full,\n backgroundColor: c.primary,\n }}\n />\n )}\n </View>\n {label != null &&\n (typeof label === \"string\" || typeof label === \"number\" ? (\n <Text style={{ fontFamily: theme.font.family.sans, fontSize: 16, color: c.text }}>\n {label}\n </Text>\n ) : (\n label\n ))}\n </Pressable>\n );\n}\n\nexport default Radio;\n","import React, { useState } from \"react\";\nimport { Pressable, Text, View, type StyleProp, type ViewStyle } from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface SwitchProps {\n label?: React.ReactNode;\n /** Controlled on/off state. */\n checked?: boolean;\n /** Initial on/off state when uncontrolled. */\n defaultChecked?: boolean;\n /** Reports the intended next value on press. */\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n style?: StyleProp<ViewStyle>;\n}\n\n// Track / thumb geometry mirrors the web reference (40x24 track, 20x20 thumb).\nconst TRACK_WIDTH = 40;\nconst TRACK_HEIGHT = 24;\nconst TRACK_PADDING = 2;\nconst THUMB_SIZE = 20;\nconst THUMB_TRAVEL = TRACK_WIDTH - THUMB_SIZE - TRACK_PADDING * 2; // 16\n\n/** UX4G Switch — on/off toggle for settings and preferences. */\nexport function Switch({\n label,\n checked,\n defaultChecked = false,\n onChange,\n disabled = false,\n theme: themeProp,\n style,\n}: SwitchProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n const isControlled = checked !== undefined;\n const [internal, setInternal] = useState(defaultChecked);\n const [focused, setFocused] = useState(false);\n const isOn = isControlled ? checked : internal;\n\n const accessibilityLabel =\n typeof label === \"string\" || typeof label === \"number\" ? String(label) : undefined;\n\n const toggle = () => {\n if (disabled) return;\n const next = !isOn;\n if (!isControlled) setInternal(next);\n onChange?.(next);\n };\n\n return (\n <Pressable\n accessibilityRole=\"switch\"\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ checked: isOn, disabled }}\n disabled={disabled}\n onPress={toggle}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n minHeight: 44,\n gap: theme.space[2] + 2,\n opacity: disabled ? 0.5 : 1,\n },\n style,\n ]}\n >\n <View\n testID=\"ux-switch-track\"\n style={{\n width: TRACK_WIDTH,\n height: TRACK_HEIGHT,\n borderRadius: theme.radius.full,\n padding: TRACK_PADDING,\n justifyContent: \"center\",\n backgroundColor: isOn ? c.primary : theme.ramp.neutral[300],\n borderWidth: focused && !disabled ? theme.focusRingWidth : 0,\n borderColor: focused && !disabled ? c.focus : \"transparent\",\n }}\n >\n <View\n testID=\"ux-switch-thumb\"\n style={{\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: theme.radius.full,\n backgroundColor: theme.color.surface,\n transform: [{ translateX: isOn ? THUMB_TRAVEL : 0 }],\n ...theme.shadow.s,\n }}\n />\n </View>\n {label != null &&\n (typeof label === \"string\" || typeof label === \"number\" ? (\n <Text style={{ fontFamily: theme.font.family.sans, fontSize: 16, color: c.text }}>\n {label}\n </Text>\n ) : (\n label\n ))}\n </Pressable>\n );\n}\n\nexport default Switch;\n","import React, { useState } from \"react\";\nimport {\n View,\n TextInput,\n Pressable,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n type NativeSyntheticEvent,\n type TextInputSubmitEditingEventData,\n} from \"react-native\";\nimport Svg, { Path, Circle } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface SearchProps {\n /** Controlled value. */\n value?: string;\n /** Reports the value on every keystroke. */\n onChange?: (value: string) => void;\n /** Fires the current value when the user submits (keyboard return / search key). */\n onSearch?: (value: string) => void;\n placeholder?: string;\n /** @default \"default\" */\n size?: \"default\" | \"large\";\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Style for the field box itself. */\n style?: StyleProp<TextStyle>;\n /** Style for the outer container. */\n containerStyle?: StyleProp<ViewStyle>;\n}\n\nconst HEIGHTS = { default: 43, large: 48 } as const;\n\nexport function Search({\n value,\n onChange,\n onSearch,\n placeholder = \"Search\",\n size = \"default\",\n theme: themeProp,\n style,\n containerStyle,\n}: SearchProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState(\"\");\n const [focused, setFocused] = useState(false);\n const v = isControlled ? value : internal;\n\n const set = (next: string) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n };\n\n const height = HEIGHTS[size];\n\n const handleSubmit = (\n _e: NativeSyntheticEvent<TextInputSubmitEditingEventData>,\n ) => {\n onSearch?.(v);\n };\n\n return (\n <View\n style={[{ position: \"relative\", justifyContent: \"center\" }, containerStyle]}\n >\n <View\n style={{ position: \"absolute\", left: 14, zIndex: 1 }}\n pointerEvents=\"none\"\n >\n <Svg width={20} height={20} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"m21 21-4.34-4.34\"\n stroke={theme.ramp.neutral[500]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Circle\n cx={11}\n cy={11}\n r={8}\n stroke={theme.ramp.neutral[500]}\n strokeWidth={2}\n />\n </Svg>\n </View>\n\n <TextInput\n accessibilityRole=\"search\"\n value={v}\n placeholder={placeholder}\n placeholderTextColor={c.textSubtle}\n onChangeText={set}\n onSubmitEditing={handleSubmit}\n returnKeyType=\"search\"\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={[\n {\n width: \"100%\",\n height,\n paddingLeft: 42,\n paddingRight: v ? 40 : 14,\n fontFamily: theme.font.family.sans,\n fontSize: 16,\n color: c.text,\n backgroundColor: c.surface,\n borderWidth: focused ? theme.focusRingWidth : theme.border.md,\n borderColor: focused ? c.focus : c.border,\n borderRadius: theme.radius.full,\n },\n style,\n ]}\n />\n\n {v ? (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Clear\"\n onPress={() => set(\"\")}\n style={{\n position: \"absolute\",\n right: 10,\n width: 24,\n height: 24,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.full,\n backgroundColor: theme.ramp.neutral[200],\n }}\n hitSlop={10}\n >\n <Svg width={14} height={14} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M18 6 6 18\"\n stroke={theme.ramp.neutral[700]}\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"m6 6 12 12\"\n stroke={theme.ramp.neutral[700]}\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </Pressable>\n ) : null}\n </View>\n );\n}\n\nexport default Search;\n","import React, { useState } from \"react\";\nimport {\n Modal as RNModal,\n Pressable,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport Svg, { Path, Rect } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\n/** UX4G DatePicker — field that opens a month calendar popover; value is ISO yyyy-mm-dd. */\nexport interface DatePickerProps {\n label?: string;\n /** ISO yyyy-mm-dd. */\n value?: string;\n onChange?: (iso: string) => void;\n placeholder?: string;\n min?: string;\n max?: string;\n required?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Style for the field box (trigger) itself. */\n style?: StyleProp<ViewStyle>;\n /** Style for the outer group (label + field). */\n containerStyle?: StyleProp<ViewStyle>;\n}\n\nconst MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n] as const;\nconst DOW = [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"] as const;\n\nconst pad2 = (n: number): string => String(n).padStart(2, \"0\");\nconst isoOf = (d: Date): string =>\n `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}`;\n\n/** Format an ISO yyyy-mm-dd as \"DD Mon YYYY\" (e.g. \"05 Jan 2008\"). */\nconst fmtTrigger = (s: string): string => {\n const [y, m, d] = s.split(\"-\").map(Number);\n return `${pad2(d)} ${MONTHS[m - 1].slice(0, 3)} ${y}`;\n};\n\n/** Full a11y label for a day cell, e.g. \"05 January 2008\". */\nconst fmtDayLabel = (y: number, m: number, d: number): string =>\n `${pad2(d)} ${MONTHS[m]} ${y}`;\n\nconst parseView = (value: string | undefined): Date => {\n if (value) {\n const [y, m, d] = value.split(\"-\").map(Number);\n if (\n Number.isFinite(y) &&\n Number.isFinite(m) &&\n Number.isFinite(d)\n ) {\n return new Date(y, m - 1, d);\n }\n }\n return new Date();\n};\n\nexport function DatePicker({\n label,\n value,\n onChange,\n placeholder = \"Select a date\",\n min,\n max,\n required = false,\n theme: themeProp,\n style,\n containerStyle,\n}: DatePickerProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const [open, setOpen] = useState(false);\n const [view, setView] = useState<Date>(() => parseView(value));\n\n const openCalendar = (): void => {\n setView(parseView(value));\n setOpen(true);\n };\n\n const y = view.getFullYear();\n const m = view.getMonth();\n const firstDow = new Date(y, m, 1).getDay();\n const daysInMonth = new Date(y, m + 1, 0).getDate();\n const cells: (number | null)[] = [\n ...Array<null>(firstDow).fill(null),\n ...Array.from({ length: daysInMonth }, (_, i) => i + 1),\n ];\n\n const isDisabledDay = (d: number): boolean => {\n const s = isoOf(new Date(y, m, d));\n return (min != null && s < min) || (max != null && s > max);\n };\n\n const pick = (d: number): void => {\n if (isDisabledDay(d)) return;\n const s = isoOf(new Date(y, m, d));\n onChange?.(s);\n setOpen(false);\n };\n\n const hasValue = value != null && value !== \"\";\n const triggerLabel = hasValue ? fmtTrigger(value) : placeholder;\n\n const triggerTextStyle: TextStyle = {\n flex: 1,\n fontFamily: theme.font.family.sans,\n fontSize: 16,\n color: hasValue ? c.text : c.textSubtle,\n };\n\n const navBtnStyle: ViewStyle = {\n width: 36,\n height: 36,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.sm,\n backgroundColor: theme.ramp.neutral[100],\n };\n\n return (\n <View style={[{ gap: theme.space[1] + 2 }, containerStyle]}>\n {label != null && (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: \"500\",\n letterSpacing: 0.1,\n color: c.text,\n }}\n >\n {label}\n {required ? <Text style={{ color: c.danger }}>{\" *\"}</Text> : null}\n </Text>\n )}\n\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={label ?? placeholder}\n accessibilityState={{ expanded: open }}\n onPress={openCalendar}\n style={[\n {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: theme.space[2] + 2,\n minHeight: 44,\n paddingHorizontal: 12,\n backgroundColor: c.surface,\n borderWidth: theme.border.md,\n borderColor: c.border,\n borderRadius: theme.radius.md,\n },\n style,\n ]}\n >\n <View pointerEvents=\"none\">\n <Svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M8 2v4\"\n stroke={theme.ramp.neutral[600]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"M16 2v4\"\n stroke={theme.ramp.neutral[600]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Rect\n x={3}\n y={4}\n width={18}\n height={18}\n rx={2}\n stroke={theme.ramp.neutral[600]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"M3 10h18\"\n stroke={theme.ramp.neutral[600]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </View>\n <Text style={triggerTextStyle} numberOfLines={1}>\n {triggerLabel}\n </Text>\n </Pressable>\n\n <RNModal\n visible={open}\n transparent\n animationType=\"fade\"\n onRequestClose={() => setOpen(false)}\n >\n <Pressable\n onPress={() => setOpen(false)}\n style={{\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: theme.space[5],\n backgroundColor: \"rgba(33,33,33,0.45)\",\n }}\n >\n <View\n accessibilityViewIsModal\n onStartShouldSetResponder={() => true}\n style={[\n {\n width: \"100%\",\n maxWidth: 320,\n padding: theme.space[4],\n backgroundColor: c.surface,\n borderRadius: theme.radius.lg,\n },\n theme.shadow.l,\n ]}\n >\n {/* Header: month nav */}\n <View\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: theme.space[3],\n }}\n >\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Previous month\"\n onPress={() => setView(new Date(y, m - 1, 1))}\n style={navBtnStyle}\n >\n <Svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"m15 18-6-6 6-6\"\n stroke={theme.ramp.neutral[700]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </Pressable>\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: \"600\",\n color: c.text,\n }}\n >\n {`${MONTHS[m]} ${y}`}\n </Text>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Next month\"\n onPress={() => setView(new Date(y, m + 1, 1))}\n style={navBtnStyle}\n >\n <Svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"m9 18 6-6-6-6\"\n stroke={theme.ramp.neutral[700]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </Pressable>\n </View>\n\n {/* Day-of-week header row */}\n <View style={{ flexDirection: \"row\" }}>\n {DOW.map((d, i) => (\n <View\n key={`dow-${i}`}\n style={{ flexBasis: \"14.2857%\", paddingVertical: 4 }}\n >\n <Text\n style={{\n textAlign: \"center\",\n fontFamily: theme.font.family.sans,\n fontSize: 11,\n fontWeight: \"600\",\n color: c.textSubtle,\n }}\n >\n {d}\n </Text>\n </View>\n ))}\n </View>\n\n {/* Day grid */}\n <View style={{ flexDirection: \"row\", flexWrap: \"wrap\" }}>\n {cells.map((d, i) => {\n if (d == null) {\n return (\n <View\n key={`blank-${i}`}\n style={{ flexBasis: \"14.2857%\", height: 40 }}\n />\n );\n }\n const selected = hasValue && isoOf(new Date(y, m, d)) === value;\n const disabled = isDisabledDay(d);\n const dayColor = selected\n ? c.onPrimary\n : disabled\n ? theme.ramp.neutral[300]\n : c.text;\n return (\n <View\n key={`day-${i}`}\n style={{\n flexBasis: \"14.2857%\",\n height: 40,\n padding: 2,\n }}\n >\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={fmtDayLabel(y, m, d)}\n accessibilityState={{ selected, disabled }}\n disabled={disabled}\n onPress={() => pick(d)}\n style={({ pressed }) => ({\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.sm,\n backgroundColor: selected\n ? c.primary\n : pressed && !disabled\n ? theme.ramp.neutral[100]\n : \"transparent\",\n })}\n >\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 13,\n fontWeight: selected ? \"600\" : \"500\",\n color: dayColor,\n }}\n >\n {d}\n </Text>\n </Pressable>\n </View>\n );\n })}\n </View>\n </View>\n </Pressable>\n </RNModal>\n </View>\n );\n}\n\nexport default DatePicker;\n","import React, { useRef, useState } from \"react\";\nimport {\n View,\n Text,\n PanResponder,\n type LayoutChangeEvent,\n type PanResponderInstance,\n type GestureResponderEvent,\n type PanResponderGestureState,\n type AccessibilityActionEvent,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface RangeSliderProps {\n label?: string;\n value?: number;\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n onChange?: (value: number) => void;\n /** Show the current value bubble. @default true */\n showValue?: boolean;\n /** Optional unit suffix for the value label, e.g. \"%\". */\n unit?: string;\n disabled?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n style?: StyleProp<ViewStyle>;\n}\n\nconst TRACK_HEIGHT = 6;\nconst THUMB_SIZE = 20;\n\n/** Snap a raw value to the nearest step and clamp into [min, max]. */\nfunction quantise(raw: number, min: number, max: number, step: number): number {\n const clamped = Math.min(max, Math.max(min, raw));\n if (step <= 0) return clamped;\n const snapped = min + Math.round((clamped - min) / step) * step;\n const bounded = Math.min(max, Math.max(min, snapped));\n // Avoid floating-point dust (e.g. 0.30000000000000004) for fractional steps.\n return Math.round(bounded * 1e6) / 1e6;\n}\n\n/** UX4G RangeSlider — single-value slider with a filled track and value bubble. */\nexport function RangeSlider({\n label,\n value,\n defaultValue = 0,\n min = 0,\n max = 100,\n step = 1,\n onChange,\n showValue = true,\n unit = \"\",\n disabled = false,\n theme: themeProp,\n style,\n}: RangeSliderProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState(() => quantise(defaultValue, min, max, step));\n const current = quantise(value !== undefined ? value : internal, min, max, step);\n\n const [trackWidth, setTrackWidth] = useState(0);\n\n const span = max - min;\n const ratio = span > 0 ? (current - min) / span : 0;\n const pct = ratio * 100;\n\n // Latest values for the PanResponder closures (created once on mount).\n const latest = useRef({ trackWidth, min, max, step, disabled, isControlled });\n latest.current = { trackWidth, min, max, step, disabled, isControlled };\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const commit = (next: number) => {\n if (!latest.current.isControlled) setInternal(next);\n onChangeRef.current?.(next);\n };\n\n const setFromX = (x: number) => {\n const { trackWidth: w, min: lo, max: hi, step: s } = latest.current;\n if (w <= 0) return;\n const clampedX = Math.min(w, Math.max(0, x));\n const raw = lo + (clampedX / w) * (hi - lo);\n commit(quantise(raw, lo, hi, s));\n };\n\n const panResponder = useRef<PanResponderInstance>(\n PanResponder.create({\n onStartShouldSetPanResponder: () => !latest.current.disabled,\n onMoveShouldSetPanResponder: () => !latest.current.disabled,\n onPanResponderGrant: (e: GestureResponderEvent) => {\n if (latest.current.disabled) return;\n setFromX(e.nativeEvent.locationX);\n },\n onPanResponderMove: (\n _e: GestureResponderEvent,\n gesture: PanResponderGestureState,\n ) => {\n if (latest.current.disabled) return;\n setFromX(gesture.moveX - trackLeft.current);\n },\n }),\n ).current;\n\n // Absolute page x of the track's left edge, captured on layout.\n const trackLeft = useRef(0);\n\n const onLayout = (e: LayoutChangeEvent) => {\n setTrackWidth(e.nativeEvent.layout.width);\n };\n\n const nudge = (dir: 1 | -1) => {\n if (disabled) return;\n commit(quantise(current + dir * step, min, max, step));\n };\n\n const onAccessibilityAction = (e: AccessibilityActionEvent) => {\n if (e.nativeEvent.actionName === \"increment\") nudge(1);\n else if (e.nativeEvent.actionName === \"decrement\") nudge(-1);\n };\n\n const valueText = `${current}${unit}`;\n const thumbLeft = trackWidth > 0 ? ratio * (trackWidth - THUMB_SIZE) : 0;\n\n return (\n <View style={[{ gap: theme.space[2], opacity: disabled ? 0.5 : 1 }, style]}>\n {(label != null || showValue) && (\n <View\n style={{\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"baseline\",\n }}\n >\n {label != null ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: \"500\",\n color: c.text,\n }}\n >\n {label}\n </Text>\n ) : (\n <View />\n )}\n {showValue && (\n <Text\n style={{\n fontFamily: theme.font.family.mono,\n fontSize: 13,\n fontWeight: \"600\",\n color: theme.ramp.violet[700],\n }}\n >\n {valueText}\n </Text>\n )}\n </View>\n )}\n\n <View\n accessible\n accessibilityRole=\"adjustable\"\n accessibilityLabel={label}\n accessibilityState={{ disabled }}\n accessibilityValue={{ min, max, now: current, text: valueText }}\n accessibilityActions={[{ name: \"increment\" }, { name: \"decrement\" }]}\n onAccessibilityAction={onAccessibilityAction}\n onLayout={(e: LayoutChangeEvent) => {\n trackLeft.current = e.nativeEvent.layout.x;\n }}\n // The hit area is taller than the visible track for an easy touch target.\n style={{\n height: Math.max(44, THUMB_SIZE),\n justifyContent: \"center\",\n }}\n {...panResponder.panHandlers}\n >\n {/* Track */}\n <View\n testID=\"ux-range-track\"\n onLayout={onLayout}\n style={{\n height: TRACK_HEIGHT,\n borderRadius: theme.radius.full,\n backgroundColor: theme.ramp.neutral[200],\n justifyContent: \"center\",\n }}\n >\n {/* Filled portion */}\n <View\n testID=\"ux-range-fill\"\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: `${pct}%`,\n borderRadius: theme.radius.full,\n backgroundColor: c.primary,\n }}\n />\n {/* Thumb */}\n <View\n testID=\"ux-range-thumb\"\n style={{\n position: \"absolute\",\n left: thumbLeft,\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: theme.radius.full,\n backgroundColor: c.surface,\n borderWidth: theme.border.thick,\n borderColor: c.primary,\n ...theme.shadow.s,\n }}\n />\n </View>\n </View>\n </View>\n );\n}\n\nexport default RangeSlider;\n","import React, { useState } from \"react\";\nimport {\n Modal as RNModal,\n Pressable,\n ScrollView,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface ColorPickerProps {\n label?: string;\n /** Selected hex value (controlled). */\n value?: string;\n /** Initial hex value when uncontrolled. @default \"#613AF5\" */\n defaultValue?: string;\n /** Fired with the chosen hex (uppercased). */\n onChange?: (hex: string) => void;\n /** Curated swatches. */\n swatches?: string[];\n /** Show a trigger that opens the full palette panel. @default true */\n allowCustom?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Style for the outer group (label + swatches). */\n style?: StyleProp<ViewStyle>;\n}\n\nconst DEFAULT_SWATCHES = [\n \"#613AF5\",\n \"#107400\",\n \"#DB2829\",\n \"#EE8033\",\n \"#1937B2\",\n \"#8981AB\",\n \"#212121\",\n] as const;\n\nconst SWATCH = 30;\nconst TAP = 44;\n\nfunction isHex6(hex: string): boolean {\n return /^#[0-9A-F]{6}$/.test(hex);\n}\n\nexport function ColorPicker({\n label,\n value,\n defaultValue = \"#613AF5\",\n onChange,\n swatches = [...DEFAULT_SWATCHES],\n allowCustom = true,\n theme: themeProp,\n style,\n}: ColorPickerProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState<string>(defaultValue.toUpperCase());\n const current = (value ?? internal).toUpperCase();\n\n const [focused, setFocused] = useState<string | null>(null);\n const [open, setOpen] = useState(false);\n\n const all = swatches.map((s) => s.toUpperCase());\n\n const set = (hex: string) => {\n const h = hex.toUpperCase();\n if (!isControlled) setInternal(h);\n onChange?.(h);\n };\n\n const choose = (hex: string) => {\n set(hex);\n setOpen(false);\n };\n\n const swatchView = (hex: string, kind: \"row\" | \"panel\") => {\n const active = hex === current;\n const isFocused = focused === `${kind}:${hex}`;\n const ringColor = active ? c.text : c.border;\n return (\n <Pressable\n key={`${kind}:${hex}`}\n accessibilityRole=\"button\"\n accessibilityLabel={kind === \"panel\" ? `Pick ${hex}` : hex}\n accessibilityState={{ selected: active }}\n onPress={() => (kind === \"panel\" ? choose(hex) : set(hex))}\n onFocus={() => setFocused(`${kind}:${hex}`)}\n onBlur={() => setFocused(null)}\n style={{\n width: TAP,\n height: TAP,\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <View\n testID={`ux-colorpicker-${kind}-${hex}`}\n style={{\n width: SWATCH,\n height: SWATCH,\n borderRadius: theme.radius.md,\n backgroundColor: hex,\n borderWidth: theme.border.thick,\n borderColor: isFocused ? c.focus : ringColor,\n }}\n />\n </Pressable>\n );\n };\n\n return (\n <View style={[{ gap: theme.space[2] }, style]}>\n {label != null && (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: \"500\",\n letterSpacing: 0.1,\n color: c.text,\n }}\n >\n {label}\n </Text>\n )}\n\n <View\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n }}\n >\n {all.map((hex) => swatchView(hex, \"row\"))}\n\n {allowCustom && (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Choose a custom colour\"\n accessibilityState={{ expanded: open }}\n onPress={() => setOpen(true)}\n onFocus={() => setFocused(\"custom\")}\n onBlur={() => setFocused(null)}\n style={{\n width: TAP,\n height: TAP,\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <View\n style={{\n width: SWATCH,\n height: SWATCH,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.md,\n borderWidth: focused === \"custom\" ? theme.focusRingWidth : theme.border.md,\n borderColor: focused === \"custom\" ? c.focus : c.borderStrong,\n borderStyle: \"dashed\",\n }}\n >\n <Svg width={16} height={16} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M5 12h14\"\n stroke={theme.ramp.neutral[600]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"M12 5v14\"\n stroke={theme.ramp.neutral[600]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </View>\n </Pressable>\n )}\n\n <Text\n style={{\n fontFamily: theme.font.family.mono,\n fontSize: 12,\n color: c.textMuted,\n marginLeft: theme.space[1],\n }}\n >\n {current}\n </Text>\n </View>\n\n <RNModal\n visible={open}\n transparent\n animationType=\"fade\"\n onRequestClose={() => setOpen(false)}\n >\n <Pressable\n onPress={() => setOpen(false)}\n style={{\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: theme.space[5],\n backgroundColor: \"rgba(33,33,33,0.45)\",\n }}\n >\n <View\n accessibilityViewIsModal\n onStartShouldSetResponder={() => true}\n style={[\n {\n width: \"100%\",\n maxWidth: 360,\n backgroundColor: c.surface,\n borderRadius: theme.radius.lg,\n padding: theme.space[4],\n gap: theme.space[3],\n },\n theme.shadow.xl,\n ]}\n >\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 16,\n fontWeight: \"600\",\n color: c.text,\n }}\n >\n Choose a colour\n </Text>\n <ScrollView style={{ maxHeight: 280 }}>\n <View\n style={{\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n }}\n >\n {all.map((hex) => swatchView(hex, \"panel\"))}\n </View>\n </ScrollView>\n </View>\n </Pressable>\n </RNModal>\n </View>\n );\n}\n\nexport default ColorPicker;\n","import React, { useState } from \"react\";\nimport { Pressable, Text, View, type StyleProp, type ViewStyle } from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface UploadedFile {\n name: string;\n size: number;\n type: string;\n}\n\nexport interface FileUploadProps {\n label?: string;\n hint?: string;\n /**\n * Accept hint, e.g. \".pdf,image/*\". Kept for parity with the web contract and\n * passed to `onPick` so the consuming app can configure its native picker.\n */\n accept?: string;\n multiple?: boolean;\n /** Controlled file list. Omit for uncontrolled (internal) state. */\n files?: UploadedFile[];\n onChange?: (files: UploadedFile[]) => void;\n /**\n * React Native has no `<input type=\"file\">`. Pressing the dropzone (or\n * \"browse\") calls `onPick` — the consuming app wires a real picker\n * (e.g. expo-document-picker, react-native-image-picker) and returns the\n * chosen files. Receives `{ accept, multiple }` so the picker can be\n * configured. Returning nothing (or an empty array) is treated as a cancel.\n */\n onPick?: (opts: { accept?: string; multiple: boolean }) =>\n | UploadedFile[]\n | undefined\n | Promise<UploadedFile[] | undefined>;\n disabled?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n style?: StyleProp<ViewStyle>;\n}\n\nfunction fmtSize(b: number): string {\n if (b < 1024) return b + \" B\";\n if (b < 1024 * 1024) return (b / 1024).toFixed(0) + \" KB\";\n return (b / 1024 / 1024).toFixed(1) + \" MB\";\n}\n\n/** UX4G FileUpload — drop-zone visual with a removable selected-file list. */\nexport function FileUpload({\n label,\n hint = \"PDF, JPG or PNG · up to 5 MB\",\n accept,\n multiple = false,\n files,\n onChange,\n onPick,\n disabled = false,\n theme: themeProp,\n style,\n}: FileUploadProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n const [internal, setInternal] = useState<UploadedFile[]>([]);\n const [focused, setFocused] = useState(false);\n const isControlled = files !== undefined;\n const list = isControlled ? files : internal;\n\n const update = (next: UploadedFile[]) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n };\n\n const add = (picked: UploadedFile[] | undefined) => {\n if (!picked || picked.length === 0) return;\n update(multiple ? [...list, ...picked] : picked.slice(0, 1));\n };\n\n const handlePick = () => {\n if (disabled) return;\n const result = onPick?.({ accept, multiple });\n if (result instanceof Promise) {\n void result.then(add);\n } else {\n add(result);\n }\n };\n\n const remove = (i: number) => update(list.filter((_, x) => x !== i));\n\n return (\n <View style={[{ gap: 10 }, style]}>\n {label != null && (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: \"500\",\n color: c.text,\n }}\n >\n {label}\n </Text>\n )}\n\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={label}\n accessibilityState={{ disabled }}\n disabled={disabled}\n onPress={handlePick}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={({ pressed }) => {\n const active = pressed && !disabled;\n const ring: ViewStyle | null =\n focused && !disabled\n ? { borderColor: c.focus, borderWidth: theme.focusRingWidth }\n : null;\n return [\n {\n borderWidth: theme.border.md,\n borderStyle: \"dashed\",\n borderColor: active ? c.primary : c.borderStrong,\n borderRadius: theme.radius.lg,\n paddingVertical: 26,\n paddingHorizontal: 20,\n alignItems: \"center\",\n backgroundColor: active ? theme.ramp.violet[50] : theme.ramp.neutral[50],\n opacity: disabled ? 0.6 : 1,\n },\n ring,\n ];\n }}\n >\n <Svg width={30} height={30} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M12 13v8\"\n stroke={theme.ramp.neutral[500]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\"\n stroke={theme.ramp.neutral[500]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"m8 17 4-4 4 4\"\n stroke={theme.ramp.neutral[500]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n color: c.text,\n marginTop: 8,\n textAlign: \"center\",\n }}\n >\n Drag a file here, or{\" \"}\n <Text style={{ color: c.textLink, fontWeight: \"600\" }}>browse</Text>\n </Text>\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 12,\n color: c.textMuted,\n marginTop: 2,\n textAlign: \"center\",\n }}\n >\n {hint}\n </Text>\n </Pressable>\n\n {list.length > 0 && (\n <View style={{ gap: 6 }}>\n {list.map((f, i) => (\n <View\n key={`${f.name}-${i}`}\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 10,\n paddingVertical: 8,\n paddingHorizontal: 12,\n borderWidth: theme.border.thin,\n borderColor: c.border,\n borderRadius: theme.radius.md,\n backgroundColor: c.surface,\n }}\n >\n <Svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\"\n stroke={theme.ramp.violet[600]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"M14 2v4a2 2 0 0 0 2 2h4\"\n stroke={theme.ramp.violet[600]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n\n <View style={{ flex: 1, minWidth: 0 }}>\n <Text\n numberOfLines={1}\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 13.5,\n fontWeight: \"500\",\n color: c.text,\n }}\n >\n {f.name}\n </Text>\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 11.5,\n color: c.textMuted,\n }}\n >\n {fmtSize(f.size)}\n </Text>\n </View>\n\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Remove\"\n onPress={() => remove(i)}\n style={{\n width: 44,\n height: 44,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.sm,\n }}\n >\n <Svg width={16} height={16} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M18 6 6 18\"\n stroke={theme.ramp.neutral[500]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"m6 6 12 12\"\n stroke={theme.ramp.neutral[500]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </Pressable>\n </View>\n ))}\n </View>\n )}\n </View>\n );\n}\n\nexport default FileUpload;\n","import React, { useState } from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type GestureResponderEvent,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface CardProps {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n /** Media node rendered in a 16:9 frame at the top. */\n media?: React.ReactNode;\n footer?: React.ReactNode;\n /** Right-aligned action row (e.g. Buttons). */\n actions?: React.ReactNode;\n /** Inner padding in px. @default 20 */\n padding?: number;\n /** Adds a pressable / hover affordance. @default false */\n interactive?: boolean;\n /** Fired on tap when `interactive`. */\n onPress?: (event: GestureResponderEvent) => void;\n /** Disables the press affordance when `interactive`. @default false */\n disabled?: boolean;\n /** Required when `interactive` so assistive tech can name the card. */\n accessibilityLabel?: string;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n children?: React.ReactNode;\n}\n\n/**\n * UX4G Card — surface container. 1px border + soft shadow, 12px radius.\n * Compose freely, or use the optional header/media/footer props.\n */\nexport function Card({\n children,\n title,\n subtitle,\n media,\n footer,\n actions,\n padding = 20,\n interactive = false,\n onPress,\n disabled = false,\n accessibilityLabel,\n theme: themeProp,\n style,\n testID,\n}: CardProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const [pressed, setPressed] = useState(false);\n const c = theme.color;\n\n const surface: ViewStyle = {\n backgroundColor: c.surface,\n borderColor: c.border,\n borderWidth: theme.border.thin,\n borderRadius: theme.radius.lg,\n overflow: \"hidden\",\n flexDirection: \"column\",\n ...(interactive && pressed && !disabled ? theme.shadow.md : theme.shadow.s),\n };\n\n const titleStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 18,\n fontWeight: theme.font.weight.semibold,\n color: c.text,\n lineHeight: 24,\n };\n\n const subtitleStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n color: c.textMuted,\n marginTop: theme.space[1],\n lineHeight: 20,\n };\n\n const body = (\n <>\n {media != null && (\n <View\n style={{\n width: \"100%\",\n aspectRatio: 16 / 9,\n overflow: \"hidden\",\n backgroundColor: theme.ramp.neutral[100],\n }}\n >\n {media}\n </View>\n )}\n\n {(title != null || subtitle != null) && (\n <View style={{ paddingHorizontal: padding, paddingTop: padding }}>\n {title != null &&\n (typeof title === \"string\" || typeof title === \"number\" ? (\n <Text style={titleStyle}>{title}</Text>\n ) : (\n title\n ))}\n {subtitle != null &&\n (typeof subtitle === \"string\" || typeof subtitle === \"number\" ? (\n <Text style={subtitleStyle}>{subtitle}</Text>\n ) : (\n subtitle\n ))}\n </View>\n )}\n\n {children != null && (\n <View testID=\"ux-card-body\" style={{ padding }}>\n {children}\n </View>\n )}\n\n {(footer != null || actions != null) && (\n <View\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: actions != null ? \"flex-end\" : \"flex-start\",\n gap: theme.space[2],\n marginTop: \"auto\",\n paddingHorizontal: padding,\n paddingBottom: padding,\n }}\n >\n {footer}\n {actions}\n </View>\n )}\n </>\n );\n\n if (interactive) {\n return (\n <Pressable\n testID={testID}\n disabled={disabled}\n onPress={onPress}\n onPressIn={() => setPressed(true)}\n onPressOut={() => setPressed(false)}\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled }}\n style={[surface, style]}\n >\n {body}\n </Pressable>\n );\n }\n\n return (\n <View\n testID={testID}\n accessibilityLabel={accessibilityLabel}\n style={[surface, style]}\n >\n {body}\n </View>\n );\n}\n\nexport default Card;\n","import React from \"react\";\nimport {\n View,\n Text,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface BadgeProps {\n /** Colourway. @default \"neutral\" */\n variant?: \"neutral\" | \"primary\" | \"success\" | \"danger\" | \"info\" | \"warning\";\n /** Fill treatment. @default \"tonal\" */\n appearance?: \"tonal\" | \"solid\" | \"dot\";\n children?: React.ReactNode;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Container style override for the pill (ignored for `dot`). */\n style?: StyleProp<ViewStyle>;\n}\n\ntype Tone = { solid: string; tint: string; text: string };\n\nexport function Badge({\n children,\n variant = \"neutral\",\n appearance = \"tonal\",\n theme: themeProp,\n style,\n}: BadgeProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n const r = theme.ramp;\n\n // Web tones resolved to theme tokens:\n // neutral -> neutral[700] / neutral[100] / neutral[700]\n // primary -> violet[600] / violet[50] / violet[700]\n // success -> success[600] / success[50] / success[700]\n // danger -> danger[500] / danger[50] / danger[700]\n // warning -> warning[500] / warning[50] / warning[700]\n // info -> info[700] / info[50] / info[800]\n const tone: Tone = {\n neutral: { solid: r.neutral[700], tint: r.neutral[100], text: r.neutral[700] },\n primary: { solid: c.primary, tint: c.primarySubtle, text: r.violet[700] },\n success: { solid: c.success, tint: c.successSubtle, text: r.success[700] },\n danger: { solid: c.danger, tint: c.dangerSubtle, text: r.danger[700] },\n warning: { solid: c.warning, tint: c.warningSubtle, text: r.warning[700] },\n info: { solid: c.info, tint: c.infoSubtle, text: r.info[800] },\n }[variant];\n\n if (appearance === \"dot\") {\n const dotStyle: ViewStyle = {\n width: 8,\n height: 8,\n borderRadius: theme.radius.full,\n backgroundColor: tone.solid,\n };\n return (\n <View\n testID=\"ux4g-badge-dot\"\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={dotStyle}\n />\n );\n }\n\n const isSolid = appearance === \"solid\";\n\n const pill: ViewStyle = {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: theme.space[1],\n height: 20,\n paddingHorizontal: theme.space[2],\n borderRadius: theme.radius.full,\n alignSelf: \"flex-start\",\n backgroundColor: isSolid ? tone.solid : tone.tint,\n };\n\n const labelStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 12,\n fontWeight: theme.font.weight.semibold,\n lineHeight: 12,\n letterSpacing: 0.3,\n color: isSolid ? c.textInverse : tone.text,\n };\n\n const label =\n typeof children === \"string\" || typeof children === \"number\"\n ? String(children)\n : undefined;\n\n return (\n <View\n accessibilityRole=\"text\"\n accessibilityLabel={label}\n style={[pill, style]}\n >\n {typeof children === \"string\" || typeof children === \"number\" ? (\n <Text style={labelStyle} numberOfLines={1}>\n {children}\n </Text>\n ) : (\n children\n )}\n </View>\n );\n}\n\nexport default Badge;\n","import React, { useState } from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type GestureResponderEvent,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface ChipProps {\n /** Highlight the chip as the active filter / choice. @default false */\n selected?: boolean;\n /** Dim and block interaction. @default false */\n disabled?: boolean;\n /** Leading icon node (e.g. a react-native-svg element). */\n icon?: React.ReactNode;\n /** Make the chip pressable (filter / choice token). */\n onPress?: (e: GestureResponderEvent) => void;\n /** Show a remove (×) button and handle its press (input token). */\n onRemove?: (e: GestureResponderEvent) => void;\n children?: React.ReactNode;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n style?: StyleProp<ViewStyle>;\n /** Override the computed accessibility label. */\n accessibilityLabel?: string;\n}\n\nexport function Chip({\n children,\n selected = false,\n disabled = false,\n icon = null,\n onPress,\n onRemove,\n theme: themeProp,\n style,\n accessibilityLabel,\n}: ChipProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n const [focused, setFocused] = useState(false);\n\n const pressable = !!onPress;\n\n const selectedText = theme.ramp.violet[700];\n const selectedBg = theme.ramp.violet[50];\n\n const labelColor = selected ? selectedText : c.text;\n\n const baseLabel =\n typeof children === \"string\" || typeof children === \"number\"\n ? String(children)\n : undefined;\n const computedLabel =\n accessibilityLabel ??\n (baseLabel != null\n ? selected\n ? `${baseLabel}, selected`\n : baseLabel\n : undefined);\n\n const container: ViewStyle = {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 6,\n height: 32,\n paddingHorizontal: 12,\n borderRadius: theme.radius.full,\n borderWidth: theme.border.thin,\n borderColor: selected ? c.primary : c.border,\n backgroundColor: selected ? selectedBg : c.surface,\n opacity: disabled ? 0.5 : 1,\n };\n\n const focusRing: ViewStyle | null =\n focused && pressable && !disabled\n ? { borderColor: c.focus, borderWidth: theme.focusRingWidth }\n : null;\n\n const labelStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: theme.font.weight.medium,\n lineHeight: 14,\n color: labelColor,\n };\n\n const content = (\n <>\n {icon != null && (\n <View\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginLeft: -2,\n }}\n >\n {icon}\n </View>\n )}\n {baseLabel != null ? (\n <Text style={labelStyle} numberOfLines={1}>\n {baseLabel}\n </Text>\n ) : (\n children\n )}\n {onRemove && (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Remove\"\n accessibilityState={{ disabled }}\n disabled={disabled}\n hitSlop={12}\n onPress={(e: GestureResponderEvent) => {\n if (disabled) return;\n onRemove(e);\n }}\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 18,\n height: 18,\n marginRight: -4,\n borderRadius: theme.radius.full,\n backgroundColor: \"transparent\",\n }}\n >\n <Svg width={14} height={14} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M18 6 6 18\"\n stroke={labelColor}\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"m6 6 12 12\"\n stroke={labelColor}\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </Pressable>\n )}\n </>\n );\n\n if (pressable) {\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={computedLabel}\n accessibilityState={{ disabled, selected }}\n disabled={disabled}\n onPress={onPress}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={({ pressed }) => [\n container,\n pressed && !disabled\n ? { backgroundColor: selected ? theme.ramp.violet[100] : c.surfaceSubtle }\n : null,\n focusRing,\n style,\n ]}\n >\n {content}\n </Pressable>\n );\n }\n\n return (\n <View\n accessibilityLabel={computedLabel}\n accessibilityState={{ disabled, selected }}\n style={[container, style]}\n >\n {content}\n </View>\n );\n}\n\nexport default Chip;\n","import React from \"react\";\nimport {\n View,\n Text,\n Image,\n type StyleProp,\n type ViewStyle,\n type TextStyle,\n type ImageStyle,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface AvatarProps {\n src?: string;\n /** Full name — drives initials fallback and accessibility label. */\n name?: string;\n /** Pixel size. @default 40 */\n size?: number;\n /** @default \"circle\" */\n shape?: \"circle\" | \"rounded\";\n status?: \"online\" | \"busy\" | \"away\" | null;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Test hook on the outer container. */\n testID?: string;\n style?: StyleProp<ViewStyle>;\n}\n\ntype StatusKind = \"online\" | \"busy\" | \"away\";\n\nexport function Avatar({\n src,\n name = \"\",\n size = 40,\n shape = \"circle\",\n status = null,\n theme: themeProp,\n testID,\n style,\n}: AvatarProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n\n const initials = name\n .split(\" \")\n .filter(Boolean)\n .slice(0, 2)\n .map((w) => w[0])\n .join(\"\")\n .toUpperCase();\n\n const radius = shape === \"rounded\" ? theme.radius.md : theme.radius.full;\n\n const statusColor: Record<StatusKind, string> = {\n online: theme.color.success,\n busy: theme.color.danger,\n away: theme.color.warning,\n };\n\n const container: ViewStyle = {\n position: \"relative\",\n width: size,\n height: size,\n flexGrow: 0,\n flexShrink: 0,\n };\n\n const imageStyle: ImageStyle = {\n width: \"100%\",\n height: \"100%\",\n borderRadius: radius,\n };\n\n const initialsBox: ViewStyle = {\n width: \"100%\",\n height: \"100%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: radius,\n backgroundColor: theme.ramp.violet[100],\n };\n\n const initialsText: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontWeight: theme.font.weight.semibold,\n fontSize: size * 0.4,\n color: theme.ramp.violet[700],\n };\n\n const dotSize = size * 0.28;\n const statusDot: ViewStyle = {\n position: \"absolute\",\n right: 0,\n bottom: 0,\n width: dotSize,\n height: dotSize,\n borderRadius: theme.radius.full,\n backgroundColor: status ? statusColor[status] : \"transparent\",\n borderWidth: theme.border.thick,\n borderColor: theme.color.surface,\n };\n\n return (\n <View style={[container, style]} testID={testID}>\n {src ? (\n <Image\n source={{ uri: src }}\n resizeMode=\"cover\"\n style={imageStyle}\n accessible\n accessibilityRole=\"image\"\n accessibilityLabel={name || undefined}\n />\n ) : (\n <View\n style={initialsBox}\n accessible\n accessibilityRole=\"image\"\n accessibilityLabel={name || undefined}\n >\n <Text style={initialsText} numberOfLines={1}>\n {initials || \"?\"}\n </Text>\n </View>\n )}\n {status ? (\n <View style={statusDot} testID=\"avatar-status\" />\n ) : null}\n </View>\n );\n}\n\nexport default Avatar;\n","import React from \"react\";\nimport {\n View,\n Text,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface CommentProps {\n /** Author name / node shown next to the avatar. */\n author: React.ReactNode;\n /** Avatar node. Omit to render an initials monogram from `author`. */\n avatar?: React.ReactNode;\n /** Time / meta line next to the author. */\n timestamp?: React.ReactNode;\n /** Comment body. */\n body: React.ReactNode;\n /** Action row (e.g. Reply, Like). */\n actions?: React.ReactNode;\n /** Nested replies — usually more <Comment> elements. */\n children?: React.ReactNode;\n /** Tint + accent for an unread / highlighted comment. */\n highlight?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Forwarded to the outer container for testing / styling. */\n testID?: string;\n /** Optional style override for the outer container. */\n style?: StyleProp<ViewStyle>;\n}\n\n/** Derive up to two uppercase initials from a plain-string author. */\nfunction monogram(name: React.ReactNode): string {\n const s = typeof name === \"string\" ? name : \"\";\n return (\n s\n .split(/\\s+/)\n .filter(Boolean)\n .slice(0, 2)\n .map((w) => w[0])\n .join(\"\")\n .toUpperCase() || \"?\"\n );\n}\n\n/** Coerce a plain-string author into a readable accessibility label. */\nfunction authorLabel(name: React.ReactNode): string {\n return typeof name === \"string\" ? name : \"Comment\";\n}\n\n/**\n * UX4G Comment — a single comment / discussion entry: avatar (or initials\n * monogram), author + timestamp, body, an optional actions row and optional\n * nested replies passed as children.\n */\nexport function Comment({\n author,\n avatar,\n timestamp,\n body,\n actions,\n children,\n highlight = false,\n theme: themeProp,\n testID,\n style,\n}: CommentProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const rootStyle: ViewStyle = {\n flexDirection: \"row\",\n gap: theme.space[3],\n };\n\n const monogramStyle: ViewStyle = {\n width: 40,\n height: 40,\n borderRadius: theme.radius.full,\n backgroundColor: c.primarySubtle,\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n const bubbleStyle: ViewStyle = {\n backgroundColor: highlight ? c.primarySubtle : c.surfaceSubtle,\n borderWidth: theme.border.thin,\n borderColor: highlight ? theme.ramp.violet[200] : c.divider,\n borderRadius: theme.radius.lg,\n paddingVertical: theme.space[3],\n paddingHorizontal: 14,\n };\n\n const headerStyle: ViewStyle = {\n flexDirection: \"row\",\n alignItems: \"baseline\",\n flexWrap: \"wrap\",\n gap: theme.space[2],\n marginBottom: theme.space[1],\n };\n\n const repliesStyle: ViewStyle = {\n marginTop: theme.space[4],\n paddingLeft: theme.space[2],\n borderLeftWidth: theme.border.thick,\n borderLeftColor: c.divider,\n flexDirection: \"column\",\n gap: theme.space[4],\n };\n\n return (\n <View\n style={[rootStyle, style]}\n testID={testID}\n accessibilityRole=\"text\"\n accessibilityLabel={authorLabel(author)}\n >\n <View style={{ flexShrink: 0 }}>\n {avatar ?? (\n <View style={monogramStyle}>\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: theme.font.weight.semibold,\n color: c.primary,\n }}\n >\n {monogram(author)}\n </Text>\n </View>\n )}\n </View>\n\n <View style={{ flex: 1, minWidth: 0 }}>\n <View style={bubbleStyle} testID={testID ? `${testID}-bubble` : undefined}>\n <View style={headerStyle}>\n {typeof author === \"string\" || typeof author === \"number\" ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: theme.font.weight.semibold,\n color: c.text,\n }}\n >\n {author}\n </Text>\n ) : (\n author\n )}\n {timestamp != null && timestamp !== false ? (\n typeof timestamp === \"string\" || typeof timestamp === \"number\" ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 12,\n color: c.textSubtle,\n }}\n >\n {timestamp}\n </Text>\n ) : (\n timestamp\n )\n ) : null}\n </View>\n {typeof body === \"string\" || typeof body === \"number\" ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n lineHeight: 14 * 1.55,\n color: c.text,\n }}\n >\n {body}\n </Text>\n ) : (\n body\n )}\n </View>\n\n {actions != null && actions !== false ? (\n <View\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: theme.space[4],\n paddingTop: theme.space[2],\n paddingHorizontal: 6,\n }}\n >\n {actions}\n </View>\n ) : null}\n\n {children != null && children !== false ? (\n <View style={repliesStyle}>{children}</View>\n ) : null}\n </View>\n </View>\n );\n}\n\nexport default Comment;\n","import React, { useState } from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Circle, Line, Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport type AlertVariant = \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface AlertProps {\n /** Severity colourway. @default \"info\" */\n variant?: AlertVariant;\n /** Bold heading shown above the body. */\n title?: React.ReactNode;\n /** Override the default glyph for the variant. */\n icon?: AlertVariant;\n /** Show a dismiss (×) button and handle its press. */\n onClose?: () => void;\n children?: React.ReactNode;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Container style override. */\n style?: StyleProp<ViewStyle>;\n}\n\ntype Tone = { fg: string; bd: string; bg: string; glyph: AlertVariant };\n\n/** Inline glyph geometry, transcoded 1:1 from the web Alert reference. */\nfunction AlertGlyph({ name, color }: { name: AlertVariant; color: string }) {\n const stroke = {\n stroke: color,\n strokeWidth: 2,\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n };\n return (\n <Svg width={20} height={20} viewBox=\"0 0 24 24\" fill=\"none\">\n {name === \"info\" && (\n <>\n <Circle cx={12} cy={12} r={10} {...stroke} />\n <Path d=\"M12 16v-4\" {...stroke} />\n <Path d=\"M12 8h.01\" {...stroke} />\n </>\n )}\n {name === \"success\" && (\n <>\n <Path d=\"M21.801 10A10 10 0 1 1 17 3.335\" {...stroke} />\n <Path d=\"m9 11 3 3L22 4\" {...stroke} />\n </>\n )}\n {name === \"warning\" && (\n <>\n <Path\n d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"\n {...stroke}\n />\n <Path d=\"M12 9v4\" {...stroke} />\n <Path d=\"M12 17h.01\" {...stroke} />\n </>\n )}\n {name === \"danger\" && (\n <>\n <Circle cx={12} cy={12} r={10} {...stroke} />\n <Line x1={12} x2={12} y1={8} y2={12} {...stroke} />\n <Line x1={12} x2={12.01} y1={16} y2={16} {...stroke} />\n </>\n )}\n </Svg>\n );\n}\n\n/** UX4G Alert — inline status message (info, success, warning, danger). */\nexport function Alert({\n children,\n title,\n variant = \"info\",\n onClose,\n icon,\n theme: themeProp,\n style,\n}: AlertProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const r = theme.ramp;\n const [focused, setFocused] = useState(false);\n\n // Web tones resolved to theme ramps:\n // info -> info[800] / info[200] / info[50]\n // success -> success[800] / success[200] / success[50]\n // warning -> warning[800] / warning[200] / warning[50]\n // danger -> danger[800] / danger[200] / danger[50]\n const tones: Record<AlertVariant, Tone> = {\n info: { fg: r.info[800], bd: r.info[200], bg: r.info[50], glyph: \"info\" },\n success: {\n fg: r.success[800],\n bd: r.success[200],\n bg: r.success[50],\n glyph: \"success\",\n },\n warning: {\n fg: r.warning[800],\n bd: r.warning[200],\n bg: r.warning[50],\n glyph: \"warning\",\n },\n danger: {\n fg: r.danger[800],\n bd: r.danger[200],\n bg: r.danger[50],\n glyph: \"danger\",\n },\n };\n const tone: Tone = tones[variant];\n\n const container: ViewStyle = {\n flexDirection: \"row\",\n gap: theme.space[3],\n paddingVertical: theme.space[3],\n paddingHorizontal: 14,\n borderRadius: theme.radius.md,\n backgroundColor: tone.bg,\n borderWidth: theme.border.thin,\n borderColor: tone.bd,\n };\n\n const titleStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 15,\n fontWeight: theme.font.weight.semibold,\n lineHeight: 22,\n color: tone.fg,\n marginBottom: children ? 2 : 0,\n };\n\n const bodyStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n lineHeight: 20,\n color: r.neutral[700],\n };\n\n return (\n <View testID=\"ux4g-alert\" accessibilityRole=\"alert\" style={[container, style]}>\n <View\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{ flexDirection: \"row\", flexShrink: 0, marginTop: 1 }}\n >\n <AlertGlyph name={icon ?? tone.glyph} color={tone.fg} />\n </View>\n\n <View style={{ flex: 1, minWidth: 0 }}>\n {title != null &&\n (typeof title === \"string\" || typeof title === \"number\" ? (\n <Text style={titleStyle}>{title}</Text>\n ) : (\n <View style={{ marginBottom: children ? 2 : 0 }}>{title}</View>\n ))}\n {children != null &&\n (typeof children === \"string\" || typeof children === \"number\" ? (\n <Text style={bodyStyle}>{children}</Text>\n ) : (\n children\n ))}\n </View>\n\n {onClose && (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Dismiss\"\n hitSlop={12}\n onPress={onClose}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={{\n flexShrink: 0,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 24,\n height: 24,\n marginTop: -1,\n borderRadius: theme.radius.xs,\n borderWidth: focused ? theme.focusRingWidth : 0,\n borderColor: focused ? theme.color.focus : \"transparent\",\n backgroundColor: \"transparent\",\n }}\n >\n <Svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M18 6 6 18\"\n stroke={tone.fg}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"m6 6 12 12\"\n stroke={tone.fg}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </Pressable>\n )}\n </View>\n );\n}\n\nexport default Alert;\n","import React from \"react\";\nimport {\n Text,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Circle, G } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface ProgressProps {\n /** 0–100. Omit for an indeterminate bar. */\n value?: number;\n variant?: \"primary\" | \"success\" | \"danger\" | \"warning\";\n /** @default \"md\" */\n size?: \"sm\" | \"md\";\n /** Show the % label. @default false */\n showValue?: boolean;\n /** Render a circular ring instead of a bar. @default false */\n circular?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Test handle. The fill/track/label derive `${testID}-fill` etc. */\n testID?: string;\n /** Override the computed accessibility label. */\n accessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n}\n\ntype Variant = NonNullable<ProgressProps[\"variant\"]>;\n\n/** UX4G Progress — linear bar or circular ring. */\nexport function Progress({\n value,\n variant = \"primary\",\n size = \"md\",\n showValue = false,\n circular = false,\n theme: themeProp,\n testID,\n accessibilityLabel,\n style,\n}: ProgressProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const trackColor = theme.ramp.neutral[200];\n const fillColor: string = {\n primary: c.primary,\n success: c.success,\n danger: c.danger,\n warning: c.warning,\n }[variant satisfies Variant];\n\n const indeterminate = value == null;\n const pct = Math.max(0, Math.min(100, Math.round(value ?? 0)));\n\n const accessibilityValue = indeterminate\n ? undefined\n : { min: 0, max: 100, now: pct };\n const accessibilityState = indeterminate ? { busy: true } : undefined;\n\n if (circular) {\n const r = 16;\n const circumference = 2 * Math.PI * r;\n const dim = 44;\n const dashOffset = indeterminate\n ? circumference * 0.7\n : circumference * (1 - pct / 100);\n\n return (\n <View\n accessible\n accessibilityRole=\"progressbar\"\n accessibilityLabel={accessibilityLabel}\n accessibilityValue={accessibilityValue}\n accessibilityState={accessibilityState}\n testID={testID}\n style={[\n {\n width: dim,\n height: dim,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n style,\n ]}\n >\n <Svg width={dim} height={dim} viewBox=\"0 0 44 44\">\n {/* rotate -90deg about the centre so the ring fills from the top */}\n <G rotation={-90} origin=\"22, 22\">\n <Circle\n cx={22}\n cy={22}\n r={r}\n fill=\"none\"\n stroke={trackColor}\n strokeWidth={4}\n />\n <Circle\n cx={22}\n cy={22}\n r={r}\n fill=\"none\"\n stroke={fillColor}\n strokeWidth={4}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={dashOffset}\n />\n </G>\n </Svg>\n {showValue && !indeterminate && (\n <View\n pointerEvents=\"none\"\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <Text style={circularLabelStyle(theme)}>{pct}%</Text>\n </View>\n )}\n </View>\n );\n }\n\n const railHeight = size === \"sm\" ? 4 : 8;\n\n const fillStyle: ViewStyle = indeterminate\n ? {\n width: \"40%\",\n height: \"100%\",\n backgroundColor: fillColor,\n borderRadius: theme.radius.full,\n }\n : {\n width: `${pct}%`,\n height: \"100%\",\n backgroundColor: fillColor,\n borderRadius: theme.radius.full,\n };\n\n return (\n <View\n accessible\n accessibilityRole=\"progressbar\"\n accessibilityLabel={accessibilityLabel}\n accessibilityValue={accessibilityValue}\n accessibilityState={accessibilityState}\n testID={testID}\n style={[{ flexDirection: \"row\", alignItems: \"center\", gap: 10 }, style]}\n >\n <View\n testID={testID ? `${testID}-rail` : undefined}\n style={{\n flex: 1,\n height: railHeight,\n backgroundColor: trackColor,\n borderRadius: theme.radius.full,\n overflow: \"hidden\",\n }}\n >\n <View testID={testID ? `${testID}-fill` : undefined} style={fillStyle} />\n </View>\n {showValue && !indeterminate && (\n <Text style={linearLabelStyle(theme)}>{pct}%</Text>\n )}\n </View>\n );\n}\n\nfunction linearLabelStyle(theme: UX4GTheme): TextStyle {\n return {\n fontFamily: theme.font.family.mono,\n fontSize: 12,\n fontWeight: theme.font.weight.semibold,\n color: theme.color.textMuted,\n minWidth: 34,\n textAlign: \"right\",\n };\n}\n\nfunction circularLabelStyle(theme: UX4GTheme): TextStyle {\n return {\n fontFamily: theme.font.family.mono,\n fontSize: 11,\n fontWeight: theme.font.weight.semibold,\n color: theme.color.text,\n };\n}\n\nexport default Progress;\n","import React from \"react\";\nimport { View, type StyleProp, type ViewStyle } from \"react-native\";\nimport Svg, { Circle, Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface SpinnerProps {\n /** Pixel diameter. @default 24 */\n size?: number;\n /** Arc (stroke) colour. Defaults to the theme primary colour. */\n color?: string;\n /** Accessible name announced while loading. @default \"Loading\" */\n label?: string;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * UX4G Spinner — indeterminate loading indicator.\n *\n * Mirrors the web spinner's geometry: a full neutral track circle with a\n * coloured 90° arc on top. The web spins the SVG via a CSS keyframe; in RN\n * that is a host driver concern (the platform paints the rotation), so the\n * component renders the canonical resting frame and exposes the busy state to\n * assistive tech. Keeping it static avoids a perpetual timer loop in tests and\n * keeps the render deterministic.\n */\nexport function Spinner({\n size = 24,\n color,\n label = \"Loading\",\n theme: themeProp,\n style,\n}: SpinnerProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const arcColor = color ?? theme.color.primary;\n const trackColor = theme.ramp.neutral[200];\n\n return (\n <View\n accessible\n accessibilityRole=\"progressbar\"\n accessibilityLabel={label}\n accessibilityState={{ busy: true }}\n style={[{ width: size, height: size }, style]}\n >\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Circle\n testID=\"spinner-track\"\n cx={12}\n cy={12}\n r={9}\n stroke={trackColor}\n strokeWidth={3}\n />\n <Path\n testID=\"spinner-arc\"\n d=\"M21 12a9 9 0 0 0-9-9\"\n stroke={arcColor}\n strokeWidth={3}\n strokeLinecap=\"round\"\n />\n </Svg>\n </View>\n );\n}\n\nexport default Spinner;\n","import React from \"react\";\nimport { Text, View, type TextStyle, type ViewStyle } from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface EmptyStateProps {\n /** An illustration or inline-SVG icon node (e.g. a react-native-svg element). */\n icon?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n /** Primary action (e.g. a Button). */\n action?: React.ReactNode;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Test handle for the outer container. */\n testID?: string;\n}\n\n/** UX4G EmptyState — friendly placeholder for empty lists, search and dashboards. */\nexport function EmptyState({\n icon,\n title,\n description,\n action,\n theme: themeProp,\n testID,\n}: EmptyStateProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const container: ViewStyle = {\n flexDirection: \"column\",\n alignItems: \"center\",\n alignSelf: \"stretch\",\n paddingVertical: theme.space[8], // 48px\n paddingHorizontal: theme.space[5], // 24px\n gap: 6,\n };\n\n const iconBadge: ViewStyle = {\n width: 56,\n height: 56,\n marginBottom: 10,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.full,\n backgroundColor: theme.ramp.violet[50],\n };\n\n const titleStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 17,\n fontWeight: theme.font.weight.semibold,\n color: c.text,\n textAlign: \"center\",\n };\n\n const descriptionStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n lineHeight: 20,\n color: c.textMuted,\n maxWidth: 360,\n textAlign: \"center\",\n };\n\n const actionStyle: ViewStyle = {\n marginTop: 14,\n };\n\n // The violet glyph colour the web applies to the icon node via `color`.\n // RN does not cascade text colour onto arbitrary nodes, so we expose it on\n // the badge in case the icon honours `currentColor`-style inheritance.\n const accessibilityLabel = typeof title === \"string\" ? title : undefined;\n\n return (\n <View\n testID={testID}\n accessibilityRole=\"summary\"\n accessibilityLabel={accessibilityLabel}\n style={container}\n >\n {icon ? (\n <View testID=\"empty-state-icon\" style={iconBadge}>\n {icon}\n </View>\n ) : null}\n\n {typeof title === \"string\" || typeof title === \"number\" ? (\n <Text style={titleStyle}>{title}</Text>\n ) : (\n title\n )}\n\n {description != null && description !== false\n ? typeof description === \"string\" || typeof description === \"number\"\n ? <Text style={descriptionStyle}>{description}</Text>\n : description\n : null}\n\n {action != null && action !== false ? (\n <View style={actionStyle}>{action}</View>\n ) : null}\n </View>\n );\n}\n\nexport default EmptyState;\n","import React, { useState } from \"react\";\nimport {\n View,\n Text,\n TextInput,\n Pressable,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Path, Circle } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface FeedbackRating {\n value: number;\n label: string;\n}\n\nexport interface FeedbackWidgetProps {\n /** Corner for the floating launcher. @default \"bottom-right\" */\n position?: \"bottom-right\" | \"bottom-left\";\n /** Launcher label. @default \"Feedback\" */\n triggerLabel?: string;\n title?: string;\n prompt?: string;\n /** Rating scale (1–5 faces by default). */\n ratings?: FeedbackRating[];\n /** Optional category chips. */\n categories?: string[];\n placeholder?: string;\n onSubmit?: (data: {\n rating: number | null;\n category?: string;\n message: string;\n }) => void;\n /** Render in flow instead of fixed to a corner (for embedding / demos). */\n inline?: boolean;\n defaultOpen?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n}\n\nconst DEFAULT_RATINGS: FeedbackRating[] = [\n { value: 1, label: \"Very poor\" },\n { value: 2, label: \"Poor\" },\n { value: 3, label: \"Okay\" },\n { value: 4, label: \"Good\" },\n { value: 5, label: \"Excellent\" },\n];\n\nconst MOUTHS: Record<number, string> = {\n 1: \"M8.5 16.4 Q12 12.6 15.5 16.4\",\n 2: \"M8.5 15.7 Q12 13.9 15.5 15.7\",\n 3: \"M8.5 15 L15.5 15\",\n 4: \"M8.5 14 Q12 16.2 15.5 14\",\n 5: \"M8 13.4 Q12 17.6 16 13.4\",\n};\n\nfunction Face({\n level,\n on,\n color,\n tint,\n idle,\n}: {\n level: number;\n on: boolean;\n color: string;\n tint: string;\n idle: string;\n}) {\n const stroke = on ? color : idle;\n const dotFill = on ? color : idle;\n return (\n <Svg width={30} height={30} viewBox=\"0 0 24 24\" fill=\"none\">\n <Circle cx={12} cy={12} r={9.2} fill={on ? tint : \"none\"} stroke={stroke} strokeWidth={1.6} />\n <Circle cx={9} cy={10} r={0.6} fill={dotFill} />\n <Circle cx={15} cy={10} r={0.6} fill={dotFill} />\n <Path\n d={MOUTHS[level] ?? MOUTHS[3]}\n stroke={stroke}\n strokeWidth={1.6}\n strokeLinecap=\"round\"\n />\n </Svg>\n );\n}\n\n/**\n * UX4G FeedbackWidget — a corner launcher that opens a short feedback form: a\n * face rating, optional category chips, a comment and submit, with a thank-you\n * confirmation. Faces are inline SVG (no emoji), per UX4G iconography. Set\n * `inline` to embed it in flow instead of fixing to a corner.\n */\nexport function FeedbackWidget({\n position = \"bottom-right\",\n triggerLabel = \"Feedback\",\n title = \"Share your feedback\",\n prompt = \"How was your experience?\",\n ratings = DEFAULT_RATINGS,\n categories,\n placeholder = \"Tell us what worked or what we can improve…\",\n onSubmit,\n inline = false,\n defaultOpen = false,\n theme: themeProp,\n}: FeedbackWidgetProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const [open, setOpen] = useState(defaultOpen);\n const [rating, setRating] = useState<number | null>(null);\n const [category, setCategory] = useState<string | undefined>(undefined);\n const [message, setMessage] = useState(\"\");\n const [done, setDone] = useState(false);\n const [launcherFocused, setLauncherFocused] = useState(false);\n const [inputFocused, setInputFocused] = useState(false);\n\n const submit = () => {\n if (rating == null) return;\n onSubmit?.({ rating, category, message });\n setDone(true);\n };\n\n const reset = () => {\n setOpen(false);\n setDone(false);\n setRating(null);\n setCategory(undefined);\n setMessage(\"\");\n };\n\n const left = position === \"bottom-left\";\n\n const wrap: ViewStyle = inline\n ? { position: \"relative\", alignSelf: \"flex-start\" }\n : {\n position: \"absolute\",\n bottom: theme.space[5],\n ...(left ? { left: theme.space[5] } : { right: theme.space[5] }),\n zIndex: 70,\n };\n\n const selectedLabel =\n rating != null ? ratings.find((r) => r.value === rating)?.label : undefined;\n\n return (\n <View style={wrap}>\n {!open && (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={triggerLabel}\n accessibilityState={{ expanded: open }}\n onPress={() => setOpen(true)}\n onFocus={() => setLauncherFocused(true)}\n onBlur={() => setLauncherFocused(false)}\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: theme.space[2],\n minHeight: 44,\n paddingVertical: 11,\n paddingHorizontal: 18,\n borderRadius: theme.radius.full,\n borderWidth: theme.focusRingWidth,\n borderColor: launcherFocused ? c.focus : \"transparent\",\n backgroundColor: c.primary,\n ...theme.shadow.l,\n }}\n >\n <Svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\n stroke={c.onPrimary}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n <Text\n style={{\n fontFamily: theme.font.family.ui,\n fontWeight: \"500\",\n fontSize: 14,\n color: c.onPrimary,\n }}\n >\n {triggerLabel}\n </Text>\n </Pressable>\n )}\n\n {open && (\n <View\n accessibilityRole=\"alert\"\n accessibilityLabel={title}\n style={[\n {\n width: 320,\n padding: theme.space[5],\n backgroundColor: c.surface,\n borderWidth: theme.border.thin,\n borderColor: c.border,\n borderRadius: theme.radius.xl,\n ...(inline\n ? {}\n : { position: \"absolute\", bottom: 0, ...(left ? { left: 0 } : { right: 0 }) }),\n },\n theme.shadow.xl,\n ]}\n >\n {!done ? (\n <>\n <View\n style={{\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n gap: theme.space[2],\n }}\n >\n <View style={{ flex: 1 }}>\n <Text style={{ fontSize: 16, fontWeight: \"600\", color: c.text }}>\n {title}\n </Text>\n <Text style={{ fontSize: 13, color: c.textMuted, marginTop: 2 }}>\n {prompt}\n </Text>\n </View>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Close\"\n hitSlop={12}\n onPress={reset}\n style={{ padding: 2 }}\n >\n <Svg width={20} height={20} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M18 6 6 18\"\n stroke={c.textMuted}\n strokeWidth={2}\n strokeLinecap=\"round\"\n />\n <Path\n d=\"M6 6l12 12\"\n stroke={c.textMuted}\n strokeWidth={2}\n strokeLinecap=\"round\"\n />\n </Svg>\n </Pressable>\n </View>\n\n <View\n accessibilityRole=\"radiogroup\"\n accessibilityLabel={prompt}\n style={{\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n gap: theme.space[1],\n marginTop: theme.space[4],\n marginBottom: 6,\n }}\n >\n {ratings.map((r) => {\n const isOn = rating === r.value;\n return (\n <Pressable\n key={r.value}\n accessibilityRole=\"radio\"\n accessibilityLabel={r.label}\n accessibilityState={{ checked: isOn }}\n hitSlop={8}\n onPress={() => setRating(r.value)}\n style={{\n flex: 1,\n alignItems: \"center\",\n gap: theme.space[1],\n paddingVertical: theme.space[1],\n }}\n >\n <Face\n level={r.value}\n on={isOn}\n color={c.primary}\n tint={c.primarySubtle}\n idle={theme.ramp.neutral[500]}\n />\n </Pressable>\n );\n })}\n </View>\n {selectedLabel != null && (\n <Text\n style={{\n textAlign: \"center\",\n fontSize: 12,\n fontWeight: \"600\",\n color: c.primary,\n marginBottom: 10,\n }}\n >\n {selectedLabel}\n </Text>\n )}\n\n {categories != null && categories.length > 0 && (\n <View\n style={{\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n gap: 6,\n marginBottom: theme.space[3],\n }}\n >\n {categories.map((cat) => {\n const isSel = category === cat;\n return (\n <Pressable\n key={cat}\n accessibilityRole=\"button\"\n accessibilityLabel={cat}\n accessibilityState={{ selected: isSel }}\n hitSlop={8}\n onPress={() =>\n setCategory((x) => (x === cat ? undefined : cat))\n }\n style={{\n paddingVertical: 5,\n paddingHorizontal: 11,\n borderRadius: theme.radius.full,\n borderWidth: theme.border.thin,\n borderColor: isSel ? c.primary : c.border,\n backgroundColor: isSel ? c.primarySubtle : c.surface,\n }}\n >\n <Text\n style={{\n fontSize: 12,\n fontWeight: isSel ? \"600\" : \"400\",\n color: isSel ? theme.ramp.violet[700] : c.textMuted,\n }}\n >\n {cat}\n </Text>\n </Pressable>\n );\n })}\n </View>\n )}\n\n <TextInput\n value={message}\n onChangeText={setMessage}\n placeholder={placeholder}\n placeholderTextColor={c.textSubtle}\n multiline\n numberOfLines={3}\n accessibilityLabel={placeholder}\n onFocus={() => setInputFocused(true)}\n onBlur={() => setInputFocused(false)}\n style={{\n minHeight: 72,\n textAlignVertical: \"top\",\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n color: c.text,\n paddingVertical: 9,\n paddingHorizontal: 11,\n borderWidth: theme.border.md,\n borderColor: inputFocused ? c.primary : c.border,\n borderRadius: theme.radius.md,\n backgroundColor: c.surface,\n }}\n />\n\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Send feedback\"\n accessibilityState={{ disabled: rating == null }}\n disabled={rating == null}\n onPress={submit}\n style={{\n minHeight: 44,\n marginTop: theme.space[3],\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingVertical: 11,\n borderRadius: theme.radius.md,\n backgroundColor:\n rating == null ? theme.ramp.neutral[400] : c.primary,\n }}\n >\n <Text\n style={{\n fontFamily: theme.font.family.ui,\n fontWeight: \"500\",\n fontSize: 15,\n color: c.onPrimary,\n }}\n >\n Send feedback\n </Text>\n </Pressable>\n </>\n ) : (\n <View style={{ alignItems: \"center\", paddingVertical: theme.space[4], paddingHorizontal: theme.space[2] }}>\n <View\n style={{\n width: 48,\n height: 48,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.full,\n backgroundColor: c.successSubtle,\n marginBottom: theme.space[3],\n }}\n >\n <Svg width={26} height={26} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M20 6 9 17l-5-5\"\n stroke={c.success}\n strokeWidth={2.4}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </View>\n <Text style={{ fontSize: 16, fontWeight: \"600\", color: c.text }}>\n Thank you\n </Text>\n <Text\n style={{\n fontSize: 13,\n color: c.textMuted,\n marginTop: theme.space[1],\n textAlign: \"center\",\n }}\n >\n Your feedback helps us improve this service.\n </Text>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Done\"\n hitSlop={8}\n onPress={reset}\n style={{\n marginTop: theme.space[4],\n paddingVertical: 9,\n paddingHorizontal: 18,\n borderRadius: theme.radius.md,\n backgroundColor: c.primarySubtle,\n }}\n >\n <Text\n style={{\n fontFamily: theme.font.family.ui,\n fontWeight: \"500\",\n fontSize: 14,\n color: c.primary,\n }}\n >\n Done\n </Text>\n </Pressable>\n </View>\n )}\n </View>\n )}\n </View>\n );\n}\n\nexport default FeedbackWidget;\n","import React from \"react\";\nimport {\n Modal as RNModal,\n Pressable,\n ScrollView,\n Text,\n View,\n} from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface ModalProps {\n open: boolean;\n onClose?: () => void;\n title?: React.ReactNode;\n description?: React.ReactNode;\n /** Footer actions row (right-aligned), e.g. Buttons. */\n footer?: React.ReactNode;\n /** @default \"md\" */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Hide the × button. @default false */\n hideClose?: boolean;\n children?: React.ReactNode;\n theme?: UX4GTheme;\n}\n\nconst MAX_WIDTH = { sm: 400, md: 520, lg: 720 } as const;\n\nexport function Modal({\n open,\n onClose,\n title,\n description,\n footer,\n size = \"md\",\n hideClose = false,\n children,\n theme: themeProp,\n}: ModalProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n if (!open) return null;\n\n return (\n <RNModal visible transparent animationType=\"fade\" onRequestClose={onClose}>\n <Pressable\n onPress={() => onClose?.()}\n style={{\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: theme.space[5],\n backgroundColor: \"rgba(33,33,33,0.45)\",\n }}\n >\n <View\n accessibilityViewIsModal\n onStartShouldSetResponder={() => true}\n style={[\n {\n width: \"100%\",\n maxWidth: MAX_WIDTH[size],\n backgroundColor: c.surface,\n borderRadius: theme.radius[\"2xl\"],\n },\n theme.shadow.xl,\n ]}\n >\n {(title != null || !hideClose) && (\n <View\n style={{\n flexDirection: \"row\",\n alignItems: \"flex-start\",\n gap: theme.space[4],\n paddingHorizontal: theme.space[5],\n paddingTop: theme.space[5],\n }}\n >\n <View style={{ flex: 1 }}>\n {title != null &&\n (typeof title === \"string\" || typeof title === \"number\" ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 20,\n fontWeight: \"600\",\n lineHeight: 26,\n color: c.text,\n }}\n >\n {title}\n </Text>\n ) : (\n title\n ))}\n {description != null &&\n (typeof description === \"string\" || typeof description === \"number\" ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n lineHeight: 20,\n marginTop: theme.space[1] + 2,\n color: c.textMuted,\n }}\n >\n {description}\n </Text>\n ) : (\n description\n ))}\n </View>\n {!hideClose && (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Close\"\n onPress={() => onClose?.()}\n style={{\n width: 32,\n height: 32,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.md,\n }}\n >\n <Svg width={20} height={20} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M18 6 6 18\"\n stroke={c.textMuted}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"m6 6 12 12\"\n stroke={c.textMuted}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </Pressable>\n )}\n </View>\n )}\n {children != null && (\n <ScrollView\n style={{ maxHeight: 360 }}\n contentContainerStyle={{ padding: theme.space[5] }}\n >\n {typeof children === \"string\" || typeof children === \"number\" ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 15,\n lineHeight: 22,\n color: c.text,\n }}\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </ScrollView>\n )}\n {footer != null && (\n <View\n style={{\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n gap: theme.space[2] + 2,\n paddingHorizontal: theme.space[5],\n paddingBottom: theme.space[5],\n paddingTop: children != null ? 0 : theme.space[5],\n }}\n >\n {footer}\n </View>\n )}\n </View>\n </Pressable>\n </RNModal>\n );\n}\n\nexport default Modal;\n","import React, { useState } from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type GestureResponderEvent,\n type ViewStyle,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport type TooltipPlacement = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport interface TooltipProps {\n /** Tooltip text. */\n label: React.ReactNode;\n /** @default \"top\" */\n placement?: TooltipPlacement;\n /** A single interactive element to wrap. */\n children: React.ReactElement;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n}\n\n/** Gap between the trigger and the bubble, mirroring the web's `calc(100% + 8px)`. */\nconst GAP = 8;\n\n/**\n * UX4G Tooltip — a small dark label clarifying an icon button or truncated\n * text. The web shows it on hover/focus; on touch there is no hover, so the\n * bubble toggles on press / long-press of the wrapped trigger.\n */\nexport function Tooltip({\n label,\n placement = \"top\",\n children,\n theme: themeProp,\n}: TooltipProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const [open, setOpen] = useState(false);\n\n const placements: Record<TooltipPlacement, ViewStyle> = {\n top: { bottom: \"100%\", marginBottom: GAP, alignSelf: \"center\" },\n bottom: { top: \"100%\", marginTop: GAP, alignSelf: \"center\" },\n left: { right: \"100%\", marginRight: GAP, top: 0, bottom: 0, justifyContent: \"center\" },\n right: { left: \"100%\", marginLeft: GAP, top: 0, bottom: 0, justifyContent: \"center\" },\n };\n const bubblePosition: ViewStyle = placements[placement];\n\n const show = () => setOpen(true);\n const hide = () => setOpen(false);\n const toggle = () => setOpen((v) => !v);\n\n return (\n <View style={{ position: \"relative\", alignSelf: \"flex-start\" }}>\n <Pressable\n onPress={(_e: GestureResponderEvent) => toggle()}\n onLongPress={show}\n onFocus={show}\n onBlur={hide}\n accessibilityState={{ expanded: open }}\n >\n {children}\n </Pressable>\n\n {open && (\n <View\n accessibilityRole=\"alert\"\n accessibilityLabel={typeof label === \"string\" ? label : undefined}\n testID=\"ux4g-tooltip-bubble\"\n pointerEvents=\"none\"\n style={[\n {\n position: \"absolute\",\n zIndex: 900,\n backgroundColor: theme.ramp.neutral[900],\n borderRadius: theme.radius.sm,\n paddingVertical: 6,\n paddingHorizontal: 9,\n },\n bubblePosition,\n theme.shadow.md,\n ]}\n >\n {typeof label === \"string\" || typeof label === \"number\" ? (\n <Text\n style={{\n color: theme.color.surface,\n fontFamily: theme.font.family.sans,\n fontSize: 12,\n lineHeight: 16,\n fontWeight: \"500\",\n }}\n >\n {label}\n </Text>\n ) : (\n label\n )}\n </View>\n )}\n </View>\n );\n}\n\nexport default Tooltip;\n","import React, { useState } from \"react\";\nimport {\n Modal as RNModal,\n Pressable,\n Text,\n View,\n type AccessibilityState,\n type GestureResponderEvent,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface MenuItem {\n label: React.ReactNode;\n /** Optional leading inline icon node (e.g. a react-native-svg element). */\n icon?: React.ReactNode;\n onClick?: () => void;\n danger?: boolean;\n disabled?: boolean;\n}\n\nexport interface MenuProps {\n /** The element that opens the menu (a Button / IconButton / Pressable). */\n trigger: React.ReactElement;\n items: MenuItem[];\n /** @default \"left\" */\n align?: \"left\" | \"right\";\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Test id; the scrim is exposed as `${testID}-scrim`. */\n testID?: string;\n}\n\n/** Props injected onto the cloned trigger element. */\ninterface TriggerInjectedProps {\n onPress: (e: GestureResponderEvent) => void;\n accessibilityState: AccessibilityState;\n}\n\n/** UX4G Menu — a dropdown of actions anchored to a trigger. */\nexport function Menu({\n trigger,\n items,\n align = \"left\",\n theme: themeProp,\n testID,\n}: MenuProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n const [open, setOpen] = useState(false);\n\n const close = () => setOpen(false);\n\n const existingState: AccessibilityState =\n (trigger.props as { accessibilityState?: AccessibilityState })\n .accessibilityState ?? {};\n\n const triggerEl = React.cloneElement<TriggerInjectedProps>(trigger, {\n onPress: () => setOpen((o) => !o),\n accessibilityState: { ...existingState, expanded: open },\n });\n\n const panelStyle: StyleProp<ViewStyle> = [\n {\n minWidth: 200,\n maxWidth: 320,\n alignSelf: align === \"right\" ? \"flex-end\" : \"flex-start\",\n backgroundColor: c.surface,\n borderColor: c.border,\n borderWidth: theme.border.thin,\n borderRadius: theme.radius.lg,\n padding: theme.space[1] + 2,\n marginTop: theme.space[2] + 4,\n },\n theme.shadow.l,\n ];\n\n return (\n <View style={{ alignSelf: \"flex-start\" }}>\n {triggerEl}\n <RNModal\n visible={open}\n transparent\n animationType=\"fade\"\n onRequestClose={close}\n >\n <Pressable\n testID={testID ? `${testID}-scrim` : undefined}\n onPress={close}\n style={{\n flex: 1,\n alignItems: align === \"right\" ? \"flex-end\" : \"flex-start\",\n justifyContent: \"flex-start\",\n paddingTop: theme.space[7],\n paddingHorizontal: theme.space[4],\n backgroundColor: \"transparent\",\n }}\n >\n <View\n testID={testID ? `${testID}-panel` : undefined}\n accessibilityRole=\"menu\"\n onStartShouldSetResponder={() => true}\n style={panelStyle}\n >\n {items.map((item, i) => (\n <MenuRow\n key={i}\n item={item}\n theme={theme}\n testID={testID ? `${testID}-item-${i}` : undefined}\n onSelect={() => {\n item.onClick?.();\n close();\n }}\n />\n ))}\n </View>\n </Pressable>\n </RNModal>\n </View>\n );\n}\n\ninterface MenuRowProps {\n item: MenuItem;\n theme: UX4GTheme;\n onSelect: () => void;\n testID?: string;\n}\n\nfunction MenuRow({ item, theme, onSelect, testID }: MenuRowProps) {\n const c = theme.color;\n const disabled = item.disabled ?? false;\n const danger = item.danger ?? false;\n\n const fg = danger ? c.danger : c.text;\n const iconFg = danger ? c.danger : theme.ramp.neutral[600];\n\n const rowStyle = ({\n pressed,\n }: {\n pressed: boolean;\n }): StyleProp<ViewStyle> => {\n let bg: string = \"transparent\";\n if (pressed && !disabled) {\n bg = danger ? c.dangerSubtle : theme.ramp.neutral[100];\n }\n return {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: theme.space[2] + 2,\n width: \"100%\",\n minHeight: 44,\n paddingVertical: theme.space[2],\n paddingHorizontal: theme.space[2] + 2,\n borderRadius: theme.radius.sm,\n backgroundColor: bg,\n opacity: disabled ? 0.5 : 1,\n };\n };\n\n const labelStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n lineHeight: 20,\n fontWeight: \"500\",\n color: fg,\n };\n\n const a11yLabel =\n typeof item.label === \"string\" || typeof item.label === \"number\"\n ? String(item.label)\n : undefined;\n\n return (\n <Pressable\n testID={testID}\n accessibilityRole=\"menuitem\"\n accessibilityLabel={a11yLabel}\n accessibilityState={{ disabled }}\n disabled={disabled}\n onPress={() => {\n if (!disabled) onSelect();\n }}\n style={rowStyle}\n >\n {item.icon != null && (\n <View style={{ alignItems: \"center\", justifyContent: \"center\" }}>\n {typeof item.icon === \"string\" || typeof item.icon === \"number\" ? (\n <Text style={{ color: iconFg }}>{item.icon}</Text>\n ) : (\n item.icon\n )}\n </View>\n )}\n {typeof item.label === \"string\" || typeof item.label === \"number\" ? (\n <Text style={labelStyle} numberOfLines={1}>\n {item.label}\n </Text>\n ) : (\n item.label\n )}\n </Pressable>\n );\n}\n\nexport default Menu;\n","import React, { useEffect } from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Circle, Line, Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport type ToastVariant = \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface ToastProps {\n /** Colourway driving the accent bar and status icon. @default \"info\" */\n variant?: ToastVariant;\n /** Bold heading line. */\n title?: React.ReactNode;\n /** Fires when the dismiss button is pressed, or after `duration` elapses. */\n onClose?: () => void;\n /** Auto-dismiss after this many milliseconds (calls `onClose`). Omit to keep it sticky. */\n duration?: number;\n /** Supporting body text or nodes. */\n children?: React.ReactNode;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Forwarded to the outer card for testing/targeting. */\n testID?: string;\n style?: StyleProp<ViewStyle>;\n}\n\ntype Tone = { bar: string; icon: ToastVariant };\n\nfunction ToastIcon({ variant, color }: { variant: ToastVariant; color: string }) {\n const stroke = {\n stroke: color,\n strokeWidth: 2,\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n fill: \"none\" as const,\n };\n return (\n <Svg width={20} height={20} viewBox=\"0 0 24 24\" fill=\"none\">\n {variant === \"info\" && (\n <>\n <Circle cx={12} cy={12} r={10} {...stroke} />\n <Path d=\"M12 16v-4\" {...stroke} />\n <Path d=\"M12 8h.01\" {...stroke} />\n </>\n )}\n {variant === \"success\" && (\n <>\n <Path d=\"M21.801 10A10 10 0 1 1 17 3.335\" {...stroke} />\n <Path d=\"m9 11 3 3L22 4\" {...stroke} />\n </>\n )}\n {variant === \"warning\" && (\n <>\n <Path\n d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"\n {...stroke}\n />\n <Path d=\"M12 9v4\" {...stroke} />\n <Path d=\"M12 17h.01\" {...stroke} />\n </>\n )}\n {variant === \"danger\" && (\n <>\n <Circle cx={12} cy={12} r={10} {...stroke} />\n <Line x1={12} x2={12} y1={8} y2={12} {...stroke} />\n <Line x1={12} x2={12.01} y1={16} y2={16} {...stroke} />\n </>\n )}\n </Svg>\n );\n}\n\nexport function Toast({\n variant = \"info\",\n title,\n onClose,\n duration,\n children,\n theme: themeProp,\n testID,\n style,\n}: ToastProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n useEffect(() => {\n if (duration == null || onClose == null) return;\n const id = setTimeout(() => onClose(), duration);\n return () => clearTimeout(id);\n }, [duration, onClose]);\n\n const tones: Record<ToastVariant, Tone> = {\n info: { bar: theme.ramp.info[700], icon: \"info\" },\n success: { bar: theme.ramp.success[600], icon: \"success\" },\n warning: { bar: theme.ramp.warning[500], icon: \"warning\" },\n danger: { bar: theme.ramp.danger[500], icon: \"danger\" },\n };\n const tone: Tone = tones[variant];\n\n const card: ViewStyle = {\n flexDirection: \"row\",\n alignItems: \"flex-start\",\n gap: theme.space[3],\n width: 360,\n maxWidth: \"100%\",\n paddingTop: 14,\n paddingBottom: 14,\n paddingLeft: theme.space[4],\n paddingRight: 14,\n backgroundColor: c.surface,\n borderRadius: theme.radius.lg,\n borderLeftWidth: 4,\n borderLeftColor: tone.bar,\n };\n\n return (\n <View\n accessibilityRole=\"alert\"\n testID={testID}\n style={[card, theme.shadow.l, style]}\n >\n <View style={{ marginTop: 1 }}>\n <ToastIcon variant={tone.icon} color={tone.bar} />\n </View>\n <View style={{ flex: 1, minWidth: 0 }}>\n {title != null &&\n (typeof title === \"string\" || typeof title === \"number\" ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: \"600\",\n color: c.text,\n }}\n >\n {title}\n </Text>\n ) : (\n title\n ))}\n {children != null &&\n (typeof children === \"string\" || typeof children === \"number\" ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 13,\n lineHeight: 18,\n color: c.textMuted,\n marginTop: title != null ? 2 : 0,\n }}\n >\n {children}\n </Text>\n ) : (\n children\n ))}\n </View>\n {onClose != null && (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Dismiss\"\n onPress={() => onClose()}\n hitSlop={11}\n style={{\n width: 22,\n height: 22,\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <Svg width={16} height={16} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M18 6 6 18\"\n stroke={theme.ramp.neutral[500]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"m6 6 12 12\"\n stroke={theme.ramp.neutral[500]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </Pressable>\n )}\n </View>\n );\n}\n\nexport default Toast;\n","import React, { useState } from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type ViewStyle,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface PopoverProps {\n /** Element that toggles the popover (rendered inline). */\n trigger: React.ReactNode;\n /** Optional bold heading inside the panel. */\n title?: React.ReactNode;\n /** Panel body. */\n children: React.ReactNode;\n /** Side of the trigger the panel opens on. @default \"bottom\" */\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /** Panel width in px. @default 264 */\n width?: number;\n /** Start open. @default false */\n defaultOpen?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n}\n\nconst GAP = 12;\nconst ARROW = 12;\n\n/**\n * UX4G Popover — click-triggered floating panel with an arrow. Richer than a\n * Tooltip: holds a title, body content and actions. Toggles open on press of\n * the trigger and again to close.\n */\nexport function Popover({\n trigger,\n title,\n children,\n placement = \"bottom\",\n width = 264,\n defaultOpen = false,\n theme: themeProp,\n}: PopoverProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n const [open, setOpen] = useState(defaultOpen);\n\n // Panel position relative to the trigger (the wrapping View is the anchor).\n const panelPos: ViewStyle = { position: \"absolute\", zIndex: 60, width };\n if (placement === \"bottom\") {\n panelPos.top = \"100%\";\n panelPos.marginTop = GAP;\n panelPos.alignSelf = \"center\";\n } else if (placement === \"top\") {\n panelPos.bottom = \"100%\";\n panelPos.marginBottom = GAP;\n panelPos.alignSelf = \"center\";\n } else if (placement === \"right\") {\n panelPos.left = \"100%\";\n panelPos.marginLeft = GAP;\n } else {\n panelPos.right = \"100%\";\n panelPos.marginRight = GAP;\n }\n\n // Arrow — a small rotated square that picks up the surface + a top/left edge.\n const arrow: ViewStyle = {\n position: \"absolute\",\n width: ARROW,\n height: ARROW,\n backgroundColor: c.surface,\n borderTopWidth: theme.border.thin,\n borderLeftWidth: theme.border.thin,\n borderTopColor: c.border,\n borderLeftColor: c.border,\n transform: [{ rotate: \"45deg\" }],\n };\n if (placement === \"bottom\") {\n arrow.top = -ARROW / 2 - 1;\n arrow.left = width / 2 - ARROW / 2;\n } else if (placement === \"top\") {\n arrow.bottom = -ARROW / 2 - 1;\n arrow.left = width / 2 - ARROW / 2;\n arrow.transform = [{ rotate: \"225deg\" }];\n } else if (placement === \"right\") {\n arrow.left = -ARROW / 2 - 1;\n arrow.top = \"50%\";\n arrow.marginTop = -ARROW / 2;\n arrow.transform = [{ rotate: \"-45deg\" }];\n } else {\n arrow.right = -ARROW / 2 - 1;\n arrow.top = \"50%\";\n arrow.marginTop = -ARROW / 2;\n arrow.transform = [{ rotate: \"135deg\" }];\n }\n\n const panelStyle: ViewStyle = {\n ...panelPos,\n backgroundColor: c.surface,\n borderWidth: theme.border.thin,\n borderColor: c.border,\n borderRadius: theme.radius.lg,\n padding: theme.space[4],\n };\n\n return (\n <View style={{ position: \"relative\", alignSelf: \"flex-start\" }}>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ expanded: open }}\n onPress={() => setOpen((o) => !o)}\n style={{ alignSelf: \"flex-start\" }}\n >\n {trigger}\n </Pressable>\n {open && (\n <View\n testID=\"ux4g-popover-panel\"\n role=\"dialog\"\n accessibilityLabel={typeof title === \"string\" ? title : undefined}\n style={[panelStyle, theme.shadow.l]}\n >\n <View\n style={arrow}\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n />\n {title != null &&\n (typeof title === \"string\" || typeof title === \"number\" ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 15,\n fontWeight: theme.font.weight.semibold,\n color: c.text,\n marginBottom: theme.space[1] + 2,\n }}\n >\n {title}\n </Text>\n ) : (\n title\n ))}\n {typeof children === \"string\" || typeof children === \"number\" ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n lineHeight: 21,\n color: c.textMuted,\n }}\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </View>\n )}\n </View>\n );\n}\n\nexport default Popover;\n","import React from \"react\";\nimport {\n ScrollView,\n Text,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\n/**\n * A value that a cell can hold by default (when no `render` is supplied).\n * Strings and numbers are wrapped in <Text>; a ReactNode is rendered as-is.\n */\nexport type TableCellValue = React.ReactNode;\n\n/** Default row shape: an indexable record of renderable cell values. */\nexport type TableRow = Record<string, TableCellValue>;\n\nexport interface TableColumn<Row extends TableRow = TableRow> {\n /** Field key on the row; also used as a React key for the column. */\n key: string;\n /** Column heading. */\n header: React.ReactNode;\n /** Custom cell renderer. Defaults to row[key]. */\n render?: (row: Row) => React.ReactNode;\n /** Horizontal text alignment for the header and its cells. @default \"left\" */\n align?: \"left\" | \"right\" | \"center\";\n /** Fixed column width in px (number) or a flex-basis string. */\n width?: number | string;\n}\n\nexport interface TableProps<Row extends TableRow = TableRow> {\n columns: TableColumn<Row>[];\n rows: Row[];\n /** Zebra striping. @default false */\n striped?: boolean;\n /**\n * Web highlights rows on hover; React Native has no hover, so this is\n * accepted for API parity but has no visual effect. @default true\n */\n hover?: boolean;\n /** Render when rows is empty. Defaults to a \"No records\" message. */\n empty?: React.ReactNode;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Forwarded to the outer container for testing / styling. */\n testID?: string;\n /** Optional style override for the outer container. */\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * UX4G Table — a simple, scannable data table built from `columns` + `rows`.\n *\n * React Native has no `<table>`: the header is a row of Views and each record\n * is a row of Views laid out with `flexDirection: \"row\"`. Columns are sized via\n * `flex` (or a fixed `width`). The whole table is wrapped in a horizontal\n * ScrollView so wide tables can scroll sideways on narrow screens.\n */\nexport function Table<Row extends TableRow = TableRow>({\n columns,\n rows,\n striped = false,\n // `hover` is part of the web contract but has no RN equivalent.\n hover: _hover = true,\n empty,\n theme: themeProp,\n testID,\n style,\n}: TableProps<Row>) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const surfaceStyle: ViewStyle = {\n width: \"100%\",\n overflow: \"hidden\",\n backgroundColor: c.surface,\n borderWidth: theme.border.thin,\n borderColor: c.border,\n borderRadius: theme.radius.lg,\n };\n\n const headerTextStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 12,\n fontWeight: theme.font.weight.semibold,\n letterSpacing: 0.4,\n textTransform: \"uppercase\",\n color: c.textMuted,\n };\n\n const cellTextStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n color: c.text,\n };\n\n /** Per-column layout: a fixed width or an even flex share. */\n const colLayout = (col: TableColumn<Row>): ViewStyle =>\n typeof col.width === \"number\"\n ? { width: col.width, flexGrow: 0, flexShrink: 0 }\n : { flex: 1, flexBasis: 0 };\n\n const alignToFlex = (align?: TableColumn<Row>[\"align\"]): ViewStyle[\"alignItems\"] =>\n align === \"right\" ? \"flex-end\" : align === \"center\" ? \"center\" : \"flex-start\";\n\n return (\n <View\n testID={testID}\n accessibilityRole=\"list\"\n style={[surfaceStyle, style]}\n >\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={{ flexGrow: 1, flexDirection: \"column\" }}\n >\n {/* Header row */}\n <View\n accessibilityRole=\"header\"\n style={{\n flexDirection: \"row\",\n backgroundColor: c.surfaceSubtle,\n borderBottomWidth: theme.border.thin,\n borderBottomColor: c.border,\n }}\n >\n {columns.map((col) => (\n <View\n key={col.key}\n style={[\n {\n paddingVertical: theme.space[3],\n paddingHorizontal: theme.space[4],\n alignItems: alignToFlex(col.align),\n },\n colLayout(col),\n ]}\n >\n {typeof col.header === \"string\" || typeof col.header === \"number\" ? (\n <Text\n style={[headerTextStyle, { textAlign: col.align ?? \"left\" }]}\n numberOfLines={1}\n >\n {col.header}\n </Text>\n ) : (\n col.header\n )}\n </View>\n ))}\n </View>\n\n {/* Body */}\n {rows.length === 0 ? (\n <View\n style={{\n paddingVertical: theme.space[6],\n paddingHorizontal: theme.space[4],\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {empty != null ? (\n typeof empty === \"string\" || typeof empty === \"number\" ? (\n <Text style={[cellTextStyle, { color: c.textMuted }]}>{empty}</Text>\n ) : (\n empty\n )\n ) : (\n <Text style={[cellTextStyle, { color: c.textMuted }]}>No records</Text>\n )}\n </View>\n ) : (\n rows.map((row, ri) => {\n const isLast = ri === rows.length - 1;\n const rowBg = striped && ri % 2 === 1 ? c.surfaceSubtle : \"transparent\";\n\n return (\n <View\n key={ri}\n testID={`table-row-${ri}`}\n style={{\n flexDirection: \"row\",\n backgroundColor: rowBg,\n borderBottomWidth: isLast ? 0 : theme.border.thin,\n borderBottomColor: isLast ? \"transparent\" : c.divider,\n }}\n >\n {columns.map((col) => {\n const content: React.ReactNode = col.render\n ? col.render(row)\n : row[col.key];\n\n return (\n <View\n key={col.key}\n style={[\n {\n paddingVertical: theme.space[3],\n paddingHorizontal: theme.space[4],\n alignItems: alignToFlex(col.align),\n },\n colLayout(col),\n ]}\n >\n {typeof content === \"string\" || typeof content === \"number\" ? (\n <Text style={[cellTextStyle, { textAlign: col.align ?? \"left\" }]}>\n {content}\n </Text>\n ) : (\n content\n )}\n </View>\n );\n })}\n </View>\n );\n })\n )}\n </ScrollView>\n </View>\n );\n}\n\nexport default Table;\n","import React, { useState } from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface AccordionItem {\n /** Stable id; also used for default open state. */\n value: string;\n title: React.ReactNode;\n content: React.ReactNode;\n}\n\nexport interface AccordionProps {\n items: AccordionItem[];\n /** Allow multiple panels open at once. @default false */\n multiple?: boolean;\n /** Values open by default. */\n defaultOpen?: string[];\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Style for the outer accordion container. */\n style?: StyleProp<ViewStyle>;\n}\n\n/** Render a title/content node: wrap bare strings/numbers in a styled <Text>. */\nfunction renderNode(\n node: React.ReactNode,\n textStyle: TextStyle,\n): React.ReactNode {\n if (typeof node === \"string\" || typeof node === \"number\") {\n return <Text style={textStyle}>{node}</Text>;\n }\n return node;\n}\n\n/** UX4G Accordion — collapsible panels for FAQs and grouped content. */\nexport function Accordion({\n items,\n multiple = false,\n defaultOpen = [],\n theme: themeProp,\n style,\n}: AccordionProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const [open, setOpen] = useState<string[]>(defaultOpen);\n const toggle = (v: string) =>\n setOpen((cur) =>\n cur.includes(v)\n ? cur.filter((x) => x !== v)\n : multiple\n ? [...cur, v]\n : [v],\n );\n\n const titleStyle: TextStyle = {\n flex: 1,\n fontFamily: theme.font.family.sans,\n fontSize: 15,\n fontWeight: \"600\",\n color: c.text,\n };\n\n const contentStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n lineHeight: 22,\n color: c.textMuted,\n };\n\n return (\n <View\n style={[\n {\n borderWidth: theme.border.thin,\n borderColor: c.border,\n borderRadius: theme.radius.lg,\n overflow: \"hidden\",\n backgroundColor: c.surface,\n },\n style,\n ]}\n >\n {items.map((it, i) => {\n const isOpen = open.includes(it.value);\n const title = typeof it.title === \"string\" ? it.title : undefined;\n return (\n <View\n key={it.value}\n style={\n i\n ? { borderTopWidth: theme.border.thin, borderTopColor: c.divider }\n : undefined\n }\n >\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={title}\n accessibilityState={{ expanded: isOpen }}\n onPress={() => toggle(it.value)}\n style={({ pressed }) => ({\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: theme.space[3],\n width: \"100%\",\n minHeight: 44,\n paddingVertical: theme.space[4],\n paddingHorizontal: 18,\n backgroundColor: isOpen\n ? theme.ramp.neutral[50]\n : pressed\n ? theme.ramp.neutral[100]\n : c.surface,\n })}\n >\n {renderNode(it.title, titleStyle)}\n <View\n style={{\n transform: [{ rotate: isOpen ? \"180deg\" : \"0deg\" }],\n }}\n >\n <Svg width={20} height={20} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"m6 9 6 6 6-6\"\n stroke={theme.ramp.neutral[600]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </View>\n </Pressable>\n {isOpen && (\n <View\n style={{\n paddingTop: 0,\n paddingHorizontal: 18,\n paddingBottom: 18,\n backgroundColor: c.surface,\n }}\n >\n {renderNode(it.content, contentStyle)}\n </View>\n )}\n </View>\n );\n })}\n </View>\n );\n}\n\nexport default Accordion;\n","import React, { useState } from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface PaginationProps {\n /** Current page, 1-indexed. */\n page: number;\n /** Total number of pages. */\n pageCount: number;\n /** Fired with the next 1-indexed page when the user navigates. */\n onChange: (page: number) => void;\n /** Sibling pages either side of current. @default 1 */\n siblings?: number;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Style for the outer navigation container. */\n style?: StyleProp<ViewStyle>;\n}\n\nconst ELLIPSIS = \"…\";\ntype PageToken = number | typeof ELLIPSIS;\n\n/**\n * Inline chevron geometry, transcoded 1:1 from the web Pagination reference:\n * prev -> \"m15 18-6-6 6-6\" · next -> \"m9 18 6-6-6-6\"\n */\nfunction Chevron({ dir, color }: { dir: \"prev\" | \"next\"; color: string }) {\n return (\n <Svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={dir === \"prev\" ? \"m15 18-6-6 6-6\" : \"m9 18 6-6-6-6\"}\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\n/** UX4G Pagination — page navigation for tables and lists. 1-indexed. */\nexport function Pagination({\n page,\n pageCount,\n onChange,\n siblings = 1,\n theme: themeProp,\n style,\n}: PaginationProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const [focused, setFocused] = useState<string | null>(null);\n\n // Build the truncated 1-indexed range, matching the web reference exactly.\n const range: PageToken[] = [];\n const lo = Math.max(2, page - siblings);\n const hi = Math.min(pageCount - 1, page + siblings);\n range.push(1);\n if (lo > 2) range.push(ELLIPSIS);\n for (let i = lo; i <= hi; i++) range.push(i);\n if (hi < pageCount - 1) range.push(ELLIPSIS);\n if (pageCount > 1) range.push(pageCount);\n\n const labelStyle = (active: boolean): TextStyle => ({\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: active ? theme.font.weight.semibold : theme.font.weight.medium,\n color: active ? theme.ramp.violet[700] : c.text,\n });\n\n const cellStyle = (\n active: boolean,\n pressed: boolean,\n isFocused: boolean,\n disabled: boolean,\n ): ViewStyle => {\n const focusRing: Partial<ViewStyle> =\n isFocused && !disabled\n ? { borderColor: c.focus, borderWidth: theme.focusRingWidth }\n : { borderColor: active ? c.primary : c.border, borderWidth: theme.border.thin };\n return {\n minWidth: 44,\n height: 44,\n paddingHorizontal: theme.space[2],\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.md,\n backgroundColor: active\n ? theme.ramp.violet[50]\n : pressed && !disabled\n ? theme.ramp.neutral[100]\n : c.surface,\n opacity: disabled ? 0.4 : 1,\n ...focusRing,\n };\n };\n\n const renderArrow = (dir: \"prev\" | \"next\") => {\n const disabled = dir === \"prev\" ? page <= 1 : page >= pageCount;\n const key = dir;\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={dir}\n accessibilityState={{ disabled }}\n disabled={disabled}\n onPress={() => onChange(dir === \"prev\" ? page - 1 : page + 1)}\n onFocus={() => setFocused(key)}\n onBlur={() => setFocused(null)}\n style={({ pressed }) =>\n cellStyle(false, pressed, focused === key, disabled)\n }\n >\n <Chevron dir={dir} color={c.text} />\n </Pressable>\n );\n };\n\n return (\n <View\n accessibilityRole=\"none\"\n accessibilityLabel=\"Pagination\"\n style={[\n { flexDirection: \"row\", alignItems: \"center\", gap: theme.space[1] + 2 },\n style,\n ]}\n >\n {renderArrow(\"prev\")}\n {range.map((n, i) => {\n if (n === ELLIPSIS) {\n return (\n <View\n key={`ellipsis-${i}`}\n style={{\n minWidth: 24,\n flexDirection: \"row\",\n justifyContent: \"center\",\n }}\n >\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n color: c.textSubtle,\n textAlign: \"center\",\n }}\n >\n {ELLIPSIS}\n </Text>\n </View>\n );\n }\n const active = n === page;\n const key = `page-${n}`;\n return (\n <Pressable\n key={key}\n accessibilityRole=\"button\"\n accessibilityLabel={`Page ${n}`}\n accessibilityState={{ selected: active }}\n onPress={() => onChange(n)}\n onFocus={() => setFocused(key)}\n onBlur={() => setFocused(null)}\n style={({ pressed }) =>\n cellStyle(active, pressed, focused === key, false)\n }\n >\n <Text style={labelStyle(active)}>{n}</Text>\n </Pressable>\n );\n })}\n {renderArrow(\"next\")}\n </View>\n );\n}\n\nexport default Pagination;\n","import React from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type GestureResponderEvent,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface ListItemData {\n /** Leading slot — icon, avatar or monogram. */\n leading?: React.ReactNode;\n /** Small uppercase label above the title. */\n overline?: React.ReactNode;\n title: React.ReactNode;\n /** Supporting text under the title. */\n description?: React.ReactNode;\n /** Trailing slot — meta text, a control, or a chevron. */\n trailing?: React.ReactNode;\n /**\n * Marks the row as a link target. In React Native there is no navigation\n * here; like `onClick` it simply makes the row pressable.\n */\n href?: string;\n /** Fired when the row is pressed (rows are pressable when set, or `interactive`). */\n onClick?: (event: GestureResponderEvent) => void;\n /** Current / selected row — violet-subtle fill + left accent. */\n active?: boolean;\n /** Dim and disable the row. */\n disabled?: boolean;\n}\n\nexport interface ListProps {\n items: ListItemData[];\n /** Hairline dividers between rows. @default true */\n dividers?: boolean;\n /** Press affordance on rows. @default false */\n interactive?: boolean;\n /** Wrap in a bordered, rounded surface. @default true */\n bordered?: boolean;\n /** Show a chevron on every row (overridden by an item's own `trailing`). */\n chevron?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Forwarded to the outer container for testing / styling. */\n testID?: string;\n /** Optional style override for the outer container. */\n style?: StyleProp<ViewStyle>;\n}\n\n/** Inline chevron glyph (web: `<path d=\"m9 18 6-6-6-6\" />`). */\nfunction Chevron({ color }: { color: string }) {\n return (\n <Svg\n width={20}\n height={20}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n accessibilityLabel=\"More\"\n >\n <Path\n d=\"m9 18 6-6-6-6\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\n/** Coerce a plain-string title into a readable accessibility label. */\nfunction rowLabel(title: React.ReactNode): string | undefined {\n return typeof title === \"string\" || typeof title === \"number\"\n ? String(title)\n : undefined;\n}\n\n/**\n * UX4G List — a vertical list of rows, each with optional leading/trailing\n * slots and one to three lines of text (overline / title / description).\n * Supports dividers, press interactivity, an active row and a trailing chevron.\n */\nexport function List({\n items,\n dividers = true,\n interactive = false,\n bordered = true,\n chevron = false,\n theme: themeProp,\n testID,\n style,\n}: ListProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const surfaceStyle: ViewStyle = {\n width: \"100%\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n ...(bordered\n ? {\n backgroundColor: c.surface,\n borderWidth: theme.border.thin,\n borderColor: c.border,\n borderRadius: theme.radius.lg,\n }\n : null),\n };\n\n const overlineStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 11,\n fontWeight: theme.font.weight.semibold,\n letterSpacing: 0.5,\n textTransform: \"uppercase\",\n color: c.textSubtle,\n };\n\n const titleTextStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 15,\n fontWeight: theme.font.weight.medium,\n color: c.text,\n };\n\n const descriptionStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 13,\n lineHeight: 13 * 1.4,\n color: c.textMuted,\n };\n\n return (\n <View style={[surfaceStyle, style]} testID={testID}>\n {items.map((it, i) => {\n const clickable = !it.disabled && (interactive || it.href != null || it.onClick != null);\n const showDivider = dividers && i < items.length - 1;\n\n const trailingNode =\n it.trailing != null\n ? it.trailing\n : chevron\n ? <Chevron color={theme.ramp.neutral[400]} />\n : null;\n\n const rowContent = (\n <>\n {it.leading != null && (\n <View\n style={{\n flexShrink: 0,\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {it.leading}\n </View>\n )}\n\n <View style={{ flex: 1, minWidth: 0, flexDirection: \"column\", gap: 2 }}>\n {it.overline != null &&\n (typeof it.overline === \"string\" || typeof it.overline === \"number\" ? (\n <Text style={overlineStyle}>{it.overline}</Text>\n ) : (\n it.overline\n ))}\n\n {typeof it.title === \"string\" || typeof it.title === \"number\" ? (\n <Text style={titleTextStyle} numberOfLines={1}>\n {it.title}\n </Text>\n ) : (\n it.title\n )}\n\n {it.description != null &&\n (typeof it.description === \"string\" || typeof it.description === \"number\" ? (\n <Text style={descriptionStyle}>{it.description}</Text>\n ) : (\n it.description\n ))}\n </View>\n\n {trailingNode != null && (\n <View\n style={{\n flexShrink: 0,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: theme.space[2],\n }}\n >\n {typeof trailingNode === \"string\" || typeof trailingNode === \"number\" ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 13,\n color: c.textMuted,\n }}\n >\n {trailingNode}\n </Text>\n ) : (\n trailingNode\n )}\n </View>\n )}\n </>\n );\n\n const rowBase: ViewStyle = {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 14,\n paddingVertical: 12,\n paddingHorizontal: 16,\n minHeight: 56,\n opacity: it.disabled ? 0.5 : 1,\n borderBottomWidth: showDivider ? theme.border.thin : 0,\n borderBottomColor: showDivider ? c.divider : \"transparent\",\n borderLeftWidth: it.active ? 3 : 0,\n borderLeftColor: it.active ? c.primary : \"transparent\",\n };\n\n if (clickable) {\n return (\n <Pressable\n key={i}\n onPress={it.onClick}\n accessibilityRole=\"button\"\n accessibilityLabel={rowLabel(it.title)}\n accessibilityState={{ disabled: !!it.disabled, selected: !!it.active }}\n style={({ pressed }) => {\n const bg = it.active\n ? c.primarySubtle\n : pressed\n ? c.surfaceMuted\n : \"transparent\";\n return [rowBase, { backgroundColor: bg }];\n }}\n >\n {rowContent}\n </Pressable>\n );\n }\n\n return (\n <View\n key={i}\n accessibilityLabel={rowLabel(it.title)}\n accessibilityState={it.disabled ? { disabled: true } : undefined}\n style={[\n rowBase,\n { backgroundColor: it.active ? c.primarySubtle : \"transparent\" },\n ]}\n >\n {rowContent}\n </View>\n );\n })}\n </View>\n );\n}\n\nexport default List;\n","import React from \"react\";\nimport {\n Text,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Circle, G, Line, Path, Polygon } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport type ChartType = \"bar\" | \"line\" | \"pie\" | \"doughnut\" | \"radar\" | \"polarArea\";\n\n/**\n * A single Chart.js-style dataset. Only the fields the UX4G wrapper reads (or\n * forwards through) are typed; colours are auto-filled from the palette when\n * omitted, matching the web `Chart` behaviour.\n */\nexport interface ChartDataset {\n /** Legend / series name. */\n label?: string;\n /** The values, one per category label. */\n data: number[];\n /** Fill colour. A string applies to the whole series; an array colours each\n * slice (pie/doughnut/polarArea). Auto-filled from the palette when omitted. */\n backgroundColor?: string | string[];\n /** Stroke / line colour. Auto-filled from the palette when omitted. */\n borderColor?: string;\n /** Stroke width in px. */\n borderWidth?: number;\n /** Fill the area under a line. @default false */\n fill?: boolean;\n}\n\n/** Chart.js-style `data` object. */\nexport interface ChartData {\n /** Category labels (x axis / slice names). */\n labels: string[];\n datasets: ChartDataset[];\n}\n\n/** A small, typed subset of Chart.js `options` the RN wrapper honours. */\nexport interface ChartOptions {\n /** Show the legend. @default true */\n showLegend?: boolean;\n}\n\nexport interface ChartProps {\n /** Chart type. */\n type: ChartType;\n /** Chart data ({ labels, datasets }). Dataset colours are auto-filled from\n * the UX4G palette when omitted. */\n data: ChartData;\n /** Display options, merged over UX4G defaults. */\n options?: ChartOptions;\n /** Pixel height of the chart area. @default 300 */\n height?: number;\n /** Override the categorical colour sequence. */\n palette?: string[];\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Test handle. Bars derive `${testID}-bar-<dataset>-<index>`. */\n testID?: string;\n /** Override the computed accessibility label. */\n accessibilityLabel?: string;\n /** Style override for the outer container. */\n style?: StyleProp<ViewStyle>;\n}\n\n/** UX4G categorical palette — brand violet first, then info/success/warning/danger. */\nexport const UX4G_CHART_PALETTE = [\n \"#613AF5\", \"#1937B2\", \"#107400\", \"#EE8033\", \"#DB2829\", \"#8981AB\", \"#2384C5\", \"#69B349\",\n];\n\nfunction hexToRgba(hex: string, a: number): string {\n const h = hex.replace(\"#\", \"\");\n const full = h.length === 3 ? h.split(\"\").map((c) => c + c).join(\"\") : h;\n const n = parseInt(full, 16);\n return `rgba(${(n >> 16) & 255}, ${(n >> 8) & 255}, ${n & 255}, ${a})`;\n}\n\nfunction firstColor(bg: string | string[] | undefined): string | undefined {\n if (bg == null) return undefined;\n return Array.isArray(bg) ? bg[0] : bg;\n}\n\nconst CHART_LABELS: Record<ChartType, string> = {\n bar: \"bar chart\",\n line: \"line chart\",\n pie: \"pie chart\",\n doughnut: \"doughnut chart\",\n radar: \"radar chart\",\n polarArea: \"polar area chart\",\n};\n\n/**\n * UX4G Chart — a themed, native rendering of common Chart.js chart types.\n * Bars are Views; line/area/radar and circular charts are drawn with\n * react-native-svg. Dataset colours default to the UX4G palette. No Chart.js.\n */\nexport function Chart({\n type,\n data,\n options,\n height = 300,\n palette = UX4G_CHART_PALETTE,\n theme: themeProp,\n testID,\n accessibilityLabel,\n style,\n}: ChartProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n\n const labels = data.labels ?? [];\n const datasets = data.datasets ?? [];\n const showLegend = options?.showLegend ?? true;\n\n const a11yLabel = accessibilityLabel ?? CHART_LABELS[type];\n\n const circular = type === \"pie\" || type === \"doughnut\" || type === \"polarArea\";\n\n const seriesColor = (i: number): string => palette[i % palette.length];\n const sliceColor = (j: number): string => palette[j % palette.length];\n\n // Legend entries: per-dataset for cartesian/radar charts, per-slice for circular.\n const legend: { color: string; text: string }[] = circular\n ? labels.map((lab, j) => ({ color: sliceColor(j), text: lab }))\n : datasets.map((ds, i) => ({\n color: firstColor(ds.backgroundColor) ?? ds.borderColor ?? seriesColor(i),\n text: ds.label ?? `Series ${i + 1}`,\n }));\n\n return (\n <View\n testID={testID}\n accessible\n accessibilityRole=\"image\"\n accessibilityLabel={a11yLabel}\n style={[{ width: \"100%\", height }, style]}\n >\n <View style={{ width: \"100%\", flex: 1 }}>\n {type === \"bar\" ? (\n <BarChart\n theme={theme}\n labels={labels}\n datasets={datasets}\n seriesColor={seriesColor}\n testID={testID}\n />\n ) : type === \"line\" ? (\n <LineChart theme={theme} labels={labels} datasets={datasets} seriesColor={seriesColor} />\n ) : type === \"radar\" ? (\n <RadarChart theme={theme} labels={labels} datasets={datasets} seriesColor={seriesColor} />\n ) : (\n <CircularChart\n theme={theme}\n type={type}\n labels={labels}\n datasets={datasets}\n sliceColor={sliceColor}\n />\n )}\n </View>\n\n {showLegend && legend.length > 0 && (\n <View\n accessibilityRole=\"none\"\n style={{\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n justifyContent: \"center\",\n gap: theme.space[3],\n paddingTop: theme.space[3],\n }}\n >\n {legend.map((entry, i) => (\n <View\n key={i}\n style={{ flexDirection: \"row\", alignItems: \"center\", gap: theme.space[2] }}\n >\n <View\n style={{\n width: 10,\n height: 10,\n borderRadius: theme.radius.full,\n backgroundColor: entry.color,\n }}\n />\n <Text style={legendTextStyle(theme)}>{entry.text}</Text>\n </View>\n ))}\n </View>\n )}\n </View>\n );\n}\n\n// ---- Bar -------------------------------------------------------------------\n\ninterface BarProps {\n theme: UX4GTheme;\n labels: string[];\n datasets: ChartDataset[];\n seriesColor: (i: number) => string;\n testID?: string;\n}\n\nfunction BarChart({ theme, labels, datasets, seriesColor, testID }: BarProps) {\n const max = niceMax(datasets);\n const groupCount = Math.max(labels.length, 1);\n\n return (\n <View style={{ flex: 1, flexDirection: \"column\" }}>\n <View\n style={{\n flex: 1,\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n borderBottomWidth: theme.border.thin,\n borderBottomColor: theme.ramp.neutral[300],\n borderLeftWidth: theme.border.thin,\n borderLeftColor: theme.ramp.neutral[200],\n }}\n >\n {Array.from({ length: groupCount }, (_, gi) => (\n <View\n key={gi}\n style={{\n flex: 1,\n height: \"100%\",\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n justifyContent: \"center\",\n gap: 4,\n paddingHorizontal: 4,\n }}\n >\n {datasets.map((ds, di) => {\n const value = ds.data[gi] ?? 0;\n const pct = max > 0 ? Math.max(0, value / max) : 0;\n const color = firstColor(ds.backgroundColor) ?? seriesColor(di);\n return (\n <View\n key={di}\n testID={testID ? `${testID}-bar-${di}-${gi}` : undefined}\n style={{\n flex: 1,\n maxWidth: 48,\n height: `${pct * 100}%`,\n minHeight: value > 0 ? 2 : 0,\n backgroundColor: color,\n borderTopLeftRadius: theme.radius.sm,\n borderTopRightRadius: theme.radius.sm,\n }}\n />\n );\n })}\n </View>\n ))}\n </View>\n <View style={{ flexDirection: \"row\", paddingTop: theme.space[2] }}>\n {labels.map((lab, i) => (\n <View key={i} style={{ flex: 1, alignItems: \"center\" }}>\n <Text style={axisTextStyle(theme)} numberOfLines={1}>\n {lab}\n </Text>\n </View>\n ))}\n </View>\n </View>\n );\n}\n\n// ---- Line / Area -----------------------------------------------------------\n\ninterface CartesianProps {\n theme: UX4GTheme;\n labels: string[];\n datasets: ChartDataset[];\n seriesColor: (i: number) => string;\n}\n\nconst PLOT_W = 320;\nconst PLOT_H = 220;\nconst PAD = 16;\n\nfunction LineChart({ theme, labels, datasets, seriesColor }: CartesianProps) {\n const max = niceMax(datasets);\n const innerW = PLOT_W - PAD * 2;\n const innerH = PLOT_H - PAD * 2;\n\n const x = (i: number, n: number): number =>\n n <= 1 ? PAD + innerW / 2 : PAD + (innerW * i) / (n - 1);\n const y = (v: number): number => PAD + innerH * (1 - (max > 0 ? v / max : 0));\n\n return (\n <View style={{ flex: 1, flexDirection: \"column\" }}>\n <Svg width=\"100%\" height=\"100%\" viewBox={`0 0 ${PLOT_W} ${PLOT_H}`}>\n {/* baseline + left axis */}\n <Line\n x1={PAD}\n y1={PLOT_H - PAD}\n x2={PLOT_W - PAD}\n y2={PLOT_H - PAD}\n stroke={theme.ramp.neutral[300]}\n strokeWidth={1}\n />\n <Line\n x1={PAD}\n y1={PAD}\n x2={PAD}\n y2={PLOT_H - PAD}\n stroke={theme.ramp.neutral[200]}\n strokeWidth={1}\n />\n {datasets.map((ds, di) => {\n const stroke = ds.borderColor ?? seriesColor(di);\n const n = ds.data.length;\n const pts = ds.data.map((v, i) => `${x(i, n)},${y(v)}`).join(\" \");\n const linePath = \"M\" + pts.split(\" \").join(\" L\");\n const areaPath = ds.fill\n ? `${linePath} L${x(n - 1, n)},${PLOT_H - PAD} L${x(0, n)},${PLOT_H - PAD} Z`\n : null;\n return (\n <G key={di}>\n {areaPath != null && (\n <Path d={areaPath} fill={hexToRgba(stroke, 0.12)} stroke=\"none\" />\n )}\n <Path\n d={linePath}\n fill=\"none\"\n stroke={stroke}\n strokeWidth={ds.borderWidth ?? 2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n {ds.data.map((v, i) => (\n <Circle key={i} cx={x(i, n)} cy={y(v)} r={3} fill={stroke} />\n ))}\n </G>\n );\n })}\n </Svg>\n <View style={{ flexDirection: \"row\", paddingTop: theme.space[2] }}>\n {labels.map((lab, i) => (\n <View key={i} style={{ flex: 1, alignItems: \"center\" }}>\n <Text style={axisTextStyle(theme)} numberOfLines={1}>\n {lab}\n </Text>\n </View>\n ))}\n </View>\n </View>\n );\n}\n\n// ---- Radar -----------------------------------------------------------------\n\nfunction RadarChart({ theme, labels, datasets, seriesColor }: CartesianProps) {\n const size = 240;\n const cx = size / 2;\n const cy = size / 2;\n const r = size / 2 - 28;\n const max = niceMax(datasets);\n const n = Math.max(labels.length, 1);\n\n const point = (i: number, value: number): { px: number; py: number } => {\n const angle = (Math.PI * 2 * i) / n - Math.PI / 2;\n const radius = (max > 0 ? value / max : 0) * r;\n return { px: cx + radius * Math.cos(angle), py: cy + radius * Math.sin(angle) };\n };\n\n const axisPoint = (i: number): { px: number; py: number } => {\n const angle = (Math.PI * 2 * i) / n - Math.PI / 2;\n return { px: cx + r * Math.cos(angle), py: cy + r * Math.sin(angle) };\n };\n\n return (\n <View style={{ flex: 1, alignItems: \"center\", justifyContent: \"center\" }}>\n <Svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n {/* spokes */}\n {labels.map((_, i) => {\n const a = axisPoint(i);\n return (\n <Line\n key={`spoke-${i}`}\n x1={cx}\n y1={cy}\n x2={a.px}\n y2={a.py}\n stroke={theme.ramp.neutral[200]}\n strokeWidth={1}\n />\n );\n })}\n {/* outer ring */}\n <Circle cx={cx} cy={cy} r={r} fill=\"none\" stroke={theme.ramp.neutral[200]} strokeWidth={1} />\n {datasets.map((ds, di) => {\n const stroke = ds.borderColor ?? seriesColor(di);\n const poly = ds.data\n .map((v, i) => {\n const p = point(i, v);\n return `${p.px},${p.py}`;\n })\n .join(\" \");\n return (\n <Polygon\n key={di}\n points={poly}\n fill={hexToRgba(stroke, 0.18)}\n stroke={stroke}\n strokeWidth={ds.borderWidth ?? 2}\n />\n );\n })}\n </Svg>\n </View>\n );\n}\n\n// ---- Pie / Doughnut / Polar area -------------------------------------------\n\ninterface CircularProps {\n theme: UX4GTheme;\n type: ChartType;\n labels: string[];\n datasets: ChartDataset[];\n sliceColor: (j: number) => string;\n}\n\nfunction CircularChart({ theme, type, labels, datasets, sliceColor }: CircularProps) {\n const size = 240;\n const cx = size / 2;\n const cy = size / 2;\n const r = size / 2 - 8;\n const innerR = type === \"doughnut\" ? r * 0.58 : 0;\n\n const ds = datasets[0];\n const values = ds?.data ?? [];\n const explicitColors = Array.isArray(ds?.backgroundColor) ? ds?.backgroundColor : undefined;\n const colorFor = (j: number): string => explicitColors?.[j] ?? sliceColor(j);\n\n const total = values.reduce((a, b) => a + Math.max(0, b), 0);\n\n // Polar area: equal angular slices, radius scaled by value.\n const maxVal = values.reduce((a, b) => Math.max(a, b), 0);\n\n const arcs: { path: string; color: string }[] = [];\n if (type === \"polarArea\") {\n const step = (Math.PI * 2) / Math.max(values.length, 1);\n values.forEach((v, j) => {\n const a0 = -Math.PI / 2 + step * j;\n const a1 = a0 + step;\n const radius = maxVal > 0 ? (v / maxVal) * r : 0;\n arcs.push({ path: wedgePath(cx, cy, radius, 0, a0, a1), color: colorFor(j) });\n });\n } else {\n let a0 = -Math.PI / 2;\n values.forEach((v, j) => {\n const frac = total > 0 ? Math.max(0, v) / total : 0;\n const a1 = a0 + frac * Math.PI * 2;\n arcs.push({ path: wedgePath(cx, cy, r, innerR, a0, a1), color: colorFor(j) });\n a0 = a1;\n });\n }\n\n return (\n <View style={{ flex: 1, alignItems: \"center\", justifyContent: \"center\" }}>\n <Svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n {arcs.map((arc, j) => (\n <Path\n key={j}\n d={arc.path}\n fill={arc.color}\n stroke={theme.color.surface}\n strokeWidth={2}\n />\n ))}\n </Svg>\n </View>\n );\n}\n\n// ---- geometry / styling helpers --------------------------------------------\n\nfunction polar(cx: number, cy: number, radius: number, angle: number): [number, number] {\n return [cx + radius * Math.cos(angle), cy + radius * Math.sin(angle)];\n}\n\n/** SVG path for a pie wedge (innerR 0) or doughnut/ring segment. */\nfunction wedgePath(\n cx: number,\n cy: number,\n outerR: number,\n innerR: number,\n a0: number,\n a1: number,\n): string {\n const large = a1 - a0 > Math.PI ? 1 : 0;\n const [ox0, oy0] = polar(cx, cy, outerR, a0);\n const [ox1, oy1] = polar(cx, cy, outerR, a1);\n if (innerR <= 0) {\n return [\n `M ${cx} ${cy}`,\n `L ${ox0} ${oy0}`,\n `A ${outerR} ${outerR} 0 ${large} 1 ${ox1} ${oy1}`,\n \"Z\",\n ].join(\" \");\n }\n const [ix1, iy1] = polar(cx, cy, innerR, a1);\n const [ix0, iy0] = polar(cx, cy, innerR, a0);\n return [\n `M ${ox0} ${oy0}`,\n `A ${outerR} ${outerR} 0 ${large} 1 ${ox1} ${oy1}`,\n `L ${ix1} ${iy1}`,\n `A ${innerR} ${innerR} 0 ${large} 0 ${ix0} ${iy0}`,\n \"Z\",\n ].join(\" \");\n}\n\n/** Largest data value across datasets, rounded up to a friendly axis maximum. */\nfunction niceMax(datasets: ChartDataset[]): number {\n let peak = 0;\n for (const ds of datasets) {\n for (const v of ds.data) if (v > peak) peak = v;\n }\n if (peak <= 0) return 1;\n const mag = Math.pow(10, Math.floor(Math.log10(peak)));\n return Math.ceil(peak / mag) * mag;\n}\n\nfunction axisTextStyle(theme: UX4GTheme): TextStyle {\n return {\n fontFamily: theme.font.family.sans,\n fontSize: 12,\n color: theme.ramp.neutral[700],\n };\n}\n\nfunction legendTextStyle(theme: UX4GTheme): TextStyle {\n return {\n fontFamily: theme.font.family.sans,\n fontSize: 13,\n color: theme.color.text,\n };\n}\n\nexport default Chart;\n","// UX4G Design System — India map geometry (29 states + 7 UTs)\n// Source: UX4G Figma \"Map of India\" page, simplified. viewBox 0 0 659.598 750.626.\n// Coordinates are a stylised administrative outline for data-viz, not survey-accurate.\n\nexport interface IndiaStateGeo {\n /** ISO 3166-2:IN style code. */\n code: string;\n name: string;\n /** \"state\" | \"ut\" */\n type: \"state\" | \"ut\";\n /** Label / centroid anchor in viewBox units. */\n cx: number;\n cy: number;\n /** SVG path data in the shared 659.598 x 750.626 viewBox. */\n d: string;\n}\n\nexport const INDIA_VIEWBOX = \"0 0 659.598 750.626\";\n\nexport const INDIA_STATES: IndiaStateGeo[] = [\n { code: \"AN\", name: \"Andaman & Nicobar Islands\", type: \"ut\", cx: 561.8, cy: 656.8, d: \"M 579.1 739.6 L 579.9 740.4 L 580 743.1 L 581.4 745.1 L 581.3 746 L 580.2 747.3 L 580.3 749.3 L 579.2 749.2 L 578.6 750.6 L 578.4 749.2 L 577.6 747.5 L 576.7 746.7 L 575.6 744.7 L 574.8 742.8 L 575.4 740.7 L 576.5 740.8 L 578.1 740.4 L 579.1 739.6Z M 576.1 734.9 L 577 736.8 L 574.6 739.5 L 574 738 L 574.2 736.6 L 576.1 736.1 L 576.1 734.9Z M 568.5 721.7 L 569.3 723.1 L 570.5 723.8 L 570.4 725.1 L 569.5 724.3 L 568 724.8 L 568 723.6 L 567.1 723.7 L 567.3 722.2 L 568.5 721.7Z M 572.3 721.6 L 573.1 722.4 L 573 723.9 L 571.4 722.6 L 572 721.7Z M 573 719.4 L 573.3 721.4 L 572.6 719.5Z M 571.8 716.9 L 571.3 718.8 L 572.3 720.2 L 572.4 721.4 L 571.4 721.5 L 571.9 720.4 L 570.9 721 L 571 720.1 L 570.3 719.4 L 570.2 718.3 L 571.8 716.9Z M 565.3 716.2 L 565.4 717.2 L 565.3 716.2Z M 562.8 714.1 L 562.8 715.9 L 564.6 717.3 L 562.7 717.2 L 561.9 716.1 L 562.1 714.5Z M 561 711.4Z M 573.9 709.1 L 574.5 711.5 L 574 712.6 L 573.9 709.1Z M 555.2 693.8 L 556 694.9 L 556.1 696.2 L 555.2 696.7 L 553.9 696.5 L 553.7 694.5 L 554.7 694.4 L 554.9 693.5Z M 549 655.8 L 550 656.6 L 550 658 L 550.9 660.9 L 549.6 662.4 L 550.2 663.2 L 549 664.7 L 547.2 663.9 L 546.1 664.2 L 546.9 662.3 L 546 661.1 L 545.9 658.5 L 547.7 656.6 L 548.7 656Z M 551.9 641.7 L 552.9 643.4 L 552 644.1 L 553 644.5 L 551 645.5 L 550.6 644.2 L 551.2 642.5 L 551.9 641.7Z M 550.9 641Z M 542.3 639.8 L 543.5 640 L 543.5 641.4 L 542.2 641.3 L 542.3 639.8Z M 549.6 639.5 L 549.4 640.7 L 549.6 639.5Z M 560.4 634 L 561.6 634.2 L 560.3 634.4Z M 559.3 629.6 L 560.2 629.9 L 561.2 632.6 L 560 631.5 L 558.3 630.5 L 559.2 629.2Z M 559.7 628 L 559.8 629.4 L 559.1 628.7 L 559.7 628Z M 560.6 626.8 L 561 629.3 L 560.1 628.6 L 559 627.1 L 560.1 627.6 L 560.6 626.8Z M 561.5 625.5 L 562.1 627.1 L 561.6 628.4 L 560.8 627.3 L 561.5 625.5Z M 553.2 624.9 L 553.3 626.6 L 554.3 626.4 L 553.7 628.6 L 555.1 629.3 L 554.1 629.4 L 554.7 630.4 L 553.6 631.3 L 553.7 633.8 L 554.2 632 L 555.2 632.7 L 554.4 637.3 L 553.2 637.1 L 552.4 638.4 L 553.1 639.1 L 553.9 638.3 L 553.4 642.5 L 552 641.4 L 552 640.3 L 551.1 639.2 L 551.9 638.8 L 550.7 636.9 L 549.7 634.2 L 550.1 631.6 L 550.6 633 L 551.5 628 L 553.2 624.9Z M 554 625.3Z M 557.7 624.5 L 557.4 625.5 L 557.7 624.5Z M 561.7 624.3 L 562.2 625.7 L 561.4 625.1Z M 558.6 623.9 L 558.2 625 L 557.7 623.7 L 558.5 623.2Z M 554.9 623.2 L 556.3 623.6 L 557.5 624.2 L 557.3 625.9 L 556.6 626.7 L 555.5 627.4 L 554.7 628.9 L 554.1 628.2 L 554.8 624.9 L 554.3 624.1 L 554.9 623.2Z M 578.9 623 L 579.7 623.7 L 579.8 624.9 L 578.6 624.7 L 578.4 623.8 L 578.9 623Z M 559 620.8 L 558.4 622.1 L 558.4 620.8Z M 553.4 611.2 L 553.6 613.7 L 553.1 611.9Z M 557.7 609.2 L 558.3 609.9 L 558.9 611.7 L 559.5 614 L 559 615.5 L 559.3 618.9 L 558.4 619.6 L 558 621 L 556.1 620.5 L 557.6 623 L 556.2 623.4 L 554.8 623 L 553.7 623.4 L 553.4 616.6 L 554.4 614.9 L 554.2 613.7 L 553.7 611.2 L 555.7 609.5 L 556.4 610.1 L 557.7 609.2Z M 553.1 607.4 L 553.7 609.8 L 553.2 610.9 L 552.5 612.3 L 552 610.4 L 552.5 608.1 L 553.1 607.4Z M 560.1 607.3 L 559.5 608 L 560.1 607.3Z M 560.6 593.9 L 561 595 L 560.7 597.1 L 561.6 597.8 L 562 599.4 L 561.4 600.2 L 560.7 599.2 L 559.7 599.6 L 560.2 600.8 L 561.5 600.9 L 560.7 603.1 L 560.7 605.3 L 560.1 606.6 L 558.5 605.8 L 557.7 606.7 L 558.6 607.9 L 557.3 607.6 L 556.7 608.9 L 557.1 609.9 L 555.3 609.2 L 555.3 607.6 L 556 606.9 L 555.4 605.1 L 555.7 604.3 L 556.1 601.7 L 556 600.8 L 556.3 598.5 L 557 597.9 L 557.1 596.3 L 558.4 595.6 L 559.2 594.6 L 560.2 594.6Z M 560.3 591.5 L 560.6 592.7 L 559.4 592 L 560.3 591.5Z M 574.4 562.9 L 573.8 564.5 L 574.4 562.9Z\" },\n { code: \"AP\", name: \"Andhra Pradesh\", type: \"state\", cx: 283.8, cy: 539.3, d: \"M 319.2 520.3 L 318.8 523 L 318 521.8 L 319.2 520.3Z M 318.5 520.3 L 316.7 520.2 L 315.7 520.1 L 317.5 520.9 L 317.5 522 L 318.7 523.8 L 310.5 527.8 L 305.4 529.8 L 301.4 528.7 L 298 529.1 L 295.1 530.5 L 292.3 536.7 L 292.5 537.8 L 289.3 541.1 L 289.4 542.5 L 288.4 543.4 L 285.1 543.9 L 284.2 542.3 L 284.9 541.5 L 282.1 539.9 L 278.7 540.6 L 276.3 541.7 L 274.3 543.1 L 272.7 544.9 L 271.1 549.7 L 268.8 553.4 L 267.7 558.8 L 269.2 566.9 L 271.1 570.3 L 269.5 581.1 L 272.1 588.2 L 271.9 592.4 L 273.7 597.1 L 270.5 591.2 L 269.7 593 L 269.1 592.3 L 267.7 593.6 L 270.2 595.9 L 271.9 595.9 L 273.6 597.4 L 273.6 598.6 L 272.8 598.2 L 271.8 596.1 L 270 596.1 L 268.2 594.7 L 266.5 594.9 L 267.3 595.6 L 266.5 596.6 L 265.8 597.5 L 265.5 598.5 L 264.9 599.4 L 263.2 600.2 L 262.1 600.2 L 261 600.2 L 260.3 600.9 L 261.7 602 L 260.8 602.7 L 259.6 602.4 L 259.1 600.7 L 257.1 601.5 L 256.1 600 L 253.7 599.7 L 252.5 600.2 L 253.6 600.7 L 253.3 602.3 L 251.9 603.4 L 251 605 L 250.1 603.9 L 249 604.1 L 248.3 605.3 L 247.5 607.1 L 245.6 606.9 L 243.6 605.4 L 242.1 605.7 L 242.3 606.8 L 241.4 606.8 L 241.2 605.2 L 238.3 606.2 L 237.3 605.9 L 237.1 607.1 L 236.2 606.8 L 235.3 607.7 L 236.1 609.1 L 234.6 612.5 L 233.8 613.2 L 233.8 614.5 L 233 614.1 L 232.5 615 L 231.8 616.1 L 229.8 616.2 L 228 615.3 L 227.4 614.4 L 225.7 614.6 L 226.6 613.8 L 226.9 610.8 L 228.3 610.8 L 229.3 608.9 L 230 609.7 L 231.3 609.5 L 231 607.9 L 231.7 606.5 L 232.8 606 L 233.4 605 L 234.3 603.6 L 233.7 602.9 L 234.5 601.1 L 234 600.3 L 233.2 601.3 L 232.1 600.1 L 231 599.8 L 229.7 599.8 L 230.3 593.8 L 226.6 593.6 L 225.6 594.3 L 225.8 592.9 L 225 592.1 L 223.3 592.5 L 222.9 591.2 L 223.8 591.3 L 223.4 590.2 L 224.1 589.2 L 224 587.7 L 222.4 586.6 L 221.1 587.2 L 220.7 588.2 L 220.2 586.8 L 220.7 585.1 L 219.5 586.4 L 218.9 585.6 L 217.4 585.5 L 217.6 587.2 L 216.4 587.8 L 215 588.8 L 214.9 590.2 L 213.9 589.7 L 212.7 589.7 L 211.4 590.6 L 210.6 589.9 L 210.5 591.3 L 209 591.5 L 209.2 588.7 L 208.1 588.6 L 208.5 587.8 L 207 587.6 L 206.1 588 L 204.5 587.7 L 204.2 586.4 L 203.7 587.2 L 202.9 585.9 L 202.6 587.3 L 202.7 589.7 L 201 589.5 L 200.3 590.1 L 199.5 589.3 L 199.2 590.2 L 198.2 588.3 L 199.3 586.5 L 197.3 583.4 L 198.3 582.4 L 197.2 581 L 196.3 580.9 L 197.5 580.1 L 199.3 579.9 L 199.1 581.7 L 199.4 582.7 L 201.6 583 L 202.2 584.2 L 206 583.4 L 206.9 584.4 L 206.8 586.4 L 207.7 586.4 L 208.1 585.5 L 208.6 584.7 L 207.4 584.7 L 207.5 583.8 L 206.3 583.4 L 207.8 581.6 L 206.7 581.7 L 207.4 580.9 L 210.2 580.4 L 210.1 577.6 L 209.2 577.6 L 208.9 576.7 L 207.6 576.4 L 208.3 579 L 206.9 578.6 L 207 577.7 L 205.2 577.5 L 205.2 576.2 L 204.1 576.7 L 202.3 576.1 L 201.4 577.3 L 201.3 579 L 200 578.4 L 197.5 578.4 L 197.8 577.1 L 196.2 575.9 L 196.3 574.9 L 197.6 574.7 L 197.6 573.6 L 198.3 572.8 L 196 573 L 195 571.8 L 193.5 569.9 L 194.3 566.8 L 193.9 565.8 L 195.5 565.2 L 195.8 561.5 L 193.6 561.3 L 194 560.2 L 193.8 558.9 L 196.1 559.9 L 198.5 560.4 L 199.9 559.9 L 200.7 560.6 L 202.4 557.8 L 202.5 556.1 L 201.6 555.4 L 202.6 554.5 L 201.5 553.8 L 200.3 553.1 L 199.5 550.4 L 198.2 549.1 L 199.5 548.9 L 199.6 545.8 L 200.7 545.3 L 201.5 546 L 199.9 543.4 L 200.3 541.3 L 199.4 541.1 L 200.4 539.5 L 202.1 538.5 L 204.5 538.1 L 210.4 539 L 212.6 539.2 L 213.8 540 L 215.1 539.8 L 216.9 540.3 L 218.9 539.6 L 221.5 540.5 L 222.3 539.4 L 222.9 540.8 L 223.9 541.2 L 225.2 540.7 L 225.5 539.5 L 226.8 538.8 L 227.3 536.4 L 228.6 536.5 L 230.6 535.2 L 234.1 535.8 L 235.4 534.8 L 237.6 536.5 L 239 536.6 L 240.3 535.1 L 240.4 533.5 L 241.2 534.5 L 241.9 532.9 L 244.7 531.4 L 248 532 L 249 531.5 L 249.1 525.2 L 250 523.9 L 253.7 523.4 L 255.3 522.3 L 258.7 521.5 L 261.5 519.9 L 262.3 520.9 L 263.5 520.7 L 264.4 522.1 L 265.7 522 L 267.7 519.6 L 268.2 518 L 267.3 517 L 266.4 516.8 L 266.8 515.8 L 267.6 514.4 L 269.6 513.9 L 270.7 512.5 L 272.5 513.3 L 273.4 514.6 L 273.8 516.6 L 274.7 517 L 275 518 L 275.6 517.1 L 276.8 517.9 L 279.3 519.2 L 280.2 518.6 L 279.1 517.7 L 279.3 516.7 L 279.8 515.3 L 277.7 514.8 L 274.7 514.3 L 275.4 513.2 L 274.9 512.2 L 276.1 513 L 277.5 512.4 L 277.8 511 L 279.2 510.3 L 281.4 511.5 L 283 512 L 285.4 512.9 L 286.2 510.1 L 287.2 510.1 L 287 508.8 L 289 509.3 L 290.2 508.5 L 292.8 508.1 L 293.3 505.9 L 295.2 506 L 296.5 504.3 L 297.6 505.1 L 298.5 505 L 300.3 502.9 L 300.5 500.8 L 300.5 499.6 L 302 497.3 L 302.2 496.4 L 306.8 493.8 L 306.3 492.4 L 307.2 491.4 L 310.6 490 L 312.3 488.5 L 315.3 488.8 L 317.2 490.3 L 317.8 488.7 L 318.6 488.9 L 319.3 486.5 L 318.6 485.2 L 319.3 483.5 L 320.6 482.5 L 319.3 482.3 L 320.4 481.1 L 319.9 480.1 L 322.4 477.1 L 323 477.9 L 323.7 479.5 L 323.8 480.6 L 325.3 481.1 L 324.7 482.5 L 325.9 484.4 L 326.6 483 L 329 482 L 329.6 480.4 L 329.8 479.4 L 330.8 480.1 L 331.9 481.1 L 332.8 481.5 L 334.7 480.7 L 335.6 479.6 L 334.6 479.3 L 336.3 477 L 335 476.8 L 335.5 475.9 L 334.5 475.8 L 334.6 474.6 L 335.4 474.3 L 337.3 471.4 L 338.8 472.2 L 340.3 471.8 L 342.3 470.8 L 343.2 470 L 342.1 467.7 L 341.2 466.2 L 342.1 465.8 L 343.5 466.1 L 344.6 467.3 L 344.4 466 L 344.7 464.3 L 345.7 464.4 L 345.9 465.4 L 346.6 464.2 L 347.4 464.8 L 347.9 463.9 L 348.4 462.3 L 350 465.6 L 351.1 467.9 L 351 466.5 L 352.1 465.8 L 353.9 470.3 L 355.5 470.9 L 357.5 470.7 L 358.7 472.1 L 359.6 472 L 360.3 471.4 L 364.4 471 L 364.4 469.2 L 365.6 468.9 L 366.5 468.1 L 366.8 466.8 L 366.2 465.7 L 367.5 466.4 L 367.9 465.5 L 369.6 464.4 L 370.1 465.7 L 370.7 464.7 L 371.6 464.7 L 370.8 464.2 L 370.2 463 L 371.8 463.1 L 372.7 462.4 L 373.1 463.7 L 374 464.3 L 370 469 L 369.4 471 L 367.4 472.8 L 364.9 476.6 L 359.7 481.5 L 359.7 482.5 L 350.5 487.1 L 347.2 489.4 L 346.2 491.1 L 343.5 493.6 L 342.1 496.4 L 339.1 499.6 L 325.4 506.5 L 320 510.8 L 318.4 512.8 L 317.9 515 L 317.5 516.2 L 318.8 517.3 L 319.7 517.1 L 319.5 519.8 L 318.5 520.3Z\" },\n { code: \"AR\", name: \"Arunachal Pradesh\", type: \"state\", cx: 593.4, cy: 241.8, d: \"M 631.2 207.9 L 631.9 208.9 L 631.8 209.8 L 633.2 211.8 L 634.3 211.7 L 635.9 210.4 L 636.5 211.2 L 635.5 213.4 L 633.5 213.7 L 631.9 215.4 L 630.2 215.8 L 631.1 216.5 L 631.8 218.2 L 630.9 219.5 L 631.4 220.3 L 633.3 219.3 L 635.5 217 L 637.5 216.9 L 639.5 215.8 L 638.4 218 L 639.4 218.6 L 639.8 220.9 L 641.6 223.6 L 640.9 225 L 638.3 225.9 L 638.8 227.2 L 637.3 228.5 L 635.7 229.2 L 635 229.9 L 636.1 231.1 L 633.6 233 L 634.9 233.7 L 636 233.5 L 636.7 234.8 L 638 232.8 L 639.2 232.9 L 640.7 231.7 L 642.7 231.6 L 644.6 232.8 L 645.1 234 L 646.9 234.2 L 647.9 233.7 L 648.6 234.8 L 650.2 235.5 L 652.3 234.1 L 654.2 235.9 L 656.6 236.5 L 659.3 238.5 L 657.7 239.4 L 657.9 240.5 L 657.2 241.6 L 658.7 241.8 L 659.6 243 L 658.8 244 L 659 246.3 L 657.5 246.4 L 657.2 245.4 L 656 245.9 L 652.5 248.9 L 652.4 250 L 650.9 250 L 649.7 252 L 647.9 253.3 L 648.8 255.6 L 648.2 257.4 L 654.1 265.7 L 653.5 266.5 L 652.7 266 L 649.9 264.9 L 647.4 264.2 L 647.7 263.1 L 647.1 262.2 L 645.8 260.1 L 643.7 259.4 L 641.5 259.7 L 639.5 261.7 L 638.3 261.2 L 633 261.9 L 628.5 264.1 L 626.2 267.8 L 624.9 268.6 L 623.3 268.6 L 621.6 272 L 620.3 271.4 L 618.9 273.7 L 617.1 273.4 L 614.8 276.7 L 611.9 277.9 L 610.5 277.1 L 610 275.8 L 610.6 274.5 L 609.8 272.9 L 610.4 271.9 L 609.5 268 L 610.7 268.4 L 613 266.5 L 615.4 265.7 L 615.5 263.7 L 616.7 262.3 L 618.4 263.3 L 623.3 261.7 L 624.5 261.6 L 625.3 262.4 L 628.1 259.8 L 627.2 258 L 625.8 257.9 L 625.2 258.8 L 625.2 257.8 L 624.3 258.2 L 625.2 256.2 L 625 255 L 624 254.7 L 623.7 253.8 L 622.9 253.2 L 622.7 252 L 622.2 250.5 L 623.7 248.5 L 626 246.5 L 627.2 244.4 L 623.7 244.2 L 618.8 244.7 L 616.7 246.6 L 613.8 247.7 L 612.2 246.9 L 605.8 249.4 L 602 250.3 L 601.5 251.2 L 600.5 251.3 L 599.6 252.1 L 598.1 252.1 L 592.9 254.9 L 592.3 253.8 L 590.8 254.4 L 589.3 253.7 L 588.2 252.8 L 587.3 253.6 L 588.3 254.9 L 586.1 257 L 583.9 259.9 L 581.5 261.6 L 578 265.6 L 578.8 267.2 L 577.4 267.5 L 575.2 269.9 L 571 270.7 L 567.8 270.1 L 560.4 271.2 L 558.1 270 L 557.1 268.9 L 552.3 268.2 L 552 269.4 L 550.6 270.1 L 547.8 270.1 L 546.4 271 L 545.4 270.8 L 543.6 271.6 L 539.8 271.8 L 539.7 268.9 L 538.2 267.5 L 537.9 265 L 539 263.4 L 538.3 262.3 L 539.7 262.3 L 538.7 260.8 L 538.6 258.9 L 537.8 256.9 L 536 257.4 L 534.3 256.9 L 531.1 257.2 L 530.4 256.3 L 529.4 256.8 L 527.6 254.5 L 527.4 253 L 528.9 251.1 L 529.3 249.6 L 529 248.7 L 527.6 248.3 L 527.1 247.3 L 529.8 247.2 L 530.8 248.4 L 533.4 248.5 L 534.2 250.3 L 535.6 250.9 L 537 249.5 L 538.6 249.8 L 542.1 247.2 L 543.4 247.3 L 544.5 249.3 L 546 248.9 L 546.6 248.2 L 547.7 248.7 L 548.7 247.7 L 550.1 248.2 L 551.1 246.7 L 552.5 246.2 L 554.1 243.9 L 552.4 242 L 552.9 240.4 L 555.4 238.4 L 556 239.2 L 557.6 238.4 L 559.2 236.9 L 560 237.7 L 560.7 236.9 L 560.5 235.8 L 564.9 235 L 565.2 233.3 L 564.1 232.3 L 566.2 230.6 L 566.9 229.1 L 567.4 228 L 570 226.2 L 571 226 L 572 226.7 L 574 226.7 L 576.5 225.9 L 577.5 226.4 L 579 225.4 L 580.9 226.3 L 582.6 223.7 L 582.4 222 L 586 219 L 587.4 215.7 L 589 214 L 590.6 213.9 L 590.9 212.9 L 592.3 212 L 595.1 211.9 L 596.7 208.8 L 598.6 210 L 600.1 211.6 L 600.5 213.6 L 602.2 213.1 L 605.6 214.5 L 605 213.4 L 607.3 214.1 L 610.8 215 L 611.1 216.4 L 614.4 217 L 615.3 216.9 L 616 216 L 616.3 214.2 L 617.4 214.5 L 617.2 212.3 L 618.3 212.2 L 618.6 211.1 L 619.5 211.4 L 622.6 208.6 L 625 207.7 L 626.7 207.9 L 629.5 205.8 L 631.2 207.9Z\" },\n { code: \"AS\", name: \"Assam\", type: \"state\", cx: 556.8, cy: 292.4, d: \"M 489.3 305.9 L 489.6 307.3 L 489.3 305.9Z M 539.8 271.8 L 543.6 271.6 L 545.4 270.8 L 546.4 271 L 547.8 270.1 L 550.6 270.1 L 552 269.4 L 552.3 268.2 L 557.1 268.9 L 558.1 269.5 L 560.4 271.2 L 567.8 270.1 L 571 270.7 L 575.2 269.9 L 577.4 267.5 L 578.8 267.2 L 578.6 266.1 L 581.5 261.6 L 583.9 259.9 L 586.1 257 L 588.4 255.8 L 587.3 253.6 L 588.2 252.8 L 588.8 254 L 590.8 254.4 L 592.3 253.8 L 592.9 254.9 L 597.9 252.6 L 599.6 252.1 L 600.5 251.3 L 601.5 251.2 L 602 250.3 L 605.8 249.4 L 612.2 246.9 L 613.8 247.7 L 616.7 246.6 L 618.8 244.7 L 623.7 244.2 L 627.2 244.4 L 626 246.5 L 623.7 248.5 L 622.7 249.8 L 623.1 251.6 L 623.2 252.6 L 623.7 253.8 L 624 254.7 L 625 255 L 625.2 256.2 L 624.3 258.2 L 625.1 257.8 L 625.2 258.8 L 625.8 257.8 L 626.9 258.3 L 628.1 259.8 L 625.6 261.7 L 624.5 261.6 L 623.3 261.7 L 618.4 263.3 L 616.7 262.3 L 615.5 263.7 L 615.4 265.7 L 613 266.5 L 610.7 268.4 L 609.5 268 L 607.6 270 L 605.6 271 L 603.5 270.3 L 602.5 270.8 L 600.6 274.1 L 598 275.9 L 596.7 276.3 L 595.5 277 L 593.1 277.5 L 591.7 278.9 L 591.5 281 L 590.5 281.6 L 589.7 282.7 L 589.1 280.2 L 586.7 282.8 L 586.5 285.7 L 585 286.2 L 582.6 290.1 L 582.3 292.6 L 581.5 294.2 L 582.1 296.4 L 580.6 297.3 L 579.9 298.3 L 579 297.9 L 577.9 299.1 L 578 296.7 L 577.4 295.3 L 575.5 296.7 L 575.9 298.2 L 572.9 300.4 L 571.2 303.1 L 569.6 303.7 L 567.4 305.8 L 568.9 307.9 L 570.4 308.6 L 570.8 310 L 570.2 310.9 L 570.7 311.8 L 568.7 313.4 L 567.5 317.1 L 566.8 318.3 L 565.6 319 L 565.9 320.7 L 565.1 322.6 L 564.4 324.2 L 563.4 324.7 L 562.7 324 L 562.4 325.9 L 561.7 326.7 L 562.3 327.6 L 561.7 329.6 L 560.8 332 L 560.8 334.2 L 558.5 334.6 L 556.9 334.5 L 556.1 335 L 554.7 331.4 L 553 335.6 L 551.5 336.1 L 551.2 338.1 L 549.8 338.3 L 549.4 340 L 548.4 340.3 L 547.2 340.6 L 546.9 338.1 L 544.1 338.1 L 542.2 338.2 L 543.5 335 L 542.6 332.9 L 542.6 331.9 L 543.1 328.1 L 544.1 326.1 L 542.8 322 L 544.1 321.5 L 546.2 323.2 L 547.1 323.2 L 548.5 322.6 L 548.4 320.6 L 547.1 320.2 L 547 318.7 L 548.3 316.8 L 549.6 317 L 549.2 316 L 551.4 316.6 L 552.4 315.1 L 555.5 314 L 554.6 313.3 L 555.3 312.4 L 555.1 311.2 L 554 310 L 552.6 309.1 L 551.1 309.1 L 550.9 307.7 L 551.9 306.1 L 552.1 304.7 L 551 305.5 L 550 304.2 L 548.7 303.9 L 547.9 302.4 L 547.2 301.2 L 546.1 300.6 L 544.9 301.3 L 542.6 301.6 L 541 302.7 L 540.8 299.1 L 541.5 297.7 L 542.5 296.8 L 541.1 296.6 L 544.1 292.4 L 542.8 292.9 L 541.4 292.4 L 540.4 293.3 L 538.6 293.6 L 537.2 293.4 L 535.6 294.4 L 534.5 293.1 L 534.6 292 L 533.3 291.4 L 531.3 292.9 L 531.1 295.6 L 529.9 296.8 L 528.6 295.9 L 529.1 293.9 L 527.8 293.6 L 526.1 296.4 L 525.5 297.7 L 526.8 297.2 L 524.9 298.4 L 522.4 298.5 L 521 300.8 L 519.9 301.4 L 518.9 300.1 L 519.3 298 L 516.3 298.9 L 514.8 298.9 L 515.5 297.2 L 514.1 297.3 L 513.5 295.7 L 513 296.6 L 512.2 295.6 L 511.1 296 L 509.8 296.7 L 509.1 295.5 L 507.7 295.7 L 506.4 297 L 506.5 296 L 505.4 295.4 L 503.8 297 L 504.3 295.5 L 503 294 L 501.9 294.7 L 501.2 294.1 L 499.6 295.1 L 496.4 295.8 L 494.9 295.4 L 492.4 297.5 L 491 298.8 L 491.2 300.1 L 489.8 301.1 L 492.6 304.4 L 489.3 305.9 L 489.7 303.7 L 488.5 301.5 L 488.7 300.3 L 488.1 299 L 489.8 295.9 L 488.7 295.3 L 488.6 294.2 L 487.8 293.4 L 487.7 292.3 L 486.8 291.7 L 486.6 290.5 L 485.4 289.7 L 486.2 289.1 L 485.6 287.6 L 485.9 286.7 L 486.8 287.1 L 487.3 286.1 L 489 284.7 L 489.3 282.8 L 489.1 279.8 L 489 278.7 L 489 276.6 L 491.3 276.2 L 495.6 275.4 L 496.5 275 L 496.4 274 L 497.1 272.8 L 499.1 273 L 500.3 271.8 L 501.5 271.6 L 504.9 274.2 L 508.3 275 L 516 274.7 L 517 273.7 L 520.7 274.1 L 522.4 274.7 L 524 273.3 L 525.9 274.5 L 528.9 273.7 L 530.3 274.1 L 532.9 272.9 L 534.2 271.3 L 537.1 272.7 L 538.4 273 L 539.4 272.7 L 539.8 271.8Z\" },\n { code: \"BR\", name: \"Bihar\", type: \"state\", cx: 397.8, cy: 296.6, d: \"M 359.6 256.1 L 360.3 256.8 L 361.6 257.2 L 362.6 257.6 L 363.5 259.4 L 370.9 260.5 L 372.5 263.7 L 372.1 266.7 L 371.4 267.9 L 374 269.1 L 375.6 268.6 L 377 269.9 L 378.6 270.1 L 378.7 271.3 L 380.8 272 L 380 272.8 L 383.9 272.5 L 383.5 273.9 L 384.2 275.3 L 387 275.7 L 388.7 274.4 L 389.7 274.7 L 393.8 272.4 L 396.1 274.3 L 396 277.9 L 397.9 279.2 L 398.7 280.1 L 400.9 278.9 L 401.1 278 L 402.7 277.6 L 405.2 278.5 L 406.4 278.9 L 407.7 278.8 L 409.4 278.8 L 414.3 280.8 L 414.9 281.9 L 418.5 283.8 L 419.3 282.9 L 420.9 283.4 L 422.2 282.8 L 423 282.1 L 425 281 L 425.6 279.6 L 426.7 283.1 L 428.3 284.2 L 430.4 284.1 L 430.6 285 L 431.7 285.1 L 432.9 284.1 L 435.1 283.3 L 438.3 284.8 L 439.3 284.5 L 439.9 283.4 L 441.2 284.1 L 442.4 282.6 L 443.8 283.4 L 444.7 282.1 L 445.5 283.9 L 447 284.5 L 447.9 285.2 L 449.3 283.4 L 449.5 280.9 L 450.4 281.5 L 452.3 280.5 L 451.2 282 L 452.2 282.4 L 453.2 283.8 L 452.3 284.5 L 453.7 285.5 L 452 287.3 L 450.4 288 L 448.7 290 L 447.4 290.9 L 446.3 290.6 L 446.4 292.4 L 445.2 292.1 L 443.6 293.3 L 443.3 296 L 443.1 297.7 L 445.1 298.1 L 445.1 299.1 L 444.8 300.2 L 446.2 301.3 L 448.2 302.2 L 447.9 303.5 L 447.6 304.8 L 447.9 306.1 L 448.8 306.9 L 447.8 307.3 L 446.8 306.9 L 445.5 306.1 L 444.9 306.9 L 444 307.8 L 442.8 308.6 L 441.7 309.4 L 442.4 310.2 L 442.3 311.2 L 443.9 312.5 L 443.1 313.6 L 443.4 314.5 L 442.3 314 L 440.5 313.1 L 440 311.7 L 438.3 311.7 L 437.7 310.8 L 436.7 312.5 L 435.4 312.1 L 435.2 313.5 L 435.2 314.6 L 433.4 313.8 L 431.9 313.9 L 431.1 317.3 L 430.2 316.8 L 429.3 317.3 L 427.9 318.9 L 428.1 322.3 L 427.1 323.1 L 426.3 323.9 L 425.7 329.3 L 423 328.4 L 422.3 329.8 L 422.6 331 L 421.8 330.3 L 420.1 330.3 L 419.5 329 L 418.5 330.1 L 417.1 330.4 L 415.6 329.3 L 414.3 331.1 L 413.4 331.5 L 413 333.8 L 412.2 335.2 L 409.9 333.4 L 408.3 332.9 L 409 331.7 L 408.9 330.5 L 408 330.1 L 406.9 329.2 L 405 329.4 L 404.8 326.8 L 403.9 325.8 L 402.9 325.9 L 403.1 325 L 400.9 326.2 L 399.2 324.5 L 397 324.5 L 396.1 323.9 L 395.1 326.6 L 394.1 327.3 L 394.4 329.9 L 392.4 329.4 L 392.2 330.3 L 391.1 331.3 L 390.4 330.7 L 385.8 331.3 L 382.8 332.9 L 383.2 333.7 L 381.4 335 L 381.1 333.4 L 379.2 334.1 L 378.7 335 L 377.1 335.1 L 376.7 332.9 L 375.7 333.1 L 375.6 331.7 L 374.8 331.2 L 372.2 333 L 371.7 334.6 L 369.8 334.1 L 368.6 335 L 368.7 335.9 L 368 337.2 L 367.1 336 L 365.5 334.7 L 364.4 334.5 L 363.5 333.2 L 364.2 331.9 L 363.5 330.3 L 362.7 331.2 L 361.8 331.1 L 360.8 330.8 L 360.9 331.7 L 360.2 330.9 L 359.3 332.4 L 357.9 329.2 L 356.7 328.5 L 355.2 330.8 L 353.9 331.1 L 350.5 331.8 L 345.5 331.3 L 346.5 328.8 L 345.5 328.2 L 345.1 326.8 L 344.5 326.1 L 343 324.9 L 343.1 323.7 L 342.3 322.7 L 342 319.2 L 342.4 316.4 L 341.9 315 L 343.1 314.3 L 343.5 313.3 L 344.7 313.2 L 346.5 311.6 L 348.3 311.3 L 349 310.3 L 350 309.6 L 350.8 309.2 L 352.3 309.2 L 353.2 308.6 L 352.6 307.8 L 353.5 307.6 L 355 305.5 L 358.6 303.5 L 358.4 302.1 L 360.2 301.2 L 361.2 301.9 L 363.3 302.9 L 364.3 300.8 L 365.4 300.7 L 365.9 302 L 367 301.6 L 367.9 302.5 L 368.9 301.3 L 369.3 302.4 L 369.4 301 L 371.1 301.2 L 370.4 300.4 L 370.9 299.6 L 369.4 298.5 L 368.8 297.5 L 366.4 297.1 L 366.1 296.1 L 364.8 295.4 L 363.5 295.8 L 361.4 294.4 L 360.6 293.8 L 358.9 292 L 358 291.9 L 357.3 290.8 L 357.1 288.3 L 358.6 288.8 L 359.4 287.8 L 360.5 288.2 L 361 286.4 L 360.7 285 L 358.5 284.7 L 357.1 283.1 L 354.7 283.1 L 354.7 281.3 L 356 281.6 L 357.9 280.7 L 358.7 279.3 L 358.7 278.2 L 363 279.3 L 366.2 278.6 L 365.9 277.5 L 364.2 277.1 L 363.6 275.4 L 362.4 276 L 362.5 274 L 362.3 272.6 L 360.7 273.3 L 359.8 272.8 L 359.1 271.6 L 358 271.9 L 357.9 270.9 L 357.8 268 L 356.6 267.4 L 357.3 266.7 L 355.5 266.8 L 356.4 264 L 355.8 263.1 L 354.6 262.5 L 355.2 261.4 L 353.6 261.2 L 353.7 260.2 L 354.8 259.3 L 353.9 258.2 L 355.3 257.7 L 357.5 258.1 L 359.1 256.7Z\" },\n { code: \"CH\", name: \"Chandigarh\", type: \"ut\", cx: 193.4, cy: 172.4, d: \"M 194.8 173.8 L 192.7 173.6 L 191.9 171.9 L 193.5 170.9 L 194.3 171.2 L 195 171.8 L 194.8 173.8Z\" },\n { code: \"CT\", name: \"Chhattisgarh\", type: \"state\", cx: 318.9, cy: 418.4, d: \"M 341.6 341.9 L 343.9 342.3 L 344.4 343.3 L 345.7 343.7 L 346.5 346.9 L 347 347.8 L 350 348.8 L 350.8 350.4 L 350.4 352.2 L 351.8 354.3 L 355.4 355.2 L 355.5 353.7 L 357 353.5 L 357.4 355.6 L 356.2 357.8 L 356.1 359.7 L 357 360.4 L 357.8 359.8 L 358.4 360.9 L 357.6 365.6 L 359.8 367 L 360.2 369.9 L 361.1 368.5 L 361.8 369.6 L 363 369.3 L 365.2 369.7 L 365.6 370.5 L 365.2 372.4 L 364.3 372.5 L 363.3 374.8 L 361.9 375.5 L 361.8 377.2 L 360.2 378 L 358.7 378 L 357 379.6 L 356.9 380.8 L 357.8 382.2 L 357 384.5 L 353.7 385.1 L 351.3 387.6 L 349.9 387.5 L 348.9 388 L 346.9 391 L 347.8 391.9 L 346.4 392.2 L 346.4 394.4 L 347.8 395.7 L 347.2 396.7 L 346.3 397.6 L 346.4 398.6 L 345.4 398.1 L 344.8 398.8 L 345.2 399.8 L 343.8 401.5 L 345.2 402.7 L 344.3 402.1 L 342.9 403 L 341.8 405.8 L 342.2 407.1 L 343.2 408.2 L 343.4 409.4 L 340.4 408.7 L 340 410.3 L 339.2 411.5 L 338.6 414.6 L 337 415.4 L 335.2 415 L 333.3 413.6 L 331.6 414.2 L 330.1 414 L 328.7 414 L 326.1 414.2 L 326.3 415.4 L 325.5 416.1 L 324.2 419.3 L 322.7 420.2 L 322.1 422.1 L 321.1 422 L 320.8 421.2 L 319.6 420.7 L 319.3 423.7 L 320 426.9 L 319 428.6 L 320.3 429.7 L 320.5 431.1 L 321.4 431.7 L 320.6 433.9 L 321.4 435.2 L 321.1 437.1 L 320.3 438.5 L 320.6 440.6 L 325.2 442.3 L 327.7 442.2 L 327.5 444.6 L 327.6 446.1 L 326.3 446.2 L 324.9 447.5 L 324.6 446.3 L 325.1 445.3 L 321.7 444.3 L 320.5 444.8 L 319.4 446.1 L 316.9 442 L 315.8 442.5 L 313 440.8 L 312.3 441.8 L 310.4 439.5 L 308.7 441.1 L 308.1 443.2 L 308.3 444.2 L 310.8 445.5 L 311.3 446.9 L 313.1 447.2 L 312.6 449.1 L 312.8 453.1 L 312.2 454 L 313.8 453.8 L 314.4 455.8 L 315.9 456 L 315.5 457.2 L 315.9 458.3 L 315.2 459.6 L 315.8 462.2 L 316.2 463.2 L 316.1 464.6 L 316.8 465.6 L 317.1 468.1 L 315.6 468.5 L 315.4 471 L 314.6 471.8 L 313.6 471.8 L 313.5 472.9 L 312.5 472.7 L 311 473.4 L 310.5 474.9 L 309.1 474.3 L 310.7 475.9 L 309.7 476.4 L 308.5 477.6 L 306.4 480.1 L 306 481.6 L 304 481.8 L 302.6 482.7 L 301.1 483.7 L 300.6 485.5 L 300.6 487.6 L 299.9 489.2 L 299.9 490.6 L 299 492.8 L 298.1 492.6 L 297.9 494.4 L 294.9 494.3 L 292.8 493.3 L 290.8 494.9 L 289.9 494.8 L 287.9 487.9 L 288.6 485.8 L 286 486.7 L 285.7 485.1 L 285.3 484.3 L 284.6 485.9 L 283.2 485.8 L 283.1 484.6 L 284.4 483.8 L 283.4 482.7 L 282.8 480.7 L 282.2 479.9 L 281.3 478.6 L 280.9 477.5 L 277.5 474.9 L 274.3 475.9 L 272.6 472.7 L 272.1 471.7 L 274.5 470.2 L 272.6 467.7 L 272.6 466.3 L 273.9 464.2 L 273.9 462.6 L 275.3 461.5 L 275.2 460.3 L 276.5 459.7 L 277.3 458 L 279.4 456.4 L 280.4 458.6 L 281.8 458.2 L 282.1 459.2 L 283.5 459.1 L 285.7 457.4 L 284.4 455.8 L 286.7 454.8 L 286.4 453.6 L 285.3 452.5 L 283.9 452.4 L 282.9 451.4 L 281.4 451.3 L 281.6 449.4 L 278.8 447.4 L 278.8 446.3 L 277.2 446.2 L 277.4 447.5 L 275.5 446.9 L 276.3 446.6 L 277.8 445.2 L 275.8 444.3 L 276.6 443.1 L 277.4 443.7 L 278.3 443.7 L 278.9 442.3 L 278.9 440.4 L 278.8 439.4 L 277.8 438.7 L 275.5 438.5 L 275.9 437.4 L 275.2 436.2 L 278.1 435.5 L 278.8 434.6 L 280.5 434 L 279.8 432.5 L 280.6 427.4 L 279.4 427.2 L 278.1 427.9 L 277.5 427.1 L 278.1 426.2 L 279.7 425.5 L 278.9 423.5 L 278.8 419.4 L 276.9 419.5 L 276.2 417.6 L 276.4 415.5 L 276.9 413.7 L 280.9 411.8 L 281.8 410.6 L 283.1 406.4 L 282.6 403.6 L 282.8 400.6 L 283.4 399.4 L 284.9 399.7 L 285.4 398.3 L 285.5 395.1 L 287.2 390.6 L 288 390.8 L 288.3 392.1 L 289.2 391.2 L 289.5 390.3 L 289.6 387.9 L 291.1 387.5 L 291.7 386.3 L 291.6 382.7 L 293.2 381.5 L 294.1 382.5 L 295.4 381.3 L 296.4 380.7 L 297.7 381.2 L 298.1 382.7 L 298.7 381.8 L 300 381.5 L 300.9 380.3 L 303.1 380.4 L 303.8 379.6 L 304 378.1 L 305.1 377.6 L 306.4 377.3 L 306 375.8 L 306.9 374.8 L 306.3 373.1 L 306.5 372.1 L 308.5 371.7 L 310.4 370.1 L 309.9 368 L 310.3 367.1 L 312.3 367.1 L 313.2 366.2 L 314.3 366.5 L 315.1 365.6 L 314.9 363.4 L 316 362 L 315.9 361 L 314.8 360.1 L 314 359.2 L 312.8 359.7 L 312.1 358.6 L 311.2 358.9 L 309.8 355.9 L 307.8 356.4 L 307.3 355.6 L 305.8 355.1 L 304.8 356.1 L 303.3 357 L 302.8 355.5 L 302 354.5 L 303 352.8 L 304.7 351.3 L 303.6 350 L 303.4 348.6 L 302.7 348 L 302.9 346.7 L 304.1 346.2 L 305.5 347.9 L 306.8 349 L 308.4 348.7 L 309.8 347.5 L 310.6 348 L 311.7 347.8 L 312.8 348.8 L 315.4 348.8 L 316.3 348 L 316.8 349.1 L 319.1 349.2 L 322.1 349 L 323.4 349.7 L 323.6 348.7 L 325 348.7 L 326.4 347.9 L 326.5 346.6 L 328.6 346.3 L 330 345.3 L 332.9 347.4 L 336.3 347.4 L 338.6 346.3 L 339.2 344.6 L 340.5 343.8 L 340.8 342.6 L 341.6 341.9Z\" },\n { code: \"DN\", name: \"Dadra & Nagar Haveli\", type: \"ut\", cx: 110.2, cy: 437.4, d: \"M 113.5 439.1 L 112.8 440.7 L 111.8 440 L 110 439.6 L 108.9 439.3 L 108 438.8 L 108.3 437.9 L 108 436.9 L 106.9 435.3 L 108.3 435.4 L 109.1 435 L 109.8 434.2 L 110.7 434.1 L 112.3 434.4 L 111.1 436.4 L 110.5 438.2 L 111.4 438.2 L 111.9 437 L 113.4 437.2 L 113.1 438.6Z\" },\n { code: \"DD\", name: \"Daman & Diu\", type: \"ut\", cx: 58.7, cy: 421.7, d: \"M 56.1 423.6 L 56.3 421.6 L 57.7 418.1 L 58.3 418.8 L 60 418.6 L 60.9 419.2 L 61.2 420.6 L 59.4 421.4 L 61.2 422.1 L 60.5 422.8 L 60 423.6 L 61 424.9 L 59.5 425.3 L 56.1 423.6Z\" },\n { code: \"DL\", name: \"Delhi\", type: \"ut\", cx: 200.8, cy: 226.9, d: \"M 203.1 221.3 L 203.8 222.1 L 203.3 223.1 L 205.3 225.3 L 205.9 227 L 206.5 228 L 205.5 229 L 206.5 230.5 L 204.4 231.2 L 204.3 232.6 L 202.6 233.1 L 201.6 232.2 L 201.3 230.9 L 200.5 230.2 L 199 229.7 L 198.2 230.1 L 196.2 230.5 L 195.2 229.3 L 195.6 228.4 L 196.1 227.2 L 197.4 227.2 L 197.9 225.5 L 197.6 222.5 L 199.6 222.1 L 200.6 220.8 L 201.8 221.3 L 203.1 221.3Z\" },\n { code: \"GA\", name: \"Goa\", type: \"state\", cx: 131.4, cy: 552.5, d: \"M 124 543.6 L 127.4 543.3 L 128.2 541.9 L 128.5 543 L 130 543.2 L 130.5 545.5 L 131.2 546.3 L 134 545.4 L 135.1 545.3 L 136 545.4 L 137 545.3 L 137.3 546.3 L 136.9 547.3 L 137.7 548.3 L 137 549.1 L 137.6 550.2 L 137.6 551.5 L 138.6 552 L 138.9 553.8 L 137 554.6 L 138.1 555.4 L 138.5 556.3 L 137.7 557.3 L 137.5 558.4 L 138 559.7 L 137.1 560.8 L 136 562.5 L 135.1 561.8 L 135.2 562.7 L 133.4 563.1 L 132.2 562.5 L 132.4 561.6 L 130.4 559.1 L 129.2 558.7 L 130 557.2 L 128.8 552.8 L 128.3 551.9 L 126.3 551 L 128.4 551.3 L 127.8 550 L 126.4 549.8 L 125.9 549 L 125.2 546.2 L 124 543.6Z\" },\n { code: \"GJ\", name: \"Gujarat\", type: \"state\", cx: 71, cy: 383, d: \"M 32.5 382.3 L 33.2 383.1 L 31.6 382.8 L 32.5 382.3Z M 21.4 381.9 L 20.3 383.2 L 20.5 382.2 L 21.4 381.9Z M 41.1 379 L 40 380.1 L 41.1 379Z M 8.4 361.3 L 9.6 361.7 L 8.7 362.6 L 8.4 361.3Z M 9.1 359.8 L 9.7 361 L 8.8 360.4Z M 6.5 357.2 L 6.7 359.1 L 6.2 357.9 L 5.3 358.7 L 6.5 357.2Z M 6.7 354.3 L 5.5 356.5 L 5.6 355.3 L 6.7 354.3Z M 6.1 353.6 L 5.7 354.6 L 6.1 353.6Z M 3.9 349.2 L 4.8 349.7 L 4.6 352.9 L 2.9 354.7 L 2 354.5 L 0.8 354.5 L 0 353.7 L 1.9 353 L 3.2 351.2 L 3.9 349.2Z M 3 349.3 L 3.1 350.9 L 2.1 351.7 L 2.1 349.6 L 3 349.3Z M 7 348.5 L 7.5 350.4 L 5.7 350.8 L 6.1 350 L 7 348.5Z M 4.5 347.8 L 5.4 349.1 L 4.1 349 L 4.5 347.8Z M 5.8 346 L 5.8 347.6 L 4.3 347.4 L 3.7 348.2 L 3.8 347 L 5.8 346Z M 7.8 345.9 L 8.9 346.6 L 7.5 347.9 L 6.9 347.1 L 7.9 346.4Z M 6.7 344.5 L 7.5 346.2 L 5.8 348.1 L 6.4 346.1 L 5.5 345.9 L 5.9 344.8Z M 5.5 344.5 L 5.1 346 L 3.6 346.8 L 3.4 348.8 L 1.8 349.5 L 1.8 352 L 0.1 351 L 1.1 349.9 L 0.6 348.5 L 2 346.5 L 3.3 346.4 L 3.9 344.9 L 5.5 344.5Z M 65.9 327.5 L 70.2 329.3 L 71.4 328.1 L 72.1 328.9 L 74.5 327.6 L 77.4 327.7 L 78.4 328.6 L 81.5 327.7 L 81.8 328.9 L 82.9 329.4 L 83.3 327.6 L 84.3 327.8 L 84.8 328.8 L 87.2 326.8 L 88 328.2 L 89.8 329.1 L 90.8 329.2 L 93.2 329.2 L 94 329 L 93.4 329.8 L 92.4 329.5 L 92.7 331 L 94.1 330.6 L 94.8 331.9 L 96 331.8 L 95.9 332.9 L 96.5 334.3 L 97.5 334.2 L 97.4 333.2 L 98.4 331.8 L 99.3 332.6 L 101.8 333 L 101.7 334 L 102.6 335.4 L 105.7 335.3 L 106.9 336.3 L 108.4 335.3 L 108.6 332.7 L 109.8 332.8 L 110.8 332.1 L 111.1 333.8 L 110.5 334.6 L 112.5 335.7 L 113.4 335.1 L 113.4 336.1 L 112.7 336.9 L 110.5 339.8 L 111.2 340.9 L 113.7 341.9 L 113.1 343.1 L 114.2 344.1 L 115.2 343.7 L 116.1 342.5 L 116.2 341.5 L 117.1 341.2 L 117 342.2 L 118 343.1 L 117.8 344.6 L 118.2 346.1 L 116.8 347.8 L 116.8 349.6 L 118.1 349.8 L 119.4 351.6 L 120.2 353.8 L 121.7 352.9 L 123.5 353.7 L 123 355.5 L 123.5 356.6 L 122.9 357.9 L 124.5 357.8 L 125 358.9 L 125.9 357.7 L 127.4 358 L 128.8 360.7 L 129.8 360.6 L 130.5 359.8 L 131 360.7 L 131.9 360.9 L 132.2 361.8 L 133.5 361.8 L 134.2 362.4 L 134.1 364.6 L 135.3 365.3 L 135.9 364.3 L 137.7 366.1 L 138.5 367.5 L 139.6 369.5 L 139.4 370.7 L 140.2 371.5 L 141.4 370.9 L 142 372.5 L 140.3 375.7 L 139.9 377.8 L 137.2 377.8 L 134.7 380.9 L 132.7 380.1 L 132 381.1 L 133.1 381.1 L 133 382.2 L 134 383.2 L 134.5 382.4 L 135.4 382.7 L 136.9 382.9 L 137.8 383.9 L 136.3 384.8 L 135.5 385.7 L 134.2 385.4 L 133.7 384.5 L 132.8 384.7 L 132.5 386.6 L 133.3 387.6 L 134 388.3 L 134.1 391.1 L 135.3 391.4 L 133.4 393.2 L 134.7 393.9 L 126.9 397.8 L 127.7 398.6 L 128.9 400.8 L 128.6 402.2 L 126.4 402.7 L 127.2 403.3 L 128.1 405.8 L 132.8 404.3 L 135.4 404.3 L 136.6 404.5 L 138.1 404.1 L 138.6 405.8 L 136.8 406.6 L 134.1 406.6 L 132.7 406.1 L 132.3 407.7 L 130.5 408.3 L 130 410.6 L 128.8 411.5 L 127.4 411.4 L 127.2 413.7 L 125.4 413.8 L 124 414.2 L 123 414.6 L 122.5 413.6 L 123.5 415.2 L 125.6 415.1 L 125.4 416.5 L 126.1 417.6 L 127 417.9 L 129.1 418.3 L 128.8 419.3 L 130 421.7 L 130.1 424.1 L 128.6 424.4 L 128.1 425.2 L 127.2 425.3 L 127.5 427.1 L 125.5 428.3 L 124.4 428.1 L 123 428 L 122.3 426.6 L 120.8 425.7 L 119.9 426.2 L 119.5 424.7 L 118.6 426 L 117.7 426.5 L 118.6 427.6 L 119.5 427.9 L 119.5 428.9 L 118.3 432 L 117.5 432.6 L 118.2 433.5 L 118.3 437 L 117.1 437.4 L 115.6 437 L 115.2 438.4 L 113.5 439.1 L 113.8 437.7 L 111.9 437 L 111.4 438.2 L 110.5 438.2 L 110.4 436.5 L 112.2 435 L 111.2 434.6 L 111.1 433.3 L 109.8 434.2 L 109.1 435 L 108.3 435.5 L 107.4 434.9 L 108 436.9 L 105.8 436.6 L 104.9 437.5 L 104.9 438.5 L 102.7 438.7 L 103.1 435 L 104.6 433.1 L 106 429.9 L 106.3 427.8 L 103.9 420.4 L 104 419.2 L 102.4 416.7 L 103.4 416.2 L 102 416.1 L 102.3 414.4 L 101.1 414.1 L 100.9 415.7 L 100 412.5 L 99.3 410.8 L 100.2 408.6 L 101.8 406.6 L 100.6 407.3 L 101.3 405.2 L 100.2 405.9 L 99.5 404.4 L 100.2 402.9 L 101.9 402 L 103.8 402.2 L 104.9 401.6 L 103.7 401.7 L 102.7 401.1 L 98.2 401.7 L 97.5 400.8 L 98.3 400 L 98.9 397.8 L 97.7 397 L 97.4 394.6 L 98.4 389.9 L 99.2 388.6 L 100.7 388.2 L 103.1 389.3 L 104.3 387.5 L 105.9 388.1 L 106.7 386.7 L 105.6 387.6 L 105.1 386.6 L 103 387.9 L 101.6 387.7 L 100.4 386.6 L 98.3 387.6 L 97 388.7 L 97.2 387.7 L 95.9 386.2 L 94.9 385.7 L 95.4 384.8 L 94.6 384.1 L 95 385 L 94.5 385.9 L 95.4 386.3 L 95.5 388 L 94.1 386.9 L 94.2 388.5 L 94.9 389.4 L 93.8 390.5 L 92.3 395.2 L 91.5 392.3 L 92.5 391.7 L 91.4 392.2 L 91.3 393.1 L 91 394.8 L 91.8 396 L 92 399.9 L 93 402.6 L 91.1 407.2 L 88.9 409.8 L 88.5 411 L 87.9 411.9 L 88.6 413.1 L 86.5 414.1 L 85.5 414.9 L 82 416.1 L 79.6 417.4 L 76.3 419.1 L 75.1 419.1 L 73.4 421 L 72 420.9 L 68.2 422.6 L 67 423.2 L 65.6 423.7 L 62.6 424.1 L 61 424.9 L 60.2 423.8 L 60.5 422.8 L 61.2 422.1 L 59.4 421.4 L 61.2 420.6 L 60.9 419.2 L 60 418.6 L 58.3 418.8 L 57.7 418.1 L 56.3 421.6 L 56.1 423.6 L 54.8 423.4 L 50.8 421.4 L 43.2 415.3 L 34.5 405 L 35.6 403.8 L 35 402.1 L 33.6 402.3 L 34.6 403.2 L 34.3 404.8 L 23.6 394.9 L 17.4 387.7 L 16.9 385.9 L 18 383.4 L 19.9 381.8 L 19.4 383 L 19.9 383.9 L 22.7 383.2 L 21.9 385.9 L 23.6 387.2 L 25.6 386.4 L 25.9 385.5 L 27.8 385.8 L 29.3 385.3 L 30.2 384.1 L 29.6 382.9 L 30.8 383.6 L 31 384.8 L 33.1 384.8 L 34.1 383.9 L 34.1 382.7 L 34.8 381.9 L 35.2 383 L 36.4 383.8 L 37.2 382.4 L 39.4 381.1 L 41.8 379.8 L 44.6 380 L 46.4 377.3 L 46.6 375.6 L 47.8 375 L 48.9 372.2 L 50.5 370.7 L 52.1 367.2 L 50.8 367.5 L 50 368.3 L 49.7 370.3 L 48.8 370.7 L 46.3 369.5 L 44.6 370.4 L 43.7 370 L 43.9 370.9 L 36.4 372.7 L 35.4 373.5 L 34.3 375.4 L 32.9 374.8 L 31.9 375 L 30.9 374.1 L 29 374.6 L 26.4 373.2 L 22.8 373 L 14.2 367.4 L 12.9 367.1 L 9.2 363.8 L 11 362.4 L 10.2 360.5 L 9.5 359.7 L 8.4 359.5 L 7.9 358.7 L 7.1 357.6 L 6.8 353.5 L 7.6 352 L 10.1 350.4 L 10.8 349.1 L 12.4 348.2 L 9.5 348.4 L 7.7 350.4 L 7.4 348.7 L 8.7 347.3 L 10.8 346.4 L 9.8 346.5 L 8.4 346.2 L 8.1 345.3 L 12.7 345.3 L 13.2 337.1 L 14.4 336.7 L 14.9 339.2 L 15.8 339.5 L 17.2 337.5 L 18.4 338.8 L 20.5 337.7 L 22.9 338.5 L 25.4 337.5 L 29.7 338 L 31.9 337.5 L 34.7 340 L 40.9 340.2 L 42.3 339.6 L 43.6 337.2 L 53.9 333.9 L 54.7 334.4 L 53.8 335.8 L 54.2 336.7 L 53.9 338.1 L 55.7 338.8 L 59.1 338.8 L 61.1 338 L 62.6 335.8 L 63.5 335.4 L 64.6 335.8 L 66.5 334.4 L 63.7 333.4 L 63.8 331.4 L 64 328.7 L 65.9 327.5Z\" },\n { code: \"HR\", name: \"Haryana\", type: \"state\", cx: 177, cy: 209.9, d: \"M 193.7 168 L 194.6 167.4 L 194.7 168.3 L 195.6 169 L 196.7 168.3 L 197.9 170.5 L 198.9 170.5 L 198.6 171.4 L 199.2 172.4 L 200.6 172.3 L 202.3 173.7 L 202.4 176.1 L 201.4 177 L 203.1 178.1 L 203.5 179.3 L 204.6 179.1 L 205.9 180 L 207.9 180.9 L 209.1 179.6 L 208.3 181.1 L 209.9 181 L 210.4 180.1 L 211.1 181.4 L 212.3 182.1 L 211.8 183.7 L 210.8 184.4 L 209.6 186.9 L 208.5 187.4 L 207.9 188.7 L 205 190.6 L 204.8 191.8 L 203 194.3 L 202.3 197.2 L 201.5 197.8 L 202.1 199.5 L 200.8 202.3 L 201.4 203.5 L 202 206.4 L 202.2 207.7 L 201.6 208.8 L 201.8 210.8 L 201.7 212 L 202.1 213.1 L 201.6 215.1 L 203.7 217.7 L 203.2 219 L 203.9 220.3 L 203 220.7 L 202 221.9 L 200.6 220.8 L 199.6 222.1 L 197.6 222.5 L 197.9 225.5 L 197 226.7 L 196.1 227.2 L 195.6 228.4 L 195.2 229.3 L 196.2 230.5 L 198.2 230.1 L 199 230.4 L 200 230.4 L 201.3 230.9 L 201.6 232.2 L 202.6 233.1 L 204.3 232.6 L 204 231.7 L 206.5 230.5 L 209.6 233 L 210 234.4 L 210.1 235.7 L 209.4 236.7 L 211.1 237.3 L 210.6 238.4 L 210.1 239.5 L 210 241.1 L 209.7 242.5 L 211 243.8 L 211 244.7 L 209.5 245.3 L 209.2 246.6 L 208.2 246.3 L 208.2 247.2 L 206.6 247.2 L 205.1 248.6 L 204.1 249.1 L 203.3 248.2 L 202.7 249.1 L 201.8 249.3 L 199.8 248.2 L 199.4 249.3 L 200.4 249.7 L 198.7 250.2 L 198.2 252.4 L 197.4 251.9 L 196.2 251.3 L 196.7 247.9 L 197.5 245.7 L 197.1 243.7 L 198 239.9 L 195.5 237.8 L 194.4 238.2 L 194.2 239.6 L 191 241.1 L 191.2 243.1 L 189.8 243.4 L 188.5 244.4 L 188.5 242.6 L 186.6 242.3 L 187.6 242 L 186.5 241.2 L 187.6 240.9 L 187 239.6 L 184.8 240.1 L 183.9 239.1 L 182.6 239 L 184.4 240.3 L 183 241 L 184.3 241.7 L 184 242.7 L 183 242.9 L 182.7 242.1 L 180.3 242.1 L 181.2 242.8 L 179.8 243.6 L 180.1 245.8 L 180.7 247.1 L 180.2 248.5 L 178.3 247 L 177.5 247.5 L 175.5 247.1 L 175.8 245.9 L 174.7 245.7 L 174.9 244.9 L 176 244 L 175.7 242.8 L 176.6 242.7 L 177.1 241.7 L 176 242.3 L 174.9 241.2 L 177 239.2 L 177.8 239.9 L 177.3 238.4 L 176.6 237.4 L 176.8 236.4 L 175.3 235.4 L 174.6 234.1 L 173.8 233.5 L 171.1 233.1 L 171.3 231.9 L 168 229.6 L 167.7 228.1 L 166.3 227.8 L 165.7 224.3 L 165 223.3 L 165.3 222.1 L 164.3 219.8 L 165.4 218.5 L 165.3 217.6 L 163.6 217.4 L 163.5 216.2 L 162.4 216 L 162.7 214.5 L 162.8 213 L 162.7 211.1 L 161.6 212 L 161 210.2 L 158.8 211.8 L 157.8 210.9 L 156.2 212 L 154.7 210.4 L 153.6 210.8 L 152.1 208.4 L 150.2 207.4 L 148.3 208.6 L 145.9 208.2 L 145.7 209.3 L 144.6 209.3 L 143.8 207 L 143.1 206.2 L 144.3 206 L 145.1 204.2 L 144 203.2 L 144.9 198.3 L 143.1 198.6 L 141.8 198.5 L 141.7 197.4 L 143.7 195.3 L 143.2 194.4 L 142.9 193.3 L 145.8 194.3 L 146.8 192.6 L 149.3 192 L 150.4 192.9 L 151.2 193.4 L 153.5 195.6 L 155.2 195 L 155.7 194.1 L 156.1 195.2 L 156.2 196.4 L 157.2 197.6 L 157.3 196.5 L 159 198.3 L 158.1 199 L 158.2 200 L 157.3 200.6 L 157.7 201.5 L 158.8 202.1 L 158.8 203.7 L 160.4 203.1 L 160.1 202 L 160.9 200.4 L 162.3 199.4 L 163.8 196.9 L 165.3 198.1 L 166.3 198 L 167.6 198.5 L 169.5 198.2 L 169.7 196.8 L 171.2 196.4 L 172.5 196.7 L 173.6 198.4 L 175.5 198.9 L 176.7 198.2 L 178.1 196.9 L 179 197.2 L 181.8 195.3 L 180.5 194.8 L 180.1 193.7 L 180.9 193.3 L 180.6 191.4 L 182.1 189.1 L 180.6 188.3 L 182 188.7 L 183.6 189 L 183.7 187.9 L 185.1 188.5 L 184.9 187 L 186.5 189.2 L 187.6 189.8 L 188.9 189.3 L 189.9 189.7 L 190.7 186.4 L 189.5 185.1 L 188.3 185.9 L 188.7 184.9 L 190.1 184.8 L 191.6 183.3 L 192.5 183.1 L 192.1 181.5 L 193.4 180.3 L 194.6 181 L 196.2 181.7 L 197.3 181.7 L 196.4 180.3 L 196.4 179.1 L 197.1 178.3 L 196.3 177.7 L 196.9 176.1 L 195.7 175 L 195.8 174 L 194.8 173.8 L 195 171.8 L 195 170 L 193.7 168.8Z\" },\n { code: \"HP\", name: \"Himachal Pradesh\", type: \"state\", cx: 205.7, cy: 143.6, d: \"M 173.5 123.6 L 174.6 121.8 L 174 120.5 L 174.4 118.7 L 173.5 117.2 L 171.7 115.7 L 172 114 L 173.3 114 L 175.1 115.2 L 178.2 113 L 178.4 112 L 181.7 111.3 L 182.5 109.3 L 185.2 107.1 L 186.9 107.3 L 188.7 106.5 L 190.5 107.8 L 192.8 107.3 L 193.4 105.4 L 194.4 105.7 L 194.5 107.9 L 195.4 109.1 L 197 111.2 L 198.9 112.4 L 200.6 112.9 L 202 112.7 L 202.2 114.5 L 204 115 L 205.8 116.1 L 206.3 117 L 207.6 115.2 L 209.2 115.9 L 209.8 115.2 L 212.1 113.7 L 213.6 113.2 L 215 112.9 L 216.7 114.7 L 216.1 115.8 L 218 116.8 L 218.8 118.2 L 219.3 120.4 L 221.1 123.3 L 222.3 123.1 L 222.2 122 L 223.6 121.3 L 224.9 120.8 L 226.3 121.1 L 228.1 119.9 L 229.8 118.6 L 229.7 121 L 230.2 122.3 L 228.2 123.5 L 228.2 124.8 L 228.5 126.3 L 230.1 124.8 L 231.5 125.7 L 231.3 126.8 L 233.2 127.8 L 231.9 129.6 L 232 131.4 L 231.4 132.4 L 233.6 132.3 L 234.8 133.2 L 234.4 134.8 L 234.9 135.7 L 236.1 136.1 L 238 138.8 L 238.9 139 L 237.1 144.5 L 237.8 145.3 L 238 147.2 L 239.1 147.3 L 240.2 149.3 L 237.4 151.8 L 237.6 152.7 L 239.4 153.6 L 239 154.9 L 240.1 155.5 L 240.2 156.8 L 241.9 158.7 L 242.1 159.6 L 243.5 160.9 L 244 162.5 L 241.1 162.7 L 239.9 161.7 L 239.4 160.1 L 236.1 160.4 L 234.9 159.3 L 233.6 160.1 L 232.1 160.2 L 231.5 159.1 L 230.4 159 L 229.5 157.9 L 228.2 157.9 L 226.7 159.3 L 224.8 159.4 L 223.4 160.5 L 222.1 160.7 L 220.4 160.8 L 218.9 161.5 L 217.9 163.4 L 217 163.9 L 217.5 165.3 L 216.9 166.4 L 215.5 166.6 L 215.7 167.6 L 216.9 167.6 L 216.7 169.3 L 215.7 168.7 L 215.7 170.1 L 214.4 171.7 L 215.6 173.2 L 216.5 174.4 L 216.5 175.6 L 215.4 176.1 L 216.1 177.1 L 217 177.1 L 216.9 178.4 L 214.2 180 L 212 180.6 L 211.9 181.8 L 210.4 180.1 L 209.9 181 L 208.3 181.1 L 209.1 180.3 L 207.9 180.9 L 206.7 179.7 L 204.6 179.1 L 203.5 179.3 L 203.1 178.1 L 201.9 177.6 L 202.4 176.1 L 202.3 173.7 L 200.6 172.3 L 199.7 172 L 198.6 171.4 L 198.9 170.5 L 197.9 170.5 L 196.7 168.3 L 195.6 169 L 194.7 168.3 L 194.6 167.4 L 193.7 168 L 192.4 166.5 L 190.1 165.4 L 189.8 164.1 L 190.5 162.6 L 189.6 162.2 L 189.7 160.7 L 190.7 159.9 L 189.4 159.8 L 189.9 158.9 L 189.2 158.1 L 188.4 158.8 L 187.4 158.3 L 186.9 157.4 L 186.1 158.1 L 184.9 155.2 L 184.5 153.9 L 183.5 154.9 L 183.9 156.2 L 183 156.5 L 180.2 157.4 L 180.1 156.5 L 179.8 154.6 L 176.4 148.4 L 174.6 143.9 L 175.7 143.9 L 173.9 140.3 L 171.5 139.2 L 169.3 137.4 L 168.4 136.9 L 167.3 137.2 L 168.7 134.6 L 167.8 134.1 L 167.8 132.7 L 170.4 131.7 L 172.8 128.9 L 174.8 127.8 L 173 125.4 L 173.5 123.6Z\" },\n { code: \"JK\", name: \"Jammu & Kashmir\", type: \"state\", cx: 186.1, cy: 65.8, d: \"M 150.7 1.3 L 152 2.8 L 154.6 2.7 L 156.4 2.6 L 158 1.3 L 159.7 0.6 L 161.4 1.5 L 163.3 4.2 L 165.4 7.4 L 168.2 10.6 L 169.4 13 L 173.1 15.4 L 176.6 17.1 L 179.6 19.9 L 183.1 21.1 L 185.9 24.1 L 187.6 25.6 L 190.5 25.9 L 193 28.6 L 193.1 30.5 L 192.6 32.2 L 193.3 34.2 L 194.6 36.2 L 197.5 37 L 201.1 37 L 205 38.2 L 207.4 40.4 L 208.3 43.2 L 209.4 45.2 L 213.2 45.6 L 217.5 43.6 L 221.2 42.7 L 224.2 42.7 L 226.4 39.2 L 228.9 37 L 231.8 36.4 L 234.1 35.4 L 236.3 33.8 L 240 33.5 L 243.1 34.4 L 245.1 35.5 L 246.4 34.8 L 246.4 32 L 247.5 30.5 L 249.5 30 L 252.1 32.2 L 253.5 33.8 L 255.3 34.2 L 258.6 35 L 261.2 35.7 L 263.3 34.8 L 264.8 34.2 L 266.2 36.5 L 267.5 38.7 L 269.3 39.6 L 271.6 41.3 L 272.2 43 L 271.7 44.8 L 272 46.8 L 271.9 48.2 L 270.9 50 L 270.8 51.3 L 269.7 52.8 L 269.5 54.5 L 269.6 57.3 L 268.8 59.4 L 267.9 61.5 L 267.3 63 L 266.8 65.4 L 265.2 66.2 L 263.5 67 L 261.2 68.1 L 261.2 70.3 L 260.4 71.7 L 258.3 71.6 L 256.1 71.7 L 255 72.6 L 255.2 73.8 L 256.2 75.6 L 256.7 77.8 L 255.8 81.9 L 253.6 84.3 L 252.2 84.9 L 250.1 84.3 L 247.7 83.5 L 246.2 84.2 L 244.1 84.6 L 242.8 85 L 242.2 86.3 L 242.7 88.2 L 243.5 89.9 L 244.5 91.4 L 245.9 93.9 L 245.5 95.3 L 244.4 96.4 L 242.8 97 L 242.5 98.5 L 242.7 100.3 L 242.2 101.1 L 245.5 104.1 L 245.7 106 L 248.2 107 L 253.3 107.3 L 252 111.3 L 252 112.7 L 254.2 115.1 L 254.7 117.5 L 256.1 118.6 L 256.8 121 L 256.3 122.7 L 254.1 123.3 L 251.1 126 L 249.9 125 L 248.6 125.3 L 246.9 126.6 L 246.4 129.1 L 245.1 128.7 L 243.5 129.8 L 242.1 129.2 L 239.1 126.3 L 238.7 123.8 L 239.1 123 L 238.3 120.3 L 236.2 121.6 L 235.6 122.7 L 233.8 122.6 L 232.4 123.6 L 230.8 124.1 L 230.7 125.3 L 228.5 126.3 L 227.7 125.4 L 228.2 123.5 L 230.2 122.3 L 229.7 121 L 229.8 118.6 L 228 119.2 L 226.3 121.1 L 224.9 120.8 L 224.2 121.8 L 222.9 122.3 L 222.3 123.1 L 221.1 123.3 L 219.3 120.4 L 219.5 118.5 L 218 116.8 L 216.1 115.8 L 216.7 114.7 L 215 112.9 L 213.9 112.5 L 212.1 113.7 L 210.6 115.2 L 209.2 115.9 L 207.6 115.2 L 206.9 116.9 L 205.8 116.1 L 204.7 115.5 L 202.8 114 L 202 112.7 L 200.6 112.9 L 199.7 112.2 L 197 111.2 L 196.1 109.1 L 194.5 107.9 L 195 105.5 L 193.9 105.2 L 192.8 107.3 L 190.5 107.8 L 189.5 106.6 L 186.9 107.3 L 185.2 107.1 L 182.5 109.3 L 181.7 111.3 L 178.4 112 L 178.2 113 L 175.1 115.2 L 173.3 114 L 172 114 L 171.7 115.7 L 173.5 117.2 L 174.4 118.7 L 174 120.5 L 174.6 121.8 L 173.5 123.6 L 171.9 126 L 170.6 126.2 L 169.8 127.8 L 165.7 129.7 L 165.1 131.6 L 164.8 130.7 L 163.1 130.3 L 161 130 L 158.2 128.2 L 156.9 127.9 L 155.6 126.2 L 154.6 125.8 L 153.3 127 L 150 125.7 L 147 126 L 145.7 122.6 L 146.5 121.4 L 145.9 119.7 L 146.9 116.5 L 145.7 116.9 L 145.1 118.7 L 143.2 119.1 L 141.9 119.9 L 138.8 119.6 L 137.3 118.5 L 135 117.5 L 133.3 115.8 L 130.6 114.9 L 128.4 113.2 L 125 113.2 L 124.2 111.6 L 123 110.5 L 121.5 109.2 L 122.2 106.5 L 121.2 104.6 L 120.9 101.2 L 122.1 99.8 L 121.2 96.4 L 121.7 95.1 L 121.9 93.4 L 120.2 91.8 L 120.4 90.3 L 121.4 89 L 120.6 85.6 L 119 84 L 119.1 80.9 L 118.7 78.4 L 117.7 75.7 L 118.1 73 L 118.1 71.1 L 119.5 69.6 L 121.9 68.9 L 123.7 68.2 L 123.8 66.1 L 125.2 63.6 L 126.7 63.4 L 130.3 63.3 L 131.6 62.3 L 132.5 59.1 L 133.4 57 L 133.4 54.9 L 131.5 52.9 L 128.8 51.7 L 126.7 51.1 L 125.4 50.1 L 124.6 48.5 L 125.1 46.8 L 126.6 45.8 L 127.2 44.5 L 126.1 42.1 L 123.9 42.2 L 121.3 41.9 L 119.2 41.3 L 115.4 40.9 L 113.4 39.1 L 112.4 37.1 L 111.7 34.3 L 108.8 32.9 L 105.4 32.1 L 103.3 33.5 L 100.9 33.6 L 100.1 32.3 L 100 30 L 100.5 28.8 L 100 27 L 100.4 25.3 L 101.5 22.8 L 104 21 L 106.7 18.7 L 109.2 16 L 111.6 13 L 112.5 10 L 114.7 8.5 L 118 8.9 L 122.2 9.3 L 126.9 9.5 L 129.1 9 L 127.1 6.7 L 125.3 5.7 L 126.2 4.4 L 128.4 4.1 L 130.3 5.8 L 133.1 6.5 L 134.5 4.8 L 136.4 4.3 L 138.3 3.5 L 142.1 1.5 L 143.7 0.2 L 146.1 0 L 147.9 0.3 L 150.7 1.3Z\" },\n { code: \"JH\", name: \"Jharkhand\", type: \"state\", cx: 394, cy: 352.8, d: \"M 345.5 331.3 L 350.5 331.8 L 353.9 331.1 L 355.2 330.8 L 356.7 328.5 L 357.9 329.2 L 359.3 332.4 L 360.2 331 L 360.9 331.7 L 360.8 330.8 L 361.8 331.1 L 362.7 331.2 L 363.5 330.3 L 364.2 331.9 L 363.5 332.4 L 364.3 333.7 L 365.5 334.7 L 366.4 335.5 L 368 337.2 L 368.7 335.9 L 368.6 335 L 369.6 334.8 L 371.7 334.6 L 372.2 333 L 374.8 331.2 L 375.7 331.7 L 375.7 333.1 L 376.7 332.9 L 377.1 335.1 L 378.7 335 L 379.2 334.1 L 380.6 334.1 L 381.4 335 L 383.3 333.7 L 382.8 332.9 L 385.8 332 L 390.4 330.7 L 391.1 331.3 L 391.5 330.3 L 392.4 329.4 L 394.4 329.9 L 394.1 327.3 L 395.2 326.6 L 396.1 323.9 L 397 324.5 L 399.2 324.5 L 400.9 326.2 L 403.1 325 L 402.9 325.9 L 403.9 325.8 L 404.8 326.8 L 405 329.4 L 406.4 329.8 L 408 330.1 L 409.3 329.9 L 409 331.7 L 408.3 332.9 L 409.9 333.4 L 411.4 335 L 412.5 333.9 L 413.4 331.5 L 414.3 331.1 L 415.6 329.3 L 417.1 330.4 L 418.5 330.1 L 418.9 329 L 420.2 329.6 L 420.9 330.3 L 422.6 331 L 422.3 329.8 L 423 328.4 L 425.7 329.3 L 426.7 324.4 L 427.1 323.1 L 428.1 322.4 L 427.9 318.9 L 429.3 317.3 L 430.2 316.9 L 431.1 317.3 L 431.9 313.9 L 432.9 314.4 L 435.2 314.6 L 435.2 313.5 L 435.4 312.1 L 436.7 312.5 L 436.9 311.2 L 438.3 311.7 L 440 311.7 L 440.5 313.1 L 442.2 313.3 L 442.1 317.2 L 444.4 318.8 L 446.4 321.3 L 444.6 323.2 L 444.3 324.6 L 443.4 325.4 L 444.9 326.4 L 444.6 327.6 L 444.5 328.8 L 445.1 329.6 L 444.6 330.4 L 443.7 330.7 L 441.9 329.9 L 442.8 330.8 L 442.5 332.2 L 442.3 334.1 L 441.6 336.8 L 440.6 337.1 L 439.9 338.3 L 438.9 338.4 L 440.2 339.8 L 440.1 340.7 L 437.4 340.5 L 438.3 341.2 L 437.4 341.7 L 435.7 341.5 L 435.6 343.1 L 435.5 344 L 434.4 344.2 L 432.6 344.1 L 431.7 344.3 L 429.9 343.3 L 430.5 345.2 L 431.2 346.9 L 430.2 346.7 L 430 348.7 L 428.8 348.3 L 427.5 347.7 L 428.3 348.8 L 427.4 349.4 L 423.8 347.7 L 422.2 347.3 L 421.7 348.2 L 420.5 349 L 420.5 350.3 L 419.9 352.1 L 418.7 352.3 L 417.7 351.9 L 415.3 352.5 L 413.9 353.5 L 411.9 353.5 L 410.6 354.6 L 410.1 355.7 L 410 356.8 L 408.8 358.1 L 407.5 358.7 L 407.4 357.5 L 405.3 357.4 L 405.3 355.1 L 403.1 354.7 L 402.2 355.5 L 403.1 356.9 L 400.7 357.8 L 399 357.5 L 398.9 358.9 L 399.6 359.9 L 399.2 361.1 L 398.1 362.6 L 398.2 364.2 L 400.1 365.9 L 402.8 365.5 L 405.1 367 L 405.4 368 L 406.8 369.2 L 408.7 368.7 L 410.9 369.7 L 413.2 369.3 L 414.2 369.4 L 413.7 370.4 L 412.6 370.3 L 411.8 370.9 L 412.4 371.6 L 411.8 372.5 L 411.4 374.5 L 413.4 376.4 L 415.9 377.1 L 416.7 379.5 L 419.1 379.5 L 420 381.3 L 418.8 381.9 L 419.2 383.1 L 421 383.9 L 420.7 385.6 L 422 386.3 L 422 387.4 L 420.4 387.4 L 420.1 388.3 L 418.3 388.3 L 416.7 387.8 L 415.3 386.8 L 414 386.2 L 413.3 385.2 L 411.9 385.6 L 410 385.1 L 408.3 382.6 L 404.4 381.7 L 402.9 379.7 L 402.5 380.8 L 401.3 381.3 L 400.9 382.4 L 402.2 383.2 L 402.5 384.4 L 401.8 385.3 L 403 386 L 401.3 387.6 L 402.6 389 L 402 390.9 L 400.7 393.1 L 399.9 394.3 L 396.6 393.8 L 397.2 391.6 L 398.2 391.6 L 397.5 390.8 L 394.8 392.3 L 394 391.3 L 392.8 391.7 L 391.6 391.4 L 388.3 389.7 L 387.5 390.6 L 386.2 390.9 L 384.6 393.5 L 384.2 392.5 L 383.3 391.9 L 382.1 391.9 L 381.6 391.1 L 380.4 390.8 L 379.5 391.6 L 380 390.8 L 381 386.9 L 382 386.4 L 381.5 385.2 L 380.8 381.8 L 378.4 382.8 L 377 383.3 L 375.7 383.1 L 373.8 382.7 L 368.7 383.3 L 367.6 383.6 L 367 384.3 L 363.4 385.3 L 362.4 384.4 L 361.2 384.4 L 360.3 383.7 L 359.9 382 L 356.9 380.8 L 357 379.6 L 358.7 378 L 360.2 378 L 361.8 377.2 L 361.9 375.5 L 362.6 374.9 L 364.3 372.5 L 365.2 372.4 L 365.6 370.5 L 365.2 369.7 L 363.1 370 L 361.8 369.6 L 361.1 368.5 L 360.2 369.9 L 359.8 367 L 357.6 365.6 L 358.4 360.9 L 357.8 359.8 L 357 360.4 L 356.1 359.7 L 356.2 357.8 L 357.4 355.6 L 357 353.5 L 355.5 353.7 L 355.4 355.2 L 351.8 354.3 L 350.4 352.2 L 350.8 350.4 L 350 348.8 L 347 347.8 L 346.5 346.9 L 345.7 343.7 L 344.4 343.3 L 343.9 342.3 L 341.6 341.9 L 343.4 337.8 L 342.8 336.6 L 344.5 335.3 L 344 334.3 L 342.9 333.1 L 343.2 331.9 L 345.5 331.3Z\" },\n { code: \"KA\", name: \"Karnataka\", type: \"state\", cx: 183.9, cy: 559.3, d: \"M 134 545.4 L 134.1 543.8 L 135.8 542.9 L 136.3 542.2 L 136.8 543.2 L 137.8 543.3 L 139.4 542.5 L 140 540.8 L 139 540.6 L 139.6 539.7 L 140.1 540.6 L 140 539.5 L 141.8 536.2 L 140 536.3 L 141 534.5 L 142.2 535.1 L 142.2 533.7 L 142.8 532.7 L 142.5 531.7 L 140.7 531.1 L 139.2 530.3 L 138.5 529.5 L 138.5 528.2 L 139.5 527.9 L 138.8 526.5 L 137.9 526.3 L 138 525.3 L 137.3 525.9 L 137.4 524.3 L 138.3 525.3 L 138.6 524.1 L 140 524.7 L 140.3 523.5 L 141.9 522.9 L 142 521.6 L 142.4 522.4 L 143.6 522.2 L 144.2 524.1 L 145.6 523.6 L 146.8 522.9 L 146.1 522.1 L 146.9 521.2 L 147 520.3 L 150.5 519 L 152 519 L 151.8 517 L 153 516.4 L 152.1 515.3 L 154.4 514.9 L 155.8 514.8 L 156.9 516.5 L 158 516.5 L 158.6 517.3 L 160.1 516.5 L 160.3 514.6 L 161.6 514.7 L 162.7 514.1 L 164.3 513.9 L 164.9 514.9 L 166.6 514.4 L 166.8 513.4 L 167.5 514.3 L 169 514.5 L 168.9 512.7 L 169.1 511.3 L 167.9 509.5 L 168.7 508.6 L 168.7 507.4 L 167.4 506.4 L 167.6 505.5 L 166.8 504.5 L 168.1 502.2 L 169.1 502.7 L 169.4 503.8 L 170.4 503.6 L 171.9 504.8 L 172.4 503.5 L 173.2 504.4 L 173.8 503.7 L 173.9 505.2 L 174.8 505.9 L 177.6 505.2 L 179.1 504.9 L 180 505.5 L 180.3 506.5 L 180.2 505.3 L 181.8 504.7 L 182.6 505.7 L 184.1 505.3 L 184.3 506.2 L 185.5 504.8 L 184.5 504.7 L 184.7 503.3 L 183.8 502.5 L 184.8 501.9 L 184 500.7 L 183.8 499.5 L 185.7 499.2 L 186 498.3 L 187.4 497.9 L 187.3 496.7 L 188.1 495.6 L 189.3 495.5 L 189.3 496.9 L 190.2 495.4 L 191.3 497.3 L 192.1 496.4 L 192.5 495 L 193.5 494.9 L 194.1 494 L 193 493.2 L 193 492.3 L 194.4 493 L 197 491.9 L 197 489.1 L 197.7 488.1 L 197.1 487.1 L 197.9 485.4 L 199.4 486 L 201.4 486.2 L 201.1 485.2 L 202.3 484.7 L 202.7 483.2 L 203.3 482.4 L 204.4 481 L 204.3 480.1 L 206.1 479 L 207.2 479.2 L 207.2 480.3 L 208.1 480.6 L 207 482.5 L 208.7 482.6 L 209.4 483.7 L 210.4 483.2 L 211.3 482.9 L 212.5 483.2 L 211.6 485.1 L 212.4 486.2 L 212.4 487.5 L 211.2 488.6 L 212.3 489.6 L 213.5 490 L 213.4 491.1 L 212.8 492.2 L 211.8 492.9 L 211.3 494.2 L 210.4 494.6 L 211.7 495.4 L 209.1 497.2 L 208.8 499.8 L 210 500.1 L 211.3 500.5 L 212.2 500.2 L 214.4 501.6 L 213.5 502.2 L 212.7 503 L 211.8 503.4 L 210.4 503.4 L 210.8 504.8 L 209.1 504.8 L 208.7 506.7 L 207.5 508.4 L 207 509.7 L 209.3 511.1 L 210.2 513.4 L 209.1 515.7 L 209.5 518.8 L 208.4 520.3 L 209.4 520.4 L 208.3 521.5 L 209.5 521.9 L 209.4 523.4 L 207.7 523.8 L 208.3 524.9 L 207.2 525.7 L 205.6 525.6 L 204.2 526.1 L 205.3 527.7 L 206.6 528.2 L 208.2 528.6 L 210.1 528.3 L 212.2 529.2 L 212.2 530.4 L 210.9 531 L 209.9 531.3 L 209.8 533.4 L 209.9 534.4 L 210 536.4 L 210.4 539 L 204.5 538.1 L 202.1 538.5 L 200.4 539.5 L 199.4 541.1 L 200.3 541.3 L 199.9 543.4 L 201.7 545.2 L 200.7 545.3 L 199.6 545.8 L 199.5 548.9 L 198.3 548.7 L 199.5 550.4 L 200.3 553.1 L 201.4 552.9 L 202.2 553.9 L 201.6 555.4 L 202.5 556.1 L 202.4 557.1 L 200.7 560.6 L 199.9 559.9 L 198.9 559.9 L 196.1 559.9 L 194.3 558.5 L 194 560.2 L 193.6 561.3 L 195 561.8 L 195.5 565.2 L 193.9 565.8 L 194.3 566.8 L 193.5 569.9 L 194.4 571.7 L 196 573 L 198.3 572.8 L 197.6 573.6 L 197.6 574.7 L 196.3 574.9 L 196.2 575.9 L 197.8 577.1 L 197.5 578.4 L 200 578.4 L 200.6 579.1 L 201.4 577.3 L 202.3 576.1 L 204.1 576.7 L 205.2 576.3 L 205.2 577.5 L 207 577.7 L 206.9 578.6 L 207.5 579.5 L 207.4 577.1 L 208.9 576.8 L 209.1 577.6 L 210.1 577.6 L 210.2 580.5 L 207.7 580.1 L 206.7 581.1 L 207.7 581.2 L 206.3 583.4 L 207.5 583.8 L 207.4 584.7 L 208.6 584.7 L 208.1 585.5 L 207.7 586.8 L 206.8 586.4 L 206.9 584.4 L 206 583.4 L 202.2 584.2 L 201.6 583 L 199.4 582.7 L 199.1 581.7 L 199.3 579.9 L 197.6 579.6 L 196.4 580.3 L 197.2 581 L 198.3 582.5 L 197.3 583.4 L 199.7 585.7 L 198.2 588.3 L 198.7 590 L 199.5 589.3 L 200.2 590.1 L 201 589.5 L 202.7 589.7 L 202.6 588.2 L 201.7 587.5 L 202.4 586.3 L 202.9 587.2 L 204.2 586.4 L 204.5 587.7 L 205.8 587.3 L 207 587.6 L 208.5 587.8 L 208.1 588.7 L 209.2 588.7 L 209 591.5 L 209.9 590.8 L 210.6 589.9 L 211.4 590.6 L 212.3 589.9 L 213.3 590.1 L 213.5 589.2 L 214.6 589.5 L 216.5 588.3 L 217.6 587.2 L 217.1 586.1 L 218.9 585.6 L 219.5 586.4 L 220.7 585.1 L 221 586.5 L 220.2 588.2 L 221.1 587.2 L 222.3 587.4 L 224 587.7 L 224.1 589.2 L 223.4 590.2 L 223.8 591.3 L 222.9 591.2 L 223.3 592.5 L 225 592.2 L 225.8 592.9 L 225.6 594.3 L 226.6 593.6 L 230.3 593.8 L 229.5 599 L 230.4 599.5 L 231.3 600.3 L 233.2 601.3 L 234 600.3 L 234.5 601.1 L 234.3 602.5 L 234.3 603.6 L 232.9 604.5 L 232.8 606 L 231.7 606.5 L 231.8 608.1 L 231.3 609.5 L 230 609.7 L 229.3 608.9 L 228.3 610.8 L 226.9 610.8 L 226.4 613 L 224.2 612.6 L 222.5 610.9 L 221.5 612 L 220.2 610.7 L 219.8 611.5 L 220 610.6 L 216.6 611.1 L 216.9 612.2 L 215.4 615 L 214.2 615.4 L 212.2 615.2 L 211.8 617.5 L 211.9 618.7 L 213 619.3 L 212.9 620.9 L 212.5 622.2 L 211.1 623.8 L 209.5 624.3 L 209.4 625.7 L 215.3 626.5 L 216.2 627.9 L 214.5 630.2 L 213.8 631.8 L 209.8 631.9 L 209.7 633.2 L 209.2 634.1 L 208.4 636.1 L 207 635.5 L 205.3 635 L 204.3 634.9 L 201.2 635.9 L 201.4 637 L 200.2 635.5 L 199 634.9 L 198 635.8 L 196.6 635.4 L 195 638.6 L 195.5 639.6 L 193.2 639.4 L 189 639.4 L 188.5 638 L 187.7 637.4 L 186.5 638.3 L 185.3 637.3 L 185.5 636.1 L 183.9 636.6 L 182.5 634.9 L 181.3 635 L 180.5 633.5 L 178.8 633.8 L 178.8 631.1 L 176.2 632.2 L 173.5 631.8 L 172.4 630.7 L 171.8 628.7 L 169.9 628.9 L 169.6 628.1 L 168.7 628.3 L 168.1 627.1 L 166.8 626.9 L 164.7 623.8 L 163.2 623.8 L 163.3 621.9 L 162 621 L 162 619.9 L 163.3 619.7 L 161.4 619.8 L 160.1 618.4 L 160 617.3 L 161.2 616.8 L 160 616.2 L 158.8 617.4 L 158.3 615.9 L 157.3 616.1 L 157.2 614.7 L 155.7 614.2 L 154.8 615.1 L 154.9 613.8 L 153.9 614 L 154 612.8 L 150.8 612.9 L 149.7 610.6 L 146.9 599.1 L 146.3 592.5 L 144.9 587.1 L 144.1 585.2 L 143.2 584.8 L 142.5 583.4 L 141.8 579.7 L 141.2 578.8 L 139.2 572.2 L 140.1 571.6 L 138.2 571.8 L 137.8 569.9 L 137.6 569 L 137.2 567.3 L 136.5 566.5 L 135.8 567.2 L 133.3 565.3 L 134.1 564.2 L 133.4 563.1 L 134.3 562.5 L 135.1 561.8 L 136 562.5 L 137.3 561.4 L 138 559.7 L 137.5 558.4 L 137.7 557.3 L 138.5 556.3 L 138.1 555.4 L 137 554.6 L 138.9 553.8 L 138.6 552 L 137.6 551.5 L 137.6 550.2 L 137 549.1 L 137.7 548.3 L 136.9 547.3 L 137.2 546.3 L 136.9 545.3 L 136 545.4 L 135.5 544.6 L 134 545.4Z\" },\n { code: \"KL\", name: \"Kerala\", type: \"state\", cx: 179.3, cy: 663.8, d: \"M 150.8 612.9 L 153.6 612.1 L 153.4 613.5 L 154.9 613.8 L 154.8 615.1 L 155.7 614.2 L 157.2 614.7 L 157 615.7 L 158.3 615.9 L 158.8 617.4 L 160 616.2 L 161.2 616.8 L 160 617.3 L 160.1 618.4 L 161.3 619 L 163.1 618.9 L 162 619.9 L 162 621 L 163.3 621.9 L 163.2 623.8 L 164.7 623.8 L 166.8 626.9 L 168.1 627.1 L 168.7 628.3 L 169.6 628.1 L 169.9 628.9 L 171.8 628.7 L 172.4 630.7 L 173.5 631.8 L 176.2 632.2 L 178.8 631.1 L 178.8 633.8 L 180.5 633.5 L 181.3 635 L 182.5 634.9 L 183.9 636.6 L 185.5 636.1 L 185.3 637.3 L 185.9 638.3 L 184.9 639.1 L 184.2 640 L 183.1 640.4 L 181.4 640.4 L 181.7 642.9 L 182.6 642.5 L 183.6 643.2 L 185.6 643.5 L 186.4 644.7 L 187.8 645.5 L 188.5 646.7 L 186.4 648.1 L 186.5 649.3 L 187.3 648.8 L 190.4 649.2 L 192.1 648.1 L 191.9 650.1 L 193 650.7 L 193 652.4 L 194.2 652.5 L 192.3 652.7 L 191 655.2 L 194.8 656.6 L 195.3 657.9 L 196.4 658.1 L 195.6 660.9 L 196 662 L 194.5 662.1 L 195.1 663 L 194.5 666.9 L 195.3 668.2 L 194.8 669.7 L 195.8 669.8 L 196.8 671.3 L 198.2 671.7 L 199.8 670.8 L 200.1 669.9 L 202.6 668.5 L 203.9 668.6 L 204.5 670.6 L 205.2 671.7 L 204.8 673.7 L 203.1 674.3 L 204.5 676 L 204.7 677.5 L 203.4 679.5 L 203.6 680.7 L 203.6 682.8 L 202.3 685.5 L 203.3 685.5 L 204.6 686.4 L 205.8 685.8 L 206.8 687.3 L 207.8 688 L 207.4 689 L 206.4 689.5 L 205.9 691.9 L 204.9 692.7 L 204.9 694.6 L 204.2 695.3 L 203.3 697.3 L 203 698.5 L 201.9 699.1 L 203 700.6 L 204.4 702.6 L 203.7 704.5 L 202.9 705.4 L 204.9 710 L 204.5 710.8 L 203.1 711 L 203.6 712.2 L 201.9 713.6 L 202.5 715.1 L 201.1 715.4 L 198.3 713.4 L 190.6 703.1 L 188.7 701.6 L 188 699 L 184 689.8 L 181.7 677.2 L 183 679 L 184.5 680.5 L 184.5 683.3 L 184.4 687.3 L 187.7 687.2 L 185.7 686.4 L 186 685.4 L 185.8 684.5 L 185.7 683.4 L 184.8 679.6 L 184 678.3 L 182 675.8 L 182.3 674.6 L 181 673.1 L 181.8 676.9 L 178.6 667.7 L 174.3 658.2 L 173.1 653 L 170.4 645.3 L 169.2 643.1 L 167.7 642.5 L 166 637.7 L 162.9 634.1 L 161.8 633.6 L 159.8 630.2 L 159 629.8 L 157.9 628.2 L 153.2 618.8 L 150.8 612.9Z\" },\n { code: \"LD\", name: \"Lakshadweep\", type: \"ut\", cx: 106.3, cy: 676.7, d: \"M 110.3 715.2 L 109.8 716.2 L 110.3 715.2Z M 123.4 674.1 L 123.3 675.1 L 123.4 674.1Z M 93.5 673.4Z M 123.6 672.9Z M 100.6 663.2 L 100 664.1 L 100.6 663.2Z M 124 657.6Z M 90 657.6 L 90.5 656.5 L 90 657.6Z M 92.7 654.7Z M 93.5 654.6Z M 102.6 650.4Z M 88.5 648.5Z M 104 647.5 L 103.7 648.5 L 103.3 649.3 L 103.7 647.9Z M 108.7 642Z M 90.3 639.6Z M 102.2 637.2Z\" },\n { code: \"MP\", name: \"Madhya Pradesh\", type: \"state\", cx: 231.1, cy: 344.1, d: \"M 226.2 273.3 L 227.3 273.7 L 227.8 272.6 L 229.4 272.3 L 230.3 273.6 L 231.6 274.3 L 234.2 275.3 L 236.3 275 L 237.6 274.2 L 238.8 275.1 L 239.8 275.1 L 241 276.6 L 241.9 276.4 L 242.9 276.8 L 243.9 277.1 L 244.2 279 L 243.6 279.9 L 244.5 280.5 L 245.4 281.7 L 245.1 282.9 L 246.9 283.2 L 246 283.9 L 245.8 285.3 L 247 285.7 L 246.1 286.6 L 245.9 287.6 L 244.9 287.7 L 245.3 288.6 L 244.4 289.4 L 244 290.5 L 242.7 290.9 L 244.1 292.4 L 242.8 293.5 L 242.4 295.7 L 241.2 296.5 L 241.4 297.7 L 240.9 299.5 L 239.8 298.7 L 238.3 300.7 L 239.8 302.6 L 239.6 303.9 L 236.7 304.6 L 236.1 305.3 L 235.2 304.8 L 232.4 304.9 L 231.7 305.7 L 230.7 306.2 L 231 307.5 L 230 308.3 L 228.9 309.5 L 228.1 310.1 L 228.9 311.1 L 229.3 312 L 229.5 313.3 L 230.4 314.1 L 231.5 315.3 L 231.5 316.3 L 230.4 316.2 L 228.9 317.3 L 228.9 319.5 L 225.2 322.4 L 226.2 324.2 L 226.4 325.8 L 227.5 327.8 L 227.3 330.5 L 226.4 331.4 L 227.5 332.5 L 229.6 334.8 L 228.8 336.2 L 230 337.5 L 231.3 337 L 232.9 334.6 L 234.5 335.5 L 236.6 338.3 L 238 338.1 L 239.3 339.9 L 241.3 338.8 L 241.9 336.9 L 243.3 335.6 L 243.7 333.4 L 242 332.8 L 243.3 332 L 241.4 328.5 L 239 329.6 L 238.2 328 L 238.9 326.9 L 238.7 324.6 L 238.7 323 L 236.5 321.9 L 236.2 320.9 L 235.9 318 L 234.9 317.1 L 234.3 313 L 232.7 312.1 L 231.7 312.7 L 232.6 311.4 L 233.7 311.3 L 233.3 310.4 L 234.5 310.7 L 234.1 309.6 L 235.1 309.1 L 236.2 308.4 L 237.3 308.8 L 236.6 309.4 L 237.5 310 L 238.7 310.5 L 238.2 309.2 L 239.8 308.7 L 238.5 308.6 L 237.8 307.9 L 238 307 L 240.2 307.8 L 240.2 306.7 L 241.2 306.4 L 242 305.5 L 242.7 306.2 L 242.6 307.5 L 241.8 308.3 L 243.1 308.5 L 243.5 310.1 L 242.4 310.7 L 241.6 310.1 L 242.9 309.5 L 241.2 309.8 L 240.4 310.7 L 239.3 311.6 L 239.6 312.7 L 240.5 313.8 L 241.2 310.9 L 242.4 311.2 L 243.4 312.4 L 242 312.6 L 241.1 315.3 L 242.9 314 L 243.9 314.6 L 243.9 313.7 L 244.1 312.6 L 245.3 313.9 L 244.6 314.8 L 244.5 315.9 L 245.9 314.7 L 246.7 315.4 L 246.9 316.7 L 248.1 316.6 L 249.4 316.6 L 248.9 315.8 L 249.9 315.7 L 250.9 316.2 L 250.3 314.6 L 250.2 313.3 L 251.5 314.5 L 251.7 312.7 L 250.5 312.2 L 250.7 311 L 251.8 311.2 L 251.5 312.1 L 253.4 313 L 254.4 312.4 L 253.7 313.9 L 252.7 315.2 L 253 316.7 L 254.6 316.1 L 254.4 317.1 L 256.8 315.1 L 257.3 315.8 L 260.9 315.9 L 263.3 317 L 263.7 315.7 L 263.1 313.5 L 264.4 313.1 L 265.3 312.7 L 266.5 312.8 L 267.1 310.9 L 268.5 310.6 L 269.4 311 L 270.8 309.9 L 272.1 309.4 L 273.6 309.8 L 273.5 312.3 L 275.1 313.6 L 276.2 315.1 L 274.5 315.9 L 272.6 318.7 L 273.7 319.4 L 274.7 318.8 L 276.5 317.4 L 277.2 318.4 L 277.9 317.3 L 278.9 317.8 L 280.3 317.7 L 280 315.6 L 280.9 316.4 L 281.4 317.6 L 283 317.7 L 284.1 318 L 283 317 L 282.4 316.1 L 284.6 315.8 L 285.3 316.7 L 285.5 314.7 L 286.4 314.6 L 287 315.5 L 286.1 316.4 L 286.2 317.7 L 285.3 318.5 L 285.7 319.5 L 284.4 320.2 L 285.4 321.1 L 286.6 320.8 L 287.7 320.2 L 288.2 321.4 L 289.5 321.2 L 290.9 320.7 L 292.2 322.2 L 292.8 320.5 L 293.7 321.1 L 293.7 319.6 L 295.1 317.8 L 294.7 316.9 L 295.2 315.3 L 296.3 316.6 L 296.2 315.4 L 298 316.4 L 298.9 316.2 L 298.2 316.8 L 300.1 317.6 L 300.6 316.8 L 299.8 316.1 L 301 315.9 L 300.7 314.8 L 301.9 314.6 L 303.1 315.5 L 302.7 317 L 302.8 318 L 304 317.5 L 304.6 318.4 L 305.7 318.3 L 307 319.2 L 307.9 319 L 309.2 319.7 L 309.7 321.2 L 309.4 322.2 L 310.8 323.7 L 311.8 323.2 L 314.3 324.7 L 315.3 324.7 L 316.2 323.9 L 316.5 324.9 L 315.6 326 L 316.6 326.3 L 316.7 325.3 L 316.9 327.7 L 318.4 327.7 L 318.4 329.1 L 321 329.5 L 320.8 327.4 L 321.9 327.5 L 323.4 327.5 L 326.6 327 L 327.4 327.6 L 328.9 328.3 L 328.9 329.5 L 329.8 330.6 L 328.6 330.9 L 327.9 331.6 L 327.7 334.8 L 328.9 335.1 L 329 337.1 L 328.7 338.5 L 328 340.9 L 326.9 340.4 L 327.7 342.4 L 329 342.4 L 328.5 343.8 L 329.7 344.2 L 330 345.3 L 328.6 346.3 L 326.5 346.6 L 326.4 347.9 L 325 348.7 L 323.6 348.7 L 323.4 349.7 L 322.1 349 L 319.1 349.2 L 317.5 348.8 L 316.2 348.5 L 312.8 348.8 L 311.7 347.8 L 310.6 348 L 309.8 347.5 L 308.4 348.7 L 306.8 349 L 305.4 348.3 L 304.1 346.2 L 302.9 346.7 L 302.7 348 L 303.4 348.6 L 303.6 350 L 304.7 351.3 L 303.7 352.8 L 302.8 354.3 L 302.2 355.4 L 302.9 356.6 L 303.9 355.9 L 305.8 355.1 L 307.3 355.6 L 307.8 356.4 L 309.8 355.9 L 311.2 358.9 L 312.1 358.6 L 312.8 359.7 L 314 359.2 L 314.2 360.3 L 315.9 361 L 316 362 L 314.9 363.4 L 315.1 365.6 L 314.3 366.5 L 313.2 366.2 L 312.3 367.1 L 310.3 367.1 L 309.9 368 L 310.4 370.1 L 308.6 371.1 L 306.5 372.1 L 306.3 373.1 L 306.9 374.8 L 306 375.8 L 306.4 377.3 L 305.5 377 L 304 378.1 L 303.8 379.6 L 303.1 380.4 L 300.9 380.3 L 300 381.5 L 299 381.5 L 298.1 382.7 L 297.7 381.2 L 296.4 380.7 L 296 381.8 L 294.1 382.5 L 293.2 381.5 L 291.6 382.7 L 291.7 386.3 L 291.1 387.5 L 289.6 387.9 L 289.5 390.3 L 288.5 390.7 L 289.1 392 L 288 390.8 L 287.2 390.6 L 285.7 394.5 L 285.4 398.3 L 284.9 399.7 L 283.4 399.4 L 282.8 400.6 L 282.6 403.6 L 283.1 406.4 L 281.4 409.8 L 280 410 L 277.6 408.2 L 276.5 408.8 L 275.4 408 L 275.9 407.2 L 275 405.2 L 272.5 402.8 L 270.8 402.4 L 269.2 403.1 L 268 404.4 L 266.5 404.9 L 265.2 404.3 L 264.7 405.1 L 263.4 405 L 260.6 403.2 L 258.6 404.3 L 256.1 404.6 L 255.1 401.5 L 253.4 401.1 L 251.9 401.4 L 249.2 400.3 L 249 402 L 247.4 401.8 L 246 403.3 L 244.2 403.2 L 242.1 403.5 L 241.9 404.4 L 242.7 405.4 L 241.7 405.7 L 239.2 406 L 237.7 406.6 L 234.7 406 L 232.9 405 L 231.2 405.7 L 231 403.2 L 230 402.8 L 229.6 403.8 L 228.3 404 L 227.5 403.4 L 225.5 404.3 L 225.3 405.7 L 220.1 408.5 L 218.8 408.7 L 216.9 407.8 L 215.8 408.5 L 214.8 409.1 L 214.5 408.2 L 213.6 408.3 L 212.5 408.3 L 209.9 408.7 L 209.5 406.8 L 208.3 404.9 L 209.2 404.3 L 211.7 405 L 212.6 404.7 L 211.8 404.2 L 211.8 402.6 L 211.1 400.8 L 209.6 399.1 L 205.4 399.3 L 205.3 400.3 L 204 400.4 L 202.8 400.2 L 200.5 400.3 L 196.7 403.3 L 195.6 402.9 L 194.3 403.3 L 194.1 404.7 L 194.2 406 L 190.4 409.7 L 191.2 411 L 190.4 413.2 L 187.3 413.1 L 186.5 415.1 L 184.8 416 L 182.7 416 L 180.2 415.8 L 178.9 413.9 L 180.1 413.7 L 179.6 412.1 L 178.6 408.8 L 177.5 409.3 L 175.6 408.3 L 173.8 408.1 L 169 408.6 L 167.5 408.3 L 166.1 408.8 L 164.3 408.3 L 162.8 408.6 L 161.9 408.1 L 160.6 408.4 L 158.7 407.9 L 156.4 406.7 L 155.1 404.1 L 151.5 402.5 L 149 403 L 143.8 401.3 L 142.7 400.2 L 142.6 398.2 L 143.1 395.8 L 142.3 394.6 L 141.3 394.2 L 141.3 392.9 L 140 393 L 139.2 394 L 138 394.3 L 135.7 395.3 L 134.5 394.7 L 133.4 393.2 L 135.3 391.4 L 134.1 391.1 L 134 388.3 L 132.9 388.1 L 132.5 386.5 L 132.8 384.7 L 133.7 384.4 L 134.2 385.4 L 135.5 385.7 L 135.9 384.5 L 137 383.8 L 135.8 382.8 L 135.5 381.8 L 134.8 383 L 134 383.2 L 133.5 382.1 L 133.1 381.1 L 132.2 381.5 L 132.7 380.1 L 134.7 380.9 L 137.2 377.8 L 139.9 377.8 L 140.3 375.7 L 142 372.5 L 141.4 370.9 L 140.2 371.5 L 139.4 370.7 L 138.9 369.9 L 138.5 367.5 L 140 366.3 L 142.8 366.9 L 143.5 365.8 L 144.9 365.5 L 146.3 364.1 L 147.3 364.3 L 148 363.3 L 146.9 363.6 L 147 362.3 L 145.8 362.6 L 144.1 361.6 L 142.9 360.9 L 144.1 359.7 L 144.1 358.6 L 145 357.7 L 146 357.6 L 147 356.6 L 148.9 355.5 L 150.3 355.4 L 151.6 353.7 L 151.7 352.2 L 152.4 350.9 L 151.6 347.5 L 152 346 L 153.6 343.6 L 151.1 339.1 L 151.4 337.9 L 148.2 337.4 L 148.9 336.5 L 149 335.1 L 150.6 332.8 L 149.7 332.9 L 148.8 332.4 L 147.3 331.7 L 148.3 330.6 L 148.1 329.5 L 149 329.2 L 149.6 327.7 L 148.7 327.3 L 149.2 324.6 L 151.3 328.1 L 152.5 328 L 152.9 327 L 153.6 325.7 L 153.9 324.6 L 151.9 324.8 L 150.6 324.2 L 150.5 323.2 L 149.8 321.3 L 150.3 320.1 L 150.8 321.1 L 151.8 321.3 L 152 322.2 L 154.7 323 L 156.4 322.3 L 156.4 320.4 L 157.5 319.7 L 157.4 318.4 L 161.6 318.4 L 161 319.3 L 161.4 320.4 L 160.8 322 L 160 320.1 L 160.4 321.4 L 159.7 322.2 L 160.8 322.8 L 163.3 322.2 L 160.7 324.2 L 160.1 323.2 L 158.9 323 L 159.4 322.1 L 158.5 321.7 L 159.4 323.6 L 158.4 324.2 L 157.9 325.3 L 158.7 326.4 L 159.8 326.2 L 164 327.1 L 166.9 326.4 L 167.6 327.3 L 170.9 325.4 L 172.7 326.2 L 172.4 327.7 L 172.5 329.1 L 174.5 330.2 L 174.6 331.1 L 173.9 331.7 L 174.3 333 L 172.9 334 L 171.6 332.6 L 170.7 333.7 L 170.4 335.7 L 171 336.7 L 172.1 336.8 L 172.4 338.3 L 171.2 338.9 L 170.5 340.9 L 171.6 341.6 L 172.6 341.6 L 171.4 342.8 L 171 344.4 L 169.6 345.1 L 168.9 343.5 L 168.1 344.4 L 166.9 344.6 L 165.4 343.2 L 164.3 344.8 L 164.1 346.3 L 166.4 347.8 L 166.9 349.3 L 168.5 349.3 L 169.2 350.3 L 169.3 348.8 L 170.2 347.9 L 169.6 346.7 L 170.7 347.1 L 171.3 348 L 173.2 346.9 L 175.8 346 L 175.4 343.7 L 177.4 342.5 L 179.4 342 L 179.1 339.5 L 179.8 338.3 L 179.6 337.3 L 180.5 336.1 L 180.7 337.3 L 181.2 339 L 182.7 339 L 183.7 338.1 L 185.7 339.2 L 186.6 339 L 188.3 340.3 L 189.4 339.9 L 189.8 338.7 L 190.2 337.8 L 192 337.3 L 192.2 338.2 L 191.5 339.6 L 193.4 340.1 L 194.4 341.4 L 195.6 340.9 L 196.6 341.1 L 197 339.7 L 196.1 337.6 L 195.3 336 L 195.5 332.7 L 194.7 331.1 L 195.9 330.7 L 196.9 330.9 L 197 332.3 L 198.1 332.9 L 198.9 332.5 L 199.6 331.2 L 200.4 330.2 L 200.2 328.4 L 199.5 326.7 L 198.3 326.2 L 197.8 325.3 L 196.9 325.8 L 195.5 325.7 L 194.4 324 L 197.2 323.2 L 197 322.3 L 196.4 321.5 L 195.6 319.2 L 198.8 317.5 L 200.6 318 L 202.7 316.7 L 204.8 316.5 L 205.7 317.4 L 207.9 316.7 L 207.7 314.8 L 208.1 313.8 L 206.8 312.7 L 207.3 311.5 L 207.1 309.2 L 205.8 308.6 L 203.9 310.2 L 203.5 311.7 L 200.6 311 L 199.4 312 L 198 312.1 L 196.5 311.4 L 195.4 311.2 L 193.7 311.7 L 191.7 310.9 L 189.9 309.8 L 189.6 308.7 L 188.1 306.2 L 187.9 302.6 L 187.1 302.1 L 188.3 301.1 L 188.3 299.5 L 189.7 297.6 L 190.9 296.7 L 192.9 296.9 L 193.4 295.9 L 194.5 295.6 L 195.3 294.1 L 196.4 292.1 L 198.6 291.1 L 199.7 289.8 L 201 289.6 L 201.7 288.4 L 203.5 288.4 L 205.4 287 L 206.4 285.4 L 208.7 285.2 L 208.5 284.2 L 210.7 284 L 214 281.6 L 215 281.7 L 215.7 280.7 L 217.2 280.4 L 217.4 279.3 L 218.7 278.8 L 219.1 277.7 L 220.3 277.6 L 221.3 276.7 L 223.4 277.2 L 223.5 275.8 L 223.7 274.3 L 225.4 274.4 L 225.1 273.5 L 226.2 273.3Z\" },\n { code: \"MH\", name: \"Maharashtra\", type: \"state\", cx: 193.7, cy: 469.6, d: \"M 134.5 394.7 L 135.7 395.3 L 137.7 395.1 L 139.2 394 L 140 393 L 141.3 392.9 L 141.3 394.2 L 142.3 394.6 L 143.1 395.8 L 142.6 398.2 L 142.7 400.2 L 143.7 400.4 L 149 403 L 151.5 402.5 L 155.1 404.1 L 156.4 406.7 L 158.7 407.9 L 160.5 407.8 L 161.9 408.1 L 162.8 408.6 L 164.3 408.3 L 166.1 408.8 L 167.5 408.3 L 169 408.6 L 173.8 408.1 L 175.6 408.3 L 177.5 409.3 L 178.6 408.8 L 179.9 411.6 L 180.2 413.3 L 178.9 413.9 L 180.2 415.8 L 182.2 415.5 L 184.8 416 L 186.5 415.1 L 187.3 413.1 L 190.4 413.2 L 191.2 411 L 190.4 409.7 L 194 406.5 L 193.5 405.2 L 194.3 403.3 L 195.6 402.9 L 196.7 403.3 L 200.5 400.3 L 202.5 400.5 L 203.6 401 L 205.3 400.2 L 205.4 399.3 L 209.6 399.1 L 211.1 400.8 L 211.8 402.6 L 211.8 404.2 L 212.6 404.7 L 211.7 405 L 209.2 404.3 L 208.3 404.9 L 208.8 406.4 L 209.9 408.7 L 212.1 409 L 213.6 408.3 L 214.5 408.2 L 214.8 409.1 L 215.8 408.5 L 216.8 408.4 L 218.8 408.7 L 220.1 408.5 L 225.3 405.7 L 225.5 404.3 L 227.5 404 L 229.1 403.5 L 230 402.8 L 231 403.2 L 231.2 405.7 L 232.9 405 L 234.2 405.3 L 237.7 406.6 L 238.3 405.9 L 241.3 406.1 L 242.5 406 L 241.9 404.4 L 242.1 403.5 L 243.9 402.8 L 246 403.3 L 247.4 401.8 L 249 402 L 249.2 400.3 L 251.9 401.4 L 252.9 401.5 L 255.1 401.5 L 256.1 404.6 L 258.6 404.3 L 260.6 403.2 L 263.4 405 L 264.7 405.1 L 265.2 404.3 L 266.4 404.9 L 268 404.4 L 269.2 403.1 L 270.8 402.4 L 272.5 402.8 L 275 405.2 L 275.9 407.2 L 275.4 408 L 276.5 408.8 L 277.5 408.2 L 280 410 L 281.4 409.8 L 280.9 411.8 L 276.9 413.7 L 276.4 415.5 L 276.7 417 L 276.9 419.5 L 278.8 419.4 L 278.9 423.5 L 279.7 425.5 L 278 426.2 L 277.5 427.1 L 278.1 427.9 L 279.4 427.2 L 280.6 427.4 L 279.8 432.5 L 280.5 434 L 278.8 434.6 L 278.1 435.5 L 275.2 436.2 L 275.9 437.4 L 275.3 438.1 L 277.8 438.6 L 278.8 439.3 L 278.9 440.4 L 278.9 442.3 L 278.3 443.7 L 277.4 443.7 L 276.6 443.1 L 275.8 443.6 L 277.5 444.4 L 276.3 446.6 L 275.5 446.9 L 276.8 447 L 278.8 446.3 L 278.8 447.4 L 281.6 449.4 L 281.4 451.3 L 282.9 451.4 L 283.9 452.4 L 285.3 452.5 L 286.4 453.6 L 286.7 454.8 L 284.4 455.8 L 285.7 457.3 L 283.5 459.1 L 282.1 459.2 L 281.8 458.2 L 280.4 458.6 L 279.4 456.4 L 277.3 458 L 276.5 459.7 L 275.2 460.3 L 275.3 461.5 L 273.9 462.6 L 273.9 464.2 L 272.6 466.3 L 272.6 467.7 L 274.5 470.2 L 272.8 471.6 L 272.6 472.7 L 271.1 473.2 L 270.2 473.3 L 269.1 473.7 L 266.9 471.6 L 265.1 471.1 L 264.2 470 L 265.2 469.4 L 265.1 465.5 L 263.4 465.2 L 263.4 463.5 L 265.3 461.9 L 264.8 460.6 L 265.7 458.9 L 266 456.4 L 265.2 454.9 L 262.7 453.1 L 261.7 451.8 L 260.7 451.5 L 258.5 452.2 L 257.5 453.9 L 256.5 453.5 L 254.6 454.1 L 252.4 452.3 L 251.1 452.4 L 249.5 451.3 L 249.4 453.4 L 248.7 454.2 L 248 455 L 246.3 453.3 L 244.4 453.1 L 243 452.8 L 243.6 452 L 243.3 450.4 L 242.1 450 L 240.8 450.3 L 240.5 447.8 L 239.2 447.3 L 237.6 447.6 L 235.1 446.4 L 233.3 446.3 L 232.6 447 L 230.4 445.9 L 230.1 444.9 L 229 444.8 L 228.1 445.6 L 229.1 445.9 L 229.8 447.3 L 229.3 448.9 L 227.9 449.5 L 228.5 451.5 L 227.8 452.6 L 228.4 455.1 L 225.6 456.1 L 225.9 458 L 225.3 460.3 L 223.3 459.9 L 222.5 459.5 L 220.3 457.8 L 218.3 458.8 L 219.3 459.6 L 218.5 459.9 L 218 461.3 L 217.6 462.7 L 218 463.8 L 217 463.5 L 216.9 464.8 L 216 465.3 L 216.2 466.4 L 217.3 466.4 L 218.2 467.1 L 217.9 468.1 L 218.8 468.2 L 220.2 470.2 L 217.8 470.6 L 216.6 473.5 L 215.4 473.7 L 215.5 476.6 L 213.7 477.3 L 212.4 476.8 L 212.5 478.5 L 211.2 478.8 L 212.1 479.2 L 210.8 479.7 L 210.6 481.5 L 211.7 482.3 L 210.4 482.5 L 209.4 483.7 L 208.7 482.5 L 207 482.4 L 208.1 480.6 L 207.2 480.3 L 207.2 479.2 L 206.1 479 L 204.3 480.1 L 204.4 481 L 203.3 482.4 L 202.7 483.2 L 202.3 484.7 L 201 485.2 L 201.3 486.2 L 200.2 486.2 L 199.6 485.5 L 198.6 485.4 L 197.1 487.1 L 198.2 487.5 L 197.9 488.9 L 197 491.9 L 194.4 493 L 193 492.3 L 193 493.2 L 194.1 494 L 193.5 494.9 L 192.5 495 L 192.7 496.1 L 191.9 497.4 L 190.2 495.3 L 189.3 496.9 L 189.3 495.5 L 188.1 495.6 L 188.1 496.6 L 187.4 497.9 L 186 498.3 L 185.7 499.2 L 183.8 499.5 L 184 500.7 L 184.1 501.8 L 183.9 503.3 L 184.5 504.7 L 185.5 504.8 L 184.9 506.2 L 184.1 505.3 L 182.6 505.7 L 181.8 504.7 L 180.2 505.3 L 180.3 506.5 L 180 505.5 L 179.1 504.9 L 178.1 505.7 L 174.8 505.9 L 173.9 505.2 L 173.8 503.7 L 173.2 504.4 L 172.4 503.5 L 171.9 504.8 L 170.4 503.6 L 169.4 503.8 L 169.1 502.7 L 168.1 502.2 L 167.7 504.3 L 167 505.3 L 167.4 506.4 L 168.7 507.4 L 168.7 508.6 L 167.9 509.5 L 169.1 511.3 L 168.3 512.7 L 169 514.5 L 167.5 514.3 L 166.8 513.4 L 166.6 514.4 L 164.9 514.9 L 164.3 513.9 L 163.5 514.4 L 161.6 514.7 L 160.3 514.6 L 160.1 516.5 L 158.6 517.3 L 158 516.5 L 157 516.5 L 155.8 514.8 L 154.5 515.3 L 152.4 515 L 153 515.8 L 151.8 517 L 152 519 L 150.5 519 L 147 520.3 L 146.9 521.2 L 146.1 522.1 L 146.8 522.9 L 145.7 522.8 L 144.2 524.1 L 143.6 522.2 L 142.4 522.4 L 142 521.6 L 141.9 522.9 L 140.3 523.5 L 140 524.7 L 138.6 524.1 L 138.3 525.3 L 137.4 524.3 L 137.6 525.3 L 137.9 526.3 L 138.8 526.5 L 138.9 527.7 L 139.4 528.6 L 138.5 529.5 L 139.1 530.3 L 140.7 530.5 L 142.6 531.7 L 142.8 532.7 L 142.2 533.7 L 142.2 535.1 L 141 534.5 L 139.5 535.9 L 141 535.8 L 140 539.5 L 140.5 540.6 L 139.6 539.7 L 139 540.6 L 140 540.8 L 139.4 542.5 L 137.8 543.3 L 136.8 543.2 L 136.3 542.2 L 135.8 542.9 L 134.1 543.8 L 134.2 544.7 L 131.8 546.4 L 130.5 545.5 L 130 543.2 L 128.5 543 L 128.2 541.9 L 127.4 543.3 L 124 543.6 L 122 539.2 L 120.1 538.6 L 119.5 536.3 L 119.2 535.5 L 118.5 532.5 L 117.4 528.6 L 117.8 527.6 L 116.9 527.8 L 116.9 526.8 L 115.8 525 L 115.8 524 L 115.8 523 L 116.3 522.1 L 115.7 518.1 L 114.9 516.1 L 115.3 513.9 L 114.4 512.9 L 115.4 511.7 L 114.6 510.9 L 113.7 507.2 L 112.9 506.5 L 113.8 506.9 L 113.3 504.5 L 112.4 504 L 113.3 503.2 L 112.8 501.6 L 111.7 500.4 L 112.4 499.8 L 111.5 498.5 L 111.2 497.1 L 110.6 494.4 L 110.3 492.3 L 109.3 491.2 L 109.5 490.2 L 108.4 488.5 L 108 486.7 L 108.4 485.2 L 107.1 484.6 L 107.2 483.1 L 108.2 484.1 L 110.2 484.5 L 110.6 486.2 L 110.4 484.3 L 109.9 483.4 L 108.5 483.3 L 107.5 481.8 L 106.7 481.4 L 106.3 478.6 L 107 476.9 L 105.4 473.2 L 105.7 470.7 L 106.7 471 L 107.3 470.1 L 108 471 L 108.4 469.2 L 107 469.6 L 106.5 468.3 L 107.7 468.2 L 107.3 467.3 L 108.2 466.9 L 109.4 466 L 108.5 464.6 L 107.6 465.3 L 106.6 466.2 L 105.5 465.9 L 105.1 467.8 L 104.3 468.6 L 104.6 467.4 L 104.4 465.3 L 104.7 463.7 L 103.7 462 L 103.6 459.3 L 104.1 458.1 L 103.2 457 L 102.9 454.9 L 103.7 454.2 L 102.3 453.1 L 102.1 451.7 L 101.6 446.9 L 100.7 445.8 L 101.4 445.2 L 101.1 443.6 L 102.2 442.7 L 102 440.3 L 102.7 438.7 L 104.2 439 L 104.9 437.5 L 105.8 436.5 L 108 436.9 L 108.3 437.9 L 108 438.8 L 109 438.7 L 109.8 440.4 L 111.8 440 L 112.8 440.7 L 113.5 439.1 L 115.2 438.4 L 115.6 437 L 116.6 437.2 L 118.3 437 L 118.2 433.5 L 117.5 432.6 L 118.3 432 L 119.9 429 L 119.5 427.9 L 118.6 427.6 L 117.7 426.5 L 118.6 425.9 L 118.9 424.8 L 119.9 426.2 L 120.8 425.7 L 122.3 426.6 L 123 428 L 124.4 428 L 125.5 428.3 L 127.5 427.1 L 127.7 425.9 L 128.6 424.4 L 130.1 424.1 L 130 421.7 L 128.8 419.3 L 129.1 418.2 L 127 417.9 L 126.1 417.6 L 125.4 416.5 L 125.6 415.1 L 123.5 415.2 L 121.9 413.8 L 123 414.6 L 124 414.1 L 125.3 414.5 L 127.2 413.7 L 127.4 411.4 L 128.8 411.5 L 130 410.6 L 130.1 408.1 L 132.3 407.7 L 132.7 406.1 L 133.7 407 L 136.2 406.7 L 138.6 405.8 L 138.6 404.7 L 137.3 404.8 L 135.9 404.9 L 132.8 404.3 L 128.1 405.8 L 127.2 403.3 L 126.4 402.7 L 128.6 402.2 L 128.9 400.8 L 127.4 399.3 L 126.9 397.8 L 134.5 394.7Z\" },\n { code: \"MN\", name: \"Manipur\", type: \"state\", cx: 579.4, cy: 325.1, d: \"M 570.7 311.8 L 571.5 312.6 L 572.5 313.2 L 573.7 314.4 L 575.6 310.5 L 578.2 307.8 L 577.2 307 L 577.4 306 L 580.1 305.3 L 581.7 305.6 L 582.8 305.2 L 584.5 305.5 L 585.7 306.4 L 586.1 305.6 L 587.4 307 L 589 306.7 L 592 305.9 L 592.2 304.7 L 593.2 303.9 L 595.5 302 L 595.5 303.4 L 595.1 304.8 L 595.1 306.7 L 596.8 307.8 L 597.9 308 L 597.7 309.1 L 596.8 309.8 L 595.7 314.1 L 599.4 316.1 L 599.3 318.9 L 598.4 320 L 598.8 320.9 L 596.9 323.4 L 596.3 326.4 L 595 326.6 L 594.5 328.7 L 593 330.1 L 592.2 332.1 L 591.6 333.9 L 590.8 334.4 L 589.9 336 L 589.9 337.1 L 588.5 340.2 L 588.1 343.3 L 587 345.9 L 586.2 348 L 585.3 348.3 L 584.7 347 L 581.5 345.6 L 580.4 345.4 L 578.4 346.1 L 577 344.1 L 574 344 L 573.6 345.1 L 572.7 344.6 L 571.6 345.7 L 570.5 345 L 569.3 342.4 L 567.9 341.9 L 567.6 343 L 566.5 343.1 L 565.7 343.8 L 566 342.9 L 565 342.3 L 563.8 343 L 563.3 342.2 L 562.2 343.2 L 561.8 341.8 L 559.4 341.5 L 560.5 339.2 L 560.1 337.4 L 560.9 335.8 L 560.5 334.7 L 560.8 332 L 561.6 330.4 L 562.4 329.9 L 562.3 327.6 L 561.7 326.7 L 562.4 325.9 L 562.4 324.2 L 563.4 324.7 L 564.4 324.2 L 564.4 323.1 L 565.7 321.5 L 565.6 319 L 566.8 318.3 L 567.5 317.1 L 568.7 313.3 L 570.7 311.8Z\" },\n { code: \"ML\", name: \"Meghalaya\", type: \"state\", cx: 521.9, cy: 305, d: \"M 489.3 305.9 L 492.7 304.4 L 489.8 301.1 L 490.8 300.8 L 491 298.8 L 492.5 298.3 L 494.9 295.4 L 496.4 295.8 L 499.6 295.1 L 500.5 294.2 L 501.9 294.7 L 503 294 L 504.3 295.5 L 503.8 297 L 505.4 295.4 L 506.5 296 L 506.4 297 L 507.7 295.7 L 509.1 295.5 L 509 296.6 L 510.5 295.6 L 512.2 295.6 L 513 296.6 L 513.5 295.7 L 514.1 297.3 L 515.5 297.2 L 514.8 298.9 L 515.9 298.2 L 519.3 298 L 518.9 300 L 519.2 301.2 L 521 300.8 L 522.4 298.5 L 524.3 298.1 L 526.7 297.6 L 525.5 297.7 L 526.8 296.3 L 527.8 293.6 L 529.1 293.9 L 529.2 295.3 L 529.9 296.8 L 531.1 295.6 L 531.3 292.9 L 533.3 291.4 L 534.6 292 L 534.5 293.1 L 535.6 294.4 L 537.2 293.4 L 538.6 293.6 L 540.4 293.3 L 541.4 292.4 L 542.8 292.8 L 544.1 292.4 L 540.9 295.8 L 542.5 296.8 L 541.5 297.7 L 540.9 299.1 L 541 302.7 L 542.6 301.6 L 544.9 301.3 L 546.1 300.6 L 547.2 301.2 L 547.1 302.2 L 548.7 303.9 L 550 304.2 L 550.3 305.5 L 552.1 304.7 L 551.9 306 L 550.2 307.8 L 551.1 309.1 L 552.2 308.6 L 553.6 310.1 L 554.6 311.1 L 555.3 312.4 L 554.7 313.3 L 555.5 314 L 552.4 315.1 L 551.4 316.6 L 549.2 316 L 549.6 317 L 548.3 316.8 L 547.9 318.6 L 545.2 318.2 L 542.7 317.1 L 538.9 314.7 L 532.5 315.3 L 531.6 315.7 L 529.4 316.4 L 528.5 315.9 L 525.5 316.2 L 524.3 315.2 L 522.6 315.2 L 521 314.4 L 516.7 314.6 L 511.8 315.6 L 510 314.9 L 508.9 315.6 L 507.9 315.2 L 503.9 315.1 L 502.5 315.9 L 500 314.7 L 494.9 313.8 L 491.6 311.9 L 488.5 312.1 L 488.2 309.9 L 489 307.6 L 489.3 305.9Z\" },\n { code: \"MZ\", name: \"Mizoram\", type: \"state\", cx: 556.6, cy: 363.1, d: \"M 544.1 338.1 L 546.9 338.1 L 547.2 340.6 L 548.2 340.9 L 549.4 340 L 549.8 338.3 L 551.2 338.1 L 551.5 336.1 L 553 335.6 L 554.7 331.4 L 556.1 335 L 556.9 334.5 L 557.8 334.6 L 560 334.4 L 560.4 335.8 L 560.1 337.4 L 560.5 339.2 L 559.4 341.5 L 561.2 342.1 L 562.2 343.2 L 563.3 342.2 L 563.8 343 L 564.9 343.1 L 565.6 342.3 L 565.7 343.8 L 566.5 343.1 L 567.6 343 L 567.5 344.7 L 569 346.1 L 569.1 350.3 L 570 352.2 L 568.9 358.4 L 569.3 359.5 L 568.2 360.3 L 568.9 363.5 L 568.4 365.3 L 566.7 368.9 L 565.7 368.9 L 564.4 367.6 L 563 367.9 L 562.9 369 L 563.8 371 L 562.6 373.6 L 562.5 375.3 L 562 376.2 L 563.2 378.9 L 562.5 380.5 L 563.2 382.2 L 564.3 383.1 L 564.7 387.2 L 563.3 387.5 L 563.8 388.6 L 561.7 388.4 L 561.4 391 L 560.3 391 L 560.2 393.9 L 559 392.8 L 558 394.8 L 557 391.9 L 553.6 389.8 L 552.8 393.1 L 551.2 394.1 L 551 392.1 L 550.3 390.4 L 551.2 390.6 L 551.2 389.3 L 549.4 379.8 L 549.4 377.5 L 548.9 375.5 L 547.7 373.4 L 547.5 371.7 L 545.9 370.6 L 546.3 367.6 L 545.7 366.4 L 545.5 363.2 L 546.6 363 L 545.8 361.1 L 546 360.1 L 544.7 357.4 L 544.2 353.6 L 544.1 352 L 543.5 351.1 L 543.3 348.9 L 543.6 348.1 L 544.6 347.7 L 544.9 346.5 L 544.4 345.3 L 544.5 343.5 L 545 340.7 L 544.1 338.1Z\" },\n { code: \"NL\", name: \"Nagaland\", type: \"state\", cx: 589, cy: 291.2, d: \"M 609.5 268 L 610.4 271.9 L 609.3 272.6 L 610 274.2 L 610 275.8 L 610.5 277.1 L 608.6 278.8 L 608.6 279.8 L 606.6 282.8 L 607.5 283.6 L 608.2 284.6 L 607.8 288.4 L 607.8 290.2 L 607.8 291.7 L 609.3 292.4 L 607.5 295.2 L 605.9 296.1 L 605.4 297.6 L 606.3 300.4 L 603.7 302.7 L 603.3 304.2 L 603 305.3 L 601.7 305.5 L 600.9 307.1 L 597.9 308 L 596.8 307.8 L 595.1 306.7 L 595.1 304.8 L 596 303.4 L 596 302.2 L 593.9 304.1 L 592.2 304.7 L 592 305.9 L 589.6 307.1 L 587.4 307 L 586.9 305.7 L 585.7 306.4 L 584.6 306.2 L 582.9 304.6 L 581.7 305.6 L 580.1 305.3 L 577.4 306 L 577.2 307 L 578.2 307.8 L 576.2 310.5 L 573.7 314.4 L 572.5 313.2 L 571.4 313.4 L 570.7 312.5 L 570.2 310.9 L 570.8 310 L 570.4 308.6 L 568.9 307.9 L 567.4 305.8 L 569.6 303.7 L 571.2 303.1 L 572.9 300.4 L 575.9 298.2 L 575.5 296.7 L 576.9 296 L 578 296.7 L 577.6 298.3 L 579 297.9 L 579.9 298.3 L 580.6 297.2 L 582.1 296.4 L 581.5 294.2 L 582.3 292.6 L 582.6 290.1 L 585 286.2 L 586.5 285.7 L 586.7 282.8 L 588.8 280.3 L 589.2 282.3 L 590.5 281.6 L 591.5 281 L 591.7 278.9 L 593 278.4 L 594.8 276.5 L 596.2 275.7 L 598 275.9 L 600.6 274.1 L 602.5 270.8 L 603.5 270.3 L 604.8 271.2 L 607.6 270 L 609.5 268Z\" },\n { code: \"OR\", name: \"Odisha\", type: \"state\", cx: 366.6, cy: 437.1, d: \"M 421.6 423.4 L 424.4 423.4 L 424.6 424.7 L 423.1 424.8 L 421.1 426.3 L 419.9 425.9 L 420.5 423.7 L 421.6 423.4Z M 356.9 380.8 L 359.9 382 L 360.3 383.7 L 361.2 384.4 L 362.4 384.4 L 363.4 385.3 L 366.5 385 L 367.6 384.2 L 368.7 383.3 L 373.6 383.4 L 375.1 382.6 L 376.6 382.7 L 378.2 382.5 L 380.8 381.8 L 381.1 385 L 382 385.9 L 381 386.9 L 380 390.8 L 379 391.5 L 380.4 390.8 L 381.6 391.1 L 382.1 391.9 L 383.3 392.3 L 384.2 392.5 L 384.6 393.5 L 386.2 390.9 L 387.5 390.6 L 388.3 389.7 L 391.6 391.4 L 392.8 391.7 L 394 391.3 L 394.8 392.3 L 397.5 390.8 L 398.2 391.6 L 397.2 391.6 L 396.6 393.8 L 399.9 394.3 L 400 393.4 L 402 390.9 L 402.6 389 L 401.3 387.6 L 403 386 L 401.8 385.3 L 402.5 384.4 L 402.2 383.2 L 400.9 382.4 L 401.3 381.3 L 402.5 380.8 L 402.9 379.7 L 404.4 381.7 L 408.3 382.6 L 410 385.1 L 411.8 386.2 L 413.3 385.2 L 414 386.2 L 415.1 386.3 L 416.6 387.1 L 418.3 388.3 L 418.1 390 L 419.8 389.8 L 420.8 391.2 L 423.6 391.5 L 425 392.5 L 425.3 393.8 L 424.5 395.8 L 425.2 396.8 L 426.7 396.9 L 426.7 395.8 L 428.1 395.2 L 428.3 394.2 L 429.9 394.6 L 430.5 398.1 L 432.5 398.8 L 434.6 399.4 L 435.2 400.7 L 434.9 402.2 L 435.4 403.1 L 433.1 404.6 L 429.1 404.5 L 427.1 405.5 L 424.1 407.9 L 422.1 410.2 L 420.6 413.1 L 420.6 414.5 L 423.9 422.2 L 423.6 423.1 L 421.9 422.7 L 420.7 423.4 L 419.5 426.4 L 420.5 426.6 L 423.1 424.8 L 424.6 425.2 L 425.6 424.9 L 419.7 429.1 L 418.5 432.2 L 419.6 432.6 L 419.6 433.7 L 417.3 435.7 L 414.5 436.9 L 411.3 441.1 L 410.8 442.5 L 409.7 442.3 L 408.6 440.5 L 407.6 440.7 L 408.7 441.4 L 410.2 443.1 L 394.4 448.3 L 388.1 451.5 L 382.6 455.4 L 380.9 457.3 L 377.5 459.8 L 375.5 461.8 L 374 464.3 L 373.1 463.7 L 372.7 462.4 L 371.8 463.1 L 370.2 463 L 370.9 464.2 L 371.6 464.7 L 370.7 464.7 L 370.1 465.7 L 369.6 464.4 L 367.9 465.5 L 367.5 466.4 L 366.2 465.7 L 366.8 466.8 L 366.6 468.1 L 365.8 468.7 L 364.8 468.8 L 364.4 471 L 360.3 471.4 L 359.6 472 L 358.7 472.1 L 357.5 470.7 L 355.5 470.9 L 353.9 470.3 L 352.1 465.8 L 351 466.5 L 351.9 468.2 L 350.2 466.3 L 348.4 462.3 L 347.7 463.1 L 347.4 464.8 L 346.6 464.2 L 346.3 465.9 L 345.4 465.4 L 345.7 464.4 L 344.7 464.3 L 345.1 465.5 L 344.6 467.3 L 343.5 466.1 L 342.1 465.8 L 341.2 466.2 L 341.7 468 L 342.1 467 L 342.9 467.8 L 343.6 469.4 L 342.4 470 L 340.6 471 L 339.3 471.6 L 338.9 472.8 L 337.3 471.4 L 335.5 474.3 L 334.6 474.6 L 334.5 475.8 L 335.5 475.9 L 335 476.8 L 336.3 477 L 334.6 479.3 L 335.6 479.6 L 335.5 480.9 L 332.8 481.5 L 331.9 481.1 L 331.7 480 L 329.8 479.4 L 329.6 480.4 L 329 482 L 326.6 483 L 325.9 484.4 L 324.8 483.4 L 325.5 481.6 L 323.8 480.6 L 324.2 479.4 L 323.5 477.8 L 322.4 477.1 L 319.9 480.1 L 320.4 481.1 L 319.3 482.3 L 320.6 482.6 L 320.1 483.3 L 319.2 484.7 L 320 486.5 L 319.2 488.9 L 317.8 488.7 L 317.8 490.2 L 315.7 489.6 L 312.3 488.5 L 310.6 490 L 307.2 491.4 L 306.3 492.4 L 305 493.1 L 304.1 492.8 L 303 494.2 L 302 493.9 L 300 494.5 L 297.9 494.4 L 298.1 492.6 L 299 492.8 L 299.9 490.6 L 299.9 489.2 L 300.6 487.6 L 301 486.1 L 301.1 483.7 L 302.6 482.7 L 304 482.4 L 306 481.6 L 306.4 480.1 L 308.5 477.6 L 309.4 477.3 L 310.5 476.5 L 309.2 475.1 L 310.5 474.9 L 311 473.4 L 312.5 472.7 L 313.5 472.9 L 313.6 471.8 L 314.6 471.8 L 315.4 471 L 315.6 468.5 L 317.1 468.1 L 316.8 465.6 L 316.1 464.6 L 316.2 463.2 L 315.3 463 L 315.2 459.6 L 315.9 458.3 L 314.9 457.3 L 315.9 456 L 314.4 455.8 L 313.8 453.8 L 312.2 454 L 312.8 453.1 L 312.6 449.1 L 313.1 447.2 L 311.3 446.9 L 310.8 445.5 L 308.3 444.2 L 308.1 443.2 L 308.7 441.1 L 310.4 439.5 L 312.3 441.8 L 313 440.8 L 315.8 442.5 L 316.9 442 L 319.4 446.1 L 320.5 444.8 L 321.7 444.3 L 325.1 445.3 L 324.6 446.3 L 324.9 447.5 L 326.3 446.2 L 327.6 446.1 L 327.9 445.1 L 327.7 442.2 L 326 442 L 320.6 440.6 L 320.3 438.5 L 321.1 437.1 L 320.9 435.6 L 320.6 433.9 L 321.4 431.7 L 321 430.6 L 320.3 429.7 L 319.1 428.6 L 320 426.9 L 319.3 423.7 L 319.6 420.7 L 320.8 421.2 L 321.1 422 L 322.1 422.1 L 322.7 420.2 L 324.2 419.3 L 325.8 417 L 326.3 415.4 L 326.1 414.2 L 328.7 414 L 329.5 414.5 L 331.6 414.2 L 333.3 413.6 L 335.2 415 L 337 415.4 L 338.6 414.6 L 339.2 411.5 L 340.5 410.9 L 340.4 408.7 L 342.8 409.6 L 343.2 408.2 L 342.2 407.1 L 341.9 405.8 L 342.9 403 L 344.3 402.1 L 344.5 403.2 L 343.8 401.5 L 345.2 399.8 L 344.8 398.8 L 345.4 398.1 L 346.4 398.6 L 346.3 397.6 L 347.5 397.3 L 347.9 395.7 L 346.8 395.2 L 346.5 392.2 L 347.9 391.9 L 346.9 391 L 348.9 388 L 349.9 387.5 L 351.3 387.6 L 353.7 385.1 L 357 384.5 L 357.8 382.2 L 356.3 381.3Z\" },\n { code: \"PY\", name: \"Puducherry\", type: \"ut\", cx: 288.4, cy: 588.5, d: \"M 263.2 657.7 L 262.3 656.5 L 260.4 655.8 L 259.9 654.6 L 260.9 654.8 L 260.5 653.8 L 261.7 654.2 L 263.3 654 L 263.2 657.7Z M 262.1 634.8 L 261 634.4 L 259.9 634.1 L 258.9 633.5 L 259.4 632.6 L 260.2 633.3 L 260 632 L 259.8 631 L 258.6 630.7 L 259.4 629.9 L 260 630.9 L 261 630.9 L 260.7 632.5 L 262 631.2 L 262.9 631.8 L 262.1 634.8Z M 317.5 520.9 L 315.7 520.1 L 316.6 519.4 L 318.1 520.1 L 317.5 520.9Z\" },\n { code: \"PB\", name: \"Punjab\", type: \"state\", cx: 162.8, cy: 163.6, d: \"M 173.5 123.6 L 173 125.4 L 174.8 127.8 L 172.8 128.9 L 170.4 131.7 L 167.8 132.7 L 167.8 134.1 L 168.7 134.6 L 166.8 136.8 L 168.4 136.9 L 169.3 137.4 L 171.5 139.2 L 173.9 140.3 L 175.7 143.9 L 174.6 143.9 L 176.4 148.4 L 179.8 154.6 L 179.4 156 L 180.2 157.4 L 183 157.1 L 183.9 156.2 L 183.5 154.9 L 184.4 154.6 L 186.4 157.5 L 187.4 158.3 L 188.5 158 L 189.9 158.9 L 189.4 159.8 L 190.5 159.6 L 189.7 160.7 L 189.6 162.2 L 190.5 162.6 L 189.8 164.1 L 190.1 165.4 L 192.4 166.5 L 193.7 168 L 195 170 L 195.4 171 L 194.2 171.7 L 193.5 170.9 L 191.9 171.9 L 192.7 173.6 L 194.3 174.3 L 195.2 174.6 L 196.9 176.1 L 196.3 177.7 L 197.1 178.3 L 196.4 179.1 L 196.4 180.3 L 197.3 181.7 L 196.2 182.4 L 195.1 180.5 L 193.4 180.3 L 192.1 181.5 L 193 182.4 L 191.6 183.3 L 190.1 184.8 L 188.7 184.9 L 188.3 185.9 L 189.5 185.1 L 190.1 185.8 L 190.5 189.1 L 189.3 189.9 L 187.6 189.8 L 186.5 189.2 L 185.6 186.5 L 185.4 187.7 L 183.7 187.9 L 183.6 189 L 182 188.7 L 180.9 187.7 L 182.1 189.1 L 180.8 190.8 L 180.9 193.3 L 180.1 193.7 L 180.5 194.8 L 181.8 195.3 L 179 197.2 L 178.1 196.9 L 177.1 198.5 L 175.5 198.9 L 173.6 198.4 L 172.5 196.7 L 171.2 196.4 L 169.7 196.8 L 169.5 198.2 L 167.9 197.8 L 166.6 198.6 L 165.3 198.1 L 163.8 196.9 L 162.3 199.4 L 161.3 199.8 L 161.7 200.7 L 160.1 202 L 160.4 203.1 L 158.8 203.7 L 158.8 202.1 L 157.7 201.5 L 157.3 200.6 L 158.2 200 L 158.1 199 L 159 198.3 L 157.9 196.1 L 157.2 197.6 L 155.8 196.9 L 155.6 195.8 L 155.7 194.1 L 155.2 195 L 153.5 195.6 L 151.9 193.2 L 151.1 192.7 L 149.3 192 L 147.5 192.8 L 145.6 193.9 L 142.9 193.3 L 128.7 192.6 L 128.8 190.6 L 130.4 188.7 L 130.4 186.7 L 130.2 185 L 128.3 182.2 L 129 180.9 L 129.7 179.7 L 130.8 178.7 L 132 177.8 L 132.9 178 L 133.3 176.8 L 133.3 175.8 L 134.6 175.2 L 136.4 173 L 137.6 172.7 L 137.1 171.7 L 137.6 170.8 L 138.3 169.6 L 139.4 169.6 L 139.4 168.6 L 140.6 168 L 141.8 166.5 L 143.3 165.7 L 143.8 163.8 L 145.2 164.3 L 146.4 163.9 L 146.9 163 L 146.5 162.1 L 145.4 162.4 L 144.6 162 L 144.4 163 L 143.5 162.3 L 142.6 161.9 L 142.7 158.4 L 143.7 157.7 L 145.7 153.4 L 144 152.3 L 144.8 151.4 L 142.9 146.4 L 143.6 145.6 L 143.8 143.6 L 144.7 142 L 146.1 141.2 L 147.1 141 L 148.1 140.3 L 149.5 140.2 L 149.7 139.1 L 150.7 138.4 L 152.1 137.2 L 153.9 138.2 L 156.4 136.8 L 157.5 137.2 L 158.2 135.9 L 159.2 136.7 L 162 132.7 L 162 131.8 L 161 130 L 163.1 130.3 L 164.4 129.9 L 165.1 131.6 L 165.7 129.7 L 169.8 127.8 L 170.6 126.2 L 171.9 126 L 173.5 123.6Z\" },\n { code: \"RJ\", name: \"Rajasthan\", type: \"state\", cx: 128.3, cy: 277.1, d: \"M 130.4 186.7 L 130.4 188.7 L 128.8 190.6 L 128.7 192.6 L 142.9 193.3 L 142.6 194.3 L 143.7 195.3 L 141.7 197.4 L 141.8 198.5 L 143.1 198.6 L 144.4 197.9 L 144 203.2 L 145.1 204.2 L 144.3 206 L 143.1 206.2 L 143.8 207 L 144.7 208.5 L 145.7 209.3 L 145.9 208.2 L 148.3 208.6 L 150.2 207.4 L 152.1 208.4 L 152.7 210.5 L 154.7 210.4 L 155.5 211.8 L 157.8 210.9 L 158.8 211.8 L 161 210.2 L 160.9 211.7 L 161.8 211.3 L 162.8 213 L 161.9 214.2 L 162.4 216 L 163.5 216.2 L 163.6 217.4 L 165.3 217.6 L 165.4 218.5 L 164.3 219.8 L 165.3 222.1 L 165 223.3 L 165.7 224.3 L 166.3 227.8 L 167.7 228.1 L 168 229.6 L 171.3 231.9 L 171.1 233.1 L 173.8 233.5 L 174.6 234.1 L 175.3 235.4 L 176.8 236.4 L 176.6 237.4 L 177.5 237.9 L 178.4 239.6 L 177 239.2 L 174.9 241.2 L 175.9 241.6 L 177.1 241.7 L 176.6 242.7 L 175.7 242.8 L 176 244 L 175.5 245.2 L 174.7 245.7 L 175.8 245.9 L 175.5 247.1 L 177.5 247.5 L 178.3 247 L 180.2 248.5 L 181.4 247.7 L 180.8 246.2 L 180.4 244.3 L 181.2 242.8 L 180.3 242.1 L 182 241.8 L 183 242.9 L 184 242.7 L 184.3 241.7 L 183 241 L 184.4 240.3 L 182.6 239 L 183.9 239.1 L 184.8 240.1 L 187 239.6 L 187.6 240.9 L 186.5 241.2 L 187.6 242 L 186.6 242.3 L 188.5 242.6 L 188.5 244.4 L 189.8 243.4 L 191.2 243.1 L 191 241.1 L 194.2 239.6 L 194.4 238.2 L 195.5 237.8 L 198 239.9 L 197.1 243.7 L 197.1 245.5 L 197.2 247.9 L 196.3 250.5 L 197 251.3 L 196.7 252.4 L 198.2 252.4 L 198.7 250.2 L 200.7 250.3 L 199.4 249.3 L 199.8 248.2 L 201.8 249.3 L 202.3 248.3 L 203.3 248.2 L 204.1 249.1 L 204.8 248.3 L 205.8 249 L 205.6 250.8 L 206.5 251.4 L 206.6 252.5 L 205.9 253.5 L 206.8 254 L 206.5 255.6 L 207.5 256 L 207.8 257 L 208.3 258.3 L 210.1 259.4 L 211.9 260.8 L 212.8 260.4 L 212.2 261.5 L 213.4 263.1 L 214.1 264 L 212.6 264.8 L 212.2 266 L 210.1 266.7 L 211.7 267.1 L 211.5 268.2 L 213.1 268.7 L 214.1 267.8 L 214.8 269.1 L 215.3 268.3 L 215.5 269.4 L 213.5 269.8 L 208.4 272.5 L 208.8 273.7 L 208.6 275 L 210 275 L 210.1 273 L 212.5 273.4 L 215 272.1 L 215.9 270.7 L 219 271.9 L 219.2 271 L 220.2 271.7 L 221.6 271.4 L 222 272.7 L 222.4 271.3 L 223.8 271.5 L 224 270.3 L 226.1 270.7 L 227.4 271.1 L 226.6 272.1 L 226.2 273.3 L 225.1 273.5 L 225.4 274.4 L 223.7 274.3 L 224.1 275.4 L 223.4 277.2 L 221.3 276.7 L 220.3 277.6 L 219.1 277.7 L 218.7 278.8 L 217.4 279.3 L 217.2 280.4 L 215.7 280.7 L 215 281.7 L 214 281.6 L 210.7 284 L 208.5 284.2 L 208.7 285.2 L 206.4 285.4 L 205.4 287 L 203.5 288.4 L 201.7 288.4 L 201 289.6 L 199.7 289.8 L 198.6 291.1 L 196.4 292.1 L 195.1 293.7 L 194.5 295.6 L 193.4 295.9 L 192.9 296.9 L 190.9 296.7 L 190.5 297.7 L 188.3 299.5 L 188.3 301.1 L 187.2 301.5 L 187.9 302.6 L 188.1 306.2 L 189.1 308.4 L 189.9 309.8 L 191.7 310.9 L 193.6 311.1 L 195.4 311.2 L 196.5 311.4 L 197.6 312.6 L 199.4 312 L 200.6 311 L 203.5 311.7 L 203.9 310.2 L 205.3 308.9 L 207.1 309.2 L 206.5 311.4 L 206.8 312.7 L 208.1 313.8 L 207.7 314.8 L 207.9 316.7 L 205.7 317.4 L 204.8 316.5 L 202.7 316.7 L 201.5 317.8 L 198.8 317.5 L 195.6 319.2 L 196.4 321.5 L 197 322.3 L 197.2 323.2 L 195.1 323.5 L 195.5 325.7 L 196.9 325.8 L 197.8 325.3 L 198.3 326.2 L 199.5 326.7 L 200.2 328.4 L 200.4 330.2 L 200 331.3 L 198.9 332.5 L 198.1 332.9 L 197 332.3 L 196.9 330.9 L 195.9 330.7 L 194.7 331.1 L 195.5 332.7 L 195.3 336 L 196.1 337.6 L 197.6 339.3 L 196.6 341.1 L 195.6 340.9 L 194.4 341.4 L 193.4 340.1 L 192.2 340.1 L 192.2 338.2 L 192 337.3 L 190.2 337.8 L 189.8 338.7 L 189.1 339.4 L 188.3 340.3 L 186.9 338.6 L 185.9 338.7 L 183.7 338.1 L 182.7 339 L 181.2 339 L 180.7 337.3 L 180.5 336.1 L 179.6 337.3 L 179.8 338.3 L 179.1 339.5 L 179.4 342 L 177.4 342.5 L 175.4 343.7 L 175.8 346 L 173.6 347.2 L 171.7 347.5 L 170.7 347.1 L 169.6 346.7 L 170.2 347.9 L 170 348.8 L 169.2 350.3 L 168.5 349.3 L 166.9 349.3 L 166.8 348.3 L 164.1 346.3 L 164.3 344.8 L 165.4 343.2 L 166.6 343.8 L 168.1 344.4 L 168.9 343.5 L 169.6 345.1 L 171 344.4 L 171.4 342.8 L 172.6 342.5 L 171.6 341.6 L 170.5 340.9 L 171.2 338.9 L 172.4 338.3 L 172.1 336.8 L 171 336.7 L 170.4 335.7 L 170.2 334.3 L 171.6 332.6 L 172.9 334 L 174.3 333 L 174.3 332.1 L 174.6 331.1 L 174.5 330.2 L 173.2 329.1 L 172.9 328.1 L 172.7 326.2 L 170.9 325.4 L 167.6 327.3 L 166.9 326.4 L 164 327.1 L 159.8 326.2 L 158.7 326.4 L 157.9 325.3 L 158.4 324.2 L 159.4 323.6 L 158.3 322.4 L 159.4 322.1 L 158.9 323 L 160.1 323.2 L 160.7 324.2 L 163.2 322.9 L 161.1 322.3 L 159.7 322.2 L 160.4 321.4 L 159.8 320.4 L 160.8 322 L 161.4 320.4 L 161 319.3 L 161.6 318.4 L 157.4 318.4 L 157.5 319.7 L 156.4 320.4 L 156.4 322.3 L 155 322.4 L 152 322.2 L 151.8 321.3 L 150.8 321.1 L 150.3 320.1 L 149.8 321.3 L 150.5 323.2 L 150.4 324.7 L 151.9 324.8 L 153.9 324.6 L 154.2 325.7 L 153.8 326.8 L 152.5 328 L 151.3 328.1 L 149.2 324.6 L 148.7 327.3 L 149.6 327.7 L 148.9 328.6 L 148.1 329.5 L 148.3 330.6 L 147.3 331.7 L 148.8 332.4 L 149.7 332.9 L 150.6 332.8 L 149 335.1 L 148.9 336.5 L 148.2 337.4 L 150.8 337.4 L 151.6 338.6 L 153.6 343.6 L 152 346 L 151.6 347.5 L 152.4 350.9 L 151.7 352.2 L 152.4 353.5 L 150.3 355.4 L 149.3 355.9 L 147.8 356.7 L 146 357.6 L 145 357.7 L 144.1 358.6 L 144.1 359.7 L 142.9 360.9 L 143.7 362.1 L 145.8 362.6 L 147 362.3 L 146.9 363.6 L 148 363.3 L 147.3 364.3 L 146.3 364.1 L 144.9 365.5 L 143.5 365.8 L 142.8 366.9 L 140 366.3 L 138.5 367.5 L 137.6 366.7 L 136.7 364.4 L 135.3 365.3 L 134.1 364.6 L 134.2 362.4 L 133.5 361.8 L 132.2 361.8 L 131.9 360.9 L 131 360.7 L 130.5 359.8 L 129.8 360.6 L 128.8 360.7 L 127.4 358 L 126.3 358.3 L 125 358.9 L 124.5 357.8 L 123.4 358.2 L 123.5 356.6 L 123 355.5 L 123.5 353.7 L 121.7 352.9 L 120.2 353.8 L 120.1 351.7 L 118.1 349.8 L 117.1 350.1 L 116.8 347.8 L 118.2 346.1 L 117.8 344.6 L 118 343.1 L 117 342.2 L 117.1 341.2 L 116.2 341.5 L 116.1 342.5 L 115.2 343.7 L 114.2 344.1 L 113.1 343.1 L 113.7 341.9 L 111.2 340.9 L 110.5 339.8 L 111.9 336.7 L 113 335.8 L 113.9 335.3 L 112.5 335.7 L 110.5 334.6 L 111.1 333.8 L 110.8 332.1 L 109.8 332.8 L 108.9 332.4 L 107.8 334.8 L 106.9 336.3 L 105.7 335.3 L 102.6 335.4 L 101.7 334 L 101.8 333 L 99.3 332.6 L 98.4 331.8 L 97.4 333.2 L 97.5 334.2 L 96.5 334.3 L 95.9 332.9 L 96 331.8 L 94.9 332 L 94.1 330.6 L 92.7 331 L 91.7 330 L 93.4 329.8 L 94 329 L 93.2 329.2 L 91.3 328.6 L 89.8 329.1 L 88 328.2 L 88 327.1 L 84.8 328.8 L 84.3 327.8 L 83.3 327.6 L 82.9 329.4 L 81.8 328.9 L 81.5 327.7 L 78.4 328.6 L 77.4 327.7 L 74.5 327.6 L 72.1 328.9 L 71.4 328.1 L 70.2 329.3 L 65.9 327.5 L 62.3 321.1 L 61.1 315.9 L 58.2 312.9 L 57.7 311.5 L 56.1 309.8 L 56.5 306.6 L 56 302 L 54.9 301.8 L 53 302.6 L 49.9 302.9 L 47.2 301.9 L 43.1 295.8 L 42.8 292.6 L 44.8 288.2 L 45.1 282.1 L 44.7 280.5 L 42.4 279.3 L 38.2 279.8 L 36.8 279.5 L 34.7 277.9 L 29.8 275.5 L 29.3 274 L 29.9 268.7 L 31.4 264.9 L 37.8 258.9 L 39.5 256.3 L 41.3 255 L 43.4 249.6 L 44.5 247.9 L 49.2 243.4 L 51.8 242.7 L 53.6 243.1 L 56.1 245.8 L 56.2 247.7 L 58 250.9 L 60.9 251.3 L 69.7 247.7 L 72.7 247.1 L 78.4 247 L 83.7 244.7 L 84.6 240.4 L 86 238.3 L 90.2 234.4 L 92.9 226.5 L 94.7 224 L 102.1 219.5 L 107.3 217.1 L 108.6 214 L 110.6 211.4 L 114.8 203.4 L 117.5 193.5 L 122.4 191.3 L 126.4 190.1 L 130.4 186.7Z\" },\n { code: \"SK\", name: \"Sikkim\", type: \"state\", cx: 457.7, cy: 254.1, d: \"M 461.7 241.1 L 464.1 241.7 L 465.9 243.3 L 466 245.4 L 467.1 247.2 L 466.4 248.3 L 466.2 252.1 L 464.4 254.7 L 465.4 258.8 L 467.9 260.8 L 467.4 262.1 L 465.2 262.8 L 464.9 264.4 L 464.1 265.4 L 462.6 264.5 L 461.1 264.4 L 459.7 264.3 L 458.9 264.6 L 456.9 267.1 L 454.4 266.5 L 452.4 266.1 L 451.5 265.7 L 450.2 266.2 L 449.1 265.5 L 448.8 264 L 447.5 263.6 L 448.7 260.6 L 448.1 259.7 L 449 258.3 L 448.2 256.5 L 451.6 249 L 451.1 248.2 L 451.6 247.4 L 450.1 246.6 L 449.9 244.9 L 451.4 245.1 L 452.3 244.4 L 454.9 243.9 L 455.9 244.2 L 458 242.4 L 459.3 242.6 L 459.6 241.4 L 461 241Z\" },\n { code: \"TN\", name: \"Tamil Nadu\", type: \"state\", cx: 227.9, cy: 657.6, d: \"M 251.1 691.8 L 251.1 692.9 L 254 695.8 L 250.8 693.7 L 248.9 693.6 L 250.1 692.7 L 251.1 691.8Z M 226.4 613 L 225.7 614.6 L 227.4 614.4 L 228 615.3 L 229.8 616.2 L 231.8 616.1 L 231.8 615.1 L 232.6 614.1 L 233.8 614.5 L 233.8 613.2 L 234.6 612.5 L 235.6 609.1 L 235.3 607.7 L 236.2 606.8 L 237.1 607.1 L 237.3 605.9 L 238.3 606.2 L 241.2 605.2 L 241.4 606.8 L 242.3 606.8 L 242.1 605.7 L 243.6 605.5 L 245.6 606.9 L 247.5 607.1 L 248.3 605.3 L 249 604.1 L 250.1 603.9 L 251 605 L 252 604.2 L 253.6 602.9 L 253.9 601.9 L 253.6 600.7 L 252.5 600.2 L 253.7 599.7 L 256.1 600 L 256.4 601 L 259.1 600.7 L 259.2 601.9 L 260.3 602.1 L 261.7 602 L 260.3 600.9 L 261 600.2 L 262.1 600.2 L 263.2 600.2 L 264.9 599.4 L 265.5 598.5 L 265.8 597.5 L 266.5 596.6 L 267.4 596 L 266.4 595.4 L 268.2 594.7 L 270 596.1 L 271.8 596.1 L 272.8 598.2 L 273.6 598.6 L 273.6 597.4 L 274.4 600.9 L 273.3 604 L 272.4 612.3 L 270.1 619.5 L 264 628.9 L 262.9 631.8 L 262 631.2 L 260.7 632.5 L 260.2 631.1 L 259.4 629.9 L 258.6 630.7 L 259.8 631 L 259.3 631.9 L 260.4 632.9 L 259.4 632.6 L 258.9 633.5 L 259.9 634.1 L 261 633.6 L 262.1 634.8 L 261.1 640.5 L 262.9 645.3 L 263.3 654 L 262.1 653.8 L 260.5 653.8 L 260.9 654.8 L 259.9 654.6 L 260.4 655.8 L 262.3 656.5 L 262.4 657.7 L 263.9 669.6 L 262.9 670.1 L 260.8 670.1 L 252.7 669.2 L 250.7 670.5 L 249.2 673.1 L 249.2 674.3 L 250.1 675.6 L 247.5 678 L 246.8 679.8 L 243.9 683.1 L 242.6 685.5 L 241.7 688.4 L 242.7 690.1 L 245.5 692.5 L 248.3 692.9 L 246.1 693.4 L 243 693.1 L 241.2 693.5 L 237.9 694.6 L 236.3 695 L 234.5 696.4 L 230.7 696.8 L 226.2 700.3 L 225.3 702.1 L 225 704.6 L 226.7 705.1 L 225.3 705.2 L 223.8 707.3 L 223.6 709 L 224.6 708.8 L 224.4 710.9 L 222.9 712.6 L 222.6 713.5 L 217 716.6 L 215.8 718.2 L 211.9 719.1 L 211.3 720.5 L 206 719.5 L 201.1 715.4 L 202.5 715.1 L 201.9 713.6 L 203.6 712.2 L 203.1 711 L 204.5 710.8 L 204.9 710 L 202.4 705.4 L 203.7 704.5 L 204.4 702.6 L 203.5 701.3 L 201.9 699.1 L 203 698.5 L 203.3 697.3 L 204.6 696.1 L 204.9 694.6 L 204.9 692.7 L 205.3 691.9 L 206.4 689.5 L 207.4 689 L 207.8 688 L 206.8 687.3 L 206.6 685.7 L 204.7 686.4 L 203.3 685.5 L 202.3 685.5 L 203.2 683 L 203.6 681.5 L 203.9 679.9 L 204.2 677.8 L 204.5 676 L 203.1 674.3 L 204.8 673.7 L 205.2 671.7 L 204.6 670.6 L 203.7 669.4 L 202.6 668.5 L 200.1 669.9 L 199.8 670.8 L 198.2 671.7 L 196.8 671.3 L 195.8 670.3 L 194.8 669.7 L 195.3 668.2 L 194.5 666.9 L 195.1 663 L 194.5 662.1 L 196 662 L 195.6 660.9 L 196.6 658.7 L 195.3 657.9 L 194.8 656.6 L 191 655.2 L 192.3 652.7 L 194.2 652.5 L 193 652.4 L 193 650.7 L 191.9 650.1 L 192.7 648.6 L 190.4 649.2 L 187.3 648.8 L 186.5 649.3 L 186.4 648.1 L 188.5 646.7 L 188.5 645.4 L 186.4 644.7 L 185.6 643.5 L 183.9 642.9 L 182.6 642.5 L 181.7 642.9 L 181.4 640.4 L 182.4 639.8 L 184.2 640 L 184.9 639.1 L 185.9 639.1 L 186.5 638.4 L 187.7 637.4 L 188.5 638 L 189 639.4 L 193.2 639.4 L 194.8 639.7 L 195 638.6 L 196.6 635.4 L 198 635.8 L 199 634.9 L 199.4 635.8 L 200.5 636.7 L 201.2 635.9 L 204 635.4 L 205.3 635 L 206.3 636 L 208.4 636.1 L 209.2 634.1 L 209.1 633 L 209.8 631.9 L 213.8 631.8 L 214.5 630.2 L 216.2 627.9 L 215.3 626.5 L 209.4 625.7 L 209.5 624.3 L 211.1 623.8 L 212.5 622.2 L 212.9 620.9 L 213 619.3 L 211.9 619.5 L 212.6 618.8 L 211.8 617.5 L 212.4 616 L 213.7 614.8 L 214.8 614.8 L 216.9 612.2 L 216.6 611.1 L 219.6 610 L 219.4 611.4 L 220.2 610.7 L 221 612 L 221.8 610.8 L 224.2 612.6 L 226.4 613Z\" },\n { code: \"TG\", name: \"Telangana\", type: \"state\", cx: 255.7, cy: 492.6, d: \"M 211.3 482.9 L 210.6 481.5 L 211.4 479.9 L 212.1 479.2 L 211.2 478.8 L 212.5 478.6 L 212.4 476.8 L 213.5 476.7 L 215.5 476.6 L 215.4 473.7 L 216 473 L 217.8 470.6 L 220.2 470.2 L 218.8 468.2 L 217.9 468.1 L 218.2 467.1 L 217.2 467.2 L 216.2 466.4 L 216 465.3 L 216.9 464.8 L 217 463.6 L 218 463.8 L 217.7 462.7 L 218.3 461.7 L 218.5 459.9 L 219.3 459.6 L 218.3 459.2 L 220.3 457.8 L 222.5 459.5 L 223.3 459.9 L 225.3 460.3 L 225.9 458 L 225.6 456.1 L 228.4 455.1 L 227.8 452.6 L 228.5 451.5 L 227.5 450.1 L 229.3 448.9 L 229.8 447.3 L 229.1 445.9 L 228.1 445.6 L 228.7 444 L 230.1 444.9 L 230.4 445.9 L 232.2 446.4 L 233.3 446.3 L 235.1 446.4 L 237.6 447.6 L 239.2 447.3 L 240.5 447.8 L 240.8 450.3 L 242.1 450 L 243.3 450.4 L 243.6 452 L 243 452.8 L 244.4 453.1 L 246.4 453.3 L 248 455 L 249.1 454.8 L 249.4 453.4 L 249.5 451.3 L 250.9 451.8 L 252.4 452.3 L 254.6 454.1 L 256.3 452.8 L 257.5 453.9 L 258.5 452.2 L 260.7 451.5 L 261.8 451.8 L 262.7 453.1 L 265.2 454.9 L 266 456.4 L 265.7 458.9 L 264.8 460.6 L 265.3 461.9 L 263.4 463.5 L 263.4 465.2 L 264.7 464.9 L 265.2 469.4 L 264.2 470 L 265.1 471.1 L 266.9 471.6 L 269.1 473.7 L 270.2 473.3 L 271.2 473.2 L 272.6 472.7 L 274.3 475.9 L 277.5 474.9 L 280.9 477.5 L 281.3 478.6 L 282.4 479.5 L 282.8 480.7 L 283.4 482.7 L 284.4 483.8 L 283.1 484.6 L 283.2 485.8 L 284.6 485.9 L 285.3 484.3 L 286.2 484.9 L 286 486.7 L 288.6 485.8 L 287.9 487.9 L 289.9 494.8 L 290.8 494.9 L 292.8 493.3 L 294.9 494.3 L 297.9 494.4 L 299.5 494 L 302 493.9 L 303 494.2 L 304.1 492.8 L 305 493.1 L 306.3 492.4 L 307.1 493.3 L 302.2 496.4 L 302.1 497.3 L 300.5 499.6 L 300.5 500.8 L 300.3 502.9 L 298.5 505 L 297.6 505.1 L 296.5 504.3 L 295.2 506 L 293.3 505.9 L 292.8 508.1 L 290.2 508.5 L 289 509.3 L 287 508.8 L 287.2 510.1 L 286.2 510.1 L 286 512.4 L 283 512 L 281 512.3 L 279.2 510.3 L 277.8 511 L 277.5 512.4 L 276.7 513.2 L 275.5 511.7 L 275.4 513.2 L 274.7 514.3 L 277.6 515.5 L 279.8 515.3 L 279.8 516.5 L 279.1 517.7 L 280.2 518.6 L 279.3 519.2 L 276.9 518.5 L 275.6 517.1 L 275 518 L 274.7 517 L 273.8 516.6 L 273.4 514.6 L 272.5 513.3 L 271.1 513.2 L 269.6 513.9 L 267.6 514.4 L 266.8 515.8 L 266.4 516.8 L 267.3 517 L 268.2 518 L 267.7 519.6 L 265.7 522 L 264.4 522.1 L 263.5 520.7 L 262.3 520.9 L 261.5 520 L 258.7 521.5 L 255.2 522.3 L 253.7 523.4 L 250 523.9 L 249.1 525.2 L 249 531.5 L 248 532 L 244.7 531.4 L 242.3 532.4 L 242 534.7 L 240.9 533.5 L 240.3 535.1 L 239 536.6 L 237.6 536.5 L 235.4 534.8 L 234.1 535.8 L 230.6 535.2 L 228.6 536.5 L 227.3 536.4 L 226.8 538.8 L 225.5 539.5 L 225.2 540.7 L 223.9 541.2 L 222.9 540.8 L 222.3 539.4 L 221.5 540.5 L 218.9 539.6 L 216.9 540.3 L 215.1 539.8 L 213.8 540 L 212.6 539.2 L 210.4 539 L 210.4 537.1 L 210.4 534.7 L 209.8 533.4 L 210.4 531.9 L 210.2 530.8 L 211.6 530.1 L 212.2 529.2 L 210.1 528.3 L 208.2 528.6 L 206.6 528.2 L 205.3 527.7 L 204.2 526.1 L 205.5 526 L 207.2 525.7 L 208.3 524.9 L 207.7 523.8 L 209.4 523.4 L 209.5 521.9 L 208.3 521.5 L 209.4 521.2 L 208.5 520.3 L 208.8 518.7 L 209.1 515.7 L 210.2 513.4 L 209.3 511.1 L 207 509.7 L 207.9 508.6 L 209.2 507 L 209.1 504.8 L 210.2 505.2 L 211 504 L 211.8 503.4 L 212.7 503 L 213.3 502.3 L 214.3 502.4 L 212.2 500.9 L 211.3 500.5 L 210.2 500.7 L 208.8 499.8 L 209.1 497.2 L 211.6 495.9 L 210.3 495 L 210.8 494 L 211.8 492.9 L 212.8 492.2 L 213 490.8 L 213.5 490 L 212.3 489.6 L 211.2 488.6 L 212.4 487.5 L 212.4 486.2 L 211.6 485.1 L 212.5 483.2 L 211.3 482.9Z\" },\n { code: \"TR\", name: \"Tripura\", type: \"state\", cx: 531.7, cy: 350.8, d: \"M 541.6 331.4 L 542.6 331.9 L 542.6 332.9 L 543.5 335 L 542.2 338.2 L 544.1 338.1 L 545 340.7 L 544.5 343.5 L 544.8 344.6 L 544.9 346.5 L 544.6 347.7 L 543.6 348.1 L 543.3 348.9 L 543.5 351.1 L 542.5 352.8 L 542.3 351.9 L 541.5 350.7 L 539 353.2 L 537.9 352.8 L 537 351.1 L 536.1 352.2 L 536.8 357.2 L 536.1 358.3 L 534 359.2 L 532.3 362.2 L 533.7 366.7 L 532.4 367.4 L 531.2 369.3 L 529.5 369.2 L 528.5 370.1 L 527.6 369.7 L 526.1 365.3 L 525.5 364.4 L 525.2 362.8 L 523.6 364.6 L 524.4 367.6 L 523.4 367.5 L 522.3 365.2 L 522.3 362.8 L 521.7 361.9 L 522.2 360.1 L 520.6 357 L 519.5 356.3 L 518.6 354.2 L 518.5 352.5 L 519.3 353.1 L 519.6 352.1 L 518.4 352 L 518.4 350.8 L 519.9 350.8 L 520.6 348.3 L 520.1 347.3 L 520.1 346.1 L 521.1 346.2 L 521 345.3 L 521.7 344.4 L 523.4 344.9 L 523.8 343.1 L 523.4 341.7 L 527.1 342.5 L 529.1 341.8 L 529.7 339.7 L 529.9 338.7 L 530.3 340.2 L 531.3 340.8 L 531.6 338.2 L 533.2 339.2 L 534.9 341 L 536.1 337.7 L 535.6 336 L 536.4 335.5 L 537.3 336.4 L 536.8 334.7 L 540.1 334.8 L 540.5 333.8 L 540.8 331.9 L 541.6 331.4Z\" },\n { code: \"UP\", name: \"Uttar Pradesh\", type: \"state\", cx: 286, cy: 264.3, d: \"M 211.6 181.2 L 213.2 181.1 L 214.9 183 L 219.9 185.4 L 217.8 188.9 L 216.6 189.2 L 216 190.6 L 215.4 192.2 L 215.1 193.5 L 214.7 195.2 L 216.2 197.4 L 216 199.3 L 216.8 199.7 L 217.6 200.5 L 218.6 199.6 L 220.4 199.5 L 220.9 201.9 L 220.3 202.5 L 221.2 203.7 L 222.3 203.5 L 222.5 202.5 L 224.6 200.3 L 225.8 199.4 L 228.9 197.2 L 230.8 197.8 L 232.5 198.6 L 233.4 201.6 L 235.1 203.3 L 239.2 205.5 L 242.3 206 L 241.1 207.7 L 240.2 208.3 L 239.3 209.3 L 237.6 209.6 L 239.5 211.2 L 240.7 211.1 L 241.8 212.6 L 241.8 214 L 242.8 214 L 244.4 214.8 L 244.6 213.4 L 247 214.5 L 247.1 216.1 L 247.6 217.3 L 248.6 217.1 L 250.8 219.1 L 252 219.1 L 253.1 219.6 L 253.3 221.6 L 255.5 221.4 L 256.1 220.6 L 256.5 221.8 L 257.9 221.2 L 259.1 221.8 L 260.1 220.9 L 261.5 220.7 L 262.3 221.4 L 261.7 222.9 L 262.6 221.9 L 263.8 222.6 L 264.8 224.8 L 265.9 225.2 L 266.9 224.6 L 267.5 223.5 L 268.2 222.3 L 269.3 222.3 L 271.5 224.2 L 272.4 224.8 L 273.8 225.6 L 274.7 227.2 L 276.8 227.4 L 278.3 229.4 L 278 226.5 L 279.5 225.9 L 280.4 227.2 L 281.7 227.1 L 282.2 228.5 L 284 229.1 L 284.4 230.1 L 286.2 231 L 287.1 230.8 L 288.7 232.5 L 289.6 232 L 290 233 L 291 233.7 L 294 234.4 L 294.5 236.2 L 296.4 238.6 L 296.6 239.8 L 297.6 240 L 299.2 239.5 L 300.1 240.6 L 300 241.5 L 303.3 243.6 L 305.1 244 L 309.2 247.3 L 310.1 247.2 L 311.1 245.4 L 313.3 245.6 L 314.6 247.1 L 316.5 247.6 L 321.9 251.8 L 327.8 250.7 L 327.8 252.2 L 328.8 254.2 L 328.4 256.3 L 332.8 256.4 L 333.3 257.2 L 335.1 257.7 L 338.6 257.6 L 341.2 260.7 L 342.4 260.4 L 343.6 258.6 L 343.4 257.5 L 348.2 257.2 L 353.7 260.2 L 353 260.9 L 355 260.9 L 354.6 262.5 L 355.8 263.2 L 356.4 264 L 355.5 266.8 L 357.3 266.7 L 356.7 267.4 L 357.8 268 L 357.9 270.1 L 358 271.9 L 358.9 272.2 L 360 272 L 360.7 273.3 L 361.6 272.4 L 362.6 274 L 361.9 275.3 L 363.6 275.4 L 364.2 277.1 L 365.9 277.5 L 366.2 278.6 L 363 279.3 L 358.7 278.2 L 358.7 279.3 L 357.9 280.7 L 356.3 281 L 354.7 281.3 L 354.7 283.1 L 356.5 283.5 L 358.5 284.7 L 360.7 285 L 361 286.4 L 360.5 288.2 L 359.4 287.8 L 358.7 288.8 L 357.1 288.4 L 357.3 290.8 L 358 291.9 L 358.9 292 L 360.6 293.8 L 361.4 294.4 L 363.6 295.8 L 364.8 295.4 L 366.1 296.2 L 366.4 297.1 L 368.8 297.5 L 368.8 298.6 L 370.9 299.6 L 370.4 300.4 L 371.1 301.3 L 369.4 301.1 L 369.3 302.4 L 369 301.3 L 368.7 302.4 L 367 301.6 L 365.9 302 L 365.4 300.7 L 364.3 300.8 L 364.1 302.7 L 361.4 302.7 L 360.2 301.2 L 359 301.5 L 358.6 303.5 L 355 305.5 L 353.5 307.6 L 352.6 307.8 L 353.2 308.6 L 352.2 308.7 L 351.5 309.8 L 350.2 309.8 L 349 310.3 L 348.3 311.3 L 347 311.8 L 344.7 313.2 L 343.5 313.3 L 343.1 314.3 L 341.9 315 L 342.4 316.4 L 341.5 319.1 L 342.3 322.7 L 343.1 323.7 L 343 324.9 L 344.5 326.1 L 345.1 326.8 L 345.9 327.4 L 346.5 328.8 L 345.5 331.3 L 343.2 331.9 L 342.9 333.1 L 343.3 334.2 L 344.5 335.3 L 342.8 336.6 L 343.4 337.8 L 341.6 341.9 L 340.8 342.6 L 340.5 343.8 L 339.2 344.6 L 338.6 346.3 L 336.3 347.4 L 332.9 347.4 L 330 345.3 L 329.7 344.2 L 328.5 343.8 L 329 342.4 L 327.7 342.4 L 326.6 341 L 328 340.9 L 328.1 338.8 L 329 337.1 L 328.9 335.1 L 327.7 334.8 L 328.4 332 L 327.8 330.6 L 329.8 330.6 L 329.7 329.5 L 328.9 328.3 L 327.4 328.4 L 326.6 327 L 323.7 328.2 L 321.9 327.5 L 320.8 327.4 L 321 329.5 L 319.2 328.9 L 318.4 327.7 L 317.4 327.8 L 317.2 325.1 L 316.2 325.7 L 315.8 324.4 L 314.3 324.7 L 311.8 323.2 L 310.8 323.7 L 309.4 322.2 L 309.7 321.2 L 309.4 319.3 L 307.9 319 L 307 319.2 L 305.7 318.3 L 304.6 318.4 L 304 317.5 L 302.8 318 L 303.4 316.9 L 302.5 316.1 L 301.9 314.6 L 300.7 314.8 L 301 315.9 L 299.8 316.1 L 300.6 316.8 L 300.1 317.6 L 298.2 316.8 L 298.9 316.2 L 298 316.4 L 296.6 315.2 L 296.3 316.6 L 296.1 315.3 L 294.7 316.9 L 295.1 317.8 L 293.7 319.6 L 294 321.1 L 292.8 320.5 L 292.2 322.2 L 290.9 320.7 L 289.4 320.6 L 288.2 321.4 L 287.7 320.2 L 286.8 320.6 L 285.4 321.1 L 284.4 320.2 L 285.7 319.5 L 285.3 318.5 L 286.2 317.7 L 286.1 316.4 L 287 315.5 L 286.4 314.6 L 285.5 314.7 L 285.3 316.7 L 284.6 315.8 L 282.4 316.1 L 283 317 L 284.1 317.4 L 283 317.7 L 281.8 318.1 L 280.2 316.9 L 280 315.6 L 280.3 317.7 L 279.3 317.2 L 278.1 317 L 277.7 318.4 L 276.5 317.4 L 274.9 318.1 L 275.2 319.3 L 273.7 319.4 L 272.6 318.7 L 274.5 315.9 L 276.2 315.1 L 275.6 313.4 L 273.5 312.3 L 273.6 309.8 L 272.4 308.8 L 271 309.1 L 269.4 311 L 268.5 310.6 L 267.1 310.9 L 266.5 312.8 L 265.3 312.7 L 264.6 313.7 L 263.1 313.5 L 263.7 315.7 L 263.3 317 L 260.9 315.9 L 257.5 316.2 L 256.8 315.1 L 255.1 317.4 L 254.6 316.1 L 253.8 316.8 L 252.7 315.2 L 253.3 314.3 L 254.4 312.8 L 253.4 313 L 252.3 312.1 L 251.8 311.2 L 250.7 311 L 249.9 311.7 L 249.9 312.7 L 251 312.9 L 251.5 313.8 L 250.2 313.3 L 250.3 314.6 L 251.1 315.7 L 249.9 316.4 L 249.4 315.5 L 249.4 316.6 L 248.2 315.7 L 246.9 316.7 L 246.5 315.9 L 245.9 314.7 L 245 316 L 244.6 314.8 L 245.3 313.9 L 244.3 313.3 L 243.4 313.4 L 243.9 314.6 L 242.9 314 L 241.1 315.3 L 241.2 313.1 L 242.7 312.9 L 243 310.7 L 241.2 310.9 L 240.5 313.8 L 239.6 312.7 L 239.3 311.6 L 240.5 311.2 L 241.2 309.8 L 242.9 309.5 L 241.6 310.1 L 242.4 310.7 L 243.5 310.1 L 243.1 308.5 L 241.8 308.3 L 242.6 307.5 L 242.1 306.5 L 242.5 305.5 L 241.2 305.6 L 240.2 306.7 L 240.8 307.8 L 240.3 308.7 L 238.5 307.6 L 238.5 308.6 L 239.8 308.7 L 238.2 309.2 L 238.7 310.5 L 237.6 310.7 L 236.3 309.8 L 237.3 308.8 L 236.2 308.4 L 235.6 309.3 L 234.7 309.7 L 234.5 310.7 L 233.3 310.4 L 233.7 311.3 L 232.8 311.9 L 231.4 311.9 L 232.7 312.1 L 234.3 313 L 234.9 317.1 L 235.9 318 L 235.5 320.4 L 236.5 321.9 L 238.7 323 L 239.1 324.1 L 238.9 326.9 L 238.2 328 L 238.4 329.3 L 241.4 328.5 L 243.3 332 L 242.1 331.9 L 243.7 333.4 L 243.3 335.6 L 241.9 336.9 L 241.3 338.8 L 239.8 339.2 L 238.6 338 L 237.2 338.6 L 234.5 335.5 L 232.9 334.6 L 231.3 337 L 230 337.5 L 228.8 336.2 L 229.6 334.8 L 227.5 333.3 L 226.4 331.4 L 227.3 330.5 L 227.5 327.8 L 226.4 325.8 L 226.2 324.2 L 225.2 323.1 L 228.9 319.5 L 228.9 317.3 L 230.4 316.2 L 231.5 316.3 L 231.5 315.3 L 230.2 314.6 L 229.5 313.3 L 229.3 312 L 228.9 311.1 L 228.1 310.1 L 228.9 309.5 L 229.3 308.1 L 231 307.5 L 230.7 306.2 L 231.2 305.4 L 232.4 304.9 L 234.6 305.4 L 236.1 305.3 L 236.7 304.6 L 239.6 303.9 L 239.8 302.6 L 238.3 300.7 L 240 299.5 L 240.9 299.5 L 240.6 297.9 L 241.2 296.5 L 242.4 295.7 L 242.8 293.5 L 244.1 292.4 L 242.7 290.9 L 244 290.5 L 243.5 289.5 L 244.5 288.5 L 244.9 287.7 L 245.9 287.6 L 246.1 286.6 L 247 285.7 L 245.8 285.3 L 246 283.9 L 246.9 283.2 L 245.1 282.9 L 245.4 281.7 L 244.5 280.5 L 243.8 279.7 L 243.9 277.1 L 242.6 277.7 L 241.9 276.4 L 241 276.6 L 239.8 275.1 L 238.8 275.1 L 238.2 274.4 L 236.3 275 L 234.2 275.3 L 231.6 274.3 L 231.1 273.4 L 229.4 272.3 L 227.8 272.6 L 227.3 273.7 L 226.2 273.3 L 225.8 272 L 227.4 271.1 L 226.3 270.3 L 224 270.3 L 223.8 271.5 L 222.4 271.3 L 222.5 272.3 L 221.6 271.4 L 220.2 271.7 L 219.2 271 L 219 271.9 L 215.9 270.7 L 215.1 271.3 L 212.5 273.4 L 210.6 273.6 L 209.8 274.5 L 209 275.6 L 208.8 273.7 L 208.4 272.5 L 213.5 269.8 L 215.5 269.4 L 215.9 268.6 L 215.2 269.1 L 214.1 267.8 L 213.1 268.7 L 211.5 268.2 L 211.7 267.1 L 210.7 267.4 L 212.2 266 L 212.6 264.8 L 213.7 264.7 L 213.3 263.6 L 212.2 261.5 L 212.8 260.4 L 211.9 260.8 L 210.1 259.4 L 208.6 259 L 208.6 257.4 L 207.5 256 L 206.5 255.6 L 206.4 254.6 L 205.9 253.5 L 206.6 252.5 L 206.5 251.4 L 205.6 250.8 L 205.8 249 L 206.6 247.2 L 208.2 247.2 L 208.2 246.3 L 209.2 246.6 L 209.5 245.3 L 210.6 245.4 L 210.4 244.4 L 209.7 242.5 L 209.5 241.4 L 210.1 239.5 L 211.1 239 L 210 238.9 L 210.5 237.7 L 209.4 236.7 L 210.1 235.7 L 209.4 234.9 L 209.6 233 L 206.5 230.5 L 205.5 229 L 206.5 228 L 205.9 227 L 206.2 225.2 L 204 223.3 L 203.8 222.1 L 203.1 221.3 L 203.9 220.3 L 203.2 219 L 203.7 217.7 L 201.6 215.1 L 202.1 213.1 L 201.7 212 L 201.8 210.8 L 202.4 209.2 L 201.5 208.1 L 201.7 207.2 L 200.8 204 L 200.8 202.3 L 202.1 199.5 L 201.5 197.8 L 202.3 197.2 L 203 194.3 L 204.8 191.8 L 205 190.6 L 208.2 189 L 208.5 187.4 L 209.6 186.9 L 210.8 184.4 L 211.8 183.7 L 212.3 182.1 L 211.6 181.2Z\" },\n { code: \"UT\", name: \"Uttarakhand\", type: \"state\", cx: 250.6, cy: 189.1, d: \"M 248.4 156.2 L 249.6 157.7 L 249.3 158.8 L 250.2 159.5 L 250.5 161.1 L 251.4 162.1 L 252.6 162.4 L 253.4 164.6 L 255.3 164.5 L 256 166.2 L 257.3 167.1 L 258.8 165.9 L 259.9 166 L 260.8 165.4 L 262.2 166.1 L 263.3 166.1 L 264.7 168.4 L 267.6 169.7 L 268.9 171.4 L 270.1 170.5 L 270.9 171.8 L 272 172.5 L 271.6 173.5 L 270.7 174.3 L 271.3 174.9 L 271.5 176.7 L 273.5 177 L 274.9 178 L 278.5 179.9 L 279.8 179.1 L 283.2 181.4 L 284.9 183.5 L 289.6 185.2 L 287.2 186 L 286.1 187.4 L 286.4 188.5 L 283.8 190.5 L 283.5 191.7 L 281.9 192.9 L 280.3 192.9 L 279.1 195.8 L 277.8 197.1 L 276.5 196.9 L 274.9 198.4 L 275.3 200.3 L 276.1 201.3 L 275.8 202.4 L 275.2 203.3 L 274.5 204.4 L 273.1 205.5 L 272.1 206.3 L 272.8 207.7 L 272.9 208.8 L 273.8 209.7 L 273.3 212.5 L 272.2 212.1 L 272.8 214.2 L 271.9 214.8 L 270.8 214.3 L 269.9 215.2 L 269.7 217.7 L 268.9 218.2 L 268 220 L 268.2 222.3 L 267.2 223 L 266.9 224.6 L 265.9 225.2 L 264.8 224.8 L 264.1 223.4 L 263 222.8 L 263.3 221.9 L 262.4 222.7 L 262.3 221.4 L 261.5 220.7 L 260.1 220.9 L 259.1 221.8 L 257.9 221.2 L 256.5 221.8 L 256.1 220.6 L 255.5 221.4 L 253.3 221.6 L 253.1 219.6 L 252.1 218.6 L 250.8 219.1 L 248.6 217.1 L 247.6 217.3 L 247.1 216.1 L 247 214.5 L 244.6 213.4 L 244.4 214.8 L 243.2 213.5 L 241.8 214 L 241.8 212.6 L 240.7 211.1 L 239.5 211.2 L 237.6 209.6 L 238.6 208.8 L 239.7 207.9 L 241.1 207.7 L 242.3 206 L 239.2 205.5 L 235.1 203.3 L 233.4 201.6 L 232.5 198.6 L 230.8 197.8 L 228.9 197.2 L 226.7 199.6 L 224.6 200.3 L 223.3 202.2 L 222.3 203.5 L 221.2 203.7 L 221.1 202.6 L 220.4 201.9 L 220.4 199.5 L 218.6 199.6 L 217.6 200.5 L 216.8 199.7 L 216 199.3 L 216.2 197.4 L 214.7 195.2 L 215.4 194.1 L 215.7 192.7 L 216.3 191.2 L 216.6 189.2 L 217.8 188.9 L 219.9 185.4 L 214.9 183 L 213.2 181.1 L 211.6 181.2 L 214.2 180 L 216.9 178.4 L 217 177.1 L 216.1 177.1 L 215.4 176.1 L 216.5 175.6 L 216.5 174.4 L 215.4 173.8 L 214.4 171.7 L 215.7 170.1 L 215.7 168.7 L 216.7 169.3 L 216.9 167.6 L 215.7 167.6 L 215.5 166.6 L 217.3 166.8 L 217.5 165.3 L 217 163.9 L 217.9 163.4 L 218.9 161.5 L 220.4 160.8 L 221.8 161.5 L 223.4 160.5 L 224.8 159.4 L 226.7 159.3 L 227.5 158.4 L 229.5 157.9 L 230.4 159 L 231.5 159.1 L 232.1 160.2 L 233.6 160.1 L 234.9 159.3 L 235.8 159.7 L 239.4 160.1 L 239.9 161.7 L 241.1 162.7 L 244 162.5 L 243.5 160.9 L 242.1 159.6 L 241.9 158.7 L 242.3 156.8 L 243.8 155.9 L 245.1 153.1 L 246.9 153.9 L 248.4 156.2Z\" },\n { code: \"WB\", name: \"West Bengal\", type: \"state\", cx: 443.8, cy: 334.1, d: \"M 458.4 403.3 L 459.1 404.7 L 458 404.4 L 458.4 403.3Z M 466 403.1 L 467.5 404.3 L 466.1 404.4 L 466 403.1Z M 463.5 402.6 L 463.7 404 L 463.5 402.6Z M 459.3 402.3 L 460.4 403.2 L 459.5 404.2 L 458.6 403.2 L 459 402Z M 464.5 402 L 465.1 403.5 L 464.1 403.8 L 463.9 402.6 L 464.5 402Z M 468.9 402.3Z M 460.5 401.4 L 460.5 402.8 L 459.6 402.3 L 460.5 401.4Z M 469.3 400.7 L 469.5 401.7 L 470.3 403.2 L 469.1 402 L 468.6 400.8Z M 465.3 400.9 L 465.1 401.9 L 464.2 401.4 L 465.3 400.9Z M 454.1 400.7 L 454.9 401.1 L 455.2 402.1 L 454.2 403.1 L 454.1 400.7Z M 457.4 400.6 L 457.8 401.5 L 457.2 402.6 L 456.9 401.4 L 457.4 400.6Z M 451.7 400.3 L 451.8 401.3 L 452.2 402.2 L 451.9 403.2 L 451.2 401.1 L 451.7 400.3Z M 471 400.3 L 471.8 402.2 L 470.9 402.8 L 469.7 401.3 L 471 400.3Z M 459.5 400.4 L 460.5 401.1 L 459.4 402.1 L 458.8 400.8Z M 467.1 399.7 L 468.3 401 L 467.9 402.5 L 466.8 401 L 467.1 399.7Z M 456.4 400.1 L 456.4 401.8 L 456.1 403.4 L 455.7 401.3 L 456.2 400.4 L 456 399.5Z M 452 399.6 L 453.2 399.8 L 453.9 401.5 L 453.6 403.2 L 453.4 404.3 L 452 399.6Z M 468.2 399.4 L 469.1 400.4 L 468.1 400.2Z M 455.5 399.5 L 455.8 400.8 L 455 399.6Z M 470 399.4 L 470.8 400.1 L 470 399.4Z M 466 399.4 L 466.1 400.7 L 466.5 402.4 L 465.4 402.3 L 465.5 400.6 L 464.6 400.8 L 465.1 399.7 L 466 399.4Z M 460.3 398.9 L 461.1 400.1 L 460.1 399.5Z M 469.2 398.8 L 470 400.2 L 468.6 399.2Z M 460.9 398.6 L 461.1 399.7 L 460.5 398.8Z M 457.7 398.7 L 457.7 399.9 L 457 399.2Z M 463.3 398.2 L 464.3 399.4 L 464.3 401 L 464 401.9 L 462.6 401.4 L 462.8 399.8 L 463.3 398.2Z M 459.4 398.2 L 460 400 L 458.9 400.4 L 458.5 399.1 L 459.4 398.2Z M 456.6 398.1 L 456.7 399.8 L 456.1 398.8Z M 469.7 398.1 L 470.2 399.3 L 469.5 398.6Z M 465.8 398.3 L 465.9 399.2 L 465 399.6 L 465.7 397.8Z M 468.4 397.3 L 469.2 397.9 L 467.8 399.1 L 467.5 398.1 L 468.4 397.3Z M 460.5 397.2 L 460.7 398.4 L 460.5 397.2Z M 454.6 397.3 L 455.1 398.6 L 454.7 400.3 L 453.4 398.4 L 454.6 397.3Z M 466.4 396.8 L 467.7 399.9 L 466.2 398.7 L 466.4 396.8Z M 450.2 396.6 L 451 398.1 L 451 399.8 L 450.4 401.3 L 449.6 402.6 L 448.1 402.1 L 448.8 398.9 L 450.2 396.6Z M 465 397.1 L 465.8 396.2 L 465 398.3 L 465 397.1Z M 469.2 396.1 L 470.3 396.8 L 470.1 397.8 L 468.7 397.3 L 469.2 396.1Z M 461.2 396 L 461.9 396.7 L 461.5 398.8 L 460.7 396.9 L 461.2 396Z M 459.8 396 L 459.7 397.8 L 459.8 396Z M 457.2 395.8 L 458 396.3 L 457.2 398 L 456.2 398 L 456.7 396.1Z M 463.3 396 L 464.7 397 L 464.2 398.9 L 462.9 397.5 L 463.3 396Z M 461.6 395.4Z M 466 395.5 L 467.8 395.3 L 468.9 395.9 L 467.5 397.4 L 466 395.5Z M 463.5 395.2 L 465.2 395.5 L 465 396.8 L 464.5 395.9 L 463.4 395.7Z M 464 394 L 464.8 394.8 L 463.9 395 L 463.5 394.2Z M 462 393.1 L 463.3 393.5 L 462.4 394.9 L 461.3 394.6 L 462 393.1Z M 450.3 392.9 L 449.1 395.2 L 448.2 395.7 L 448.8 393.6 L 450.3 392.9Z M 465.5 393.1 L 467.5 393.2 L 467.4 395.1 L 466.4 395.3 L 464.3 394.3 L 464.6 393.2 L 465.5 393.1Z M 470.6 392.3 L 471.5 393.8 L 471.1 395.1 L 469.2 393 L 470.6 392.3Z M 466.8 391.6 L 467.1 392.7 L 465.1 392.4 L 466.8 391.6Z M 466.1 391 L 465 391.8 L 465.6 390.6Z M 466.5 388.9 L 467.8 391.3 L 466.8 391.4 L 465.9 390.4 L 466.8 390 L 466.1 388.7Z M 468.7 389.1 L 469.4 389.9 L 468.9 391.3 L 468 392 L 468 392.9 L 468.9 392.1 L 469.1 393.8 L 470.2 395.4 L 468.3 395.1 L 467.7 393.7 L 467.5 391.9 L 468.1 391.1 L 467.3 389.4 L 468.7 389.1Z M 469.7 388.7 L 470.8 390.3 L 470.5 391.9 L 469 391.8 L 469.6 390.2 L 469.1 388.8Z M 462.8 388.7 L 464.9 389.4 L 462.5 391.5 L 463.7 392.8 L 462.1 392.8 L 461.4 390.9 L 462.8 388.7Z M 466.4 389.9 L 464.7 390.8 L 463.8 392.1 L 463 391.6 L 465.5 389.3 L 466.4 389.9Z M 468.5 388 L 468.1 389.2 L 468 388.2Z M 465.5 386.6 L 465.8 387.6 L 465.7 389 L 464 388.5 L 465.5 386.6Z M 466.1 385.1 L 467.2 385.1 L 467.7 386.1 L 468.4 387.7 L 467.5 388.1 L 467.8 389.3 L 465.5 388.1 L 465.6 385.6Z M 469.4 384.2 L 469.3 385.6 L 470.2 386.3 L 471.2 388.7 L 471.2 389.9 L 470.1 388.5 L 469.1 388.4 L 468.7 387.2 L 469.1 383.7Z M 467.3 380.4 L 467.3 382.2 L 467.9 383.7 L 467.2 384.3 L 466.6 381.2 L 467.3 380.4Z M 468.2 379.9 L 469.7 383 L 468.8 383.5 L 468.4 386 L 467.6 385.3 L 467.6 384.3 L 467.6 382.1 L 467.6 380.1Z M 447.5 263.6 L 448.8 264 L 449.1 265.5 L 450.2 266.2 L 451.5 265.7 L 452.4 266.1 L 454 265.9 L 456.9 267.1 L 459.1 265.3 L 459.7 264.3 L 461.1 264.4 L 461.9 265 L 463.5 265.6 L 466.8 266.4 L 466.9 270.4 L 467.9 269.2 L 468.7 269.9 L 468.8 271.1 L 470.3 270.6 L 470.7 271.6 L 471.7 271.8 L 472 273.3 L 472.7 274 L 475.5 273.8 L 478.2 272.5 L 479.8 273.3 L 482.3 273.8 L 483.7 274.8 L 483.5 276 L 484.6 276.3 L 486.1 276.2 L 487.2 276.8 L 489 276.6 L 489.5 278 L 489.5 279.7 L 488.9 282.1 L 488.4 284.4 L 487.3 285.5 L 486.6 286.3 L 486.3 287.6 L 485.4 288.9 L 486.3 290 L 485 289.3 L 484.1 288.7 L 484.6 290 L 483.7 289.9 L 484 291.4 L 483.2 291.9 L 484.4 292.8 L 482.8 293.8 L 482.8 295.2 L 481.9 294.3 L 479.6 294.2 L 479.4 293.3 L 478.7 294.3 L 477.7 294.2 L 476.1 293.2 L 475.8 292.1 L 474.9 291.3 L 473.4 290.9 L 472.9 289.9 L 473 288.5 L 472.1 287.3 L 473 286.3 L 471.8 286.3 L 471.7 285.2 L 470.6 284.4 L 468.9 282.7 L 468.6 283.6 L 467.7 284 L 467.9 285.1 L 468.9 285.2 L 469.9 286.1 L 470.5 287.2 L 471.3 288 L 469 288.3 L 468.2 287.2 L 467.2 287.1 L 467.1 288.4 L 465.6 287.9 L 465.7 286.8 L 464.3 286.8 L 464 285.5 L 463 286 L 462.5 284.8 L 461.2 283.4 L 461.1 282.5 L 459.7 282.9 L 459 282.3 L 458.1 280.8 L 457 280.6 L 456.5 278.4 L 455.7 279.4 L 454.7 282.4 L 455.2 283.2 L 455.4 282.1 L 458 282.8 L 459 285.3 L 457.5 285 L 457 285.9 L 455.1 287.3 L 455.1 288.9 L 452.8 289.7 L 451.2 290.8 L 450.8 292.5 L 451 293.6 L 449.1 296.6 L 449.8 299.5 L 450.6 300.1 L 451.3 299.5 L 453.2 299.3 L 455.7 301.7 L 456.3 302.7 L 457.4 303 L 457.2 304.6 L 458.4 304.9 L 460.2 306.9 L 461.8 307.6 L 462.9 307.7 L 464.5 307.2 L 465.4 306.5 L 466.1 307.7 L 465.6 309.3 L 466.2 310.4 L 467.2 311.4 L 468 311.9 L 470 312.2 L 468.7 313 L 468.8 314 L 468.5 314.9 L 466.2 314.2 L 465.3 315.2 L 464.1 315.1 L 463.1 314.3 L 461.1 314.3 L 459.9 315.1 L 458.4 314.2 L 457.2 314.6 L 457.6 316 L 457.4 317.5 L 457.4 318.6 L 456.1 320.3 L 454.8 321 L 455 322.2 L 453.4 322.1 L 452.3 320.5 L 450.3 321.1 L 451.1 323 L 450.2 324.4 L 449.5 325 L 448.6 326.5 L 447.4 327.8 L 450.5 331.8 L 451.7 332.9 L 453.3 333.5 L 454.7 334.9 L 457.3 335 L 459.1 335.8 L 459.7 337 L 460.4 336.3 L 461.3 336.8 L 463 336.7 L 463.7 337.5 L 463.7 339.5 L 462.9 340.3 L 463.2 341.4 L 463.5 344.5 L 464.5 344.7 L 463.6 346.5 L 462 347.6 L 460.1 347.8 L 460.7 348.9 L 459.8 349.7 L 459.8 353.2 L 460.2 354.2 L 461.7 354.1 L 462 355.4 L 463.9 357.2 L 465.2 356.9 L 465 358.2 L 464.2 358.7 L 464.3 360.1 L 464 361.4 L 462.9 361.8 L 463.4 362.8 L 465.1 363.7 L 465.6 362.9 L 466.4 363.5 L 467.8 363.4 L 469.6 363.8 L 468.8 364.4 L 467.9 365.9 L 466.8 366.7 L 466.8 368.9 L 466.6 370.2 L 467.8 371 L 467.7 372.1 L 469 372.9 L 468.8 374.1 L 467.9 374.9 L 468.8 376.6 L 468.2 378.4 L 468.3 379.6 L 466.7 380.2 L 466.2 381.1 L 466.2 384.1 L 466.9 384.9 L 465.6 384.7 L 465.2 386.5 L 463.9 387.7 L 462.5 388.4 L 461.1 390.9 L 461.5 392.4 L 460.6 394.2 L 460.8 395.7 L 459.3 395.9 L 459 397.1 L 458.3 396.5 L 459 395.2 L 456.6 395.8 L 455.9 398.4 L 455.1 397 L 454.2 397.3 L 453 398.2 L 453.3 399.5 L 452 399.3 L 450.8 396.5 L 451.1 395.3 L 450.6 394.5 L 451.8 393 L 452.2 391.7 L 451.7 389.5 L 450.9 388.7 L 448.7 388.4 L 449.5 386.1 L 448.2 388.2 L 446.8 387.5 L 446.2 386.6 L 445.9 383.6 L 444.5 382.7 L 445.8 384.6 L 445.8 387.2 L 447.3 388.6 L 450.2 389 L 451.4 391.1 L 448.5 393.2 L 446.7 397 L 445.5 398.4 L 444.6 398.6 L 442.4 401 L 440.1 401.9 L 435.4 403.1 L 434.9 402.2 L 435.2 400.7 L 434.6 399.4 L 432.9 399.4 L 430.5 398.1 L 429.9 394.7 L 428.3 394.2 L 428.1 395.2 L 426.7 395.8 L 426.7 396.9 L 425.2 396.8 L 424.5 395.8 L 425.3 393.8 L 425 392.5 L 423.6 391.5 L 420.8 391.2 L 419.8 389.8 L 418.1 390 L 418.3 388.3 L 419.3 388.4 L 420.3 387.7 L 422 387.4 L 422 386.4 L 420.7 385.6 L 421 383.9 L 419.2 383.1 L 418.8 381.9 L 419.8 381.9 L 419.2 379.5 L 416.7 379.5 L 415.9 377.1 L 414.2 375.9 L 411.4 374.5 L 411.8 372.5 L 412.4 371.6 L 411.8 370.9 L 412.6 370.3 L 413.7 370.4 L 414.2 369.4 L 413.2 369.3 L 411.4 369.2 L 408.7 368.7 L 406.8 369.3 L 405.4 368 L 405.1 367 L 403.1 366.4 L 400.1 365.9 L 398.8 364.3 L 398.1 362.6 L 399.2 361.1 L 399 360.1 L 398.9 359 L 399 357.5 L 400.7 357.9 L 403.1 356.9 L 402.2 355.5 L 403.1 354.7 L 405.3 355.1 L 405.3 357.4 L 407 357.8 L 407.5 358.7 L 408.3 358.2 L 410.4 357.2 L 410.1 355.7 L 410.6 354.7 L 411.9 354 L 413.9 353.6 L 415.4 352.5 L 417.7 351.9 L 418.7 352.3 L 419.9 352.1 L 420.5 350.3 L 419.9 348.5 L 421.7 348.2 L 422.2 347.3 L 423.1 348.2 L 427.4 349.4 L 428.3 348.8 L 427.5 347.7 L 429 348 L 430 348.7 L 430.2 346.7 L 430.7 347.5 L 431.2 345.5 L 429.9 343.4 L 432.1 343.6 L 434.9 344.8 L 435.5 344 L 436.1 343.4 L 435.7 341.5 L 437.6 342.3 L 438.3 341.2 L 437.4 340.5 L 440.1 340.7 L 440.2 339.8 L 439 339.1 L 439.9 338.3 L 440.6 337.1 L 441.6 336.8 L 442.8 334.3 L 443.1 332.1 L 442.8 330.8 L 441.9 329.9 L 443.7 330.7 L 444.6 330.4 L 445.1 329.6 L 444.3 329.2 L 445.2 328 L 444.9 326.4 L 443.5 326 L 443.5 324.8 L 444.2 323.9 L 446.5 322.1 L 444.4 318.8 L 442.1 317.2 L 442.3 314 L 443.5 314.5 L 443.1 313.6 L 443.9 312.6 L 442.3 311.2 L 442.4 310.2 L 441.7 309.4 L 442.2 308.4 L 443.4 307.9 L 444.4 306.6 L 445.5 306.1 L 446.8 306.4 L 447.8 307.3 L 448.7 307.5 L 447.9 306.1 L 447.6 304.8 L 448.4 303.7 L 448.2 302.2 L 446.3 301.4 L 445.6 300.2 L 445.1 299.1 L 445.1 298.2 L 443.1 297.7 L 442.7 296.6 L 443.6 293.3 L 445.2 292.1 L 446.4 292.4 L 446.3 290.6 L 447.4 290.9 L 448 289.9 L 450.4 288.1 L 452 287.3 L 453.7 285.5 L 452.5 285 L 453.2 283.8 L 452.3 283.1 L 451.5 282.5 L 452.4 281 L 450.9 280.9 L 449.5 280.9 L 450.8 278.4 L 451.4 274.9 L 451.1 272.6 L 450.3 271.7 L 449.9 270.4 L 450.2 269.5 L 449.3 269 L 448 268.2 L 447.7 266.9 L 447.6 264.8 L 447.5 263.6Z\" },\n];\n\nexport default INDIA_STATES;\n","import React, { useState } from \"react\";\nimport {\n Text,\n View,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\nimport { INDIA_STATES, INDIA_VIEWBOX, type IndiaStateGeo } from \"./IndiaGeo\";\n\nexport type { IndiaStateGeo } from \"./IndiaGeo\";\n\nexport interface IndiaMapProps {\n /** Metric per region, keyed by state code (e.g. { MH: 124, KA: 98 }). */\n values?: Record<string, number>;\n /** Sequential colour ramp, light -> dark. */\n colorScale?: string[];\n /** Value domain [min, max]; defaults to the extent of `values`. */\n domain?: [number, number];\n /** Fill for regions with no value. */\n emptyColor?: string;\n /** Currently selected region code (controlled). */\n selected?: string;\n /** Fired on tap / select. */\n onSelect?: (code: string, region: IndiaStateGeo) => void;\n /** Tooltip / legend value formatter. */\n formatValue?: (v: number) => string;\n /** Legend heading. @default \"Value\" */\n legendLabel?: string;\n /** Show the gradient legend. @default true */\n showLegend?: boolean;\n /** Pixel height of the map area. @default 560 */\n height?: number;\n /** Map surface treatment. @default \"light\" */\n theme?: \"light\" | \"dark\";\n /**\n * Optional UX4G design-system theme override (else the active provider /\n * default theme). Named `uxTheme` because the contract's `theme` prop is the\n * \"light\" | \"dark\" map surface, not the design-system theme object.\n */\n uxTheme?: UX4GTheme;\n /** Test handle for the outer container. */\n testID?: string;\n}\n\nconst DEFAULT_SCALE = [\n \"#ECEAF3\",\n \"#C9BBF6\",\n \"#9F86F0\",\n \"#7C5BF7\",\n \"#4A26C4\",\n \"#2A1466\",\n];\n\nfunction quantize(v: number, min: number, max: number, n: number): number {\n if (max <= min) return n - 1;\n const t = (v - min) / (max - min);\n return Math.max(0, Math.min(n - 1, Math.floor(t * n)));\n}\n\n/**\n * UX4G India Map — data-driven choropleth. Colour each state / union territory\n * by a metric, with tap selection and a gradient legend. Geometry covers 29\n * states + 7 union territories. Use for region-based data / heatmaps, not as a\n * substitute for a simple dropdown.\n */\nexport function IndiaMap({\n values = {},\n colorScale = DEFAULT_SCALE,\n domain,\n emptyColor,\n selected,\n onSelect,\n formatValue = (v: number) => String(v),\n legendLabel = \"Value\",\n showLegend = true,\n height = 560,\n theme = \"light\",\n uxTheme,\n testID,\n}: IndiaMapProps) {\n const ctxTheme = useUX4GTheme();\n const t = uxTheme ?? ctxTheme;\n const c = t.color;\n\n const [active, setActive] = useState<string | null>(null);\n\n const dark = theme === \"dark\";\n const vals = Object.values(values);\n const min = domain ? domain[0] : vals.length ? Math.min(...vals) : 0;\n const max = domain ? domain[1] : vals.length ? Math.max(...vals) : 1;\n const noData = emptyColor ?? (dark ? \"#3A364F\" : \"#ECEAF3\");\n const stroke = dark ? \"#2A1466\" : \"#FFFFFF\";\n\n const fillFor = (code: string): string => {\n const v = values[code];\n if (v == null) return noData;\n return colorScale[quantize(v, min, max, colorScale.length)];\n };\n\n const select = (s: IndiaStateGeo): void => {\n setActive(s.code);\n onSelect?.(s.code, s);\n };\n\n const container: ViewStyle = {\n width: \"100%\",\n flexDirection: \"column\",\n };\n\n const legendRow: ViewStyle = {\n flexDirection: \"row\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: t.space[3],\n marginTop: t.space[2],\n };\n\n const legendSwatches: ViewStyle = {\n flexDirection: \"row\",\n alignItems: \"center\",\n borderRadius: t.radius.sm,\n overflow: \"hidden\",\n };\n\n const legendLabelStyle: TextStyle = {\n fontFamily: t.font.family.sans,\n fontSize: 12,\n fontWeight: t.font.weight.semibold,\n color: dark ? \"#C0BBD7\" : c.textMuted,\n };\n\n const legendBoundStyle: TextStyle = {\n fontFamily: t.font.family.mono,\n fontSize: 11,\n color: dark ? \"#A7A0C6\" : c.textMuted,\n };\n\n return (\n <View testID={testID} style={container}>\n <Svg\n width=\"100%\"\n height={height}\n viewBox={INDIA_VIEWBOX}\n preserveAspectRatio=\"xMidYMid meet\"\n accessibilityRole=\"image\"\n accessibilityLabel=\"Map of India: values by state and union territory\"\n >\n {INDIA_STATES.map((s) => {\n const isSel =\n selected === s.code || (selected == null && active === s.code);\n const v = values[s.code];\n // react-native-svg's <Path> only honours accessibilityLabel /\n // accessible (no role / state), so the value AND selection are folded\n // into the spoken label.\n const label = `${s.name}${\n v != null ? `: ${formatValue(v)}` : \": no data\"\n }${isSel ? \", selected\" : \"\"}`;\n const regionStroke = isSel ? c.primary : stroke;\n const regionStrokeWidth = isSel ? 2.4 : 0.6;\n return (\n <Path\n key={s.code}\n testID={`india-map-state-${s.code}`}\n d={s.d}\n fill={fillFor(s.code)}\n stroke={regionStroke}\n strokeWidth={regionStrokeWidth}\n onPress={() => select(s)}\n accessible\n accessibilityLabel={label}\n />\n );\n })}\n </Svg>\n\n {showLegend ? (\n <View style={legendRow}>\n <Text style={legendLabelStyle}>{legendLabel}</Text>\n <View style={legendSwatches}>\n {colorScale.map((swatch, i) => (\n <View\n key={`${swatch}-${i}`}\n testID={`india-map-legend-swatch-${i}`}\n style={{ width: 26, height: 12, backgroundColor: swatch }}\n />\n ))}\n </View>\n <Text style={legendBoundStyle}>{formatValue(min)}</Text>\n <Text style={legendBoundStyle}>{`→ ${formatValue(max)}`}</Text>\n </View>\n ) : null}\n </View>\n );\n}\n\nexport default IndiaMap;\n","import React, { useState } from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface TabItem {\n value: string;\n label: React.ReactNode;\n /** Optional leading icon node (e.g. a react-native-svg element). */\n icon?: React.ReactNode;\n /** Count/badge shown after the label. */\n badge?: React.ReactNode;\n disabled?: boolean;\n}\n\n/** UX4G Tabs — underline tab bar. Controlled (`value`) or uncontrolled (`defaultValue`). */\nexport interface TabsProps {\n /** Items as strings or {value,label,icon,badge,disabled}. */\n tabs: (string | TabItem)[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n /** Stretch tabs to share the row evenly. @default false */\n fullWidth?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Style for the outer tablist container. */\n style?: StyleProp<ViewStyle>;\n}\n\n/** Render a label/badge node: wrap bare strings/numbers in a styled <Text>. */\nfunction renderNode(\n node: React.ReactNode,\n textStyle: TextStyle,\n): React.ReactNode {\n if (typeof node === \"string\" || typeof node === \"number\") {\n return <Text style={textStyle}>{node}</Text>;\n }\n return node;\n}\n\nexport function Tabs({\n tabs = [],\n value,\n defaultValue,\n onChange,\n fullWidth = false,\n theme: themeProp,\n style,\n}: TabsProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const norm: TabItem[] = tabs.map((t) =>\n typeof t === \"string\" ? { value: t, label: t } : t,\n );\n\n const [internal, setInternal] = useState<string | undefined>(\n defaultValue ?? norm[0]?.value,\n );\n const active = value ?? internal;\n\n const select = (v: string) => {\n if (value === undefined) setInternal(v);\n onChange?.(v);\n };\n\n return (\n <View\n accessibilityRole=\"tablist\"\n style={[\n {\n flexDirection: \"row\",\n gap: theme.space[1],\n borderBottomWidth: theme.border.thin,\n borderBottomColor: c.border,\n },\n style,\n ]}\n >\n {norm.map((t) => {\n const on = t.value === active;\n const disabled = t.disabled ?? false;\n const label = typeof t.label === \"string\" ? t.label : undefined;\n\n const labelStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n fontWeight: on ? \"600\" : \"500\",\n letterSpacing: 0.1,\n color: on ? c.primary : c.textMuted,\n };\n\n const badgeTextStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 11,\n fontWeight: \"600\",\n color: on ? theme.ramp.violet[700] : theme.ramp.neutral[700],\n };\n\n return (\n <Pressable\n key={t.value}\n accessibilityRole=\"tab\"\n accessibilityLabel={label}\n accessibilityState={{ selected: on, disabled }}\n disabled={disabled}\n onPress={() => {\n if (!disabled) select(t.value);\n }}\n style={({ pressed }): StyleProp<ViewStyle> => {\n const base: ViewStyle = {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 6,\n flex: fullWidth ? 1 : undefined,\n minHeight: 44,\n paddingVertical: 10,\n paddingHorizontal: 16,\n marginBottom: -theme.border.thin,\n opacity: disabled ? 0.5 : 1,\n borderBottomWidth: 2,\n borderBottomColor: on ? c.primary : \"transparent\",\n backgroundColor:\n pressed && !disabled ? c.primarySubtle : \"transparent\",\n };\n return base;\n }}\n >\n {t.icon != null ? (\n <View\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={iconWrap}\n >\n {t.icon}\n </View>\n ) : null}\n {renderNode(t.label, labelStyle)}\n {t.badge != null ? (\n <View\n style={{\n marginLeft: 2,\n minWidth: 18,\n height: 18,\n paddingHorizontal: 5,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.full,\n backgroundColor: on\n ? theme.ramp.violet[100]\n : theme.ramp.neutral[200],\n }}\n >\n {renderNode(t.badge, badgeTextStyle)}\n </View>\n ) : null}\n </Pressable>\n );\n })}\n </View>\n );\n}\n\nconst iconWrap: ViewStyle = {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n};\n\nexport default Tabs;\n","import React, { useState } from \"react\";\nimport {\n View,\n Text,\n Pressable,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\n/** A single crumb in the trail. Items with an `href` render as links; the last item is the current page. */\nexport interface CrumbItem {\n /** Visible label. May be a string or a rich node. */\n label: React.ReactNode;\n /** Destination. Present on link crumbs; omit on the current page. */\n href?: string;\n}\n\nexport interface BreadcrumbProps {\n /** The hierarchy trail. The last item is the current page (non-link). */\n items: CrumbItem[];\n /**\n * Called when a link crumb is pressed (RN has no anchor navigation).\n * The current/last crumb never fires this.\n */\n onPressItem?: (item: CrumbItem, index: number) => void;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Style for the outer navigation container. */\n style?: StyleProp<ViewStyle>;\n}\n\n/** Chevron separator — geometry inlined from the web reference (`m9 18 6-6-6-6`). */\nfunction Separator({ color }: { color: string }) {\n return (\n <Svg\n width={18}\n height={18}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n >\n <Path\n d=\"m9 18 6-6-6-6\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\n/** UX4G Breadcrumb — page hierarchy trail. The last item is the current page. */\nexport function Breadcrumb({\n items,\n onPressItem,\n theme: themeProp,\n style,\n}: BreadcrumbProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n return (\n <View\n role=\"navigation\"\n aria-label=\"Breadcrumb\"\n accessibilityLabel=\"Breadcrumb\"\n style={[\n {\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n },\n style,\n ]}\n >\n {items.map((it, i) => {\n const last = i === items.length - 1;\n const isLink = !last && it.href !== undefined;\n\n return (\n <View\n key={i}\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n }}\n >\n {isLink ? (\n <Crumb\n item={it}\n index={i}\n theme={theme}\n onPressItem={onPressItem}\n />\n ) : (\n <View style={{ paddingVertical: theme.space[1] }}>\n {typeof it.label === \"string\" || typeof it.label === \"number\" ? (\n <Text\n accessibilityRole=\"text\"\n accessibilityState={last ? { selected: true } : undefined}\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n lineHeight: 20,\n fontWeight: last\n ? theme.font.weight.semibold\n : theme.font.weight.regular,\n color: last ? c.text : c.textMuted,\n }}\n >\n {it.label}\n </Text>\n ) : (\n it.label\n )}\n </View>\n )}\n\n {!last ? (\n <View\n style={{ paddingHorizontal: 3 }}\n pointerEvents=\"none\"\n >\n <Separator color={theme.ramp.neutral[400]} />\n </View>\n ) : null}\n </View>\n );\n })}\n </View>\n );\n}\n\ninterface CrumbProps {\n item: CrumbItem;\n index: number;\n theme: UX4GTheme;\n onPressItem?: (item: CrumbItem, index: number) => void;\n}\n\n/** A pressable link crumb with a focus ring. */\nfunction Crumb({ item, index, theme, onPressItem }: CrumbProps) {\n const [focused, setFocused] = useState(false);\n const c = theme.color;\n const labelIsText =\n typeof item.label === \"string\" || typeof item.label === \"number\";\n\n return (\n <Pressable\n accessibilityRole=\"link\"\n accessibilityLabel={labelIsText ? String(item.label) : undefined}\n onPress={() => onPressItem?.(item, index)}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n hitSlop={8}\n style={({ pressed }): StyleProp<ViewStyle> => ({\n minHeight: 44,\n justifyContent: \"center\",\n paddingVertical: theme.space[1],\n borderRadius: theme.radius.xs,\n borderWidth: focused ? theme.focusRingWidth : 0,\n borderColor: focused ? c.focus : \"transparent\",\n opacity: pressed ? 0.7 : 1,\n })}\n >\n {labelIsText ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n lineHeight: 20,\n fontWeight: theme.font.weight.regular,\n color: c.textMuted,\n }}\n >\n {item.label}\n </Text>\n ) : (\n item.label\n )}\n </Pressable>\n );\n}\n\nexport default Breadcrumb;\n","import React from \"react\";\nimport {\n View,\n Text,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\n/** A single step in the flow. `label` is required; `description` is an optional sub-line. */\nexport interface StepperStep {\n /** Visible label. May be a string or a rich node. */\n label: React.ReactNode;\n /** Optional sub-line shown beneath the label. */\n description?: React.ReactNode;\n}\n\nexport interface StepperProps {\n /** The ordered steps. */\n steps: StepperStep[];\n /** 0-indexed current step. */\n current: number;\n /** @default \"horizontal\" */\n orientation?: \"horizontal\" | \"vertical\";\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Style for the outer container. */\n style?: StyleProp<ViewStyle>;\n}\n\n/** Tick glyph — geometry inlined from the web reference (`M20 6 9 17l-5-5`). */\nfunction CheckGlyph({ color }: { color: string }) {\n return (\n <Svg\n width={16}\n height={16}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n >\n <Path\n d=\"M20 6 9 17l-5-5\"\n stroke={color}\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\n/** UX4G Stepper — progress through a multi-step flow (e.g. grievance, KYC). */\nexport function Stepper({\n steps,\n current,\n orientation = \"horizontal\",\n theme: themeProp,\n style,\n}: StepperProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n const vertical = orientation === \"vertical\";\n\n const trackOn = c.primary;\n const trackOff = theme.ramp.neutral[200];\n\n const total = steps.length;\n const stepNumber = total === 0 ? 0 : Math.min(current + 1, total);\n\n return (\n <View\n accessible\n accessibilityRole=\"progressbar\"\n accessibilityLabel=\"Progress\"\n accessibilityValue={{\n min: 0,\n max: total,\n now: stepNumber,\n text: total === 0 ? undefined : `Step ${stepNumber} of ${total}`,\n }}\n style={[\n {\n flexDirection: vertical ? \"column\" : \"row\",\n alignItems: vertical ? \"stretch\" : \"flex-start\",\n },\n style,\n ]}\n >\n {steps.map((s, i) => {\n const done = i < current;\n const active = i === current;\n const accent = done || active ? c.primary : theme.ramp.neutral[300];\n\n const circleBg = done\n ? c.primary\n : active\n ? c.primarySubtle\n : theme.ramp.neutral[100];\n const numberColor = done ? c.surface : accent;\n\n const labelIsText =\n typeof s.label === \"string\" || typeof s.label === \"number\";\n const descIsText =\n typeof s.description === \"string\" ||\n typeof s.description === \"number\";\n\n const stepState = active\n ? { selected: true, busy: true }\n : done\n ? { selected: false }\n : { selected: false };\n\n return (\n <View\n key={i}\n style={{\n flexDirection: vertical ? \"row\" : \"column\",\n alignItems: vertical ? \"flex-start\" : \"center\",\n flexGrow: vertical ? 0 : 1,\n flexShrink: vertical ? 0 : 1,\n flexBasis: vertical ? \"auto\" : 0,\n columnGap: vertical ? theme.space[3] : 0,\n position: \"relative\",\n }}\n >\n {/* Circle row + connectors */}\n <View\n style={{\n flexDirection: vertical ? \"column\" : \"row\",\n alignItems: \"center\",\n alignSelf: vertical ? \"stretch\" : \"auto\",\n width: vertical ? undefined : \"100%\",\n }}\n >\n {/* Leading connector (horizontal only, not on first step). */}\n {!vertical && i > 0 ? (\n <View\n style={{\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: 0,\n height: 2,\n backgroundColor: done || active ? trackOn : trackOff,\n }}\n />\n ) : null}\n\n {/* The numbered / checked circle. */}\n <View\n style={{\n width: 28,\n height: 28,\n borderRadius: theme.radius.full,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: circleBg,\n borderWidth: theme.border.thick,\n borderColor: accent,\n }}\n >\n {done ? (\n <CheckGlyph color={c.surface} />\n ) : (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 13,\n lineHeight: 16,\n fontWeight: theme.font.weight.semibold,\n color: numberColor,\n }}\n >\n {i + 1}\n </Text>\n )}\n </View>\n\n {/* Trailing connector (not on last step). */}\n {!vertical && i < steps.length - 1 ? (\n <View\n style={{\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: 0,\n height: 2,\n backgroundColor: i < current ? trackOn : trackOff,\n }}\n />\n ) : null}\n {vertical && i < steps.length - 1 ? (\n <View\n style={{\n width: 2,\n flexGrow: 1,\n flexShrink: 0,\n minHeight: 24,\n marginVertical: theme.space[1],\n backgroundColor: i < current ? trackOn : trackOff,\n }}\n />\n ) : null}\n </View>\n\n {/* Label + description. */}\n <View\n style={{\n alignItems: vertical ? \"flex-start\" : \"center\",\n marginTop: vertical ? 2 : theme.space[2],\n paddingBottom: vertical ? theme.space[4] : 0,\n maxWidth: vertical ? undefined : 140,\n }}\n >\n {labelIsText ? (\n <Text\n accessibilityState={stepState}\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n lineHeight: 20,\n textAlign: vertical ? \"left\" : \"center\",\n fontWeight: active\n ? theme.font.weight.semibold\n : theme.font.weight.medium,\n color: active || done ? c.text : c.textMuted,\n }}\n >\n {s.label}\n </Text>\n ) : (\n s.label\n )}\n\n {s.description !== undefined && s.description !== null ? (\n descIsText ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 12,\n lineHeight: 16,\n marginTop: 2,\n textAlign: vertical ? \"left\" : \"center\",\n color: c.textSubtle,\n }}\n >\n {s.description}\n </Text>\n ) : (\n s.description\n )\n ) : null}\n </View>\n </View>\n );\n })}\n </View>\n );\n}\n\nexport default Stepper;\n","import React, { useState } from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { G, Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\n/** A single primary-navigation link. */\nexport interface NavLink {\n /** Visible label. May be a string or a rich node. */\n label: React.ReactNode;\n /** Destination. Kept for parity with the web contract; RN has no anchor\n * navigation, so use `onPress` to handle taps. */\n href?: string;\n /** Marks the current page — violet-subtle fill + `selected` a11y state. */\n active?: boolean;\n /** Called when the link is pressed (RN replaces the web `onClick`). */\n onPress?: () => void;\n}\n\nexport interface NavbarProps {\n /** Site / department title shown next to the mark. */\n title: React.ReactNode;\n /** Optional second line under the title. */\n subtitle?: React.ReactNode;\n /** Brand mark. Defaults to the UX4G wordmark. */\n logo?: React.ReactNode;\n /** Primary navigation links. */\n links?: NavLink[];\n /** Right-aligned slot — buttons, login, language, etc. */\n actions?: React.ReactNode;\n /** Government utility strip above the bar. `true` renders the default\n * \"Government of India\" strip; pass a node to customise. */\n topStrip?: React.ReactNode | boolean;\n /** Stick to the top of the viewport on scroll. @default false */\n sticky?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Style for the outer header container. */\n style?: StyleProp<ViewStyle>;\n}\n\n/** UX4G wordmark — glyph geometry inlined from the web reference. */\nfunction UX4GMark() {\n return (\n <Svg width={55} height={22} viewBox=\"0 0 55 15\" fill=\"none\">\n <G x={0.296} y={0.436} fill=\"#1937B2\">\n <Path\n d=\"M 8.145 0 L 11.882 0 L 11.882 8.945 C 11.882 10.009 11.631 10.93 11.129 11.707 C 10.632 12.48 9.937 13.077 9.046 13.5 C 8.154 13.918 7.119 14.127 5.941 14.127 C 4.754 14.127 3.714 13.918 2.823 13.5 C 1.931 13.077 1.237 12.48 0.739 11.707 C 0.246 10.93 0 10.009 0 8.945 L 0 0 L 3.737 0 L 3.737 8.618 C 3.737 9.05 3.831 9.436 4.019 9.777 C 4.207 10.114 4.467 10.377 4.798 10.568 C 5.134 10.759 5.515 10.855 5.941 10.855 C 6.371 10.855 6.752 10.759 7.083 10.568 C 7.415 10.377 7.675 10.114 7.863 9.777 C 8.051 9.436 8.145 9.05 8.145 8.618 L 8.145 0 Z M 17.663 0 L 19.921 4.064 L 20.029 4.064 L 22.313 0 L 26.48 0 L 22.367 6.982 L 26.641 13.964 L 22.367 13.964 L 20.029 9.818 L 19.921 9.818 L 17.582 13.964 L 13.335 13.964 L 17.555 6.982 L 13.469 0 L 17.663 0 Z\"\n fillRule=\"evenodd\"\n />\n </G>\n <G x={28.28} y={0.245} fill=\"#A066CC\">\n <Path\n d=\"M 0 11.973 L 0 9.027 L 5.538 0.191 L 8.172 0.191 L 8.172 4.118 L 6.667 4.118 L 3.683 8.918 L 3.683 9.027 L 11.855 9.027 L 11.855 11.973 L 0 11.973 Z M 6.694 14.155 L 6.694 11.073 L 6.774 9.791 L 6.774 0.191 L 10.269 0.191 L 10.269 14.155 L 6.694 14.155 Z M 22.334 4.8 C 22.275 4.559 22.184 4.348 22.058 4.166 C 21.933 3.98 21.776 3.823 21.588 3.695 C 21.404 3.564 21.189 3.466 20.943 3.402 C 20.701 3.334 20.434 3.3 20.143 3.3 C 19.516 3.3 18.98 3.452 18.537 3.757 C 18.098 4.061 17.762 4.5 17.529 5.073 C 17.3 5.645 17.186 6.336 17.186 7.145 C 17.186 7.964 17.296 8.664 17.515 9.245 C 17.735 9.827 18.062 10.273 18.496 10.582 C 18.931 10.891 19.471 11.045 20.116 11.045 C 20.685 11.045 21.158 10.961 21.534 10.793 C 21.915 10.625 22.199 10.386 22.387 10.077 C 22.576 9.768 22.67 9.405 22.67 8.986 L 23.315 9.055 L 20.17 9.055 L 20.17 6.355 L 26.272 6.355 L 26.272 8.291 C 26.272 9.564 26.005 10.652 25.472 11.557 C 24.943 12.457 24.213 13.148 23.281 13.63 C 22.354 14.107 21.29 14.345 20.089 14.345 C 18.749 14.345 17.573 14.057 16.561 13.48 C 15.548 12.902 14.758 12.08 14.189 11.011 C 13.624 9.943 13.342 8.673 13.342 7.2 C 13.342 6.045 13.514 5.023 13.859 4.132 C 14.209 3.241 14.693 2.489 15.311 1.875 C 15.929 1.257 16.644 0.791 17.455 0.477 C 18.266 0.159 19.135 0 20.062 0 C 20.878 0 21.635 0.118 22.334 0.355 C 23.037 0.586 23.658 0.918 24.195 1.35 C 24.737 1.777 25.174 2.284 25.506 2.87 C 25.837 3.457 26.039 4.1 26.111 4.8 L 22.334 4.8 Z\"\n fillRule=\"evenodd\"\n />\n </G>\n </Svg>\n );\n}\n\n/** Default tricolour \"Government of India\" utility strip. */\nfunction DefaultStrip({ theme }: { theme: UX4GTheme }) {\n return (\n <View style={{ flexDirection: \"row\", alignItems: \"center\", gap: theme.space[2] }}>\n <View\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{\n width: 14,\n height: 10,\n borderRadius: 1,\n overflow: \"hidden\",\n borderWidth: 0.5,\n borderColor: theme.color.border,\n }}\n >\n <View style={{ flex: 1, backgroundColor: \"#FF9933\" }} />\n <View style={{ flex: 1, backgroundColor: \"#FFFFFF\" }} />\n <View style={{ flex: 1, backgroundColor: \"#138808\" }} />\n </View>\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 12.5,\n letterSpacing: 0.2,\n color: theme.color.textMuted,\n }}\n >\n Government of India\n </Text>\n </View>\n );\n}\n\n/** Render a node: wrap bare strings/numbers in a styled <Text>, else pass through. */\nfunction renderNode(node: React.ReactNode, textStyle: TextStyle): React.ReactNode {\n if (typeof node === \"string\" || typeof node === \"number\") {\n return <Text style={textStyle}>{node}</Text>;\n }\n return node;\n}\n\n/** UX4G Navbar — government website header: optional gov utility strip,\n * brand lockup, primary nav and an actions slot. */\nexport function Navbar({\n title,\n subtitle,\n logo,\n links = [],\n actions,\n topStrip,\n sticky = false,\n theme: themeProp,\n style,\n}: NavbarProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const titleStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 17,\n fontWeight: theme.font.weight.semibold,\n color: c.text,\n };\n const subtitleStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 12,\n color: c.textMuted,\n };\n\n return (\n <View\n accessibilityRole=\"header\"\n style={[\n {\n backgroundColor: c.surface,\n borderBottomWidth: theme.border.thin,\n borderBottomColor: c.border,\n width: \"100%\",\n },\n sticky ? { position: \"relative\", top: 0, zIndex: 50 } : null,\n style,\n ]}\n >\n {topStrip ? (\n <View\n style={{\n backgroundColor: c.surfaceSubtle,\n borderBottomWidth: theme.border.thin,\n borderBottomColor: c.divider,\n }}\n >\n <View\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: theme.space[4],\n paddingVertical: 7,\n paddingHorizontal: theme.space[5],\n }}\n >\n {topStrip === true ? <DefaultStrip theme={theme} /> : topStrip}\n </View>\n </View>\n ) : null}\n\n <View\n style={{\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n gap: theme.space[4],\n minHeight: 72,\n paddingVertical: theme.space[2] + 2,\n paddingHorizontal: theme.space[5],\n }}\n >\n <View\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: theme.space[3],\n flexShrink: 0,\n }}\n >\n <View\n accessibilityElementsHidden={logo == null}\n importantForAccessibility={logo == null ? \"no-hide-descendants\" : \"auto\"}\n style={{ flexDirection: \"row\", alignItems: \"center\" }}\n >\n {logo != null ? logo : <UX4GMark />}\n </View>\n <View style={{ flexDirection: \"column\" }}>\n {renderNode(title, titleStyle)}\n {subtitle != null ? renderNode(subtitle, subtitleStyle) : null}\n </View>\n </View>\n\n {links.length > 0 ? (\n <View\n role=\"navigation\"\n accessibilityLabel=\"Primary\"\n style={{\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n gap: theme.space[1],\n marginLeft: theme.space[2],\n }}\n >\n {links.map((link, i) => (\n <NavLinkItem key={i} link={link} theme={theme} />\n ))}\n </View>\n ) : null}\n\n {actions != null ? (\n <View\n style={{\n marginLeft: \"auto\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: theme.space[3],\n flexShrink: 0,\n }}\n >\n {actions}\n </View>\n ) : null}\n </View>\n </View>\n );\n}\n\ninterface NavLinkItemProps {\n link: NavLink;\n theme: UX4GTheme;\n}\n\n/** A pressable primary-nav link with active fill + focus ring. */\nfunction NavLinkItem({ link, theme }: NavLinkItemProps) {\n const [focused, setFocused] = useState(false);\n const c = theme.color;\n const active = link.active ?? false;\n const labelIsText =\n typeof link.label === \"string\" || typeof link.label === \"number\";\n\n const labelStyle: TextStyle = {\n fontFamily: theme.font.family.sans,\n fontSize: 15,\n fontWeight: active ? theme.font.weight.semibold : theme.font.weight.medium,\n color: active ? c.primary : c.text,\n };\n\n return (\n <Pressable\n accessibilityRole=\"link\"\n accessibilityLabel={labelIsText ? String(link.label) : undefined}\n accessibilityState={{ selected: active }}\n onPress={() => link.onPress?.()}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={({ pressed }): StyleProp<ViewStyle> => {\n let backgroundColor = \"transparent\";\n if (active) {\n backgroundColor = c.primarySubtle;\n } else if (pressed) {\n backgroundColor = theme.ramp.neutral[100];\n }\n return {\n flexDirection: \"row\",\n alignItems: \"center\",\n minHeight: 44,\n paddingVertical: theme.space[2],\n paddingHorizontal: 14,\n borderRadius: theme.radius.md,\n borderWidth: focused ? theme.focusRingWidth : 0,\n borderColor: focused ? c.focus : \"transparent\",\n backgroundColor,\n };\n }}\n >\n {renderNode(link.label, labelStyle)}\n </Pressable>\n );\n}\n\nexport default Navbar;\n","import React, { useState } from \"react\";\nimport {\n View,\n Text,\n Pressable,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { G, Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\n/** A footer link. Renders as a pressable; `href` is carried for the caller. */\nexport interface FooterLink {\n /** Visible label. May be a string or a rich node. */\n label: React.ReactNode;\n /** Destination. Carried through to `onPressLink` (RN has no anchor nav). */\n href?: string;\n}\n\n/** A column of links with a heading. */\nexport interface FooterColumn {\n /** Column heading. */\n title: React.ReactNode;\n /** Links under this heading. */\n links: FooterLink[];\n}\n\n/** A social / external icon link. */\nexport interface FooterSocial {\n /** Accessible label (required — these are icon-only controls). */\n label: string;\n /** Destination. Carried through to `onPressSocial`. */\n href?: string;\n /** Inline glyph node (e.g. a react-native-svg element). */\n icon: React.ReactNode;\n}\n\nexport interface FooterProps {\n /** Brand mark. Defaults to the UX4G wordmark. */\n logo?: React.ReactNode;\n /** Short line under the mark. */\n tagline?: React.ReactNode;\n /** Link columns. */\n columns?: FooterColumn[];\n /** Social / external icon links. */\n social?: FooterSocial[];\n /** Bottom-strip copyright text. */\n copyright?: React.ReactNode;\n /** Bottom-strip policy links (privacy, terms, accessibility…). */\n policyLinks?: FooterLink[];\n /** Called when a column or policy link is pressed (RN has no anchor nav). */\n onPressLink?: (link: FooterLink) => void;\n /** Called when a social icon link is pressed. */\n onPressSocial?: (social: FooterSocial) => void;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Style for the outer footer container. */\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * Default UX4G wordmark — geometry inlined 1:1 from the web reference.\n * Two glyph groups: the \"UX\" mark (deep blue) and the \"4G\" mark (violet).\n */\nfunction UX4GMark() {\n return (\n <Svg\n width={88}\n height={24}\n viewBox=\"0 0 55 15\"\n fill=\"none\"\n accessibilityRole=\"image\"\n accessibilityLabel=\"UX4G\"\n >\n <G x={0.296} y={0.436} fill=\"#1937B2\">\n <Path\n d=\"M 8.145 0 L 11.882 0 L 11.882 8.945 C 11.882 10.009 11.631 10.93 11.129 11.707 C 10.632 12.48 9.937 13.077 9.046 13.5 C 8.154 13.918 7.119 14.127 5.941 14.127 C 4.754 14.127 3.714 13.918 2.823 13.5 C 1.931 13.077 1.237 12.48 0.739 11.707 C 0.246 10.93 0 10.009 0 8.945 L 0 0 L 3.737 0 L 3.737 8.618 C 3.737 9.05 3.831 9.436 4.019 9.777 C 4.207 10.114 4.467 10.377 4.798 10.568 C 5.134 10.759 5.515 10.855 5.941 10.855 C 6.371 10.855 6.752 10.759 7.083 10.568 C 7.415 10.377 7.675 10.114 7.863 9.777 C 8.051 9.436 8.145 9.05 8.145 8.618 L 8.145 0 Z M 17.663 0 L 19.921 4.064 L 20.029 4.064 L 22.313 0 L 26.48 0 L 22.367 6.982 L 26.641 13.964 L 22.367 13.964 L 20.029 9.818 L 19.921 9.818 L 17.582 13.964 L 13.335 13.964 L 17.555 6.982 L 13.469 0 L 17.663 0 Z\"\n fillRule=\"evenodd\"\n />\n </G>\n <G x={28.28} y={0.245} fill=\"#A066CC\">\n <Path\n d=\"M 0 11.973 L 0 9.027 L 5.538 0.191 L 8.172 0.191 L 8.172 4.118 L 6.667 4.118 L 3.683 8.918 L 3.683 9.027 L 11.855 9.027 L 11.855 11.973 L 0 11.973 Z M 6.694 14.155 L 6.694 11.073 L 6.774 9.791 L 6.774 0.191 L 10.269 0.191 L 10.269 14.155 L 6.694 14.155 Z M 22.334 4.8 C 22.275 4.559 22.184 4.348 22.058 4.166 C 21.933 3.98 21.776 3.823 21.588 3.695 C 21.404 3.564 21.189 3.466 20.943 3.402 C 20.701 3.334 20.434 3.3 20.143 3.3 C 19.516 3.3 18.98 3.452 18.537 3.757 C 18.098 4.061 17.762 4.5 17.529 5.073 C 17.3 5.645 17.186 6.336 17.186 7.145 C 17.186 7.964 17.296 8.664 17.515 9.245 C 17.735 9.827 18.062 10.273 18.496 10.582 C 18.931 10.891 19.471 11.045 20.116 11.045 C 20.685 11.045 21.158 10.961 21.534 10.793 C 21.915 10.625 22.199 10.386 22.387 10.077 C 22.576 9.768 22.67 9.405 22.67 8.986 L 23.315 9.055 L 20.17 9.055 L 20.17 6.355 L 26.272 6.355 L 26.272 8.291 C 26.272 9.564 26.005 10.652 25.472 11.557 C 24.943 12.457 24.213 13.148 23.281 13.63 C 22.354 14.107 21.29 14.345 20.089 14.345 C 18.749 14.345 17.573 14.057 16.561 13.48 C 15.548 12.902 14.758 12.08 14.189 11.011 C 13.624 9.943 13.342 8.673 13.342 7.2 C 13.342 6.045 13.514 5.023 13.859 4.132 C 14.209 3.241 14.693 2.489 15.311 1.875 C 15.929 1.257 16.644 0.791 17.455 0.477 C 18.266 0.159 19.135 0 20.062 0 C 20.878 0 21.635 0.118 22.334 0.355 C 23.037 0.586 23.658 0.918 24.195 1.35 C 24.737 1.777 25.174 2.284 25.506 2.87 C 25.837 3.457 26.039 4.1 26.111 4.8 L 22.334 4.8 Z\"\n fillRule=\"evenodd\"\n />\n </G>\n </Svg>\n );\n}\n\ninterface LinkRowProps {\n link: FooterLink;\n theme: UX4GTheme;\n color: string;\n fontSize: number;\n onPress?: (link: FooterLink) => void;\n}\n\n/** A pressable footer link with a focus ring (shared by columns + policy strip). */\nfunction LinkRow({ link, theme, color, fontSize, onPress }: LinkRowProps) {\n const [focused, setFocused] = useState(false);\n const c = theme.color;\n const labelIsText =\n typeof link.label === \"string\" || typeof link.label === \"number\";\n\n return (\n <Pressable\n accessibilityRole=\"link\"\n accessibilityLabel={labelIsText ? String(link.label) : undefined}\n onPress={() => onPress?.(link)}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n hitSlop={8}\n style={({ pressed }): StyleProp<ViewStyle> => ({\n minHeight: 44,\n justifyContent: \"center\",\n borderRadius: theme.radius.xs,\n borderWidth: focused ? theme.focusRingWidth : 0,\n borderColor: focused ? c.focus : \"transparent\",\n opacity: pressed ? 0.7 : 1,\n })}\n >\n {labelIsText ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize,\n lineHeight: fontSize + 12,\n fontWeight: theme.font.weight.regular,\n color,\n }}\n >\n {link.label}\n </Text>\n ) : (\n link.label\n )}\n </Pressable>\n );\n}\n\ninterface SocialButtonProps {\n item: FooterSocial;\n theme: UX4GTheme;\n onPress?: (social: FooterSocial) => void;\n}\n\n/** An icon-only social link with a bordered focus/pressed treatment. */\nfunction SocialButton({ item, theme, onPress }: SocialButtonProps) {\n const [focused, setFocused] = useState(false);\n const c = theme.color;\n\n return (\n <Pressable\n accessibilityRole=\"link\"\n accessibilityLabel={item.label}\n onPress={() => onPress?.(item)}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={({ pressed }): StyleProp<ViewStyle> => ({\n width: 44,\n height: 44,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.md,\n borderWidth: focused ? theme.focusRingWidth : theme.border.thin,\n borderColor: focused ? c.focus : pressed ? c.primary : c.border,\n backgroundColor: pressed ? c.primarySubtle : \"transparent\",\n })}\n >\n {item.icon}\n </Pressable>\n );\n}\n\n/**\n * UX4G Footer — government portal footer. Brand mark + tagline + social icons\n * on the left, link columns on the right, and a grounding dark bottom strip\n * carrying the copyright line and policy links.\n */\nexport function Footer({\n logo,\n tagline,\n columns = [],\n social = [],\n copyright,\n policyLinks = [],\n onPressLink,\n onPressSocial,\n theme: themeProp,\n style,\n}: FooterProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const taglineIsText =\n typeof tagline === \"string\" || typeof tagline === \"number\";\n const copyrightIsText =\n typeof copyright === \"string\" || typeof copyright === \"number\";\n const strip = theme.ramp.secondary[900];\n const stripText = \"rgba(255,255,255,0.78)\";\n\n return (\n <View\n accessibilityRole=\"summary\"\n accessibilityLabel=\"Footer\"\n style={[\n {\n backgroundColor: c.surface,\n borderTopWidth: theme.border.thin,\n borderTopColor: c.border,\n },\n style,\n ]}\n >\n <View\n style={{\n maxWidth: theme.layout.containerMax,\n width: \"100%\",\n alignSelf: \"center\",\n paddingVertical: theme.space[8],\n paddingHorizontal: theme.space[5],\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n gap: theme.space[8],\n justifyContent: \"space-between\",\n }}\n >\n {/* Brand + tagline + social */}\n <View style={{ gap: theme.space[4], maxWidth: 280 }}>\n <View style={{ alignSelf: \"flex-start\" }}>\n {logo ?? <UX4GMark />}\n </View>\n\n {tagline != null && tagline !== false ? (\n taglineIsText ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 14,\n lineHeight: 22,\n color: c.textMuted,\n }}\n >\n {tagline}\n </Text>\n ) : (\n tagline\n )\n ) : null}\n\n {social.length > 0 ? (\n <View style={{ flexDirection: \"row\", gap: theme.space[2] }}>\n {social.map((s, i) => (\n <SocialButton\n key={i}\n item={s}\n theme={theme}\n onPress={onPressSocial}\n />\n ))}\n </View>\n ) : null}\n </View>\n\n {/* Link columns */}\n <View\n style={{\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n gap: theme.space[6],\n }}\n >\n {columns.map((col, i) => {\n const titleIsText =\n typeof col.title === \"string\" || typeof col.title === \"number\";\n return (\n <View key={i} style={{ minWidth: 140 }}>\n {titleIsText ? (\n <Text\n accessibilityRole=\"header\"\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 13,\n lineHeight: 18,\n fontWeight: theme.font.weight.semibold,\n color: c.text,\n letterSpacing: 0.5,\n marginBottom: theme.space[1],\n }}\n >\n {col.title}\n </Text>\n ) : (\n col.title\n )}\n {col.links.map((l, j) => (\n <LinkRow\n key={j}\n link={l}\n theme={theme}\n color={c.textMuted}\n fontSize={14}\n onPress={onPressLink}\n />\n ))}\n </View>\n );\n })}\n </View>\n </View>\n\n {/* Grounding bottom strip */}\n <View style={{ backgroundColor: strip }}>\n <View\n style={{\n maxWidth: theme.layout.containerMax,\n width: \"100%\",\n alignSelf: \"center\",\n paddingVertical: theme.space[4],\n paddingHorizontal: theme.space[5],\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n gap: theme.space[3],\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n {copyrightIsText || copyright == null ? (\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 13,\n lineHeight: 18,\n color: stripText,\n }}\n >\n {copyright ?? \"© 2025. All rights reserved.\"}\n </Text>\n ) : (\n copyright\n )}\n\n {policyLinks.length > 0 ? (\n <View\n style={{\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n gap: theme.space[4],\n alignItems: \"center\",\n }}\n >\n {policyLinks.map((l, i) => (\n <LinkRow\n key={i}\n link={l}\n theme={theme}\n color={stripText}\n fontSize={13}\n onPress={onPressLink}\n />\n ))}\n </View>\n ) : null}\n </View>\n </View>\n </View>\n );\n}\n\nexport default Footer;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n Pressable,\n ScrollView,\n View,\n type LayoutChangeEvent,\n type NativeScrollEvent,\n type NativeSyntheticEvent,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Path } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\nexport interface CarouselProps {\n /** Each child is a slide (image, card, banner). */\n children: React.ReactNode;\n /** Pixel height of the viewport. @default 280 */\n height?: number;\n /** Auto-advance interval in ms (0 = off). @default 0 */\n interval?: number;\n /** Show prev/next arrows. @default true */\n arrows?: boolean;\n /** Show dot indicators. @default true */\n dots?: boolean;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n /** Container style override. */\n style?: StyleProp<ViewStyle>;\n}\n\n/** Chevron glyph, transcoded 1:1 from the web Carousel reference. */\nfunction Chevron({ dir, color }: { dir: \"prev\" | \"next\"; color: string }) {\n return (\n <Svg width={20} height={20} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={dir === \"prev\" ? \"m15 18-6-6 6-6\" : \"m9 18 6-6-6-6\"}\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\n/** UX4G Carousel — swipeable slide deck for hero banners and galleries. */\nexport function Carousel({\n children,\n height = 280,\n interval = 0,\n arrows = true,\n dots = true,\n theme: themeProp,\n style,\n}: CarouselProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n\n const slides = React.Children.toArray(children);\n const n = slides.length;\n\n const [active, setActive] = useState(0);\n const [width, setWidth] = useState(0);\n const scrollRef = useRef<ScrollView>(null);\n\n // Clamp wrap-around for arrow navigation.\n const go = useCallback(\n (next: number) => {\n if (n < 1) return;\n const target = ((next % n) + n) % n;\n setActive(target);\n if (width > 0) {\n scrollRef.current?.scrollTo({ x: target * width, animated: true });\n }\n },\n [n, width],\n );\n\n const onLayout = useCallback((e: LayoutChangeEvent) => {\n setWidth(e.nativeEvent.layout.width);\n }, []);\n\n const onMomentumScrollEnd = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const w = e.nativeEvent.layoutMeasurement.width || width;\n if (w <= 0) return;\n const idx = Math.round(e.nativeEvent.contentOffset.x / w);\n setActive(Math.max(0, Math.min(n - 1, idx)));\n },\n [n, width],\n );\n\n // Auto-advance.\n useEffect(() => {\n if (!interval || n < 2) return;\n const t = setInterval(() => {\n setActive((c) => {\n const next = (c + 1) % n;\n if (width > 0) {\n scrollRef.current?.scrollTo({ x: next * width, animated: true });\n }\n return next;\n });\n }, interval);\n return () => clearInterval(t);\n }, [interval, n, width]);\n\n const containerStyle: ViewStyle = {\n position: \"relative\",\n width: \"100%\",\n height,\n borderRadius: theme.radius[\"2xl\"],\n overflow: \"hidden\",\n backgroundColor: theme.color.surfaceMuted,\n };\n\n return (\n <View testID=\"ux4g-carousel\" style={[containerStyle, style]}>\n <ScrollView\n testID=\"ux4g-carousel-scroll\"\n ref={scrollRef}\n horizontal\n pagingEnabled\n showsHorizontalScrollIndicator={false}\n onLayout={onLayout}\n onMomentumScrollEnd={onMomentumScrollEnd}\n style={{ width: \"100%\", height: \"100%\" }}\n >\n {slides.map((slide, idx) => (\n <View\n key={idx}\n style={{ width: width > 0 ? width : undefined, height: \"100%\", overflow: \"hidden\" }}\n >\n {slide}\n </View>\n ))}\n </ScrollView>\n\n {arrows && n > 1\n ? ([\"prev\", \"next\"] as const).map((dir) => (\n <Pressable\n key={dir}\n accessibilityRole=\"button\"\n accessibilityLabel={dir}\n onPress={() => go(dir === \"prev\" ? active - 1 : active + 1)}\n hitSlop={6}\n style={({ pressed }) => {\n const arrowStyle: ViewStyle = {\n position: \"absolute\",\n top: \"50%\",\n marginTop: -22,\n [dir === \"prev\" ? \"left\" : \"right\"]: theme.space[3],\n width: 44,\n height: 44,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.full,\n backgroundColor: pressed\n ? theme.ramp.neutral[200]\n : \"rgba(255,255,255,0.92)\",\n ...theme.shadow.md,\n };\n return arrowStyle;\n }}\n >\n <Chevron dir={dir} color={theme.ramp.neutral[900]} />\n </Pressable>\n ))\n : null}\n\n {dots && n > 1 ? (\n <View\n style={{\n position: \"absolute\",\n bottom: theme.space[3],\n left: 0,\n right: 0,\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: 7,\n }}\n >\n {slides.map((_, idx) => {\n const isActive = idx === active;\n return (\n <Pressable\n key={idx}\n accessibilityRole=\"button\"\n accessibilityLabel={`Go to slide ${idx + 1}`}\n accessibilityState={{ selected: isActive }}\n onPress={() => go(idx)}\n hitSlop={10}\n style={{\n width: isActive ? 22 : 8,\n height: 8,\n borderRadius: theme.radius.full,\n backgroundColor: isActive\n ? theme.color.surface\n : \"rgba(255,255,255,0.55)\",\n }}\n />\n );\n })}\n </View>\n ) : null}\n </View>\n );\n}\n\nexport default Carousel;\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport {\n Modal as RNModal,\n Pressable,\n ScrollView,\n Text,\n View,\n type ColorValue,\n type ViewStyle,\n} from \"react-native\";\nimport Svg, { Circle, Path, Rect, Text as SvgText } from \"react-native-svg\";\nimport { type UX4GTheme } from \"../theme\";\nimport { useUX4GTheme } from \"../ThemeProvider\";\n\n/**\n * The live reading adjustments tracked by the widget. Mirrors the web\n * reference: numeric levels for text/spacing/line/saturation, plus a set of\n * on/off reading aids. RN has no DOM/CSS to mutate, so the active settings are\n * exposed to the host app via `onSettingsChange` to apply however it chooses.\n */\nexport interface AccessibilitySettings {\n /** Page zoom, 0.8 – 1.6. */\n fontScale: number;\n /** Letter-spacing level, 0 – 3. */\n spacing: number;\n /** Line-height level, 0 – 3. */\n line: number;\n dyslexia: boolean;\n /** Reading-mask mode. */\n adhd: boolean;\n /** Saturation level: 0 normal · 1 low · 2 high · 3 none (grayscale). */\n saturation: number;\n /** Dark mode (smart invert). */\n dark: boolean;\n /** Full colour inversion. */\n invert: boolean;\n /** Highlight links. */\n links: boolean;\n /** Text to speech. */\n tts: boolean;\n /** Big cursor. */\n cursor: boolean;\n /** Pause animation. */\n pause: boolean;\n hideImages: boolean;\n contrast: boolean;\n}\n\nexport interface AccessibilityWidgetProps {\n /** Corner to dock the launcher. @default \"bottom-right\" */\n position?: \"bottom-right\" | \"bottom-left\";\n /** Open the panel on mount (handy for demos / embedding). @default false */\n defaultOpen?: boolean;\n /**\n * Called whenever the adjustments change. The host app applies them however\n * it likes (RN has no DOM/CSS to mutate). Replaces the web's direct DOM +\n * localStorage side effects.\n */\n onSettingsChange?: (settings: AccessibilitySettings) => void;\n /** Optional theme override (else the active provider/default theme). */\n theme?: UX4GTheme;\n}\n\nconst DEFAULTS: AccessibilitySettings = {\n fontScale: 1,\n spacing: 0,\n line: 0,\n dyslexia: false,\n adhd: false,\n saturation: 0,\n dark: false,\n invert: false,\n links: false,\n tts: false,\n cursor: false,\n pause: false,\n hideImages: false,\n contrast: false,\n};\n\nconst SPACING_PX = [0, 1, 2, 3] as const;\nconst LINE_CAP = [\"\", \"Relaxed\", \"Loose\", \"Spacious\"] as const;\nconst SAT_CAP = [\"\", \"Low\", \"High\", \"None\"] as const;\n\ntype SettingsKey = keyof AccessibilitySettings;\n\n/* ---------- Icons (inline SVG / letterforms — no emoji) ---------- */\n\ninterface IconProps {\n color: ColorValue;\n}\n\nconst ICON = {\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\" as const,\n};\n\nfunction TypeIcon({ color, big }: IconProps & { big?: boolean }) {\n return (\n <Svg {...ICON}>\n <SvgText x={3} y={19} fontSize={big ? 9 : 13} fontWeight=\"700\" fill={color}>\n T\n </SvgText>\n <SvgText x={big ? 10 : 11} y={19} fontSize={big ? 17 : 9} fontWeight=\"700\" fill={color}>\n T\n </SvgText>\n </Svg>\n );\n}\n\nfunction SpacingIcon({ color }: IconProps) {\n return (\n <Svg {...ICON}>\n <SvgText x={12} y={13} fontSize={11} fontWeight=\"700\" textAnchor=\"middle\" fill={color}>\n A\n </SvgText>\n <Path d=\"M3 19h18\" stroke={color} strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <Path\n d=\"m5 17-2 2 2 2M19 17l2 2-2 2\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nfunction LineIcon({ color }: IconProps) {\n return (\n <Svg {...ICON}>\n <Path\n d=\"M10 6h11M10 12h11M10 18h11\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"M4 8V4m0 0L2.5 5.5M4 4l1.5 1.5M4 16v4m0 0 1.5-1.5M4 20l-1.5-1.5\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nfunction GlyphIcon({ color, glyph }: IconProps & { glyph: string }) {\n return (\n <Svg {...ICON}>\n <SvgText x={12} y={18} fontSize={13} fontWeight=\"700\" textAnchor=\"middle\" fill={color}>\n {glyph}\n </SvgText>\n </Svg>\n );\n}\n\nfunction AdhdIcon({ color }: IconProps) {\n return (\n <Svg {...ICON}>\n <Circle cx={12} cy={12} r={9.5} stroke={color} strokeWidth={2} />\n <Path\n d=\"M6.5 12.5c1.2-2 2.4-2 3.6 0s2.4 2 3.6 0 2.4-2 3.6 0\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nfunction DropIcon({ color }: IconProps) {\n return (\n <Svg {...ICON}>\n <Path\n d=\"M12 2.7s6 6.3 6 10.3a6 6 0 0 1-12 0c0-4 6-10.3 6-10.3z\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path d=\"M12 3v18a6 6 0 0 0 0-12\" fill={color} opacity={0.85} />\n </Svg>\n );\n}\n\nfunction MoonIcon({ color }: IconProps) {\n return (\n <Svg {...ICON}>\n <Path\n d=\"M20 14.5A8 8 0 1 1 9.5 4 6.5 6.5 0 0 0 20 14.5z\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nfunction InvertIcon({ color }: IconProps) {\n return (\n <Svg {...ICON}>\n <Circle cx={12} cy={12} r={9.5} stroke={color} strokeWidth={2} />\n <Path d=\"M12 2.5a9.5 9.5 0 0 0 0 19z\" fill={color} />\n </Svg>\n );\n}\n\nfunction LinkIcon({ color }: IconProps) {\n return (\n <Svg {...ICON}>\n <Path\n d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nfunction SpeechIcon({ color }: IconProps) {\n return (\n <Svg {...ICON}>\n <Path\n d=\"M4 11v2M8 7v10M12 4v16M16 8v8M20 11v2\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nfunction CursorIcon({ color }: IconProps) {\n return (\n <Svg {...ICON}>\n <Path\n d=\"m4 4 7.07 16.97 2.51-7.39 7.39-2.51L4 4z\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nfunction PauseIcon({ color }: IconProps) {\n return (\n <Svg {...ICON}>\n <Circle cx={12} cy={12} r={9.5} stroke={color} strokeWidth={2} />\n <Path\n d=\"M10 9v6M14 9v6\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nfunction HideImgIcon({ color }: IconProps) {\n return (\n <Svg {...ICON}>\n <Rect x={3} y={4.5} width={18} height={15} rx={2.5} stroke={color} strokeWidth={2} />\n <Path d=\"m6 17 4-4 3 3\" stroke={color} strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <Circle cx={15.5} cy={9.5} r={1.3} stroke={color} strokeWidth={2} />\n <Path d=\"m3.5 3.5 17 17\" stroke={color} strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </Svg>\n );\n}\n\nfunction ContrastIcon({ color }: IconProps) {\n return (\n <Svg {...ICON}>\n <Circle cx={12} cy={12} r={9.5} stroke={color} strokeWidth={2} />\n <Path d=\"M12 2.5v19a9.5 9.5 0 0 0 0-19z\" fill={color} />\n </Svg>\n );\n}\n\n/* ---------- Tile ---------- */\n\ninterface TileProps {\n label: string;\n icon: (iconColor: ColorValue) => React.ReactNode;\n active: boolean;\n onPress: () => void;\n caption?: string;\n disabled?: boolean;\n theme: UX4GTheme;\n}\n\nfunction Tile({ label, icon, active, onPress, caption, disabled = false, theme }: TileProps) {\n const c = theme.color;\n const [focused, setFocused] = useState(false);\n\n const iconColor: ColorValue = active ? c.primary : theme.ramp.neutral[700];\n\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={label}\n accessibilityState={{ checked: active, disabled }}\n disabled={disabled}\n onPress={onPress}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={({ pressed }) => {\n const base: ViewStyle = {\n width: \"31%\",\n minHeight: 100,\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n gap: 6,\n paddingTop: 13,\n paddingBottom: 11,\n paddingHorizontal: 4,\n borderRadius: theme.radius.lg,\n borderWidth: theme.border.md,\n borderColor: active ? c.primary : c.border,\n backgroundColor: active\n ? theme.ramp.violet[50]\n : pressed\n ? theme.ramp.neutral[50]\n : c.surface,\n opacity: disabled ? 0.45 : 1,\n };\n const focusRing: ViewStyle | null =\n focused && !disabled\n ? { borderColor: c.focus, borderWidth: theme.focusRingWidth }\n : null;\n return [base, focusRing];\n }}\n >\n <View style={{ height: 26, alignItems: \"center\", justifyContent: \"center\" }}>\n {icon(iconColor)}\n </View>\n <Text\n style={{\n minHeight: 29,\n textAlign: \"center\",\n fontFamily: theme.font.family.sans,\n fontSize: 11.5,\n fontWeight: \"500\",\n lineHeight: 14,\n color: active ? theme.ramp.violet[700] : c.text,\n }}\n >\n {label}\n </Text>\n {caption != null && (\n <Text\n style={{\n fontFamily: theme.font.family.mono,\n fontSize: 10,\n fontWeight: \"600\",\n color: c.primary,\n }}\n >\n {caption}\n </Text>\n )}\n </Pressable>\n );\n}\n\n/**\n * UX4G AccessibilityWidget (React Native) — a floating \"universal access\"\n * launcher that opens a panel with a 3-column tile grid of live reading\n * adjustments: Bigger / Smaller Text, Text Spacing, Line Height, Dyslexia\n * Friendly, ADHD Mode, Saturation, Light-Dark, Invert Colors, Highlight Links,\n * Text to Speech, Cursor, Pause Animation, Hide Images and Contrast, plus Reset\n * all. Light-Dark and Invert Colors are mutually exclusive. The web version\n * mutates the DOM and localStorage directly; in RN there is no DOM, so the\n * active settings are surfaced through `onSettingsChange` for the host app to\n * apply.\n */\nexport function AccessibilityWidget({\n position = \"bottom-right\",\n defaultOpen = false,\n onSettingsChange,\n theme: themeProp,\n}: AccessibilityWidgetProps) {\n const ctxTheme = useUX4GTheme();\n const theme = themeProp ?? ctxTheme;\n const c = theme.color;\n\n const [open, setOpen] = useState(defaultOpen);\n const [s, setS] = useState<AccessibilitySettings>(DEFAULTS);\n const [launcherFocused, setLauncherFocused] = useState(false);\n\n useEffect(() => {\n onSettingsChange?.(s);\n }, [s, onSettingsChange]);\n\n const set = (patch: Partial<AccessibilitySettings>) => setS((cur) => ({ ...cur, ...patch }));\n const reset = () => setS(DEFAULTS);\n\n const activeCount = useMemo(\n () => (Object.keys(s) as SettingsKey[]).filter((k) => s[k] !== DEFAULTS[k]).length,\n [s],\n );\n\n const left = position === \"bottom-left\";\n const dock: ViewStyle = left ? { left: theme.space[5] } : { right: theme.space[5] };\n\n const fontPct = s.fontScale !== 1 ? `${Math.round(s.fontScale * 100)}%` : undefined;\n\n return (\n <>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Accessibility options\"\n accessibilityState={{ expanded: open }}\n onPress={() => setOpen((o) => !o)}\n onFocus={() => setLauncherFocused(true)}\n onBlur={() => setLauncherFocused(false)}\n style={{\n position: \"absolute\",\n bottom: theme.space[5],\n ...dock,\n zIndex: 1100,\n width: 52,\n height: 52,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.full,\n borderWidth: theme.focusRingWidth,\n borderColor: launcherFocused ? c.focus : \"transparent\",\n backgroundColor: c.primary,\n ...theme.shadow.l,\n }}\n >\n <Svg width={28} height={28} viewBox=\"0 0 24 24\" fill=\"none\">\n <Circle cx={12} cy={4.5} r={1.6} fill={c.onPrimary} />\n <Path\n d=\"M3.5 8.5c2.5 1.2 5.3 1.8 8.5 1.8s6-.6 8.5-1.8\"\n stroke={c.onPrimary}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"M12 10.3V15\"\n stroke={c.onPrimary}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"m8.5 21 3.5-6 3.5 6\"\n stroke={c.onPrimary}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </Pressable>\n\n <RNModal\n visible={open}\n transparent\n animationType=\"fade\"\n onRequestClose={() => setOpen(false)}\n >\n <Pressable\n onPress={() => setOpen(false)}\n style={{\n flex: 1,\n justifyContent: \"flex-end\",\n alignItems: left ? \"flex-start\" : \"flex-end\",\n padding: theme.space[5],\n paddingBottom: theme.space[8] + theme.space[5],\n backgroundColor: \"rgba(33,33,33,0.45)\",\n }}\n >\n <View\n role=\"dialog\"\n accessibilityLabel=\"Accessibility options\"\n accessibilityViewIsModal\n onStartShouldSetResponder={() => true}\n style={[\n {\n width: \"100%\",\n maxWidth: 348,\n maxHeight: \"85%\",\n padding: 18,\n backgroundColor: c.surface,\n borderWidth: theme.border.thin,\n borderColor: c.border,\n borderRadius: theme.radius[\"2xl\"],\n },\n theme.shadow.xl,\n ]}\n >\n <View\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: 4,\n }}\n >\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 17,\n fontWeight: \"600\",\n color: c.text,\n }}\n >\n Accessibility\n </Text>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Close\"\n onPress={() => setOpen(false)}\n style={{\n width: 30,\n height: 30,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: theme.radius.md,\n backgroundColor: theme.ramp.neutral[100],\n }}\n hitSlop={8}\n >\n <Svg width={18} height={18} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d=\"M18 6 6 18\"\n stroke={theme.ramp.neutral[700]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d=\"m6 6 12 12\"\n stroke={theme.ramp.neutral[700]}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n </Pressable>\n </View>\n\n <Text\n style={{\n fontFamily: theme.font.family.sans,\n fontSize: 12.5,\n color: c.textMuted,\n marginBottom: 14,\n }}\n >\n Adjust this page to suit your needs. Settings are remembered on this device.\n </Text>\n\n <ScrollView contentContainerStyle={{ paddingBottom: 2 }}>\n <View\n style={{\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n justifyContent: \"space-between\",\n rowGap: 8,\n }}\n >\n <Tile\n theme={theme}\n label=\"Bigger Text\"\n active={s.fontScale > 1}\n disabled={s.fontScale >= 1.6}\n icon={(col) => <TypeIcon color={col} big />}\n caption={fontPct}\n onPress={() => set({ fontScale: Math.min(1.6, +(s.fontScale + 0.1).toFixed(2)) })}\n />\n <Tile\n theme={theme}\n label=\"Smaller Text\"\n active={s.fontScale < 1}\n disabled={s.fontScale <= 0.8}\n icon={(col) => <TypeIcon color={col} />}\n caption={fontPct}\n onPress={() => set({ fontScale: Math.max(0.8, +(s.fontScale - 0.1).toFixed(2)) })}\n />\n <Tile\n theme={theme}\n label=\"Text Spacing\"\n active={s.spacing > 0}\n icon={(col) => <SpacingIcon color={col} />}\n caption={s.spacing ? `+${SPACING_PX[s.spacing]}px` : undefined}\n onPress={() => set({ spacing: (s.spacing + 1) % 4 })}\n />\n\n <Tile\n theme={theme}\n label=\"Line Height\"\n active={s.line > 0}\n icon={(col) => <LineIcon color={col} />}\n caption={LINE_CAP[s.line] || undefined}\n onPress={() => set({ line: (s.line + 1) % 4 })}\n />\n <Tile\n theme={theme}\n label=\"Dyslexia Friendly\"\n active={s.dyslexia}\n icon={(col) => <GlyphIcon color={col} glyph=\"Df\" />}\n onPress={() => set({ dyslexia: !s.dyslexia })}\n />\n <Tile\n theme={theme}\n label=\"ADHD Mode\"\n active={s.adhd}\n icon={(col) => <AdhdIcon color={col} />}\n onPress={() => set({ adhd: !s.adhd })}\n />\n\n <Tile\n theme={theme}\n label=\"Saturation\"\n active={s.saturation > 0}\n icon={(col) => <DropIcon color={col} />}\n caption={SAT_CAP[s.saturation] || undefined}\n onPress={() => set({ saturation: (s.saturation + 1) % 4 })}\n />\n <Tile\n theme={theme}\n label=\"Light-Dark\"\n active={s.dark}\n icon={(col) => <MoonIcon color={col} />}\n onPress={() => set({ dark: !s.dark, invert: false })}\n />\n <Tile\n theme={theme}\n label=\"Invert Colors\"\n active={s.invert}\n icon={(col) => <InvertIcon color={col} />}\n onPress={() => set({ invert: !s.invert, dark: false })}\n />\n\n <Tile\n theme={theme}\n label=\"Highlight Links\"\n active={s.links}\n icon={(col) => <LinkIcon color={col} />}\n onPress={() => set({ links: !s.links })}\n />\n <Tile\n theme={theme}\n label=\"Text to Speech\"\n active={s.tts}\n icon={(col) => <SpeechIcon color={col} />}\n onPress={() => set({ tts: !s.tts })}\n />\n <Tile\n theme={theme}\n label=\"Cursor\"\n active={s.cursor}\n icon={(col) => <CursorIcon color={col} />}\n onPress={() => set({ cursor: !s.cursor })}\n />\n\n <Tile\n theme={theme}\n label=\"Pause Animation\"\n active={s.pause}\n icon={(col) => <PauseIcon color={col} />}\n onPress={() => set({ pause: !s.pause })}\n />\n <Tile\n theme={theme}\n label=\"Hide Images\"\n active={s.hideImages}\n icon={(col) => <HideImgIcon color={col} />}\n onPress={() => set({ hideImages: !s.hideImages })}\n />\n <Tile\n theme={theme}\n label=\"Contrast\"\n active={s.contrast}\n icon={(col) => <ContrastIcon color={col} />}\n onPress={() => set({ contrast: !s.contrast })}\n />\n </View>\n\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={`Reset all${activeCount ? ` (${activeCount})` : \"\"}`}\n accessibilityState={{ disabled: activeCount === 0 }}\n disabled={activeCount === 0}\n onPress={reset}\n style={{\n marginTop: 14,\n height: 42,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderWidth: theme.border.md,\n borderColor: c.border,\n borderRadius: theme.radius.md,\n backgroundColor: c.surface,\n }}\n >\n <Text\n style={{\n fontFamily: theme.font.family.ui,\n fontSize: 14,\n fontWeight: \"500\",\n color: activeCount ? c.primary : theme.ramp.neutral[400],\n }}\n >\n {`Reset all${activeCount ? ` (${activeCount})` : \"\"}`}\n </Text>\n </Pressable>\n </ScrollView>\n </View>\n </Pressable>\n </RNModal>\n </>\n );\n}\n\nexport default AccessibilityWidget;\n"]}