diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d234ee2eb..067763562 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,13 +45,21 @@ jobs: sudo apt-get install -y libreoffice poppler-utils python -m pip install --upgrade setuptools wheel pip install . - pip install psycopg2-binary==2.9.3 + pip install psycopg2-binary==2.9.3 unittest-xml-reporting npm ci --no-audit --ignore-scripts --only=prod npm i -g sass - - name: Lint and Run tests + - name: Run tests env: DATABASE_URL: "postgres://postgres:postgres@localhost:5432/peach-jam" + TEST_RUNNER: "xmlrunner.extra.djangotestrunner.XMLTestRunner" run: | pre-commit run --all-files python manage.py test ${{ matrix.app }} --settings=${{ matrix.app }}.settings + + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action/linux@v2 + if: success() || failure() + continue-on-error: true + with: + files: test-reports/*.xml diff --git a/africanlii/tests/test_views.py b/africanlii/tests/test_views.py index b70b3a812..7ec67e47f 100644 --- a/africanlii/tests/test_views.py +++ b/africanlii/tests/test_views.py @@ -2,7 +2,7 @@ class AfricanliiViewsTest(TestCase): - fixtures = ["documents/sample_documents"] + fixtures = ["tests/countries", "documents/sample_documents"] def test_homepage(self): response = self.client.get("/") diff --git a/africanlii/views/taxonomy.py b/africanlii/views/taxonomy.py index 7c0f43b8e..2f62127df 100644 --- a/africanlii/views/taxonomy.py +++ b/africanlii/views/taxonomy.py @@ -125,21 +125,21 @@ def add_facets(self, context): "jurisdictions": { "label": _("Judrisdictions"), "type": "checkbox", - "options": [j for j, n, x in res.facets.jurisdiction], + "options": [(j, j) for j, n, x in res.facets.jurisdiction], "values": self.request.GET.getlist("jurisdictions"), }, "years": { "label": _("Years"), "type": "checkbox", "options": [ - str(y) for y, n, x in sorted(res.facets.year, reverse=True) + (str(y), y) for y, n, x in sorted(res.facets.year, reverse=True) ], "values": self.request.GET.getlist("years"), }, "alphabet": { "label": _("Alphabet"), "type": "radio", - "options": lowercase_alphabet(), + "options": [(a, a) for a in lowercase_alphabet()], "values": self.request.GET.get("alphabet"), }, } diff --git a/peachjam/fixtures/documents/sample_documents.json b/peachjam/fixtures/documents/sample_documents.json index 4d4f72f28..90aeb4e10 100644 --- a/peachjam/fixtures/documents/sample_documents.json +++ b/peachjam/fixtures/documents/sample_documents.json @@ -1,3145 +1,45 @@ [ { - "model": "peachjam.courtclass", - "pk": 2, - "fields": { - "name": "High Court", - "description": "" - } - }, - { - "fields": { - "code": "ECOWASCJ", - "court_class": 2, - "name": "ECOWAS Community Court of Justice" - }, - "model": "peachjam.court", - "pk": 1 - }, - { - "fields": { - "area": "390580.00", - "capital": "Harare", - "continent": "AF", - "currency_code": "ZWL", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "ZI", - "geonameid": 878675, - "iso3": "ZWE", - "iso_numeric": 716, - "languages": "en-ZW,sn,nr,nd", - "name": "Zimbabwe", - "neighbours": "ZA,MZ,BW,ZM", - "phone": "263", - "population": 14439018, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".zw" - }, - "model": "countries_plus.country", - "pk": "ZW" - }, - { - "fields": { - "area": "752614.00", - "capital": "Lusaka", - "continent": "AF", - "currency_code": "ZMW", - "currency_name": "Kwacha", - "currency_symbol": null, - "equivalent_fips_code": null, - "fips": "ZA", - "geonameid": 895949, - "iso3": "ZMB", - "iso_numeric": 894, - "languages": "en-ZM,bem,loz,lun,lue,ny,toi", - "name": "Zambia", - "neighbours": "ZW,TZ,MZ,CD,NA,MW,AO", - "phone": "260", - "population": 17351822, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".zm" - }, - "model": "countries_plus.country", - "pk": "ZM" - }, - { - "fields": { - "area": "329560.00", - "capital": "Hanoi", - "continent": "AS", - "currency_code": "VND", - "currency_name": "Dong", - "currency_symbol": "\u20ab", - "equivalent_fips_code": null, - "fips": "VM", - "geonameid": 1562822, - "iso3": "VNM", - "iso_numeric": 704, - "languages": "vi,en,fr,zh,km", - "name": "Vietnam", - "neighbours": "CN,LA,KH", - "phone": "84", - "population": 95540395, - "postal_code_format": "######", - "postal_code_regex": "^(\\d{6})$", - "tld": ".vn" - }, - "model": "countries_plus.country", - "pk": "VN" - }, - { - "fields": { - "area": "12200.00", - "capital": "Port Vila", - "continent": "OC", - "currency_code": "VUV", - "currency_name": "Vatu", - "currency_symbol": "Vt", - "equivalent_fips_code": null, - "fips": "NH", - "geonameid": 2134431, - "iso3": "VUT", - "iso_numeric": 548, - "languages": "bi,en-VU,fr-VU", - "name": "Vanuatu", - "neighbours": null, - "phone": "678", - "population": 292680, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".vu" - }, - "model": "countries_plus.country", - "pk": "VU" - }, - { - "fields": { - "area": "352.00", - "capital": "Charlotte Amalie", - "continent": "NA", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "VQ", - "geonameid": 4796775, - "iso3": "VIR", - "iso_numeric": 850, - "languages": "en-VI", - "name": "U.S. Virgin Islands", - "neighbours": null, - "phone": "+1-340", - "population": 106977, - "postal_code_format": "#####-####", - "postal_code_regex": "^008\\d{2}(?:-\\d{4})?$", - "tld": ".vi" - }, - "model": "countries_plus.country", - "pk": "VI" - }, - { - "fields": { - "area": "0.00", - "capital": null, - "continent": "OC", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": null, - "geonameid": 5854968, - "iso3": "UMI", - "iso_numeric": 581, - "languages": "en-UM", - "name": "United States Minor Outlying Islands", - "neighbours": null, - "phone": "1", - "population": 0, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".um" - }, - "model": "countries_plus.country", - "pk": "UM" - }, - { - "fields": { - "area": "9629091.00", - "capital": "Washington", - "continent": "NA", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "US", - "geonameid": 6252001, - "iso3": "USA", - "iso_numeric": 840, - "languages": "en-US,es-US,haw,fr", - "name": "United States", - "neighbours": "CA,MX,CU", - "phone": "1", - "population": 327167434, - "postal_code_format": "#####-####", - "postal_code_regex": "^\\d{5}(-\\d{4})?$", - "tld": ".us" - }, - "model": "countries_plus.country", - "pk": "US" - }, - { - "fields": { - "area": "244820.00", - "capital": "London", - "continent": "EU", - "currency_code": "GBP", - "currency_name": "Pound", - "currency_symbol": "\u00a3", - "equivalent_fips_code": null, - "fips": "UK", - "geonameid": 2635167, - "iso3": "GBR", - "iso_numeric": 826, - "languages": "en-GB,cy-GB,gd", - "name": "United Kingdom", - "neighbours": "IE", - "phone": "44", - "population": 66488991, - "postal_code_format": "@# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA", - "postal_code_regex": "^([Gg][Ii][Rr]\\s?0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z]))))\\s?[0-9][A-Za-z]{2})$", - "tld": ".uk" - }, - "model": "countries_plus.country", - "pk": "GB" - }, - { - "fields": { - "area": "82880.00", - "capital": "Abu Dhabi", - "continent": "AS", - "currency_code": "AED", - "currency_name": "Dirham", - "currency_symbol": "\u062f.\u0625", - "equivalent_fips_code": null, - "fips": "AE", - "geonameid": 290557, - "iso3": "ARE", - "iso_numeric": 784, - "languages": "ar-AE,fa,en,hi,ur", - "name": "United Arab Emirates", - "neighbours": "SA,OM", - "phone": "971", - "population": 9630959, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".ae" - }, - "model": "countries_plus.country", - "pk": "AE" - }, - { - "fields": { - "area": "236040.00", - "capital": "Kampala", - "continent": "AF", - "currency_code": "UGX", - "currency_name": "Shilling", - "currency_symbol": "Sh", - "equivalent_fips_code": null, - "fips": "UG", - "geonameid": 226074, - "iso3": "UGA", - "iso_numeric": 800, - "languages": "en-UG,lg,sw,ar", - "name": "Uganda", - "neighbours": "TZ,KE,SS,CD,RW", - "phone": "256", - "population": 42723139, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".ug" - }, - "model": "countries_plus.country", - "pk": "UG" - }, - { - "fields": { - "area": "26.00", - "capital": "Funafuti", - "continent": "OC", - "currency_code": "AUD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "TV", - "geonameid": 2110297, - "iso3": "TUV", - "iso_numeric": 798, - "languages": "tvl,en,sm,gil", - "name": "Tuvalu", - "neighbours": null, - "phone": "688", - "population": 11508, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".tv" - }, - "model": "countries_plus.country", - "pk": "TV" - }, - { - "fields": { - "area": "430.00", - "capital": "Cockburn Town", - "continent": "NA", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "TK", - "geonameid": 3576916, - "iso3": "TCA", - "iso_numeric": 796, - "languages": "en-TC", - "name": "Turks and Caicos Islands", - "neighbours": null, - "phone": "+1-649", - "population": 37665, - "postal_code_format": "TKCA 1ZZ", - "postal_code_regex": "^(TKCA 1ZZ)$", - "tld": ".tc" - }, - "model": "countries_plus.country", - "pk": "TC" - }, - { - "fields": { - "area": "5128.00", - "capital": "Port of Spain", - "continent": "NA", - "currency_code": "TTD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "TD", - "geonameid": 3573591, - "iso3": "TTO", - "iso_numeric": 780, - "languages": "en-TT,hns,fr,es,zh", - "name": "Trinidad and Tobago", - "neighbours": null, - "phone": "+1-868", - "population": 1389858, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".tt" - }, - "model": "countries_plus.country", - "pk": "TT" - }, - { - "fields": { - "area": "748.00", - "capital": "Nuku'alofa", - "continent": "OC", - "currency_code": "TOP", - "currency_name": "Pa'anga", - "currency_symbol": "T$", - "equivalent_fips_code": null, - "fips": "TN", - "geonameid": 4032283, - "iso3": "TON", - "iso_numeric": 776, - "languages": "to,en-TO", - "name": "Tonga", - "neighbours": null, - "phone": "676", - "population": 103197, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".to" - }, - "model": "countries_plus.country", - "pk": "TO" - }, - { - "fields": { - "area": "10.00", - "capital": null, - "continent": "OC", - "currency_code": "NZD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "TL", - "geonameid": 4031074, - "iso3": "TKL", - "iso_numeric": 772, - "languages": "tkl,en-TK", - "name": "Tokelau", - "neighbours": null, - "phone": "690", - "population": 1466, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".tk" - }, - "model": "countries_plus.country", - "pk": "TK" - }, - { - "fields": { - "area": "15007.00", - "capital": "Dili", - "continent": "OC", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "TT", - "geonameid": 1966436, - "iso3": "TLS", - "iso_numeric": 626, - "languages": "tet,pt-TL,id,en", - "name": "Timor Leste", - "neighbours": "ID", - "phone": "670", - "population": 1267972, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".tl" - }, - "model": "countries_plus.country", - "pk": "TL" - }, - { - "fields": { - "area": "514000.00", - "capital": "Bangkok", - "continent": "AS", - "currency_code": "THB", - "currency_name": "Baht", - "currency_symbol": "\u0e3f", - "equivalent_fips_code": null, - "fips": "TH", - "geonameid": 1605651, - "iso3": "THA", - "iso_numeric": 764, - "languages": "th,en", - "name": "Thailand", - "neighbours": "LA,MM,KH,MY", - "phone": "66", - "population": 69428524, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".th" - }, - "model": "countries_plus.country", - "pk": "TH" - }, - { - "fields": { - "area": "945087.00", - "capital": "Dodoma", - "continent": "AF", - "currency_code": "TZS", - "currency_name": "Shilling", - "currency_symbol": "Sh", - "equivalent_fips_code": null, - "fips": "TZ", - "geonameid": 149590, - "iso3": "TZA", - "iso_numeric": 834, - "languages": "sw-TZ,en,ar", - "name": "Tanzania", - "neighbours": "MZ,KE,CD,RW,ZM,BI,UG,MW", - "phone": "255", - "population": 56318348, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".tz" - }, - "model": "countries_plus.country", - "pk": "TZ" - }, - { - "fields": { - "area": "185180.00", - "capital": "Damascus", - "continent": "AS", - "currency_code": "SYP", - "currency_name": "Pound", - "currency_symbol": "\u00a3, \u0644.\u0633", - "equivalent_fips_code": null, - "fips": "SY", - "geonameid": 163843, - "iso3": "SYR", - "iso_numeric": 760, - "languages": "ar-SY,ku,hy,arc,fr,en", - "name": "Syria", - "neighbours": "IQ,JO,IL,TR,LB", - "phone": "963", - "population": 16906283, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".sy" - }, - "model": "countries_plus.country", - "pk": "SY" - }, - { - "fields": { - "area": "163270.00", - "capital": "Paramaribo", - "continent": "SA", - "currency_code": "SRD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "NS", - "geonameid": 3382998, - "iso3": "SUR", - "iso_numeric": 740, - "languages": "nl-SR,en,srn,hns,jv", - "name": "Suriname", - "neighbours": "GY,BR,GF", - "phone": "597", - "population": 575991, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".sr" - }, - "model": "countries_plus.country", - "pk": "SR" - }, - { - "fields": { - "area": "1861484.00", - "capital": "Khartoum", - "continent": "AF", - "currency_code": "SDG", - "currency_name": "Pound", - "currency_symbol": "S$", - "equivalent_fips_code": null, - "fips": "SU", - "geonameid": 366755, - "iso3": "SDN", - "iso_numeric": 729, - "languages": "ar-SD,en,fia", - "name": "Sudan", - "neighbours": "SS,TD,EG,ET,ER,LY,CF", - "phone": "249", - "population": 41801533, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".sd" - }, - "model": "countries_plus.country", - "pk": "SD" - }, - { - "fields": { - "area": "65610.00", - "capital": "Colombo", - "continent": "AS", - "currency_code": "LKR", - "currency_name": "Rupee", - "currency_symbol": "\u0bb0\u0bc2", - "equivalent_fips_code": null, - "fips": "CE", - "geonameid": 1227603, - "iso3": "LKA", - "iso_numeric": 144, - "languages": "si,ta,en", - "name": "Sri Lanka", - "neighbours": null, - "phone": "94", - "population": 21670000, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".lk" - }, - "model": "countries_plus.country", - "pk": "LK" - }, - { - "fields": { - "area": "644329.00", - "capital": "Juba", - "continent": "AF", - "currency_code": "SSP", - "currency_name": "Pound", - "currency_symbol": null, - "equivalent_fips_code": null, - "fips": "OD", - "geonameid": 7909807, - "iso3": "SSD", - "iso_numeric": 728, - "languages": "en", - "name": "South Sudan", - "neighbours": "CD,CF,ET,KE,SD,UG", - "phone": "211", - "population": 8260490, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".ss" - }, - "model": "countries_plus.country", - "pk": "SS" - }, - { - "fields": { - "area": "98480.00", - "capital": "Seoul", - "continent": "AS", - "currency_code": "KRW", - "currency_name": "Won", - "currency_symbol": "\u20a9", - "equivalent_fips_code": null, - "fips": "KS", - "geonameid": 1835841, - "iso3": "KOR", - "iso_numeric": 410, - "languages": "ko-KR,en", - "name": "South Korea", - "neighbours": "KP", - "phone": "82", - "population": 51635256, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".kr" - }, - "model": "countries_plus.country", - "pk": "KR" - }, - { - "fields": { - "area": "3903.00", - "capital": "Grytviken", - "continent": "AN", - "currency_code": "GBP", - "currency_name": "Pound", - "currency_symbol": "\u00a3", - "equivalent_fips_code": null, - "fips": "SX", - "geonameid": 3474415, - "iso3": "SGS", - "iso_numeric": 239, - "languages": "en", - "name": "South Georgia and the South Sandwich Islands", - "neighbours": null, - "phone": null, - "population": 30, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".gs" - }, - "model": "countries_plus.country", - "pk": "GS" - }, - { - "fields": { - "area": "1219912.00", - "capital": "Pretoria", - "continent": "AF", - "currency_code": "ZAR", - "currency_name": "Rand", - "currency_symbol": "R", - "equivalent_fips_code": null, - "fips": "SF", - "geonameid": 953987, - "iso3": "ZAF", - "iso_numeric": 710, - "languages": "zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr", - "name": "South Africa", - "neighbours": "ZW,SZ,MZ,BW,NA,LS", - "phone": "27", - "population": 57779622, - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "tld": ".za" - }, - "model": "countries_plus.country", - "pk": "ZA" - }, - { - "fields": { - "area": "637657.00", - "capital": "Mogadishu", - "continent": "AF", - "currency_code": "SOS", - "currency_name": "Shilling", - "currency_symbol": "Sh", - "equivalent_fips_code": null, - "fips": "SO", - "geonameid": 51537, - "iso3": "SOM", - "iso_numeric": 706, - "languages": "so-SO,ar-SO,it,en-SO", - "name": "Somalia", - "neighbours": "ET,KE,DJ", - "phone": "252", - "population": 15008154, - "postal_code_format": "@@ #####", - "postal_code_regex": "^([A-Z]{2}\\d{5})$", - "tld": ".so" - }, - "model": "countries_plus.country", - "pk": "SO" - }, - { - "fields": { - "area": "28450.00", - "capital": "Honiara", - "continent": "OC", - "currency_code": "SBD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "BP", - "geonameid": 2103350, - "iso3": "SLB", - "iso_numeric": 90, - "languages": "en-SB,tpi", - "name": "Solomon Islands", - "neighbours": null, - "phone": "677", - "population": 652858, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".sb" - }, - "model": "countries_plus.country", - "pk": "SB" - }, - { - "fields": { - "area": "21.00", - "capital": "Philipsburg", - "continent": "NA", - "currency_code": "ANG", - "currency_name": "Guilder", - "currency_symbol": "\u0192", - "equivalent_fips_code": null, - "fips": "NN", - "geonameid": 7609695, - "iso3": "SXM", - "iso_numeric": 534, - "languages": "nl,en", - "name": "Sint Maarten", - "neighbours": "MF", - "phone": "599", - "population": 40654, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".sx" - }, - "model": "countries_plus.country", - "pk": "SX" - }, - { - "fields": { - "area": "692.70", - "capital": "Singapore", - "continent": "AS", - "currency_code": "SGD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "SN", - "geonameid": 1880251, - "iso3": "SGP", - "iso_numeric": 702, - "languages": "cmn,en-SG,ms-SG,ta-SG,zh-SG", - "name": "Singapore", - "neighbours": null, - "phone": "65", - "population": 5638676, - "postal_code_format": "######", - "postal_code_regex": "^(\\d{6})$", - "tld": ".sg" - }, - "model": "countries_plus.country", - "pk": "SG" - }, - { - "fields": { - "area": "71740.00", - "capital": "Freetown", - "continent": "AF", - "currency_code": "SLL", - "currency_name": "Leone", - "currency_symbol": "Le", - "equivalent_fips_code": null, - "fips": "SL", - "geonameid": 2403846, - "iso3": "SLE", - "iso_numeric": 694, - "languages": "en-SL,men,tem", - "name": "Sierra Leone", - "neighbours": "LR,GN", - "phone": "232", - "population": 7650154, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".sl" - }, - "model": "countries_plus.country", - "pk": "SL" - }, - { - "fields": { - "area": "455.00", - "capital": "Victoria", - "continent": "AF", - "currency_code": "SCR", - "currency_name": "Rupee", - "currency_symbol": "\u20a8", - "equivalent_fips_code": null, - "fips": "SE", - "geonameid": 241170, - "iso3": "SYC", - "iso_numeric": 690, - "languages": "en-SC,fr-SC", - "name": "Seychelles", - "neighbours": null, - "phone": "248", - "population": 96762, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".sc" - }, - "model": "countries_plus.country", - "pk": "SC" - }, - { - "fields": { - "area": "2944.00", - "capital": "Apia", - "continent": "OC", - "currency_code": "WST", - "currency_name": "Tala", - "currency_symbol": "T", - "equivalent_fips_code": null, - "fips": "WS", - "geonameid": 4034894, - "iso3": "WSM", - "iso_numeric": 882, - "languages": "sm,en-WS", - "name": "Samoa", - "neighbours": null, - "phone": "685", - "population": 196130, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".ws" - }, - "model": "countries_plus.country", - "pk": "WS" - }, - { - "fields": { - "area": "389.00", - "capital": "Kingstown", - "continent": "NA", - "currency_code": "XCD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "VC", - "geonameid": 3577815, - "iso3": "VCT", - "iso_numeric": 670, - "languages": "en-VC,fr", - "name": "Saint Vincent and the Grenadines", - "neighbours": null, - "phone": "+1-784", - "population": 110211, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".vc" - }, - "model": "countries_plus.country", - "pk": "VC" - }, - { - "fields": { - "area": "616.00", - "capital": "Castries", - "continent": "NA", - "currency_code": "XCD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "ST", - "geonameid": 3576468, - "iso3": "LCA", - "iso_numeric": 662, - "languages": "en-LC", - "name": "Saint Lucia", - "neighbours": null, - "phone": "+1-758", - "population": 181889, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".lc" - }, - "model": "countries_plus.country", - "pk": "LC" - }, - { - "fields": { - "area": "261.00", - "capital": "Basseterre", - "continent": "NA", - "currency_code": "XCD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "SC", - "geonameid": 3575174, - "iso3": "KNA", - "iso_numeric": 659, - "languages": "en-KN", - "name": "Saint Kitts and Nevis", - "neighbours": null, - "phone": "+1-869", - "population": 52441, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".kn" - }, - "model": "countries_plus.country", - "pk": "KN" - }, - { - "fields": { - "area": "410.00", - "capital": "Jamestown", - "continent": "AF", - "currency_code": "SHP", - "currency_name": "Pound", - "currency_symbol": "\u00a3", - "equivalent_fips_code": null, - "fips": "SH", - "geonameid": 3370751, - "iso3": "SHN", - "iso_numeric": 654, - "languages": "en-SH", - "name": "Saint Helena", - "neighbours": null, - "phone": "290", - "population": 7460, - "postal_code_format": "STHL 1ZZ", - "postal_code_regex": "^(STHL1ZZ)$", - "tld": ".sh" - }, - "model": "countries_plus.country", - "pk": "SH" - }, - { - "fields": { - "area": "26338.00", - "capital": "Kigali", - "continent": "AF", - "currency_code": "RWF", - "currency_name": "Franc", - "currency_symbol": "Fr", - "equivalent_fips_code": null, - "fips": "RW", - "geonameid": 49518, - "iso3": "RWA", - "iso_numeric": 646, - "languages": "rw,en-RW,fr-RW,sw", - "name": "Rwanda", - "neighbours": "TZ,CD,BI,UG", - "phone": "250", - "population": 12301939, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".rw" - }, - "model": "countries_plus.country", - "pk": "RW" - }, - { - "fields": { - "area": "9104.00", - "capital": "San Juan", - "continent": "NA", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "RQ", - "geonameid": 4566966, - "iso3": "PRI", - "iso_numeric": 630, - "languages": "en-PR,es-PR", - "name": "Puerto Rico", - "neighbours": null, - "phone": "+1-787,1-939", - "population": 3195153, - "postal_code_format": "#####-####", - "postal_code_regex": "^00[679]\\d{2}(?:-\\d{4})?$", - "tld": ".pr" - }, - "model": "countries_plus.country", - "pk": "PR" - }, - { - "fields": { - "area": "47.00", - "capital": "Adamstown", - "continent": "OC", - "currency_code": "NZD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "PC", - "geonameid": 4030699, - "iso3": "PCN", - "iso_numeric": 612, - "languages": "en-PN", - "name": "Pitcairn", - "neighbours": null, - "phone": "870", - "population": 46, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".pn" - }, - "model": "countries_plus.country", - "pk": "PN" - }, - { - "fields": { - "area": "300000.00", - "capital": "Manila", - "continent": "AS", - "currency_code": "PHP", - "currency_name": "Peso", - "currency_symbol": "\u20b1", - "equivalent_fips_code": null, - "fips": "RP", - "geonameid": 1694008, - "iso3": "PHL", - "iso_numeric": 608, - "languages": "tl,en-PH,fil,ceb,tgl,ilo,hil,war,pam,bik,bcl,pag,mrw,tsg,mdh,cbk,krj,sgd,msb,akl,ibg,yka,mta,abx", - "name": "Philippines", - "neighbours": null, - "phone": "63", - "population": 106651922, - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "tld": ".ph" - }, - "model": "countries_plus.country", - "pk": "PH" - }, - { - "fields": { - "area": "462840.00", - "capital": "Port Moresby", - "continent": "OC", - "currency_code": "PGK", - "currency_name": "Kina", - "currency_symbol": "K", - "equivalent_fips_code": null, - "fips": "PP", - "geonameid": 2088628, - "iso3": "PNG", - "iso_numeric": 598, - "languages": "en-PG,ho,meu,tpi", - "name": "Papua New Guinea", - "neighbours": "ID", - "phone": "675", - "population": 8606316, - "postal_code_format": "###", - "postal_code_regex": "^(\\d{3})$", - "tld": ".pg" - }, - "model": "countries_plus.country", - "pk": "PG" - }, - { - "fields": { - "area": "78200.00", - "capital": "Panama City", - "continent": "NA", - "currency_code": "PAB", - "currency_name": "Balboa", - "currency_symbol": "B/.", - "equivalent_fips_code": null, - "fips": "PM", - "geonameid": 3703430, - "iso3": "PAN", - "iso_numeric": 591, - "languages": "es-PA,en", - "name": "Panama", - "neighbours": "CR,CO", - "phone": "507", - "population": 4176873, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".pa" - }, - "model": "countries_plus.country", - "pk": "PA" - }, - { - "fields": { - "area": "458.00", - "capital": "Melekeok", - "continent": "OC", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "PS", - "geonameid": 1559582, - "iso3": "PLW", - "iso_numeric": 585, - "languages": "pau,sov,en-PW,tox,ja,fil,zh", - "name": "Palau", - "neighbours": null, - "phone": "680", - "population": 17907, - "postal_code_format": "96940", - "postal_code_regex": "^(96940)$", - "tld": ".pw" - }, - "model": "countries_plus.country", - "pk": "PW" - }, - { - "fields": { - "area": "803940.00", - "capital": "Islamabad", - "continent": "AS", - "currency_code": "PKR", - "currency_name": "Rupee", - "currency_symbol": "\u20a8", - "equivalent_fips_code": null, - "fips": "PK", - "geonameid": 1168579, - "iso3": "PAK", - "iso_numeric": 586, - "languages": "ur-PK,en-PK,pa,sd,ps,brh", - "name": "Pakistan", - "neighbours": "CN,AF,IR,IN", - "phone": "92", - "population": 212215030, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".pk" - }, - "model": "countries_plus.country", - "pk": "PK" - }, - { - "fields": { - "area": "212460.00", - "capital": "Muscat", - "continent": "AS", - "currency_code": "OMR", - "currency_name": "Rial", - "currency_symbol": "\u0631.\u0639.", - "equivalent_fips_code": null, - "fips": "MU", - "geonameid": 286963, - "iso3": "OMN", - "iso_numeric": 512, - "languages": "ar-OM,en,bal,ur", - "name": "Oman", - "neighbours": "SA,YE,AE", - "phone": "968", - "population": 4829483, - "postal_code_format": "###", - "postal_code_regex": "^(\\d{3})$", - "tld": ".om" - }, - "model": "countries_plus.country", - "pk": "OM" - }, - { - "fields": { - "area": "477.00", - "capital": "Saipan", - "continent": "OC", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "CQ", - "geonameid": 4041468, - "iso3": "MNP", - "iso_numeric": 580, - "languages": "fil,tl,zh,ch-MP,en-MP", - "name": "Northern Mariana Islands", - "neighbours": null, - "phone": "+1-670", - "population": 56882, - "postal_code_format": "#####", - "postal_code_regex": "^9695\\d{1}$", - "tld": ".mp" - }, - "model": "countries_plus.country", - "pk": "MP" - }, - { - "fields": { - "area": "34.60", - "capital": "Kingston", - "continent": "OC", - "currency_code": "AUD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "NF", - "geonameid": 2155115, - "iso3": "NFK", - "iso_numeric": 574, - "languages": "en-NF", - "name": "Norfolk Island", - "neighbours": null, - "phone": "672", - "population": 1828, - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "tld": ".nf" - }, - "model": "countries_plus.country", - "pk": "NF" - }, - { - "fields": { - "area": "260.00", - "capital": "Alofi", - "continent": "OC", - "currency_code": "NZD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "NE", - "geonameid": 4036232, - "iso3": "NIU", - "iso_numeric": 570, - "languages": "niu,en-NU", - "name": "Niue", - "neighbours": null, - "phone": "683", - "population": 2166, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".nu" - }, - "model": "countries_plus.country", - "pk": "NU" - }, - { - "fields": { - "area": "923768.00", - "capital": "Abuja", - "continent": "AF", - "currency_code": "NGN", - "currency_name": "Naira", - "currency_symbol": "\u20a6", - "equivalent_fips_code": null, - "fips": "NI", - "geonameid": 2328926, - "iso3": "NGA", - "iso_numeric": 566, - "languages": "en-NG,ha,yo,ig,ff", - "name": "Nigeria", - "neighbours": "TD,NE,BJ,CM", - "phone": "234", - "population": 195874740, - "postal_code_format": "######", - "postal_code_regex": "^(\\d{6})$", - "tld": ".ng" - }, - "model": "countries_plus.country", - "pk": "NG" - }, - { - "fields": { - "area": "129494.00", - "capital": "Managua", - "continent": "NA", - "currency_code": "NIO", - "currency_name": "Cordoba", - "currency_symbol": "C$", - "equivalent_fips_code": null, - "fips": "NU", - "geonameid": 3617476, - "iso3": "NIC", - "iso_numeric": 558, - "languages": "es-NI,en", - "name": "Nicaragua", - "neighbours": "CR,HN", - "phone": "505", - "population": 6465513, - "postal_code_format": "###-###-#", - "postal_code_regex": "^(\\d{7})$", - "tld": ".ni" - }, - "model": "countries_plus.country", - "pk": "NI" - }, - { - "fields": { - "area": "268680.00", - "capital": "Wellington", - "continent": "OC", - "currency_code": "NZD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "NZ", - "geonameid": 2186224, - "iso3": "NZL", - "iso_numeric": 554, - "languages": "en-NZ,mi", - "name": "New Zealand", - "neighbours": null, - "phone": "64", - "population": 4885500, - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "tld": ".nz" - }, - "model": "countries_plus.country", - "pk": "NZ" - }, - { - "fields": { - "area": "960.00", - "capital": "Willemstad", - "continent": "NA", - "currency_code": "ANG", - "currency_name": "Guilder", - "currency_symbol": "\u0192", - "equivalent_fips_code": null, - "fips": "NT", - "geonameid": 8505032, - "iso3": "ANT", - "iso_numeric": 530, - "languages": "nl-AN,en,es", - "name": "Netherlands Antilles", - "neighbours": "GP", - "phone": "599", - "population": 300000, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".an" - }, - "model": "countries_plus.country", - "pk": "AN" - }, - { - "fields": { - "area": "140800.00", - "capital": "Kathmandu", - "continent": "AS", - "currency_code": "NPR", - "currency_name": "Rupee", - "currency_symbol": "\u20a8", - "equivalent_fips_code": null, - "fips": "NP", - "geonameid": 1282988, - "iso3": "NPL", - "iso_numeric": 524, - "languages": "ne,en", - "name": "Nepal", - "neighbours": "CN,IN", - "phone": "977", - "population": 28087871, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".np" - }, - "model": "countries_plus.country", - "pk": "NP" - }, - { - "fields": { - "area": "21.00", - "capital": "Yaren", - "continent": "OC", - "currency_code": "AUD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "NR", - "geonameid": 2110425, - "iso3": "NRU", - "iso_numeric": 520, - "languages": "na,en-NR", - "name": "Nauru", - "neighbours": null, - "phone": "674", - "population": 12704, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".nr" - }, - "model": "countries_plus.country", - "pk": "NR" - }, - { - "fields": { - "area": "825418.00", - "capital": "Windhoek", - "continent": "AF", - "currency_code": "NAD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "WA", - "geonameid": 3355338, - "iso3": "NAM", - "iso_numeric": 516, - "languages": "en-NA,af,de,hz,naq", - "name": "Namibia", - "neighbours": "ZA,BW,ZM,AO", - "phone": "264", - "population": 2448255, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".na" - }, - "model": "countries_plus.country", - "pk": "NA" - }, - { - "fields": { - "area": "102.00", - "capital": "Plymouth", - "continent": "NA", - "currency_code": "XCD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "MH", - "geonameid": 3578097, - "iso3": "MSR", - "iso_numeric": 500, - "languages": "en-MS", - "name": "Montserrat", - "neighbours": null, - "phone": "+1-664", - "population": 9341, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".ms" - }, - "model": "countries_plus.country", - "pk": "MS" - }, - { - "fields": { - "area": "1.95", - "capital": "Monaco", - "continent": "EU", - "currency_code": "EUR", - "currency_name": "Euro", - "currency_symbol": "\u20ac", - "equivalent_fips_code": null, - "fips": "MN", - "geonameid": 2993457, - "iso3": "MCO", - "iso_numeric": 492, - "languages": "fr-MC,en,it", - "name": "Monaco", - "neighbours": "FR", - "phone": "377", - "population": 38682, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".mc" - }, - "model": "countries_plus.country", - "pk": "MC" - }, - { - "fields": { - "area": "702.00", - "capital": "Palikir", - "continent": "OC", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "FM", - "geonameid": 2081918, - "iso3": "FSM", - "iso_numeric": 583, - "languages": "en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg", - "name": "Micronesia", - "neighbours": null, - "phone": "691", - "population": 112640, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".fm" - }, - "model": "countries_plus.country", - "pk": "FM" - }, - { - "fields": { - "area": "2040.00", - "capital": "Port Louis", - "continent": "AF", - "currency_code": "MUR", - "currency_name": "Rupee", - "currency_symbol": "\u20a8", - "equivalent_fips_code": null, - "fips": "MP", - "geonameid": 934292, - "iso3": "MUS", - "iso_numeric": 480, - "languages": "en-MU,bho,fr", - "name": "Mauritius", - "neighbours": null, - "phone": "230", - "population": 1265303, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".mu" - }, - "model": "countries_plus.country", - "pk": "MU" - }, - { - "fields": { - "area": "181.30", - "capital": "Majuro", - "continent": "OC", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "RM", - "geonameid": 2080185, - "iso3": "MHL", - "iso_numeric": 584, - "languages": "mh,en-MH", - "name": "Marshall Islands", - "neighbours": null, - "phone": "692", - "population": 58413, - "postal_code_format": "#####-####", - "postal_code_regex": "^969\\d{2}(-\\d{4})$", - "tld": ".mh" - }, - "model": "countries_plus.country", - "pk": "MH" - }, - { - "fields": { - "area": "316.00", - "capital": "Valletta", - "continent": "EU", - "currency_code": "EUR", - "currency_name": "Euro", - "currency_symbol": "\u20ac", - "equivalent_fips_code": null, - "fips": "MT", - "geonameid": 2562770, - "iso3": "MLT", - "iso_numeric": 470, - "languages": "mt,en-MT", - "name": "Malta", - "neighbours": null, - "phone": "356", - "population": 483530, - "postal_code_format": "@@@ ####", - "postal_code_regex": "^[A-Z]{3}\\s?\\d{4}$", - "tld": ".mt" - }, - "model": "countries_plus.country", - "pk": "MT" - }, - { - "fields": { - "area": "300.00", - "capital": "Male", - "continent": "AS", - "currency_code": "MVR", - "currency_name": "Rufiyaa", - "currency_symbol": "\u0783.", - "equivalent_fips_code": null, - "fips": "MV", - "geonameid": 1282028, - "iso3": "MDV", - "iso_numeric": 462, - "languages": "dv,en", - "name": "Maldives", - "neighbours": null, - "phone": "960", - "population": 515696, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".mv" - }, - "model": "countries_plus.country", - "pk": "MV" - }, - { - "fields": { - "area": "329750.00", - "capital": "Kuala Lumpur", - "continent": "AS", - "currency_code": "MYR", - "currency_name": "Ringgit", - "currency_symbol": "RM", - "equivalent_fips_code": null, - "fips": "MY", - "geonameid": 1733045, - "iso3": "MYS", - "iso_numeric": 458, - "languages": "ms-MY,en,zh,ta,te,ml,pa,th", - "name": "Malaysia", - "neighbours": "BN,TH,ID", - "phone": "60", - "population": 31528585, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".my" - }, - "model": "countries_plus.country", - "pk": "MY" - }, - { - "fields": { - "area": "1759540.00", - "capital": "Tripoli", - "continent": "AF", - "currency_code": "LYD", - "currency_name": "Dinar", - "currency_symbol": "\u0644.\u062f", - "equivalent_fips_code": null, - "fips": "LY", - "geonameid": 2215636, - "iso3": "LBY", - "iso_numeric": 434, - "languages": "ar-LY,it,en", - "name": "Libya", - "neighbours": "TD,NE,DZ,SD,TN,EG", - "phone": "218", - "population": 6678567, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".ly" - }, - "model": "countries_plus.country", - "pk": "LY" - }, - { - "fields": { - "area": "111370.00", - "capital": "Monrovia", - "continent": "AF", - "currency_code": "LRD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "LI", - "geonameid": 2275384, - "iso3": "LBR", - "iso_numeric": 430, - "languages": "en-LR", - "name": "Liberia", - "neighbours": "SL,CI,GN", - "phone": "231", - "population": 4818977, - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "tld": ".lr" - }, - "model": "countries_plus.country", - "pk": "LR" - }, - { - "fields": { - "area": "30355.00", - "capital": "Maseru", - "continent": "AF", - "currency_code": "LSL", - "currency_name": "Loti", - "currency_symbol": "L", - "equivalent_fips_code": null, - "fips": "LT", - "geonameid": 932692, - "iso3": "LSO", - "iso_numeric": 426, - "languages": "en-LS,st,zu,xh", - "name": "Lesotho", - "neighbours": "ZA", - "phone": "266", - "population": 2108132, - "postal_code_format": "###", - "postal_code_regex": "^(\\d{3})$", - "tld": ".ls" - }, - "model": "countries_plus.country", - "pk": "LS" - }, - { - "fields": { - "area": "10400.00", - "capital": "Beirut", - "continent": "AS", - "currency_code": "LBP", - "currency_name": "Pound", - "currency_symbol": "\u0644.\u0644", - "equivalent_fips_code": null, - "fips": "LE", - "geonameid": 272103, - "iso3": "LBN", - "iso_numeric": 422, - "languages": "ar-LB,fr-LB,en,hy", - "name": "Lebanon", - "neighbours": "SY,IL", - "phone": "961", - "population": 6848925, - "postal_code_format": "#### ####|####", - "postal_code_regex": "^(\\d{4}(\\d{4})?)$", - "tld": ".lb" - }, - "model": "countries_plus.country", - "pk": "LB" - }, - { - "fields": { - "area": "236800.00", - "capital": "Vientiane", - "continent": "AS", - "currency_code": "LAK", - "currency_name": "Kip", - "currency_symbol": "\u20ad", - "equivalent_fips_code": null, - "fips": "LA", - "geonameid": 1655842, - "iso3": "LAO", - "iso_numeric": 418, - "languages": "lo,fr,en", - "name": "Laos", - "neighbours": "CN,MM,KH,TH,VN", - "phone": "856", - "population": 7061507, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".la" - }, - "model": "countries_plus.country", - "pk": "LA" - }, - { - "fields": { - "area": "17820.00", - "capital": "Kuwait City", - "continent": "AS", - "currency_code": "KWD", - "currency_name": "Dinar", - "currency_symbol": "\u062f.\u0643", - "equivalent_fips_code": null, - "fips": "KU", - "geonameid": 285570, - "iso3": "KWT", - "iso_numeric": 414, - "languages": "ar-KW,en", - "name": "Kuwait", - "neighbours": "SA,IQ", - "phone": "965", - "population": 4137309, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".kw" - }, - "model": "countries_plus.country", - "pk": "KW" - }, - { - "fields": { - "area": "811.00", - "capital": "Tarawa", - "continent": "OC", - "currency_code": "AUD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "KR", - "geonameid": 4030945, - "iso3": "KIR", - "iso_numeric": 296, - "languages": "en-KI,gil", - "name": "Kiribati", - "neighbours": null, - "phone": "686", - "population": 115847, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".ki" - }, - "model": "countries_plus.country", - "pk": "KI" - }, - { - "fields": { - "area": "582650.00", - "capital": "Nairobi", - "continent": "AF", - "currency_code": "KES", - "currency_name": "Shilling", - "currency_symbol": "Sh", - "equivalent_fips_code": null, - "fips": "KE", - "geonameid": 192950, - "iso3": "KEN", - "iso_numeric": 404, - "languages": "en-KE,sw-KE", - "name": "Kenya", - "neighbours": "ET,TZ,SS,SO,UG", - "phone": "254", - "population": 51393010, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".ke" - }, - "model": "countries_plus.country", - "pk": "KE" - }, - { - "fields": { - "area": "92300.00", - "capital": "Amman", - "continent": "AS", - "currency_code": "JOD", - "currency_name": "Dinar", - "currency_symbol": "\u062f.\u0627", - "equivalent_fips_code": null, - "fips": "JO", - "geonameid": 248816, - "iso3": "JOR", - "iso_numeric": 400, - "languages": "ar-JO,en", - "name": "Jordan", - "neighbours": "SY,SA,IQ,IL,PS", - "phone": "962", - "population": 9956011, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".jo" - }, - "model": "countries_plus.country", - "pk": "JO" - }, - { - "fields": { - "area": "116.00", - "capital": "Saint Helier", - "continent": "EU", - "currency_code": "GBP", - "currency_name": "Pound", - "currency_symbol": "\u00a3", - "equivalent_fips_code": null, - "fips": "JE", - "geonameid": 3042142, - "iso3": "JEY", - "iso_numeric": 832, - "languages": "en,fr,nrf", - "name": "Jersey", - "neighbours": null, - "phone": "+44-1534", - "population": 90812, - "postal_code_format": "@# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA", - "postal_code_regex": "^((?:(?:[A-PR-UWYZ][A-HK-Y]\\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\\d[A-HJKPS-UW0-9])\\s\\d[ABD-HJLNP-UW-Z]{2})|GIR\\s?0AA)$", - "tld": ".je" - }, - "model": "countries_plus.country", - "pk": "JE" - }, - { - "fields": { - "area": "10991.00", - "capital": "Kingston", - "continent": "NA", - "currency_code": "JMD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "JM", - "geonameid": 3489940, - "iso3": "JAM", - "iso_numeric": 388, - "languages": "en-JM", - "name": "Jamaica", - "neighbours": null, - "phone": "+1-876", - "population": 2934855, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".jm" - }, - "model": "countries_plus.country", - "pk": "JM" - }, - { - "fields": { - "area": "20770.00", - "capital": "Jerusalem", - "continent": "AS", - "currency_code": "ILS", - "currency_name": "Shekel", - "currency_symbol": "\u20aa", - "equivalent_fips_code": null, - "fips": "IS", - "geonameid": 294640, - "iso3": "ISR", - "iso_numeric": 376, - "languages": "he,ar-IL,en-IL,", - "name": "Israel", - "neighbours": "SY,JO,LB,EG,PS", - "phone": "972", - "population": 8883800, - "postal_code_format": "#######", - "postal_code_regex": "^(\\d{7}|\\d{5})$", - "tld": ".il" - }, - "model": "countries_plus.country", - "pk": "IL" - }, - { - "fields": { - "area": "572.00", - "capital": "Douglas", - "continent": "EU", - "currency_code": "GBP", - "currency_name": "Pound", - "currency_symbol": "\u00a3", - "equivalent_fips_code": null, - "fips": "IM", - "geonameid": 3042225, - "iso3": "IMN", - "iso_numeric": 833, - "languages": "en,gv", - "name": "Isle of Man", - "neighbours": null, - "phone": "+44-1624", - "population": 84077, - "postal_code_format": "@# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA", - "postal_code_regex": "^((?:(?:[A-PR-UWYZ][A-HK-Y]\\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\\d[A-HJKPS-UW0-9])\\s\\d[ABD-HJLNP-UW-Z]{2})|GIR\\s?0AA)$", - "tld": ".im" - }, - "model": "countries_plus.country", - "pk": "IM" - }, - { - "fields": { - "area": "70280.00", - "capital": "Dublin", - "continent": "EU", - "currency_code": "EUR", - "currency_name": "Euro", - "currency_symbol": "\u20ac", - "equivalent_fips_code": null, - "fips": "EI", - "geonameid": 2963597, - "iso3": "IRL", - "iso_numeric": 372, - "languages": "en-IE,ga-IE", - "name": "Ireland", - "neighbours": "GB", - "phone": "353", - "population": 4853506, - "postal_code_format": "@@@ @@@@", - "postal_code_regex": "^(D6W|[AC-FHKNPRTV-Y][0-9]{2})\\s?([AC-FHKNPRTV-Y0-9]{4})", - "tld": ".ie" - }, - "model": "countries_plus.country", - "pk": "IE" - }, - { - "fields": { - "area": "1919440.00", - "capital": "Jakarta", - "continent": "AS", - "currency_code": "IDR", - "currency_name": "Rupiah", - "currency_symbol": "Rp", - "equivalent_fips_code": null, - "fips": "ID", - "geonameid": 1643084, - "iso3": "IDN", - "iso_numeric": 360, - "languages": "id,en,nl,jv", - "name": "Indonesia", - "neighbours": "PG,TL,MY", - "phone": "62", - "population": 267663435, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".id" - }, - "model": "countries_plus.country", - "pk": "ID" - }, - { - "fields": { - "area": "3287590.00", - "capital": "New Delhi", - "continent": "AS", - "currency_code": "INR", - "currency_name": "Rupee", - "currency_symbol": "\u20a8", - "equivalent_fips_code": null, - "fips": "IN", - "geonameid": 1269750, - "iso3": "IND", - "iso_numeric": 356, - "languages": "en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc", - "name": "India", - "neighbours": "CN,NP,MM,BT,PK,BD", - "phone": "91", - "population": 1352617328, - "postal_code_format": "######", - "postal_code_regex": "^(\\d{6})$", - "tld": ".in" - }, - "model": "countries_plus.country", - "pk": "IN" - }, - { - "fields": { - "area": "103000.00", - "capital": "Reykjavik", - "continent": "EU", - "currency_code": "ISK", - "currency_name": "Krona", - "currency_symbol": "kr", - "equivalent_fips_code": null, - "fips": "IC", - "geonameid": 2629691, - "iso3": "ISL", - "iso_numeric": 352, - "languages": "is,en,de,da,sv,no", - "name": "Iceland", - "neighbours": null, - "phone": "354", - "population": 353574, - "postal_code_format": "###", - "postal_code_regex": "^(\\d{3})$", - "tld": ".is" - }, - "model": "countries_plus.country", - "pk": "IS" - }, - { - "fields": { - "area": "1092.00", - "capital": "Hong Kong", - "continent": "AS", - "currency_code": "HKD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "HK", - "geonameid": 1819730, - "iso3": "HKG", - "iso_numeric": 344, - "languages": "zh-HK,yue,zh,en", - "name": "Hong Kong", - "neighbours": null, - "phone": "852", - "population": 7451000, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".hk" - }, - "model": "countries_plus.country", - "pk": "HK" - }, - { - "fields": { - "area": "214970.00", - "capital": "Georgetown", - "continent": "SA", - "currency_code": "GYD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "GY", - "geonameid": 3378535, - "iso3": "GUY", - "iso_numeric": 328, - "languages": "en-GY", - "name": "Guyana", - "neighbours": "SR,BR,VE", - "phone": "592", - "population": 779004, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".gy" - }, - "model": "countries_plus.country", - "pk": "GY" - }, - { - "fields": { - "area": "78.00", - "capital": "St Peter Port", - "continent": "EU", - "currency_code": "GBP", - "currency_name": "Pound", - "currency_symbol": "\u00a3", - "equivalent_fips_code": null, - "fips": "GK", - "geonameid": 3042362, - "iso3": "GGY", - "iso_numeric": 831, - "languages": "en,nrf", - "name": "Guernsey", - "neighbours": null, - "phone": "+44-1481", - "population": 65228, - "postal_code_format": "@# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA", - "postal_code_regex": "^((?:(?:[A-PR-UWYZ][A-HK-Y]\\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\\d[A-HJKPS-UW0-9])\\s\\d[ABD-HJLNP-UW-Z]{2})|GIR\\s?0AA)$", - "tld": ".gg" - }, - "model": "countries_plus.country", - "pk": "GG" - }, - { - "fields": { - "area": "549.00", - "capital": "Hagatna", - "continent": "OC", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "GQ", - "geonameid": 4043988, - "iso3": "GUM", - "iso_numeric": 316, - "languages": "en-GU,ch-GU", - "name": "Guam", - "neighbours": null, - "phone": "+1-671", - "population": 165768, - "postal_code_format": "969##", - "postal_code_regex": "^(969\\d{2})$", - "tld": ".gu" - }, - "model": "countries_plus.country", - "pk": "GU" - }, - { - "fields": { - "area": "344.00", - "capital": "St. George's", - "continent": "NA", - "currency_code": "XCD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "GJ", - "geonameid": 3580239, - "iso3": "GRD", - "iso_numeric": 308, - "languages": "en-GD", - "name": "Grenada", - "neighbours": null, - "phone": "+1-473", - "population": 111454, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".gd" - }, - "model": "countries_plus.country", - "pk": "GD" - }, - { - "fields": { - "area": "2166086.00", - "capital": "Nuuk", - "continent": "NA", - "currency_code": "DKK", - "currency_name": "Krone", - "currency_symbol": "kr", - "equivalent_fips_code": null, - "fips": "GL", - "geonameid": 3425505, - "iso3": "GRL", - "iso_numeric": 304, - "languages": "kl,da-GL,en", - "name": "Greenland", - "neighbours": null, - "phone": "299", - "population": 56025, - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "tld": ".gl" - }, - "model": "countries_plus.country", - "pk": "GL" - }, - { - "fields": { - "area": "131940.00", - "capital": "Athens", - "continent": "EU", - "currency_code": "EUR", - "currency_name": "Euro", - "currency_symbol": "\u20ac", - "equivalent_fips_code": null, - "fips": "GR", - "geonameid": 390903, - "iso3": "GRC", - "iso_numeric": 300, - "languages": "el-GR,en,fr", - "name": "Greece", - "neighbours": "AL,MK,TR,BG", - "phone": "30", - "population": 10727668, - "postal_code_format": "### ##", - "postal_code_regex": "^(\\d{5})$", - "tld": ".gr" - }, - "model": "countries_plus.country", - "pk": "GR" - }, - { - "fields": { - "area": "6.50", - "capital": "Gibraltar", - "continent": "EU", - "currency_code": "GIP", - "currency_name": "Pound", - "currency_symbol": "\u00a3", - "equivalent_fips_code": null, - "fips": "GI", - "geonameid": 2411586, - "iso3": "GIB", - "iso_numeric": 292, - "languages": "en-GI,es,it,pt", - "name": "Gibraltar", - "neighbours": "ES", - "phone": "350", - "population": 33718, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".gi" - }, - "model": "countries_plus.country", - "pk": "GI" - }, - { - "fields": { - "area": "239460.00", - "capital": "Accra", - "continent": "AF", - "currency_code": "GHS", - "currency_name": "Cedi", - "currency_symbol": "\u20b5", - "equivalent_fips_code": null, - "fips": "GH", - "geonameid": 2300660, - "iso3": "GHA", - "iso_numeric": 288, - "languages": "en-GH,ak,ee,tw", - "name": "Ghana", - "neighbours": "CI,TG,BF", - "phone": "233", - "population": 29767108, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".gh" - }, - "model": "countries_plus.country", - "pk": "GH" - }, - { - "fields": { - "area": "11300.00", - "capital": "Banjul", - "continent": "AF", - "currency_code": "GMD", - "currency_name": "Dalasi", - "currency_symbol": "D", - "equivalent_fips_code": null, - "fips": "GA", - "geonameid": 2413451, - "iso3": "GMB", - "iso_numeric": 270, - "languages": "en-GM,mnk,wof,wo,ff", - "name": "Gambia", - "neighbours": "SN", - "phone": "220", - "population": 2280102, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".gm" - }, - "model": "countries_plus.country", - "pk": "GM" - }, - { - "fields": { - "area": "18270.00", - "capital": "Suva", - "continent": "OC", - "currency_code": "FJD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "FJ", - "geonameid": 2205218, - "iso3": "FJI", - "iso_numeric": 242, - "languages": "en-FJ,fj", - "name": "Fiji", - "neighbours": null, - "phone": "679", - "population": 883483, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".fj" - }, - "model": "countries_plus.country", - "pk": "FJ" - }, - { - "fields": { - "area": "12173.00", - "capital": "Stanley", - "continent": "SA", - "currency_code": "FKP", - "currency_name": "Pound", - "currency_symbol": "\u00a3", - "equivalent_fips_code": null, - "fips": "FK", - "geonameid": 3474414, - "iso3": "FLK", - "iso_numeric": 238, - "languages": "en-FK", - "name": "Falkland Islands", - "neighbours": null, - "phone": "500", - "population": 2638, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".fk" - }, - "model": "countries_plus.country", - "pk": "FK" - }, - { - "fields": { - "area": "1127127.00", - "capital": "Addis Ababa", - "continent": "AF", - "currency_code": "ETB", - "currency_name": "Birr", - "currency_symbol": "Br", - "equivalent_fips_code": null, - "fips": "ET", - "geonameid": 337996, - "iso3": "ETH", - "iso_numeric": 231, - "languages": "am,en-ET,om-ET,ti-ET,so-ET,sid", - "name": "Ethiopia", - "neighbours": "ER,KE,SD,SS,SO,DJ", - "phone": "251", - "population": 109224559, - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "tld": ".et" - }, - "model": "countries_plus.country", - "pk": "ET" - }, - { - "fields": { - "area": "17363.00", - "capital": "Mbabane", - "continent": "AF", - "currency_code": "SZL", - "currency_name": "Lilangeni", - "currency_symbol": "L", - "equivalent_fips_code": null, - "fips": "WZ", - "geonameid": 934841, - "iso3": "SWZ", - "iso_numeric": 748, - "languages": "en-SZ,ss-SZ", - "name": "Eswatini", - "neighbours": "ZA,MZ", - "phone": "268", - "population": 1136191, - "postal_code_format": "@###", - "postal_code_regex": "^([A-Z]\\d{3})$", - "tld": ".sz" - }, - "model": "countries_plus.country", - "pk": "SZ" - }, - { - "fields": { - "area": "1001450.00", - "capital": "Cairo", - "continent": "AF", - "currency_code": "EGP", - "currency_name": "Pound", - "currency_symbol": "\u00a3,\u062c.\u0645", - "equivalent_fips_code": null, - "fips": "EG", - "geonameid": 357994, - "iso3": "EGY", - "iso_numeric": 818, - "languages": "ar-EG,en,fr", - "name": "Egypt", - "neighbours": "LY,SD,IL,PS", - "phone": "20", - "population": 98423595, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".eg" - }, - "model": "countries_plus.country", - "pk": "EG" - }, - { - "fields": { - "area": "754.00", - "capital": "Roseau", - "continent": "NA", - "currency_code": "XCD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "DO", - "geonameid": 3575830, - "iso3": "DMA", - "iso_numeric": 212, - "languages": "en-DM", - "name": "Dominica", - "neighbours": null, - "phone": "+1-767", - "population": 71625, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".dm" - }, - "model": "countries_plus.country", - "pk": "DM" - }, - { - "fields": { - "area": "43094.00", - "capital": "Copenhagen", - "continent": "EU", - "currency_code": "DKK", - "currency_name": "Krone", - "currency_symbol": "kr", - "equivalent_fips_code": null, - "fips": "DA", - "geonameid": 2623032, - "iso3": "DNK", - "iso_numeric": 208, - "languages": "da-DK,en,fo,de-DK", - "name": "Denmark", - "neighbours": "DE", - "phone": "45", - "population": 5797446, - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "tld": ".dk" - }, - "model": "countries_plus.country", - "pk": "DK" - }, - { - "fields": { - "area": "9250.00", - "capital": "Nicosia", - "continent": "EU", - "currency_code": "EUR", - "currency_name": "Euro", - "currency_symbol": "\u20ac", - "equivalent_fips_code": null, - "fips": "CY", - "geonameid": 146669, - "iso3": "CYP", - "iso_numeric": 196, - "languages": "el-CY,tr-CY,en", - "name": "Cyprus", - "neighbours": null, - "phone": "357", - "population": 1189265, - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "tld": ".cy" - }, - "model": "countries_plus.country", - "pk": "CY" - }, - { - "fields": { - "area": "51100.00", - "capital": "San Jose", - "continent": "NA", - "currency_code": "CRC", - "currency_name": "Colon", - "currency_symbol": "\u20a1", - "equivalent_fips_code": null, - "fips": "CS", - "geonameid": 3624060, - "iso3": "CRI", - "iso_numeric": 188, - "languages": "es-CR,en", - "name": "Costa Rica", - "neighbours": "PA,NI", - "phone": "506", - "population": 4999441, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".cr" - }, - "model": "countries_plus.country", - "pk": "CR" - }, - { - "fields": { - "area": "240.00", - "capital": "Avarua", - "continent": "OC", - "currency_code": "NZD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "CW", - "geonameid": 1899402, - "iso3": "COK", - "iso_numeric": 184, - "languages": "en-CK,mi", - "name": "Cook Islands", - "neighbours": null, - "phone": "682", - "population": 21388, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".ck" - }, - "model": "countries_plus.country", - "pk": "CK" - }, - { - "fields": { - "area": "14.00", - "capital": "West Island", - "continent": "AS", - "currency_code": "AUD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "CK", - "geonameid": 1547376, - "iso3": "CCK", - "iso_numeric": 166, - "languages": "ms-CC,en", - "name": "Cocos Islands", - "neighbours": null, - "phone": "61", - "population": 628, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".cc" - }, - "model": "countries_plus.country", - "pk": "CC" - }, - { - "fields": { - "area": "135.00", - "capital": "Flying Fish Cove", - "continent": "OC", - "currency_code": "AUD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "KT", - "geonameid": 2078138, - "iso3": "CXR", - "iso_numeric": 162, - "languages": "en,zh,ms-CC", - "name": "Christmas Island", - "neighbours": null, - "phone": "61", - "population": 1500, - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "tld": ".cx" - }, - "model": "countries_plus.country", - "pk": "CX" - }, - { - "fields": { - "area": "262.00", - "capital": "George Town", - "continent": "NA", - "currency_code": "KYD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "CJ", - "geonameid": 3580718, - "iso3": "CYM", - "iso_numeric": 136, - "languages": "en-KY", - "name": "Cayman Islands", - "neighbours": null, - "phone": "+1-345", - "population": 64174, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".ky" - }, - "model": "countries_plus.country", - "pk": "KY" - }, - { - "fields": { - "area": "9984670.00", - "capital": "Ottawa", - "continent": "NA", - "currency_code": "CAD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "CA", - "geonameid": 6251999, - "iso3": "CAN", - "iso_numeric": 124, - "languages": "en-CA,fr-CA,iu", - "name": "Canada", - "neighbours": "US", - "phone": "1", - "population": 37058856, - "postal_code_format": "@#@ #@#", - "postal_code_regex": "^([ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJKLMNPRSTVWXYZ]) ?(\\d[ABCEGHJKLMNPRSTVWXYZ]\\d)$ ", - "tld": ".ca" - }, - "model": "countries_plus.country", - "pk": "CA" - }, - { - "fields": { - "area": "475440.00", - "capital": "Yaounde", - "continent": "AF", - "currency_code": "XAF", - "currency_name": "Franc", - "currency_symbol": "Fr", - "equivalent_fips_code": null, - "fips": "CM", - "geonameid": 2233387, - "iso3": "CMR", - "iso_numeric": 120, - "languages": "en-CM,fr-CM", - "name": "Cameroon", - "neighbours": "TD,CF,GA,GQ,CG,NG", - "phone": "237", - "population": 25216237, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".cm" - }, - "model": "countries_plus.country", - "pk": "CM" - }, - { - "fields": { - "area": "181040.00", - "capital": "Phnom Penh", - "continent": "AS", - "currency_code": "KHR", - "currency_name": "Riels", - "currency_symbol": "\u17db", - "equivalent_fips_code": null, - "fips": "CB", - "geonameid": 1831722, - "iso3": "KHM", - "iso_numeric": 116, - "languages": "km,fr,en", - "name": "Cambodia", - "neighbours": "LA,TH,VN", - "phone": "855", - "population": 16249798, - "postal_code_format": "#####", - "postal_code_regex": "^(\\d{5})$", - "tld": ".kh" - }, - "model": "countries_plus.country", - "pk": "KH" - }, - { - "fields": { - "area": "5770.00", - "capital": "Bandar Seri Begawan", - "continent": "AS", - "currency_code": "BND", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "BX", - "geonameid": 1820814, - "iso3": "BRN", - "iso_numeric": 96, - "languages": "ms-BN,en-BN", - "name": "Brunei", - "neighbours": "MY", - "phone": "673", - "population": 428962, - "postal_code_format": "@@####", - "postal_code_regex": "^([A-Z]{2}\\d{4})$", - "tld": ".bn" - }, - "model": "countries_plus.country", - "pk": "BN" - }, - { - "fields": { - "area": "153.00", - "capital": "Road Town", - "continent": "NA", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "VI", - "geonameid": 3577718, - "iso3": "VGB", - "iso_numeric": 92, - "languages": "en-VG", - "name": "British Virgin Islands", - "neighbours": null, - "phone": "+1-284", - "population": 29802, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".vg" - }, - "model": "countries_plus.country", - "pk": "VG" - }, - { - "fields": { - "area": "60.00", - "capital": "Diego Garcia", - "continent": "AS", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "IO", - "geonameid": 1282588, - "iso3": "IOT", - "iso_numeric": 86, - "languages": "en-IO", - "name": "British Indian Ocean Territory", - "neighbours": null, - "phone": "246", - "population": 4000, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".io" - }, - "model": "countries_plus.country", - "pk": "IO" - }, - { - "fields": { - "area": "8511965.00", - "capital": "Brasilia", - "continent": "SA", - "currency_code": "BRL", - "currency_name": "Real", - "currency_symbol": "R$", - "equivalent_fips_code": null, - "fips": "BR", - "geonameid": 3469034, - "iso3": "BRA", - "iso_numeric": 76, - "languages": "pt-BR,es,en,fr", - "name": "Brazil", - "neighbours": "SR,PE,BO,UY,GY,PY,GF,VE,CO,AR", - "phone": "55", - "population": 209469333, - "postal_code_format": "#####-###", - "postal_code_regex": "^\\d{5}-\\d{3}$", - "tld": ".br" - }, - "model": "countries_plus.country", - "pk": "BR" - }, - { - "fields": { - "area": "600370.00", - "capital": "Gaborone", - "continent": "AF", - "currency_code": "BWP", - "currency_name": "Pula", - "currency_symbol": "P", - "equivalent_fips_code": null, - "fips": "BC", - "geonameid": 933860, - "iso3": "BWA", - "iso_numeric": 72, - "languages": "en-BW,tn-BW", - "name": "Botswana", - "neighbours": "ZW,ZA,NA", - "phone": "267", - "population": 2254126, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".bw" - }, - "model": "countries_plus.country", - "pk": "BW" - }, - { - "fields": { - "area": "328.00", - "capital": null, - "continent": "NA", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": null, - "geonameid": 7626844, - "iso3": "BES", - "iso_numeric": 535, - "languages": "nl,pap,en", - "name": "Bonaire, Saint Eustatius and Saba ", - "neighbours": null, - "phone": "599", - "population": 18012, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".bq" - }, - "model": "countries_plus.country", - "pk": "BQ" - }, - { - "fields": { - "area": "53.00", - "capital": "Hamilton", - "continent": "NA", - "currency_code": "BMD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "BD", - "geonameid": 3573345, - "iso3": "BMU", - "iso_numeric": 60, - "languages": "en-BM,pt", - "name": "Bermuda", - "neighbours": null, - "phone": "+1-441", - "population": 63968, - "postal_code_format": "@@ ##", - "postal_code_regex": "^([A-Z]{2}\\d{2})$", - "tld": ".bm" - }, - "model": "countries_plus.country", - "pk": "BM" - }, - { - "fields": { - "area": "22966.00", - "capital": "Belmopan", - "continent": "NA", - "currency_code": "BZD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "BH", - "geonameid": 3582678, - "iso3": "BLZ", - "iso_numeric": 84, - "languages": "en-BZ,es", - "name": "Belize", - "neighbours": "GT,MX", - "phone": "501", - "population": 383071, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".bz" - }, - "model": "countries_plus.country", - "pk": "BZ" - }, - { - "fields": { - "area": "431.00", - "capital": "Bridgetown", - "continent": "NA", - "currency_code": "BBD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "BB", - "geonameid": 3374084, - "iso3": "BRB", - "iso_numeric": 52, - "languages": "en-BB", - "name": "Barbados", - "neighbours": null, - "phone": "+1-246", - "population": 286641, - "postal_code_format": "BB#####", - "postal_code_regex": "^(?:BB)*(\\d{5})$", - "tld": ".bb" - }, - "model": "countries_plus.country", - "pk": "BB" - }, - { - "fields": { - "area": "144000.00", - "capital": "Dhaka", - "continent": "AS", - "currency_code": "BDT", - "currency_name": "Taka", - "currency_symbol": "\u09f3", - "equivalent_fips_code": null, - "fips": "BG", - "geonameid": 1210997, - "iso3": "BGD", - "iso_numeric": 50, - "languages": "bn-BD,en", - "name": "Bangladesh", - "neighbours": "MM,IN", - "phone": "880", - "population": 161356039, - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "tld": ".bd" - }, - "model": "countries_plus.country", - "pk": "BD" - }, - { - "fields": { - "area": "665.00", - "capital": "Manama", - "continent": "AS", - "currency_code": "BHD", - "currency_name": "Dinar", - "currency_symbol": "\u0628.\u062f", - "equivalent_fips_code": null, - "fips": "BA", - "geonameid": 290291, - "iso3": "BHR", - "iso_numeric": 48, - "languages": "ar-BH,en,fa,ur", - "name": "Bahrain", - "neighbours": null, - "phone": "973", - "population": 1569439, - "postal_code_format": "####|###", - "postal_code_regex": "^(\\d{3}\\d?)$", - "tld": ".bh" - }, - "model": "countries_plus.country", - "pk": "BH" - }, - { - "fields": { - "area": "13940.00", - "capital": "Nassau", - "continent": "NA", - "currency_code": "BSD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "BF", - "geonameid": 3572887, - "iso3": "BHS", - "iso_numeric": 44, - "languages": "en-BS", - "name": "Bahamas", - "neighbours": null, - "phone": "+1-242", - "population": 385640, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".bs" - }, - "model": "countries_plus.country", - "pk": "BS" - }, - { - "fields": { - "area": "7686850.00", - "capital": "Canberra", - "continent": "OC", - "currency_code": "AUD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "AS", - "geonameid": 2077456, - "iso3": "AUS", - "iso_numeric": 36, - "languages": "en-AU", - "name": "Australia", - "neighbours": null, - "phone": "61", - "population": 24992369, - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "tld": ".au" - }, - "model": "countries_plus.country", - "pk": "AU" - }, - { + "model": "peachjam.documentnature", + "pk": 1, "fields": { - "area": "193.00", - "capital": "Oranjestad", - "continent": "NA", - "currency_code": "AWG", - "currency_name": "Guilder", - "currency_symbol": "\u0192", - "equivalent_fips_code": null, - "fips": "AA", - "geonameid": 3577279, - "iso3": "ABW", - "iso_numeric": 533, - "languages": "nl-AW,pap,es,en", - "name": "Aruba", - "neighbours": null, - "phone": "297", - "population": 105845, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".aw" - }, - "model": "countries_plus.country", - "pk": "AW" + "name": "Document", + "code": "document" + } }, { + "model": "peachjam.documentnature", + "pk": 3, "fields": { - "area": "2766890.00", - "capital": "Buenos Aires", - "continent": "SA", - "currency_code": "ARS", - "currency_name": "Peso", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "AR", - "geonameid": 3865483, - "iso3": "ARG", - "iso_numeric": 32, - "languages": "es-AR,en,it,de,fr,gn", - "name": "Argentina", - "neighbours": "CL,BO,UY,PY,BR", - "phone": "54", - "population": 44494502, - "postal_code_format": "@####@@@", - "postal_code_regex": "^[A-Z]?\\d{4}[A-Z]{0,3}$", - "tld": ".ar" - }, - "model": "countries_plus.country", - "pk": "AR" + "name": "Charter", + "code": "charter" + } }, { "fields": { - "area": "443.00", - "capital": "St. John's", - "continent": "NA", - "currency_code": "XCD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "AC", - "geonameid": 3576396, - "iso3": "ATG", - "iso_numeric": 28, - "languages": "en-AG", - "name": "Antigua and Barbuda", - "neighbours": null, - "phone": "+1-268", - "population": 96286, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".ag" + "description": "", + "name": "Activity report", + "code": "activity-report" }, - "model": "countries_plus.country", - "pk": "AG" + "model": "peachjam.documentnature", + "pk": 8 }, { + "model": "peachjam.courtclass", + "pk": 2, "fields": { - "area": "102.00", - "capital": "The Valley", - "continent": "NA", - "currency_code": "XCD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "AV", - "geonameid": 3573511, - "iso3": "AIA", - "iso_numeric": 660, - "languages": "en-AI", - "name": "Anguilla", - "neighbours": null, - "phone": "+1-264", - "population": 13254, - "postal_code_format": null, - "postal_code_regex": null, - "tld": ".ai" - }, - "model": "countries_plus.country", - "pk": "AI" + "name": "High Court", + "description": "" + } }, { "fields": { - "area": "199.00", - "capital": "Pago Pago", - "continent": "OC", - "currency_code": "USD", - "currency_name": "Dollar", - "currency_symbol": "$", - "equivalent_fips_code": null, - "fips": "AQ", - "geonameid": 5880801, - "iso3": "ASM", - "iso_numeric": 16, - "languages": "en-AS,sm,to", - "name": "American Samoa", - "neighbours": null, - "phone": "+1-684", - "population": 55465, - "postal_code_format": "#####-####", - "postal_code_regex": "96799", - "tld": ".as" + "code": "ECOWASCJ", + "court_class": 2, + "name": "ECOWAS Community Court of Justice" }, - "model": "countries_plus.country", - "pk": "AS" + "model": "peachjam.court", + "pk": 1 }, { "fields": { @@ -3295,23 +195,6 @@ "model": "peachjam.coredocument", "pk": 5389 }, - { - "fields": { - "frbr_uri": "/akn/aa-au/doc/activity-report/2017/nn", - "title": "Activity Report of the Pan-African Parliament, July 2016 to June 2017" - }, - "model": "peachjam.work", - "pk": 3573 - }, - { - "fields": { - "description": "", - "name": "Activity report", - "code": "activity-report" - }, - "model": "peachjam.documentnature", - "pk": 8 - }, { "fields": { "citation": null, @@ -3468,177 +351,11 @@ }, { "fields": { - "code": "au", - "jurisdiction": "AA", - "name": "African Union (AU)" - }, - "model": "peachjam.locality", - "pk": 1 - }, - { - "fields": { - "area": null, - "capital": null, - "continent": "AF", - "currency_code": null, - "currency_name": null, - "currency_symbol": null, - "equivalent_fips_code": null, - "fips": null, - "geonameid": null, - "iso3": "AAA", - "iso_numeric": 10000, - "languages": null, - "name": "African Regional Bodies", - "neighbours": null, - "phone": null, - "population": null, - "postal_code_format": null, - "postal_code_regex": null, - "tld": null - }, - "model": "countries_plus.country", - "pk": "AA" - }, - { - "fields": { - "countries_spoken": [ - "AS", - "AI", - "AG", - "AR", - "AW", - "AU", - "BS", - "BH", - "BD", - "BB", - "BZ", - "BM", - "BQ", - "BW", - "BR", - "IO", - "VG", - "BN", - "KH", - "CM", - "CA", - "KY", - "CX", - "CC", - "CK", - "CR", - "CY", - "DK", - "DM", - "EG", - "SZ", - "ET", - "FK", - "FJ", - "GM", - "GH", - "GI", - "GR", - "GL", - "GD", - "GU", - "GG", - "GY", - "HK", - "IS", - "IN", - "ID", - "IE", - "IM", - "IL", - "JM", - "JE", - "JO", - "KE", - "KI", - "KW", - "LA", - "LB", - "LS", - "LR", - "LY", - "MY", - "MV", - "MT", - "MH", - "MU", - "FM", - "MC", - "MS", - "NA", - "NR", - "NP", - "AN", - "NZ", - "NI", - "NG", - "NU", - "NF", - "MP", - "OM", - "PK", - "PW", - "PA", - "PG", - "PH", - "PN", - "PR", - "RW", - "SH", - "KN", - "LC", - "VC", - "WS", - "SC", - "SL", - "SG", - "SX", - "SB", - "SO", - "ZA", - "GS", - "KR", - "SS", - "LK", - "SD", - "SR", - "SY", - "TZ", - "TH", - "TL", - "TK", - "TO", - "TT", - "TC", - "TV", - "UG", - "AE", - "GB", - "US", - "UM", - "VI", - "VU", - "VN", - "ZM", - "ZW" - ], - "family": "Indo-European", - "iso_639_2B": "eng", - "iso_639_2T": "eng", - "iso_639_3": "eng", - "name_en": "English", - "name_native": "English", - "notes": "" + "frbr_uri": "/akn/aa-au/doc/activity-report/2017/nn", + "title": "Activity Report of the Pan-African Parliament, July 2016 to June 2017" }, - "model": "languages_plus.language", - "pk": "en" + "model": "peachjam.work", + "pk": 3573 }, { "fields": { @@ -5886,15 +2603,6 @@ "model": "peachjam.work", "pk": 3716 }, - { - "fields": { - "description": "", - "name": "Charter", - "code": "charter" - }, - "model": "peachjam.documentnature", - "pk": 3 - }, { "fields": { "citation": null, @@ -8143,6 +4851,7 @@ }, { "fields": { + "nature": 2, "citation": "Obi vs Federal Republic of Nigeria [2016] ECOWASCJ 52 (09 November 2016)", "content_html": "", "content_html_is_akn": false, @@ -8182,6 +4891,7 @@ }, { "fields": { + "nature": 2, "citation": "Ababacar and Ors vs Senegal [2018] ECOWASCJ 17 (29 June 2018)", "content_html": "", "content_html_is_akn": false, @@ -8253,6 +4963,7 @@ }, { "fields": { + "nature": 4, "citation": null, "content_html": "\n\n\n\n \n\n\n
\n \n\n \n \n

African Union

\n \n \n\n \n \n \n\n \n

African Union Non-Aggression and Common Defence Pact

\n \n\n \n \n \n \n \n\n \n \n \n\n \n \n\n\n\n \n
\n\n\n\n\n\n\n\n
We, the Heads of State and Government of the Member States of the African Union;CONSCIOUS of the gravity of the impact of conflicts both within and among African States, on peace, security and stability in the Continent, and their devastating impact on socio-economic development;COMMITTED to our common vision of a united and strong Africa, based on respect for the principles of peaceful co-existence, non-aggression, non-interference in the internal affairs of Member States, mutual respect for individual sovereignty and territorial integrity of each State;DETERMINED to put an end to conflicts of any kind within and among States in Africa, in order to create propitious conditions for socio-economic development and integration of the Continent, as well as the fulfilment of the aspirations of our peoples;REAFFIRMING that appropriate development institutions and promotion of a strong democratic culture through organization of honest and regular elections, respect for human rights and the rule of law, combating corruption and impunity and formulation of sustainable development policies are vital to collective security, peace and stability;CONSIDERING the Constitutive Act of the African Union, the Treaty Establishing the African Economic Community and the Charter of the United Nations;CONSIDERING ALSO the Protocol Relating to the Establishment of the Peace and Security Council of the African Union adopted in Durban, South Africa, on 10 July 2002, particularly its Article 7(h) on the implementation of the Common Defence Policy of the Union;REAFFIRMING our commitment to the Solemn Declaration on the Common African Defence and Security Policy adopted in Sirte, Great Libyan Arab Jamahiriya, by the Second Extraordinary Session of the Assembly of the African Union held from 27 to 28 February 2004, particularly its Chapter III, paragraph (t) which encourages \"the conclusion and ratification of non-aggression pacts between and among African States and the harmonization of such agreements'\";CONVINCED that the African Union is a community of Member States which decided, among other things, to adopt an African Union Non-Aggression and Common Defence Pact in order to deal with threats to peace, security and stability in the continent and to ensure the well being of the African peoples.
HAVE AGREED AS FOLLOWS:

Definitions

\n

Article 1

\nIn this Pact:a)\"Acts of Subversion\" means any act that incites, aggravates or creates dissension within or among Member States with the intention or purpose to destabilize or overthrow the existing regime or political order by, among other means, fomenting racial, religious, linguistic, ethnic and other differences, in a manner inconsistent with the Constitutive Act, the Charter of the United Nations and the Lom\u00e9 Declaration;b)\"African Standby Force\" means the African Standby Force (ASF) provided in the Protocol Relating to the Establishment of the Peace and Security Council of the African Union;c)\"Aggression\" means the use, intentionally and knowingly, of armed force or any other hostile act by a State, a group of States, an organization of States or non-State actor(s) or by any foreign or external entity, against the sovereignty, political independence, territorial integrity and human security of the population of a State Party to this Pact, which are incompatible with the Charter of the United Nations or the Constitutive Act of the African Union. The following shall constitute acts of aggression, regardless of a declaration of war by a State, group of States, organization of States, or non-State actor(s) or by any foreign entity:i)the use of armed forces against the sovereignty, territorial integrity and political independence of a Member State, or any other act inconsistent with the provisions of the Constitutive Act of the African Union and the Charter of the United Nations;ii)the invasion or attack by armed forces against the territory of a Member State, or military occupation, however temporary, resulting from such an invasion or attack, or any annexation by the use of force of the territory of a Member State or part thereof;iii)the bombardment of the territory of a Member State or the use of any weapon against the territory of a Member State;iv)the blockade of the ports, coasts or airspace of a Member State;v)the attack on the land, sea or air forces, or marine and fleets of a Member State;vi)the use of the armed forces of a Member State which are within the territory of another Member State with the agreement of the latter, in contravention of the conditions provided for in this Pact;vii)the action of a Member State in allowing its territory, to be used by another Member State for perpetrating an act of aggression against a third State;viii)the sending by, or on behalf of a Member State or the provision of any support to armed groups, mercenaries, and other organized trans-national criminal groups which may carry out hostile acts against a Member State, of such gravity as to amount to the acts listed above, or its substantial involvement therein;ix)the acts of espionage which could be used for military aggression against a Member State;x)technological assistance of any kind, intelligence and training to another State for use in committing acts of aggression against another Member State; andxi)the encouragement, support, harbouring or provision of any assistance for the commission of terrorist acts and other violent trans-national organized crimes against a Member State.d)\"Assembly\" means the Assembly of Heads of State and Government of the African Union;e)\"Commission\" means the Commission of the African Union;f)\"Common African Defence and Security Policy\" means the Solemn Declaration on a Common African Defence and Security Policy adopted by the Second Extraordinary Session of the Assembly, held in Sirte, Great Socialist Libyan Arab Jamahiriya, in February 2004;g)\"Constitutive Act\" means the Constitutive Act of the African Union;h)\"Court of Justice\" means the Court of Justice of the African Union;i)\"Destabilization\" means any act that disrupts the peace and tranquillity of any Member State or which may lead to mass social and political disorder;j)\"Dispute\" means any conflict between two or among several Member States or within a Member State, which constitutes a threat to peace and security, or a breach of the peace and security within the African Union, as determined by the Assembly of Heads of State and Government or the Peace and Security Council;k)\"Human Security\" means the security of the individual in terms of satisfaction of his/her basic needs. It also includes the creation of social, economic, political, environmental and cultural conditions necessary for the survival and dignity of the individual, the protection of and respect for human rights, good governance and the guarantee for each individual of opportunities and choices for his/her full development;l)\"Lom\u00e9 Declaration\" means the Declaration on the Framework for an OAU Response to Unconstitutional Changes of Government;m)\"Member States\" means Member States of the African Union;m)\"Mercenaries\" means mercenaries as defined in the OAU Convention on the Elimination of Mercenarism in Africa;o)\"Military Staff Committee\" means the Military Staff Committee (MSC) provided in the Protocol Relating to the Establishment of the Peace and Security Council of the African Union;p)\"Non-Aggression\" means peaceful conduct by a Member State, group of Member States, organization of Member States, or non-State actor(s), which does not constitute acts of aggression as defined above;q)\"Pact\" means the present Pact;r)\"Peace and Security Council\" means the Peace and Security Council (PSC) of the African Union as provided in the Protocol Relating to the Establishment of the Peace and Security Council of the African Union;s)\"Protocol\" means the Protocol Relating to the Establishment of the Peace and Security Council of the African Union;t)\"Regional Mechanism\" means African Regional Mechanisms for Conflict Prevention, Management and Resolution;u)\"State Party\" means a Member State that has ratified or acceded to this Pact;v)\"Terrorist Acts\" means those acts or offences defined in the OAU Convention on the Prevention and Combating of Terrorism;w)\"Threat of Aggression\" means any harmful conduct or statement by a State, group of States, organization of States, or non-State actor(s) which though falling short of a declaration of war, might lead to an act of aggression as defined above;x)\"Trans-national Organized Criminal Group\" means a structured group of three or more persons, existing for a period of time and acting in concert with the aim of committing one or more serious crimes which are trans-national in scope, or offences established in accordance with international law, including the United Nations Convention Against Trans-national Organized Crime and its Protocols thereto, the purpose being which to obtain, directly or indirectly financial and other material benefits;y)\"Union\" means the African Union;

Objectives

\n

Article 2

\n
a)The objectives of this Pact are:
i)to promote cooperation among the Member States in the areas of non-aggression and common defence,
ii)to promote peaceful co-existence in Africa,
iii)to prevent conflicts of inter-State or intra-State nature, and
iv)to ensure that disputes are resolved by peaceful means.
b)In pursuance of these objectives, this Pact seeks to define a framework under which the Union may intervene or authorise intervention, in preventing or addressing situations of aggression, in conformity with the Constitutive Act, the Protocol and the Common African Defence and Security Policy;
c)Consequently, any aggression or threat of aggression against any of the Member States shall be deemed to constitute a threat or aggression against all Member States of the Union.

Obligations

\n

Article 3

\n
a)State Parties undertake, pursuant to the provisions of the Constitutive Act, to resolve any differences by peaceful means, in order to avoid endangering peace and security; to refrain from the use of force or threat to use force in their relations with each other and in any manner whatsoever, incompatible with the United Nations Charter. Consequently, no consideration whatsoever, be it political, economic, military, religious or racial shall justify aggression;
b)State Parties undertake to develop and strengthen the friendly and peaceful relations among them in accordance with the fundamental principles of the Union;
c)State Parties undertake to promote such sustainable development policies as are appropriate to enhance the well being of the African people, including the dignity and fundamental rights of every human being in the context of a democratic society as stipulated in the Lom\u00e9 Declaration. In particular, State Parties shall ensure freedom of worship, respect of the cultural identity of peoples and the rights of minorities;
d)State Parties undertake to prohibit and prevent genocide, other forms of mass murder as well as crimes against humanity.

Article 4

\n
a)State Parties undertake to provide mutual assistance towards their common defence and security vis-a-vis any aggression or threats of aggression;
b)State Parties undertake, individually and collectively, to respond by all available means to aggression or threats of aggression against any Member State;
c)State Parties undertake not to recognize any territorial acquisition or special advantage, resulting from the use of aggression;
d)As part of the vision of building a strong and united Africa, State Parties undertake to establish an African Army at the final stage of the political and economic integration of the Continent. In the meantime, State Parties will make best efforts to address the challenges of common defence and security through the effective implementation of the Common African Defence and Security Policy, including the early establishment and operationalisation of the African Standby Force.

Article 5

\n
a)State Parties undertake to intensify collaboration and cooperation in all aspects related to combating international terrorism and any other form of organized trans-national crime or destabilization of any Member State;
b)Each State Party shall prevent its territory and its people from being used for encouraging or committing acts of subversion, hostility, aggression and other harmful practices that might threaten the territorial integrity and sovereignty of a Member State or regional peace and security;
c)Each State Party shall prohibit the use of its territory for the stationing, transit, withdrawal or incursions of irregular armed groups, mercenaries and terrorist organizations operating in the territory of another Member State.

Article 6

\n
a)State Parties undertake to extend mutual legal and all other assistance in the event of threats of terrorist attack or other organized international crimes.
b)State Parties undertake to arrest and prosecute any irregular armed group(s), mercenaries or terrorist(s) that pose a threat to any Member State.

Article 7

\nState Parties undertake, to cooperate and enhance their military and intelligence capacities through mutual assistance.

Article 8

\n
a)Each State Party declares not to enter into any international or regional commitment which is in contradiction to the present Pact.
b)Each State Party declares that under no circumstances shall it exempt itself from its obligations under this Pact.

Implementation mechanisms

\n

Article 9

\nThe Peace and Security Council shall be responsible for the implementation of this Pact, under the authority of the Assembly. In this regard, the Peace and Security Council may be assisted by any organ of the Union, pending the setting up of mechanisms and institutions for common defence and security.

Article 10

\n
a)State Parties undertake to provide all possible assistance towards the military operations decided by the Peace and Security Council, including the use of the African Standby Force;
b)State Parties undertake to develop and strengthen the level of their actual collaboration with the Command Headquarters and Military Staff Committee of the African Standby Force in accordance with the provisions of the Protocol and the Policy Framework for the Establishment of the African Standby Force and the Military Staff Committee.

Article 11

\n
a)State Parties undertake to develop and strengthen the capacities of African research, information and training institutions to enhance early preventive action against any aggression or threats of aggression;
b)The Peace and Security Council may also be assisted by the following institutions:
i)The African Peace Academy;
ii)The African Centre for Study and Research on Terrorism;
iii)The African Union Commission on International Law;
c)The Peace and Security Council may establish any other mechanism as it deems necessary.

The African Peace Academy

\n

Article 12

\n
a)State Parties undertake to establish and operationalize the African Peace Academy (APA) to serve as a framework for the promotion of peace and stability in Africa, and as a centre of excellence for research and development of an African peace doctrine;
b)The organization and operational modalities of the Academy shall be decided upon by the Assembly.

African Centre for the Study and Research on Terrorism

\n

Article 13

\n
a)The African Centre for the Study and Research on Terrorism (ACSRT) shall serve to centralize, collect and disseminate information, studies and analysis on terrorism and terrorist groups, and shall provide training programs by organizing, with the assistance of international partners meetings, and symposia, in order to prevent and combat terrorist acts in Africa;
b)The Centre shall assist Member States develop the expertise and strategies for the prevention and combating of terrorism, particularly with respect to the implementation of the 1999 OAU Convention and its Protocol thereto on the Prevention and Combating of Terrorism, as well as the Plan of Action on the Prevention and Combating of Terrorism in Africa and other relevant decisions adopted by the policy Organs of the Union;
c)State Parties undertake to support fully and take active part in the activities of the Centre.

The African Union Commission on International Law

\n

Article 14

\n
a)State Parties undertake to establish an African Union Commission on International Law whose objectives shall, among others, be to study all legal matters related to the promotion of peace and security in Africa, including the demarcation and delineation of African borders;
b)The composition and functions of the African Union Commission on International Law shall be decided upon by the Assembly.

Peaceful settlement of dispute

\n

Article 15

\nState Parties involved in any dispute shall first seek a solution by negotiation, inquiry, mediation, conciliation, arbitration, judicial settlement, or resort to regional and continental mechanisms or arrangements, or other peaceful means.

Interpretation

\n

Article 16

\nState Parties undertake to refer all disputes over the interpretation, implementation and validity of this Pact to the Court of Justice, without prejudice to the competence of the Peace and Security Council.

Article 17

\n
a)This Pact shall not derogate from, and shall not be interpreted as derogating in any way from the obligations of Member States contained in the United Nations Charter and the Constitutive Act, including the Protocol, and from the primary responsibility of the United Nations Security Council for the maintenance of international peace and security.
b)This Pact shall not derogate from, and shall not be interpreted as derogating in any way whatsoever, from the rights of refugees guaranteed by the relevant continental and international instruments.

Final provisions

\n

Article 18

\n
a)This Pact shall be open to signature and ratification or accession by Member States in accordance with their respective constitutional procedures;
b)The instruments of ratification shall be deposited with the Chairperson of the Commission;
c)Any Member State acceding to this Pact after its entry into force shall deposit the instrument of accession with the Chairperson of the Commission;
d)Any State Party may withdraw from this Pact by giving a one (1) year prior notice to the Chairperson of the Commission, who shall notify all the State Parties thereof.

Article 19

\nThis Pact shall enter into force thirty (30) days following the deposit of instruments of ratification by fifteen (15) Member States.

Article 20

\n
a)Any State Party may submit proposals for the amendment or revision of this Pact;
b)Proposals for amendment or revision shall be submitted to the Chairperson of the Commission who shall transmit same to the State Parties within thirty (30) days of receipt thereof;
c)The amendments shall be examined and approved by the State Parties, by consensus or, failing which, by two-third majority, and thereafter, the amendments shall be formally endorsed by the Assembly;
d)The amendments shall enter into force for each State Party which has accepted it, thirty (30) days after the Chairperson of the Commission has received notice of the acceptance.

Article 21

\nThere shall be a periodic evaluation of this Pact in order to update it and to enhance its implementation. The evaluation of the Pact shall be done within the context of paragraph 36 of the Solemn Declaration on the Common African Defence and Security Policy which provide for the convening by the Chairperson of the Peace and Security Council \"of a yearly review conference involving all the conflict resolution mechanisms of the various regional organizations as well as mechanisms established by the continental instruments.\"

Article 22

\nThis Pact, drawn up in four (4) original texts in Arabic, English, French and Portuguese, all four (4) being equally authentic, shall be deposited with the Chairperson of the Commission who shall transmit certified copies thereof to each Member State.

Article 23

\nThe Chairperson of the Commission shall register this Pact with the United Nations.
Adopted by the fourth Ordinary Session of the Assembly, held in Abuja, Nigeria, on Monday, 31 January 2005
\n\n\n\n\n\n", "content_html_is_akn": true, @@ -9131,6 +5842,7 @@ }, { "fields": { + "nature": 4, "citation": null, "content_html": "\n\n\n\n \n\n\n
\n \n\n \n \n

African Union

\n \n \n\n \n \n \n\n \n

African Civil Aviation Commission Constitution (AFCAC)

\n \n\n \n \n \n \n \n\n \n \n \n\n \n \n\n\n\n \n
\n\n\n\n\n\n\n\n11Came into force provisionally on 17 January 1969 in respect of the following States, on behalf of which it had been signed on that date, in accordance with article 14:
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Central African RepublicMaliSierra Leone
CongoMauritaniaTogo
EgyptMauritiusUnited Republic of Cameroon
EthiopiaMoroccoUnited Republic of Tanzania
GhanaNigeriaUpper Volta
Ivory CoastSenegalZambia
Libyan Arab Republic
\nSubsequently, the Convention came into force in respect of the following States, with provisional effect from the date of signature, in accordance with article 14:
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
StateDate of signatureStateDate of signature
Algeria3 March 1971Malawi25 June 1969
Benin17 February 1972Niger8 July 1969
Lesotho27 March 1973Rwanda9 December 1970
Liberia17 January 1969Swaziland23 June 1970
\nThe Convention came into force definitively on 12 January 1972 in respect of the following 20 Member States of the Organization of African Unity, on behalf of which an instrument of ratification had been deposited with the Secretariat of the Organization of African Unity, in accordance with article 14:
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
StateDate of deposit of the instrument of ratificationStateDate of deposit of the instrument of ratification
Algeria8 October 1971Nigeria14 December 1970
Chad10 March 1971Senegal13 April 1971
Egypt28 July 1969Sudan8 July 1971
Ghana10 December 1970Swaziland23 June 1971
Ivory Coast16 November 1970TogoI July 1971
Kenya16 May 1969Uganda18 November 1969
Malawi7 August 1969United Republic of Cameroon12 January 1972
Mali16 April 1970United Republic of Tanzania26 September 1969
Morocco15 March 1971Upper Volta12 March 1971
Niger22 June 1970Zambia10 December 1971
\nSubsequently, the Convention came into force in respect of the following Member States of the Organization of African Unity, on the date of deposit of their instruments of ratification with the Secretariat of the Organization of African Unity, in accordance with article 14:
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
StateDate of deposit of the instrument of ratificationStateDate of deposit of the instrument of ratification
Benin31 January 1973Liberia16 September 1974
Burundi19 April 1973Libyan Arab Republic29 August 1973
Congo2 April 1973Rwanda8 April 1974
Ethiopia8 January 1975Sierra Leone17 August 1973
Gabon17 April 1972Somalia5 April 1972
Guinea2 June 1975Zaire12 December 1973
Lesotho27 August 1973
1.The African Civil Aviation Commission (AFCAC) is an autonomous body and membership shall be open to African States members of ECA or OAU.
2.AFCAC is a consultative body and its conclusions and recommendations shall be subject to acceptance by each of the governments.

Objectives

\n
3.The objectives of AFCAC are:
(a)to provide the civil aviation authorities in the member States with a framework within which to discuss and plan all the required measures of co-ordination and co-operation for all their civil aviation activities;
(b)to promote co-ordination, better utilization and orderly development of African air transport systems.

Functions

\n
4.1The functions of AFCAC shall, in particular, include:
(a)formulating plans at the regional and sub-regional levels for the operation of air services within and outside Africa;
(b)carrying out studies of the feasibility of standardization of flying equipment and ground units servicing aircraft;
(c)carrying out studies of the possibility of integration of the policies of governments regarding commercial aspects of air transport;
(d)carrying out studies of intra-African fares and rates with a view to adopting a structure conducive to the rapid growth of traffic in Africa;
(e)carrying out studies of regional or sub-regional air transport economic questions other than those mentioned in (b), (c) and (d) above;
(f)encouraging the application of ICAO standards and recommendations on facilitation and supplementing them by further measures aimed at greater facilitation of the movement by air of passengers, cargo and mail;
(g)fostering arrangements between States whenever this will contribute to the implementation of
(i)ICAO regional plans for air navigation facilities and services, and
(ii)ICAO specifications in the fields of airworthiness, maintenance and operation of aircraft, licensing of personnel and aircraft accident investigation;
(h)fostering and co-ordinating programmes for the development of existing and future training facilities to cope with the present and future regional and sub-regional requirements for personnel in all fields of civil aviation;
(i)studying the need for collective arrangements for technical assistance in Africa with a viflw to obtaining the best possible use of all available resources, particularly those provided within the framework of the United Nations Development Programme.
4.2AFCAC shall, in the exercise of its functions, work in close consultation and co-operation with OAU, ECA, ICAO and any other governmental or non-governmental international organization concerned with civil aviation.

Organization and working arrangements

\n
5.AFCAC shall meet in ordinary plenary session once every two years.
6.At each ordinary plenary session, AFCAC shall elect its President and four Vice Presidents, one for each sub-region, who will constitute the Bureau of AFCAC.
7.Extraordinary plenary meetings may be convened by the Bureau and must be convened if the Bureau received a request from two-thirds of the AFCAC members.
8.At each ordinary plenary session, AFCAC shall establish its work programme for the period until the following ordinary plenary session.
9.The direction, co-ordination and steering of the work programme between ordinary plenary sessions shall be the responsibility of the Bureau of AFCAC.
10.AFCAC shall determine its own internal organization, arrangements and procedures, including the formation of committees to study special aspects of civil aviation in Africa.
11.Member States should be represented at meetings of AFCAC by delegates senior in rank and competent in the field to be discussed for the authoritative handling of the problems.
12.There shall be established by AFCAC a Secretariat for organizing studies, meetings, maintenance of records and the like. The rules governing the recruitment and conditions of service of the staff shall be determined by AFCAC, ICAO, during the initial period to be determined by AFCAC, shall have the following responsibilities:
(i)to provide staff to carry out studies, organize meetings and undertake related activities;
(ii)to handle minutes, correspondence, etc.
AFCAC shall make full use of the experience and assistance of ICAO in conformity with the practice followed by the latter with similar international organizations.

Financial matters

\n
13.At each ordinary plenary session, AFCAC shall prepare and approve a budget of the direct costs of its activities, as indicated in the work programme for the ensuing years. AFCAC shall establish its own financial rules for the assessment of members' contributions and control of expenditure. As regards the indirect costs, these shall be the responsibility of ICAO in accordance with the practice followed by ICAO in the joint financing field under Chapter XV of the Chicago Convention.

Signature, ratification and withdrawal

\n
14.The present constitution is open to signature by all States attending the Constitutive Conference of AFCAC and by all other independent African States members of the OAU or ECA.The instruments of ratification shall be deposited with the Secretariat of the OAU which shall give notice of the date of deposit to AFCAC and all member States of AFCAC.The present Constitution shall be open for the signature of African States as of 17 January 1969 at the Headquarters of the OAU in Addis Ababa.The Constitution shall come into force provisionally as of 17 January 1969 and shall come into force definitively after ratification by twenty member States.
15.To withdraw from AFCAC, a State shall address a notification to that effect to the Secretariat of OAU which shall immediately notify AFCAC and all other members.Withdrawal shall take effect one year from receipt of the notification.

Amendment

\n
16.This Constitution may be amended by a two-thirds majority of all members.
\n\n\n\n\n\n", "content_html_is_akn": true, @@ -9789,6 +6501,7 @@ "model": "peachjam.coredocument", "pk": 3040, "fields": { + "nature": 1, "polymorphic_ctype": [ "peachjam", "legislation" @@ -10048,7 +6761,6 @@ "language": "en", "jurisdiction": "ZA", "locality": null, - "nature": null, "work_frbr_uri": "/akn/za/act/1979/70", "frbr_uri_doctype": "act", "frbr_uri_subtype": null, @@ -10066,6 +6778,7 @@ "model": "peachjam.coredocument", "pk": 3041, "fields": { + "nature": 1, "polymorphic_ctype": [ "peachjam", "legislation" @@ -10325,7 +7038,6 @@ "language": "en", "jurisdiction": "ZA", "locality": null, - "nature": null, "work_frbr_uri": "/akn/za/act/1979/70", "frbr_uri_doctype": "act", "frbr_uri_subtype": null, diff --git a/peachjam/fixtures/tests/countries.json b/peachjam/fixtures/tests/countries.json index 02a99b6cf..82e9024a5 100644 --- a/peachjam/fixtures/tests/countries.json +++ b/peachjam/fixtures/tests/countries.json @@ -1,27 +1,3301 @@ [ -{ - "model": "countries_plus.country", - "pk": "ZA", - "fields": { - "iso3": "ZAF", - "iso_numeric": 710, - "fips": "SF", - "name": "South Africa", - "capital": "Pretoria", - "area": "1219912.00", - "population": 57779622, - "continent": "AF", - "tld": ".za", - "currency_code": "ZAR", - "currency_symbol": "R", - "currency_name": "Rand", - "phone": "27", - "postal_code_format": "####", - "postal_code_regex": "^(\\d{4})$", - "languages": "zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr", - "geonameid": 953987, - "neighbours": "ZW,SZ,MZ,BW,NA,LS", - "equivalent_fips_code": null - } -} + { + "fields": { + "area": "390580.00", + "capital": "Harare", + "continent": "AF", + "currency_code": "ZWL", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "ZI", + "geonameid": 878675, + "iso3": "ZWE", + "iso_numeric": 716, + "languages": "en-ZW,sn,nr,nd", + "name": "Zimbabwe", + "neighbours": "ZA,MZ,BW,ZM", + "phone": "263", + "population": 14439018, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".zw" + }, + "model": "countries_plus.country", + "pk": "ZW" + }, + { + "fields": { + "area": "752614.00", + "capital": "Lusaka", + "continent": "AF", + "currency_code": "ZMW", + "currency_name": "Kwacha", + "currency_symbol": null, + "equivalent_fips_code": null, + "fips": "ZA", + "geonameid": 895949, + "iso3": "ZMB", + "iso_numeric": 894, + "languages": "en-ZM,bem,loz,lun,lue,ny,toi", + "name": "Zambia", + "neighbours": "ZW,TZ,MZ,CD,NA,MW,AO", + "phone": "260", + "population": 17351822, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".zm" + }, + "model": "countries_plus.country", + "pk": "ZM" + }, + { + "fields": { + "area": "329560.00", + "capital": "Hanoi", + "continent": "AS", + "currency_code": "VND", + "currency_name": "Dong", + "currency_symbol": "\u20ab", + "equivalent_fips_code": null, + "fips": "VM", + "geonameid": 1562822, + "iso3": "VNM", + "iso_numeric": 704, + "languages": "vi,en,fr,zh,km", + "name": "Vietnam", + "neighbours": "CN,LA,KH", + "phone": "84", + "population": 95540395, + "postal_code_format": "######", + "postal_code_regex": "^(\\d{6})$", + "tld": ".vn" + }, + "model": "countries_plus.country", + "pk": "VN" + }, + { + "fields": { + "area": "12200.00", + "capital": "Port Vila", + "continent": "OC", + "currency_code": "VUV", + "currency_name": "Vatu", + "currency_symbol": "Vt", + "equivalent_fips_code": null, + "fips": "NH", + "geonameid": 2134431, + "iso3": "VUT", + "iso_numeric": 548, + "languages": "bi,en-VU,fr-VU", + "name": "Vanuatu", + "neighbours": null, + "phone": "678", + "population": 292680, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".vu" + }, + "model": "countries_plus.country", + "pk": "VU" + }, + { + "fields": { + "area": "352.00", + "capital": "Charlotte Amalie", + "continent": "NA", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "VQ", + "geonameid": 4796775, + "iso3": "VIR", + "iso_numeric": 850, + "languages": "en-VI", + "name": "U.S. Virgin Islands", + "neighbours": null, + "phone": "+1-340", + "population": 106977, + "postal_code_format": "#####-####", + "postal_code_regex": "^008\\d{2}(?:-\\d{4})?$", + "tld": ".vi" + }, + "model": "countries_plus.country", + "pk": "VI" + }, + { + "fields": { + "area": "0.00", + "capital": null, + "continent": "OC", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": null, + "geonameid": 5854968, + "iso3": "UMI", + "iso_numeric": 581, + "languages": "en-UM", + "name": "United States Minor Outlying Islands", + "neighbours": null, + "phone": "1", + "population": 0, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".um" + }, + "model": "countries_plus.country", + "pk": "UM" + }, + { + "fields": { + "area": "9629091.00", + "capital": "Washington", + "continent": "NA", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "US", + "geonameid": 6252001, + "iso3": "USA", + "iso_numeric": 840, + "languages": "en-US,es-US,haw,fr", + "name": "United States", + "neighbours": "CA,MX,CU", + "phone": "1", + "population": 327167434, + "postal_code_format": "#####-####", + "postal_code_regex": "^\\d{5}(-\\d{4})?$", + "tld": ".us" + }, + "model": "countries_plus.country", + "pk": "US" + }, + { + "fields": { + "area": "244820.00", + "capital": "London", + "continent": "EU", + "currency_code": "GBP", + "currency_name": "Pound", + "currency_symbol": "\u00a3", + "equivalent_fips_code": null, + "fips": "UK", + "geonameid": 2635167, + "iso3": "GBR", + "iso_numeric": 826, + "languages": "en-GB,cy-GB,gd", + "name": "United Kingdom", + "neighbours": "IE", + "phone": "44", + "population": 66488991, + "postal_code_format": "@# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA", + "postal_code_regex": "^([Gg][Ii][Rr]\\s?0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z]))))\\s?[0-9][A-Za-z]{2})$", + "tld": ".uk" + }, + "model": "countries_plus.country", + "pk": "GB" + }, + { + "fields": { + "area": "82880.00", + "capital": "Abu Dhabi", + "continent": "AS", + "currency_code": "AED", + "currency_name": "Dirham", + "currency_symbol": "\u062f.\u0625", + "equivalent_fips_code": null, + "fips": "AE", + "geonameid": 290557, + "iso3": "ARE", + "iso_numeric": 784, + "languages": "ar-AE,fa,en,hi,ur", + "name": "United Arab Emirates", + "neighbours": "SA,OM", + "phone": "971", + "population": 9630959, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".ae" + }, + "model": "countries_plus.country", + "pk": "AE" + }, + { + "fields": { + "area": "236040.00", + "capital": "Kampala", + "continent": "AF", + "currency_code": "UGX", + "currency_name": "Shilling", + "currency_symbol": "Sh", + "equivalent_fips_code": null, + "fips": "UG", + "geonameid": 226074, + "iso3": "UGA", + "iso_numeric": 800, + "languages": "en-UG,lg,sw,ar", + "name": "Uganda", + "neighbours": "TZ,KE,SS,CD,RW", + "phone": "256", + "population": 42723139, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".ug" + }, + "model": "countries_plus.country", + "pk": "UG" + }, + { + "fields": { + "area": "26.00", + "capital": "Funafuti", + "continent": "OC", + "currency_code": "AUD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "TV", + "geonameid": 2110297, + "iso3": "TUV", + "iso_numeric": 798, + "languages": "tvl,en,sm,gil", + "name": "Tuvalu", + "neighbours": null, + "phone": "688", + "population": 11508, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".tv" + }, + "model": "countries_plus.country", + "pk": "TV" + }, + { + "fields": { + "area": "430.00", + "capital": "Cockburn Town", + "continent": "NA", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "TK", + "geonameid": 3576916, + "iso3": "TCA", + "iso_numeric": 796, + "languages": "en-TC", + "name": "Turks and Caicos Islands", + "neighbours": null, + "phone": "+1-649", + "population": 37665, + "postal_code_format": "TKCA 1ZZ", + "postal_code_regex": "^(TKCA 1ZZ)$", + "tld": ".tc" + }, + "model": "countries_plus.country", + "pk": "TC" + }, + { + "fields": { + "area": "5128.00", + "capital": "Port of Spain", + "continent": "NA", + "currency_code": "TTD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "TD", + "geonameid": 3573591, + "iso3": "TTO", + "iso_numeric": 780, + "languages": "en-TT,hns,fr,es,zh", + "name": "Trinidad and Tobago", + "neighbours": null, + "phone": "+1-868", + "population": 1389858, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".tt" + }, + "model": "countries_plus.country", + "pk": "TT" + }, + { + "fields": { + "area": "748.00", + "capital": "Nuku'alofa", + "continent": "OC", + "currency_code": "TOP", + "currency_name": "Pa'anga", + "currency_symbol": "T$", + "equivalent_fips_code": null, + "fips": "TN", + "geonameid": 4032283, + "iso3": "TON", + "iso_numeric": 776, + "languages": "to,en-TO", + "name": "Tonga", + "neighbours": null, + "phone": "676", + "population": 103197, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".to" + }, + "model": "countries_plus.country", + "pk": "TO" + }, + { + "fields": { + "area": "10.00", + "capital": null, + "continent": "OC", + "currency_code": "NZD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "TL", + "geonameid": 4031074, + "iso3": "TKL", + "iso_numeric": 772, + "languages": "tkl,en-TK", + "name": "Tokelau", + "neighbours": null, + "phone": "690", + "population": 1466, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".tk" + }, + "model": "countries_plus.country", + "pk": "TK" + }, + { + "fields": { + "area": "15007.00", + "capital": "Dili", + "continent": "OC", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "TT", + "geonameid": 1966436, + "iso3": "TLS", + "iso_numeric": 626, + "languages": "tet,pt-TL,id,en", + "name": "Timor Leste", + "neighbours": "ID", + "phone": "670", + "population": 1267972, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".tl" + }, + "model": "countries_plus.country", + "pk": "TL" + }, + { + "fields": { + "area": "514000.00", + "capital": "Bangkok", + "continent": "AS", + "currency_code": "THB", + "currency_name": "Baht", + "currency_symbol": "\u0e3f", + "equivalent_fips_code": null, + "fips": "TH", + "geonameid": 1605651, + "iso3": "THA", + "iso_numeric": 764, + "languages": "th,en", + "name": "Thailand", + "neighbours": "LA,MM,KH,MY", + "phone": "66", + "population": 69428524, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".th" + }, + "model": "countries_plus.country", + "pk": "TH" + }, + { + "fields": { + "area": "945087.00", + "capital": "Dodoma", + "continent": "AF", + "currency_code": "TZS", + "currency_name": "Shilling", + "currency_symbol": "Sh", + "equivalent_fips_code": null, + "fips": "TZ", + "geonameid": 149590, + "iso3": "TZA", + "iso_numeric": 834, + "languages": "sw-TZ,en,ar", + "name": "Tanzania", + "neighbours": "MZ,KE,CD,RW,ZM,BI,UG,MW", + "phone": "255", + "population": 56318348, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".tz" + }, + "model": "countries_plus.country", + "pk": "TZ" + }, + { + "fields": { + "area": "185180.00", + "capital": "Damascus", + "continent": "AS", + "currency_code": "SYP", + "currency_name": "Pound", + "currency_symbol": "\u00a3, \u0644.\u0633", + "equivalent_fips_code": null, + "fips": "SY", + "geonameid": 163843, + "iso3": "SYR", + "iso_numeric": 760, + "languages": "ar-SY,ku,hy,arc,fr,en", + "name": "Syria", + "neighbours": "IQ,JO,IL,TR,LB", + "phone": "963", + "population": 16906283, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".sy" + }, + "model": "countries_plus.country", + "pk": "SY" + }, + { + "fields": { + "area": "163270.00", + "capital": "Paramaribo", + "continent": "SA", + "currency_code": "SRD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "NS", + "geonameid": 3382998, + "iso3": "SUR", + "iso_numeric": 740, + "languages": "nl-SR,en,srn,hns,jv", + "name": "Suriname", + "neighbours": "GY,BR,GF", + "phone": "597", + "population": 575991, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".sr" + }, + "model": "countries_plus.country", + "pk": "SR" + }, + { + "fields": { + "area": "1861484.00", + "capital": "Khartoum", + "continent": "AF", + "currency_code": "SDG", + "currency_name": "Pound", + "currency_symbol": "S$", + "equivalent_fips_code": null, + "fips": "SU", + "geonameid": 366755, + "iso3": "SDN", + "iso_numeric": 729, + "languages": "ar-SD,en,fia", + "name": "Sudan", + "neighbours": "SS,TD,EG,ET,ER,LY,CF", + "phone": "249", + "population": 41801533, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".sd" + }, + "model": "countries_plus.country", + "pk": "SD" + }, + { + "fields": { + "area": "65610.00", + "capital": "Colombo", + "continent": "AS", + "currency_code": "LKR", + "currency_name": "Rupee", + "currency_symbol": "\u0bb0\u0bc2", + "equivalent_fips_code": null, + "fips": "CE", + "geonameid": 1227603, + "iso3": "LKA", + "iso_numeric": 144, + "languages": "si,ta,en", + "name": "Sri Lanka", + "neighbours": null, + "phone": "94", + "population": 21670000, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".lk" + }, + "model": "countries_plus.country", + "pk": "LK" + }, + { + "fields": { + "area": "644329.00", + "capital": "Juba", + "continent": "AF", + "currency_code": "SSP", + "currency_name": "Pound", + "currency_symbol": null, + "equivalent_fips_code": null, + "fips": "OD", + "geonameid": 7909807, + "iso3": "SSD", + "iso_numeric": 728, + "languages": "en", + "name": "South Sudan", + "neighbours": "CD,CF,ET,KE,SD,UG", + "phone": "211", + "population": 8260490, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".ss" + }, + "model": "countries_plus.country", + "pk": "SS" + }, + { + "fields": { + "area": "98480.00", + "capital": "Seoul", + "continent": "AS", + "currency_code": "KRW", + "currency_name": "Won", + "currency_symbol": "\u20a9", + "equivalent_fips_code": null, + "fips": "KS", + "geonameid": 1835841, + "iso3": "KOR", + "iso_numeric": 410, + "languages": "ko-KR,en", + "name": "South Korea", + "neighbours": "KP", + "phone": "82", + "population": 51635256, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".kr" + }, + "model": "countries_plus.country", + "pk": "KR" + }, + { + "fields": { + "area": "3903.00", + "capital": "Grytviken", + "continent": "AN", + "currency_code": "GBP", + "currency_name": "Pound", + "currency_symbol": "\u00a3", + "equivalent_fips_code": null, + "fips": "SX", + "geonameid": 3474415, + "iso3": "SGS", + "iso_numeric": 239, + "languages": "en", + "name": "South Georgia and the South Sandwich Islands", + "neighbours": null, + "phone": null, + "population": 30, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".gs" + }, + "model": "countries_plus.country", + "pk": "GS" + }, + { + "fields": { + "area": "1219912.00", + "capital": "Pretoria", + "continent": "AF", + "currency_code": "ZAR", + "currency_name": "Rand", + "currency_symbol": "R", + "equivalent_fips_code": null, + "fips": "SF", + "geonameid": 953987, + "iso3": "ZAF", + "iso_numeric": 710, + "languages": "zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr", + "name": "South Africa", + "neighbours": "ZW,SZ,MZ,BW,NA,LS", + "phone": "27", + "population": 57779622, + "postal_code_format": "####", + "postal_code_regex": "^(\\d{4})$", + "tld": ".za" + }, + "model": "countries_plus.country", + "pk": "ZA" + }, + { + "fields": { + "area": "637657.00", + "capital": "Mogadishu", + "continent": "AF", + "currency_code": "SOS", + "currency_name": "Shilling", + "currency_symbol": "Sh", + "equivalent_fips_code": null, + "fips": "SO", + "geonameid": 51537, + "iso3": "SOM", + "iso_numeric": 706, + "languages": "so-SO,ar-SO,it,en-SO", + "name": "Somalia", + "neighbours": "ET,KE,DJ", + "phone": "252", + "population": 15008154, + "postal_code_format": "@@ #####", + "postal_code_regex": "^([A-Z]{2}\\d{5})$", + "tld": ".so" + }, + "model": "countries_plus.country", + "pk": "SO" + }, + { + "fields": { + "area": "28450.00", + "capital": "Honiara", + "continent": "OC", + "currency_code": "SBD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "BP", + "geonameid": 2103350, + "iso3": "SLB", + "iso_numeric": 90, + "languages": "en-SB,tpi", + "name": "Solomon Islands", + "neighbours": null, + "phone": "677", + "population": 652858, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".sb" + }, + "model": "countries_plus.country", + "pk": "SB" + }, + { + "fields": { + "area": "21.00", + "capital": "Philipsburg", + "continent": "NA", + "currency_code": "ANG", + "currency_name": "Guilder", + "currency_symbol": "\u0192", + "equivalent_fips_code": null, + "fips": "NN", + "geonameid": 7609695, + "iso3": "SXM", + "iso_numeric": 534, + "languages": "nl,en", + "name": "Sint Maarten", + "neighbours": "MF", + "phone": "599", + "population": 40654, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".sx" + }, + "model": "countries_plus.country", + "pk": "SX" + }, + { + "fields": { + "area": "692.70", + "capital": "Singapore", + "continent": "AS", + "currency_code": "SGD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "SN", + "geonameid": 1880251, + "iso3": "SGP", + "iso_numeric": 702, + "languages": "cmn,en-SG,ms-SG,ta-SG,zh-SG", + "name": "Singapore", + "neighbours": null, + "phone": "65", + "population": 5638676, + "postal_code_format": "######", + "postal_code_regex": "^(\\d{6})$", + "tld": ".sg" + }, + "model": "countries_plus.country", + "pk": "SG" + }, + { + "fields": { + "area": "71740.00", + "capital": "Freetown", + "continent": "AF", + "currency_code": "SLL", + "currency_name": "Leone", + "currency_symbol": "Le", + "equivalent_fips_code": null, + "fips": "SL", + "geonameid": 2403846, + "iso3": "SLE", + "iso_numeric": 694, + "languages": "en-SL,men,tem", + "name": "Sierra Leone", + "neighbours": "LR,GN", + "phone": "232", + "population": 7650154, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".sl" + }, + "model": "countries_plus.country", + "pk": "SL" + }, + { + "fields": { + "area": "455.00", + "capital": "Victoria", + "continent": "AF", + "currency_code": "SCR", + "currency_name": "Rupee", + "currency_symbol": "\u20a8", + "equivalent_fips_code": null, + "fips": "SE", + "geonameid": 241170, + "iso3": "SYC", + "iso_numeric": 690, + "languages": "en-SC,fr-SC", + "name": "Seychelles", + "neighbours": null, + "phone": "248", + "population": 96762, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".sc" + }, + "model": "countries_plus.country", + "pk": "SC" + }, + { + "fields": { + "area": "2944.00", + "capital": "Apia", + "continent": "OC", + "currency_code": "WST", + "currency_name": "Tala", + "currency_symbol": "T", + "equivalent_fips_code": null, + "fips": "WS", + "geonameid": 4034894, + "iso3": "WSM", + "iso_numeric": 882, + "languages": "sm,en-WS", + "name": "Samoa", + "neighbours": null, + "phone": "685", + "population": 196130, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".ws" + }, + "model": "countries_plus.country", + "pk": "WS" + }, + { + "fields": { + "area": "389.00", + "capital": "Kingstown", + "continent": "NA", + "currency_code": "XCD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "VC", + "geonameid": 3577815, + "iso3": "VCT", + "iso_numeric": 670, + "languages": "en-VC,fr", + "name": "Saint Vincent and the Grenadines", + "neighbours": null, + "phone": "+1-784", + "population": 110211, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".vc" + }, + "model": "countries_plus.country", + "pk": "VC" + }, + { + "fields": { + "area": "616.00", + "capital": "Castries", + "continent": "NA", + "currency_code": "XCD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "ST", + "geonameid": 3576468, + "iso3": "LCA", + "iso_numeric": 662, + "languages": "en-LC", + "name": "Saint Lucia", + "neighbours": null, + "phone": "+1-758", + "population": 181889, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".lc" + }, + "model": "countries_plus.country", + "pk": "LC" + }, + { + "fields": { + "area": "261.00", + "capital": "Basseterre", + "continent": "NA", + "currency_code": "XCD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "SC", + "geonameid": 3575174, + "iso3": "KNA", + "iso_numeric": 659, + "languages": "en-KN", + "name": "Saint Kitts and Nevis", + "neighbours": null, + "phone": "+1-869", + "population": 52441, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".kn" + }, + "model": "countries_plus.country", + "pk": "KN" + }, + { + "fields": { + "area": "410.00", + "capital": "Jamestown", + "continent": "AF", + "currency_code": "SHP", + "currency_name": "Pound", + "currency_symbol": "\u00a3", + "equivalent_fips_code": null, + "fips": "SH", + "geonameid": 3370751, + "iso3": "SHN", + "iso_numeric": 654, + "languages": "en-SH", + "name": "Saint Helena", + "neighbours": null, + "phone": "290", + "population": 7460, + "postal_code_format": "STHL 1ZZ", + "postal_code_regex": "^(STHL1ZZ)$", + "tld": ".sh" + }, + "model": "countries_plus.country", + "pk": "SH" + }, + { + "fields": { + "area": "26338.00", + "capital": "Kigali", + "continent": "AF", + "currency_code": "RWF", + "currency_name": "Franc", + "currency_symbol": "Fr", + "equivalent_fips_code": null, + "fips": "RW", + "geonameid": 49518, + "iso3": "RWA", + "iso_numeric": 646, + "languages": "rw,en-RW,fr-RW,sw", + "name": "Rwanda", + "neighbours": "TZ,CD,BI,UG", + "phone": "250", + "population": 12301939, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".rw" + }, + "model": "countries_plus.country", + "pk": "RW" + }, + { + "fields": { + "area": "9104.00", + "capital": "San Juan", + "continent": "NA", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "RQ", + "geonameid": 4566966, + "iso3": "PRI", + "iso_numeric": 630, + "languages": "en-PR,es-PR", + "name": "Puerto Rico", + "neighbours": null, + "phone": "+1-787,1-939", + "population": 3195153, + "postal_code_format": "#####-####", + "postal_code_regex": "^00[679]\\d{2}(?:-\\d{4})?$", + "tld": ".pr" + }, + "model": "countries_plus.country", + "pk": "PR" + }, + { + "fields": { + "area": "47.00", + "capital": "Adamstown", + "continent": "OC", + "currency_code": "NZD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "PC", + "geonameid": 4030699, + "iso3": "PCN", + "iso_numeric": 612, + "languages": "en-PN", + "name": "Pitcairn", + "neighbours": null, + "phone": "870", + "population": 46, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".pn" + }, + "model": "countries_plus.country", + "pk": "PN" + }, + { + "fields": { + "area": "300000.00", + "capital": "Manila", + "continent": "AS", + "currency_code": "PHP", + "currency_name": "Peso", + "currency_symbol": "\u20b1", + "equivalent_fips_code": null, + "fips": "RP", + "geonameid": 1694008, + "iso3": "PHL", + "iso_numeric": 608, + "languages": "tl,en-PH,fil,ceb,tgl,ilo,hil,war,pam,bik,bcl,pag,mrw,tsg,mdh,cbk,krj,sgd,msb,akl,ibg,yka,mta,abx", + "name": "Philippines", + "neighbours": null, + "phone": "63", + "population": 106651922, + "postal_code_format": "####", + "postal_code_regex": "^(\\d{4})$", + "tld": ".ph" + }, + "model": "countries_plus.country", + "pk": "PH" + }, + { + "fields": { + "area": "462840.00", + "capital": "Port Moresby", + "continent": "OC", + "currency_code": "PGK", + "currency_name": "Kina", + "currency_symbol": "K", + "equivalent_fips_code": null, + "fips": "PP", + "geonameid": 2088628, + "iso3": "PNG", + "iso_numeric": 598, + "languages": "en-PG,ho,meu,tpi", + "name": "Papua New Guinea", + "neighbours": "ID", + "phone": "675", + "population": 8606316, + "postal_code_format": "###", + "postal_code_regex": "^(\\d{3})$", + "tld": ".pg" + }, + "model": "countries_plus.country", + "pk": "PG" + }, + { + "fields": { + "area": "78200.00", + "capital": "Panama City", + "continent": "NA", + "currency_code": "PAB", + "currency_name": "Balboa", + "currency_symbol": "B/.", + "equivalent_fips_code": null, + "fips": "PM", + "geonameid": 3703430, + "iso3": "PAN", + "iso_numeric": 591, + "languages": "es-PA,en", + "name": "Panama", + "neighbours": "CR,CO", + "phone": "507", + "population": 4176873, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".pa" + }, + "model": "countries_plus.country", + "pk": "PA" + }, + { + "fields": { + "area": "458.00", + "capital": "Melekeok", + "continent": "OC", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "PS", + "geonameid": 1559582, + "iso3": "PLW", + "iso_numeric": 585, + "languages": "pau,sov,en-PW,tox,ja,fil,zh", + "name": "Palau", + "neighbours": null, + "phone": "680", + "population": 17907, + "postal_code_format": "96940", + "postal_code_regex": "^(96940)$", + "tld": ".pw" + }, + "model": "countries_plus.country", + "pk": "PW" + }, + { + "fields": { + "area": "803940.00", + "capital": "Islamabad", + "continent": "AS", + "currency_code": "PKR", + "currency_name": "Rupee", + "currency_symbol": "\u20a8", + "equivalent_fips_code": null, + "fips": "PK", + "geonameid": 1168579, + "iso3": "PAK", + "iso_numeric": 586, + "languages": "ur-PK,en-PK,pa,sd,ps,brh", + "name": "Pakistan", + "neighbours": "CN,AF,IR,IN", + "phone": "92", + "population": 212215030, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".pk" + }, + "model": "countries_plus.country", + "pk": "PK" + }, + { + "fields": { + "area": "212460.00", + "capital": "Muscat", + "continent": "AS", + "currency_code": "OMR", + "currency_name": "Rial", + "currency_symbol": "\u0631.\u0639.", + "equivalent_fips_code": null, + "fips": "MU", + "geonameid": 286963, + "iso3": "OMN", + "iso_numeric": 512, + "languages": "ar-OM,en,bal,ur", + "name": "Oman", + "neighbours": "SA,YE,AE", + "phone": "968", + "population": 4829483, + "postal_code_format": "###", + "postal_code_regex": "^(\\d{3})$", + "tld": ".om" + }, + "model": "countries_plus.country", + "pk": "OM" + }, + { + "fields": { + "area": "477.00", + "capital": "Saipan", + "continent": "OC", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "CQ", + "geonameid": 4041468, + "iso3": "MNP", + "iso_numeric": 580, + "languages": "fil,tl,zh,ch-MP,en-MP", + "name": "Northern Mariana Islands", + "neighbours": null, + "phone": "+1-670", + "population": 56882, + "postal_code_format": "#####", + "postal_code_regex": "^9695\\d{1}$", + "tld": ".mp" + }, + "model": "countries_plus.country", + "pk": "MP" + }, + { + "fields": { + "area": "34.60", + "capital": "Kingston", + "continent": "OC", + "currency_code": "AUD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "NF", + "geonameid": 2155115, + "iso3": "NFK", + "iso_numeric": 574, + "languages": "en-NF", + "name": "Norfolk Island", + "neighbours": null, + "phone": "672", + "population": 1828, + "postal_code_format": "####", + "postal_code_regex": "^(\\d{4})$", + "tld": ".nf" + }, + "model": "countries_plus.country", + "pk": "NF" + }, + { + "fields": { + "area": "260.00", + "capital": "Alofi", + "continent": "OC", + "currency_code": "NZD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "NE", + "geonameid": 4036232, + "iso3": "NIU", + "iso_numeric": 570, + "languages": "niu,en-NU", + "name": "Niue", + "neighbours": null, + "phone": "683", + "population": 2166, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".nu" + }, + "model": "countries_plus.country", + "pk": "NU" + }, + { + "fields": { + "area": "923768.00", + "capital": "Abuja", + "continent": "AF", + "currency_code": "NGN", + "currency_name": "Naira", + "currency_symbol": "\u20a6", + "equivalent_fips_code": null, + "fips": "NI", + "geonameid": 2328926, + "iso3": "NGA", + "iso_numeric": 566, + "languages": "en-NG,ha,yo,ig,ff", + "name": "Nigeria", + "neighbours": "TD,NE,BJ,CM", + "phone": "234", + "population": 195874740, + "postal_code_format": "######", + "postal_code_regex": "^(\\d{6})$", + "tld": ".ng" + }, + "model": "countries_plus.country", + "pk": "NG" + }, + { + "fields": { + "area": "129494.00", + "capital": "Managua", + "continent": "NA", + "currency_code": "NIO", + "currency_name": "Cordoba", + "currency_symbol": "C$", + "equivalent_fips_code": null, + "fips": "NU", + "geonameid": 3617476, + "iso3": "NIC", + "iso_numeric": 558, + "languages": "es-NI,en", + "name": "Nicaragua", + "neighbours": "CR,HN", + "phone": "505", + "population": 6465513, + "postal_code_format": "###-###-#", + "postal_code_regex": "^(\\d{7})$", + "tld": ".ni" + }, + "model": "countries_plus.country", + "pk": "NI" + }, + { + "fields": { + "area": "268680.00", + "capital": "Wellington", + "continent": "OC", + "currency_code": "NZD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "NZ", + "geonameid": 2186224, + "iso3": "NZL", + "iso_numeric": 554, + "languages": "en-NZ,mi", + "name": "New Zealand", + "neighbours": null, + "phone": "64", + "population": 4885500, + "postal_code_format": "####", + "postal_code_regex": "^(\\d{4})$", + "tld": ".nz" + }, + "model": "countries_plus.country", + "pk": "NZ" + }, + { + "fields": { + "area": "960.00", + "capital": "Willemstad", + "continent": "NA", + "currency_code": "ANG", + "currency_name": "Guilder", + "currency_symbol": "\u0192", + "equivalent_fips_code": null, + "fips": "NT", + "geonameid": 8505032, + "iso3": "ANT", + "iso_numeric": 530, + "languages": "nl-AN,en,es", + "name": "Netherlands Antilles", + "neighbours": "GP", + "phone": "599", + "population": 300000, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".an" + }, + "model": "countries_plus.country", + "pk": "AN" + }, + { + "fields": { + "area": "140800.00", + "capital": "Kathmandu", + "continent": "AS", + "currency_code": "NPR", + "currency_name": "Rupee", + "currency_symbol": "\u20a8", + "equivalent_fips_code": null, + "fips": "NP", + "geonameid": 1282988, + "iso3": "NPL", + "iso_numeric": 524, + "languages": "ne,en", + "name": "Nepal", + "neighbours": "CN,IN", + "phone": "977", + "population": 28087871, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".np" + }, + "model": "countries_plus.country", + "pk": "NP" + }, + { + "fields": { + "area": "21.00", + "capital": "Yaren", + "continent": "OC", + "currency_code": "AUD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "NR", + "geonameid": 2110425, + "iso3": "NRU", + "iso_numeric": 520, + "languages": "na,en-NR", + "name": "Nauru", + "neighbours": null, + "phone": "674", + "population": 12704, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".nr" + }, + "model": "countries_plus.country", + "pk": "NR" + }, + { + "fields": { + "area": "825418.00", + "capital": "Windhoek", + "continent": "AF", + "currency_code": "NAD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "WA", + "geonameid": 3355338, + "iso3": "NAM", + "iso_numeric": 516, + "languages": "en-NA,af,de,hz,naq", + "name": "Namibia", + "neighbours": "ZA,BW,ZM,AO", + "phone": "264", + "population": 2448255, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".na" + }, + "model": "countries_plus.country", + "pk": "NA" + }, + { + "fields": { + "area": "102.00", + "capital": "Plymouth", + "continent": "NA", + "currency_code": "XCD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "MH", + "geonameid": 3578097, + "iso3": "MSR", + "iso_numeric": 500, + "languages": "en-MS", + "name": "Montserrat", + "neighbours": null, + "phone": "+1-664", + "population": 9341, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".ms" + }, + "model": "countries_plus.country", + "pk": "MS" + }, + { + "fields": { + "area": "1.95", + "capital": "Monaco", + "continent": "EU", + "currency_code": "EUR", + "currency_name": "Euro", + "currency_symbol": "\u20ac", + "equivalent_fips_code": null, + "fips": "MN", + "geonameid": 2993457, + "iso3": "MCO", + "iso_numeric": 492, + "languages": "fr-MC,en,it", + "name": "Monaco", + "neighbours": "FR", + "phone": "377", + "population": 38682, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".mc" + }, + "model": "countries_plus.country", + "pk": "MC" + }, + { + "fields": { + "area": "702.00", + "capital": "Palikir", + "continent": "OC", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "FM", + "geonameid": 2081918, + "iso3": "FSM", + "iso_numeric": 583, + "languages": "en-FM,chk,pon,yap,kos,uli,woe,nkr,kpg", + "name": "Micronesia", + "neighbours": null, + "phone": "691", + "population": 112640, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".fm" + }, + "model": "countries_plus.country", + "pk": "FM" + }, + { + "fields": { + "area": "2040.00", + "capital": "Port Louis", + "continent": "AF", + "currency_code": "MUR", + "currency_name": "Rupee", + "currency_symbol": "\u20a8", + "equivalent_fips_code": null, + "fips": "MP", + "geonameid": 934292, + "iso3": "MUS", + "iso_numeric": 480, + "languages": "en-MU,bho,fr", + "name": "Mauritius", + "neighbours": null, + "phone": "230", + "population": 1265303, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".mu" + }, + "model": "countries_plus.country", + "pk": "MU" + }, + { + "fields": { + "area": "181.30", + "capital": "Majuro", + "continent": "OC", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "RM", + "geonameid": 2080185, + "iso3": "MHL", + "iso_numeric": 584, + "languages": "mh,en-MH", + "name": "Marshall Islands", + "neighbours": null, + "phone": "692", + "population": 58413, + "postal_code_format": "#####-####", + "postal_code_regex": "^969\\d{2}(-\\d{4})$", + "tld": ".mh" + }, + "model": "countries_plus.country", + "pk": "MH" + }, + { + "fields": { + "area": "316.00", + "capital": "Valletta", + "continent": "EU", + "currency_code": "EUR", + "currency_name": "Euro", + "currency_symbol": "\u20ac", + "equivalent_fips_code": null, + "fips": "MT", + "geonameid": 2562770, + "iso3": "MLT", + "iso_numeric": 470, + "languages": "mt,en-MT", + "name": "Malta", + "neighbours": null, + "phone": "356", + "population": 483530, + "postal_code_format": "@@@ ####", + "postal_code_regex": "^[A-Z]{3}\\s?\\d{4}$", + "tld": ".mt" + }, + "model": "countries_plus.country", + "pk": "MT" + }, + { + "fields": { + "area": "300.00", + "capital": "Male", + "continent": "AS", + "currency_code": "MVR", + "currency_name": "Rufiyaa", + "currency_symbol": "\u0783.", + "equivalent_fips_code": null, + "fips": "MV", + "geonameid": 1282028, + "iso3": "MDV", + "iso_numeric": 462, + "languages": "dv,en", + "name": "Maldives", + "neighbours": null, + "phone": "960", + "population": 515696, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".mv" + }, + "model": "countries_plus.country", + "pk": "MV" + }, + { + "fields": { + "area": "329750.00", + "capital": "Kuala Lumpur", + "continent": "AS", + "currency_code": "MYR", + "currency_name": "Ringgit", + "currency_symbol": "RM", + "equivalent_fips_code": null, + "fips": "MY", + "geonameid": 1733045, + "iso3": "MYS", + "iso_numeric": 458, + "languages": "ms-MY,en,zh,ta,te,ml,pa,th", + "name": "Malaysia", + "neighbours": "BN,TH,ID", + "phone": "60", + "population": 31528585, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".my" + }, + "model": "countries_plus.country", + "pk": "MY" + }, + { + "fields": { + "area": "1759540.00", + "capital": "Tripoli", + "continent": "AF", + "currency_code": "LYD", + "currency_name": "Dinar", + "currency_symbol": "\u0644.\u062f", + "equivalent_fips_code": null, + "fips": "LY", + "geonameid": 2215636, + "iso3": "LBY", + "iso_numeric": 434, + "languages": "ar-LY,it,en", + "name": "Libya", + "neighbours": "TD,NE,DZ,SD,TN,EG", + "phone": "218", + "population": 6678567, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".ly" + }, + "model": "countries_plus.country", + "pk": "LY" + }, + { + "fields": { + "area": "111370.00", + "capital": "Monrovia", + "continent": "AF", + "currency_code": "LRD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "LI", + "geonameid": 2275384, + "iso3": "LBR", + "iso_numeric": 430, + "languages": "en-LR", + "name": "Liberia", + "neighbours": "SL,CI,GN", + "phone": "231", + "population": 4818977, + "postal_code_format": "####", + "postal_code_regex": "^(\\d{4})$", + "tld": ".lr" + }, + "model": "countries_plus.country", + "pk": "LR" + }, + { + "fields": { + "area": "30355.00", + "capital": "Maseru", + "continent": "AF", + "currency_code": "LSL", + "currency_name": "Loti", + "currency_symbol": "L", + "equivalent_fips_code": null, + "fips": "LT", + "geonameid": 932692, + "iso3": "LSO", + "iso_numeric": 426, + "languages": "en-LS,st,zu,xh", + "name": "Lesotho", + "neighbours": "ZA", + "phone": "266", + "population": 2108132, + "postal_code_format": "###", + "postal_code_regex": "^(\\d{3})$", + "tld": ".ls" + }, + "model": "countries_plus.country", + "pk": "LS" + }, + { + "fields": { + "area": "10400.00", + "capital": "Beirut", + "continent": "AS", + "currency_code": "LBP", + "currency_name": "Pound", + "currency_symbol": "\u0644.\u0644", + "equivalent_fips_code": null, + "fips": "LE", + "geonameid": 272103, + "iso3": "LBN", + "iso_numeric": 422, + "languages": "ar-LB,fr-LB,en,hy", + "name": "Lebanon", + "neighbours": "SY,IL", + "phone": "961", + "population": 6848925, + "postal_code_format": "#### ####|####", + "postal_code_regex": "^(\\d{4}(\\d{4})?)$", + "tld": ".lb" + }, + "model": "countries_plus.country", + "pk": "LB" + }, + { + "fields": { + "area": "236800.00", + "capital": "Vientiane", + "continent": "AS", + "currency_code": "LAK", + "currency_name": "Kip", + "currency_symbol": "\u20ad", + "equivalent_fips_code": null, + "fips": "LA", + "geonameid": 1655842, + "iso3": "LAO", + "iso_numeric": 418, + "languages": "lo,fr,en", + "name": "Laos", + "neighbours": "CN,MM,KH,TH,VN", + "phone": "856", + "population": 7061507, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".la" + }, + "model": "countries_plus.country", + "pk": "LA" + }, + { + "fields": { + "area": "17820.00", + "capital": "Kuwait City", + "continent": "AS", + "currency_code": "KWD", + "currency_name": "Dinar", + "currency_symbol": "\u062f.\u0643", + "equivalent_fips_code": null, + "fips": "KU", + "geonameid": 285570, + "iso3": "KWT", + "iso_numeric": 414, + "languages": "ar-KW,en", + "name": "Kuwait", + "neighbours": "SA,IQ", + "phone": "965", + "population": 4137309, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".kw" + }, + "model": "countries_plus.country", + "pk": "KW" + }, + { + "fields": { + "area": "811.00", + "capital": "Tarawa", + "continent": "OC", + "currency_code": "AUD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "KR", + "geonameid": 4030945, + "iso3": "KIR", + "iso_numeric": 296, + "languages": "en-KI,gil", + "name": "Kiribati", + "neighbours": null, + "phone": "686", + "population": 115847, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".ki" + }, + "model": "countries_plus.country", + "pk": "KI" + }, + { + "fields": { + "area": "582650.00", + "capital": "Nairobi", + "continent": "AF", + "currency_code": "KES", + "currency_name": "Shilling", + "currency_symbol": "Sh", + "equivalent_fips_code": null, + "fips": "KE", + "geonameid": 192950, + "iso3": "KEN", + "iso_numeric": 404, + "languages": "en-KE,sw-KE", + "name": "Kenya", + "neighbours": "ET,TZ,SS,SO,UG", + "phone": "254", + "population": 51393010, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".ke" + }, + "model": "countries_plus.country", + "pk": "KE" + }, + { + "fields": { + "area": "92300.00", + "capital": "Amman", + "continent": "AS", + "currency_code": "JOD", + "currency_name": "Dinar", + "currency_symbol": "\u062f.\u0627", + "equivalent_fips_code": null, + "fips": "JO", + "geonameid": 248816, + "iso3": "JOR", + "iso_numeric": 400, + "languages": "ar-JO,en", + "name": "Jordan", + "neighbours": "SY,SA,IQ,IL,PS", + "phone": "962", + "population": 9956011, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".jo" + }, + "model": "countries_plus.country", + "pk": "JO" + }, + { + "fields": { + "area": "116.00", + "capital": "Saint Helier", + "continent": "EU", + "currency_code": "GBP", + "currency_name": "Pound", + "currency_symbol": "\u00a3", + "equivalent_fips_code": null, + "fips": "JE", + "geonameid": 3042142, + "iso3": "JEY", + "iso_numeric": 832, + "languages": "en,fr,nrf", + "name": "Jersey", + "neighbours": null, + "phone": "+44-1534", + "population": 90812, + "postal_code_format": "@# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA", + "postal_code_regex": "^((?:(?:[A-PR-UWYZ][A-HK-Y]\\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\\d[A-HJKPS-UW0-9])\\s\\d[ABD-HJLNP-UW-Z]{2})|GIR\\s?0AA)$", + "tld": ".je" + }, + "model": "countries_plus.country", + "pk": "JE" + }, + { + "fields": { + "area": "10991.00", + "capital": "Kingston", + "continent": "NA", + "currency_code": "JMD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "JM", + "geonameid": 3489940, + "iso3": "JAM", + "iso_numeric": 388, + "languages": "en-JM", + "name": "Jamaica", + "neighbours": null, + "phone": "+1-876", + "population": 2934855, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".jm" + }, + "model": "countries_plus.country", + "pk": "JM" + }, + { + "fields": { + "area": "20770.00", + "capital": "Jerusalem", + "continent": "AS", + "currency_code": "ILS", + "currency_name": "Shekel", + "currency_symbol": "\u20aa", + "equivalent_fips_code": null, + "fips": "IS", + "geonameid": 294640, + "iso3": "ISR", + "iso_numeric": 376, + "languages": "he,ar-IL,en-IL,", + "name": "Israel", + "neighbours": "SY,JO,LB,EG,PS", + "phone": "972", + "population": 8883800, + "postal_code_format": "#######", + "postal_code_regex": "^(\\d{7}|\\d{5})$", + "tld": ".il" + }, + "model": "countries_plus.country", + "pk": "IL" + }, + { + "fields": { + "area": "572.00", + "capital": "Douglas", + "continent": "EU", + "currency_code": "GBP", + "currency_name": "Pound", + "currency_symbol": "\u00a3", + "equivalent_fips_code": null, + "fips": "IM", + "geonameid": 3042225, + "iso3": "IMN", + "iso_numeric": 833, + "languages": "en,gv", + "name": "Isle of Man", + "neighbours": null, + "phone": "+44-1624", + "population": 84077, + "postal_code_format": "@# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA", + "postal_code_regex": "^((?:(?:[A-PR-UWYZ][A-HK-Y]\\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\\d[A-HJKPS-UW0-9])\\s\\d[ABD-HJLNP-UW-Z]{2})|GIR\\s?0AA)$", + "tld": ".im" + }, + "model": "countries_plus.country", + "pk": "IM" + }, + { + "fields": { + "area": "70280.00", + "capital": "Dublin", + "continent": "EU", + "currency_code": "EUR", + "currency_name": "Euro", + "currency_symbol": "\u20ac", + "equivalent_fips_code": null, + "fips": "EI", + "geonameid": 2963597, + "iso3": "IRL", + "iso_numeric": 372, + "languages": "en-IE,ga-IE", + "name": "Ireland", + "neighbours": "GB", + "phone": "353", + "population": 4853506, + "postal_code_format": "@@@ @@@@", + "postal_code_regex": "^(D6W|[AC-FHKNPRTV-Y][0-9]{2})\\s?([AC-FHKNPRTV-Y0-9]{4})", + "tld": ".ie" + }, + "model": "countries_plus.country", + "pk": "IE" + }, + { + "fields": { + "area": "1919440.00", + "capital": "Jakarta", + "continent": "AS", + "currency_code": "IDR", + "currency_name": "Rupiah", + "currency_symbol": "Rp", + "equivalent_fips_code": null, + "fips": "ID", + "geonameid": 1643084, + "iso3": "IDN", + "iso_numeric": 360, + "languages": "id,en,nl,jv", + "name": "Indonesia", + "neighbours": "PG,TL,MY", + "phone": "62", + "population": 267663435, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".id" + }, + "model": "countries_plus.country", + "pk": "ID" + }, + { + "fields": { + "area": "3287590.00", + "capital": "New Delhi", + "continent": "AS", + "currency_code": "INR", + "currency_name": "Rupee", + "currency_symbol": "\u20a8", + "equivalent_fips_code": null, + "fips": "IN", + "geonameid": 1269750, + "iso3": "IND", + "iso_numeric": 356, + "languages": "en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc", + "name": "India", + "neighbours": "CN,NP,MM,BT,PK,BD", + "phone": "91", + "population": 1352617328, + "postal_code_format": "######", + "postal_code_regex": "^(\\d{6})$", + "tld": ".in" + }, + "model": "countries_plus.country", + "pk": "IN" + }, + { + "fields": { + "area": "103000.00", + "capital": "Reykjavik", + "continent": "EU", + "currency_code": "ISK", + "currency_name": "Krona", + "currency_symbol": "kr", + "equivalent_fips_code": null, + "fips": "IC", + "geonameid": 2629691, + "iso3": "ISL", + "iso_numeric": 352, + "languages": "is,en,de,da,sv,no", + "name": "Iceland", + "neighbours": null, + "phone": "354", + "population": 353574, + "postal_code_format": "###", + "postal_code_regex": "^(\\d{3})$", + "tld": ".is" + }, + "model": "countries_plus.country", + "pk": "IS" + }, + { + "fields": { + "area": "1092.00", + "capital": "Hong Kong", + "continent": "AS", + "currency_code": "HKD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "HK", + "geonameid": 1819730, + "iso3": "HKG", + "iso_numeric": 344, + "languages": "zh-HK,yue,zh,en", + "name": "Hong Kong", + "neighbours": null, + "phone": "852", + "population": 7451000, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".hk" + }, + "model": "countries_plus.country", + "pk": "HK" + }, + { + "fields": { + "area": "214970.00", + "capital": "Georgetown", + "continent": "SA", + "currency_code": "GYD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "GY", + "geonameid": 3378535, + "iso3": "GUY", + "iso_numeric": 328, + "languages": "en-GY", + "name": "Guyana", + "neighbours": "SR,BR,VE", + "phone": "592", + "population": 779004, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".gy" + }, + "model": "countries_plus.country", + "pk": "GY" + }, + { + "fields": { + "area": "78.00", + "capital": "St Peter Port", + "continent": "EU", + "currency_code": "GBP", + "currency_name": "Pound", + "currency_symbol": "\u00a3", + "equivalent_fips_code": null, + "fips": "GK", + "geonameid": 3042362, + "iso3": "GGY", + "iso_numeric": 831, + "languages": "en,nrf", + "name": "Guernsey", + "neighbours": null, + "phone": "+44-1481", + "population": 65228, + "postal_code_format": "@# #@@|@## #@@|@@# #@@|@@## #@@|@#@ #@@|@@#@ #@@|GIR0AA", + "postal_code_regex": "^((?:(?:[A-PR-UWYZ][A-HK-Y]\\d[ABEHMNPRV-Y0-9]|[A-PR-UWYZ]\\d[A-HJKPS-UW0-9])\\s\\d[ABD-HJLNP-UW-Z]{2})|GIR\\s?0AA)$", + "tld": ".gg" + }, + "model": "countries_plus.country", + "pk": "GG" + }, + { + "fields": { + "area": "549.00", + "capital": "Hagatna", + "continent": "OC", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "GQ", + "geonameid": 4043988, + "iso3": "GUM", + "iso_numeric": 316, + "languages": "en-GU,ch-GU", + "name": "Guam", + "neighbours": null, + "phone": "+1-671", + "population": 165768, + "postal_code_format": "969##", + "postal_code_regex": "^(969\\d{2})$", + "tld": ".gu" + }, + "model": "countries_plus.country", + "pk": "GU" + }, + { + "fields": { + "area": "344.00", + "capital": "St. George's", + "continent": "NA", + "currency_code": "XCD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "GJ", + "geonameid": 3580239, + "iso3": "GRD", + "iso_numeric": 308, + "languages": "en-GD", + "name": "Grenada", + "neighbours": null, + "phone": "+1-473", + "population": 111454, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".gd" + }, + "model": "countries_plus.country", + "pk": "GD" + }, + { + "fields": { + "area": "2166086.00", + "capital": "Nuuk", + "continent": "NA", + "currency_code": "DKK", + "currency_name": "Krone", + "currency_symbol": "kr", + "equivalent_fips_code": null, + "fips": "GL", + "geonameid": 3425505, + "iso3": "GRL", + "iso_numeric": 304, + "languages": "kl,da-GL,en", + "name": "Greenland", + "neighbours": null, + "phone": "299", + "population": 56025, + "postal_code_format": "####", + "postal_code_regex": "^(\\d{4})$", + "tld": ".gl" + }, + "model": "countries_plus.country", + "pk": "GL" + }, + { + "fields": { + "area": "131940.00", + "capital": "Athens", + "continent": "EU", + "currency_code": "EUR", + "currency_name": "Euro", + "currency_symbol": "\u20ac", + "equivalent_fips_code": null, + "fips": "GR", + "geonameid": 390903, + "iso3": "GRC", + "iso_numeric": 300, + "languages": "el-GR,en,fr", + "name": "Greece", + "neighbours": "AL,MK,TR,BG", + "phone": "30", + "population": 10727668, + "postal_code_format": "### ##", + "postal_code_regex": "^(\\d{5})$", + "tld": ".gr" + }, + "model": "countries_plus.country", + "pk": "GR" + }, + { + "fields": { + "area": "6.50", + "capital": "Gibraltar", + "continent": "EU", + "currency_code": "GIP", + "currency_name": "Pound", + "currency_symbol": "\u00a3", + "equivalent_fips_code": null, + "fips": "GI", + "geonameid": 2411586, + "iso3": "GIB", + "iso_numeric": 292, + "languages": "en-GI,es,it,pt", + "name": "Gibraltar", + "neighbours": "ES", + "phone": "350", + "population": 33718, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".gi" + }, + "model": "countries_plus.country", + "pk": "GI" + }, + { + "fields": { + "area": "239460.00", + "capital": "Accra", + "continent": "AF", + "currency_code": "GHS", + "currency_name": "Cedi", + "currency_symbol": "\u20b5", + "equivalent_fips_code": null, + "fips": "GH", + "geonameid": 2300660, + "iso3": "GHA", + "iso_numeric": 288, + "languages": "en-GH,ak,ee,tw", + "name": "Ghana", + "neighbours": "CI,TG,BF", + "phone": "233", + "population": 29767108, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".gh" + }, + "model": "countries_plus.country", + "pk": "GH" + }, + { + "fields": { + "area": "11300.00", + "capital": "Banjul", + "continent": "AF", + "currency_code": "GMD", + "currency_name": "Dalasi", + "currency_symbol": "D", + "equivalent_fips_code": null, + "fips": "GA", + "geonameid": 2413451, + "iso3": "GMB", + "iso_numeric": 270, + "languages": "en-GM,mnk,wof,wo,ff", + "name": "Gambia", + "neighbours": "SN", + "phone": "220", + "population": 2280102, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".gm" + }, + "model": "countries_plus.country", + "pk": "GM" + }, + { + "fields": { + "area": "18270.00", + "capital": "Suva", + "continent": "OC", + "currency_code": "FJD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "FJ", + "geonameid": 2205218, + "iso3": "FJI", + "iso_numeric": 242, + "languages": "en-FJ,fj", + "name": "Fiji", + "neighbours": null, + "phone": "679", + "population": 883483, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".fj" + }, + "model": "countries_plus.country", + "pk": "FJ" + }, + { + "fields": { + "area": "12173.00", + "capital": "Stanley", + "continent": "SA", + "currency_code": "FKP", + "currency_name": "Pound", + "currency_symbol": "\u00a3", + "equivalent_fips_code": null, + "fips": "FK", + "geonameid": 3474414, + "iso3": "FLK", + "iso_numeric": 238, + "languages": "en-FK", + "name": "Falkland Islands", + "neighbours": null, + "phone": "500", + "population": 2638, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".fk" + }, + "model": "countries_plus.country", + "pk": "FK" + }, + { + "fields": { + "area": "1127127.00", + "capital": "Addis Ababa", + "continent": "AF", + "currency_code": "ETB", + "currency_name": "Birr", + "currency_symbol": "Br", + "equivalent_fips_code": null, + "fips": "ET", + "geonameid": 337996, + "iso3": "ETH", + "iso_numeric": 231, + "languages": "am,en-ET,om-ET,ti-ET,so-ET,sid", + "name": "Ethiopia", + "neighbours": "ER,KE,SD,SS,SO,DJ", + "phone": "251", + "population": 109224559, + "postal_code_format": "####", + "postal_code_regex": "^(\\d{4})$", + "tld": ".et" + }, + "model": "countries_plus.country", + "pk": "ET" + }, + { + "fields": { + "area": "17363.00", + "capital": "Mbabane", + "continent": "AF", + "currency_code": "SZL", + "currency_name": "Lilangeni", + "currency_symbol": "L", + "equivalent_fips_code": null, + "fips": "WZ", + "geonameid": 934841, + "iso3": "SWZ", + "iso_numeric": 748, + "languages": "en-SZ,ss-SZ", + "name": "Eswatini", + "neighbours": "ZA,MZ", + "phone": "268", + "population": 1136191, + "postal_code_format": "@###", + "postal_code_regex": "^([A-Z]\\d{3})$", + "tld": ".sz" + }, + "model": "countries_plus.country", + "pk": "SZ" + }, + { + "fields": { + "area": "1001450.00", + "capital": "Cairo", + "continent": "AF", + "currency_code": "EGP", + "currency_name": "Pound", + "currency_symbol": "\u00a3,\u062c.\u0645", + "equivalent_fips_code": null, + "fips": "EG", + "geonameid": 357994, + "iso3": "EGY", + "iso_numeric": 818, + "languages": "ar-EG,en,fr", + "name": "Egypt", + "neighbours": "LY,SD,IL,PS", + "phone": "20", + "population": 98423595, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".eg" + }, + "model": "countries_plus.country", + "pk": "EG" + }, + { + "fields": { + "area": "754.00", + "capital": "Roseau", + "continent": "NA", + "currency_code": "XCD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "DO", + "geonameid": 3575830, + "iso3": "DMA", + "iso_numeric": 212, + "languages": "en-DM", + "name": "Dominica", + "neighbours": null, + "phone": "+1-767", + "population": 71625, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".dm" + }, + "model": "countries_plus.country", + "pk": "DM" + }, + { + "fields": { + "area": "43094.00", + "capital": "Copenhagen", + "continent": "EU", + "currency_code": "DKK", + "currency_name": "Krone", + "currency_symbol": "kr", + "equivalent_fips_code": null, + "fips": "DA", + "geonameid": 2623032, + "iso3": "DNK", + "iso_numeric": 208, + "languages": "da-DK,en,fo,de-DK", + "name": "Denmark", + "neighbours": "DE", + "phone": "45", + "population": 5797446, + "postal_code_format": "####", + "postal_code_regex": "^(\\d{4})$", + "tld": ".dk" + }, + "model": "countries_plus.country", + "pk": "DK" + }, + { + "fields": { + "area": "9250.00", + "capital": "Nicosia", + "continent": "EU", + "currency_code": "EUR", + "currency_name": "Euro", + "currency_symbol": "\u20ac", + "equivalent_fips_code": null, + "fips": "CY", + "geonameid": 146669, + "iso3": "CYP", + "iso_numeric": 196, + "languages": "el-CY,tr-CY,en", + "name": "Cyprus", + "neighbours": null, + "phone": "357", + "population": 1189265, + "postal_code_format": "####", + "postal_code_regex": "^(\\d{4})$", + "tld": ".cy" + }, + "model": "countries_plus.country", + "pk": "CY" + }, + { + "fields": { + "area": "51100.00", + "capital": "San Jose", + "continent": "NA", + "currency_code": "CRC", + "currency_name": "Colon", + "currency_symbol": "\u20a1", + "equivalent_fips_code": null, + "fips": "CS", + "geonameid": 3624060, + "iso3": "CRI", + "iso_numeric": 188, + "languages": "es-CR,en", + "name": "Costa Rica", + "neighbours": "PA,NI", + "phone": "506", + "population": 4999441, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".cr" + }, + "model": "countries_plus.country", + "pk": "CR" + }, + { + "fields": { + "area": "240.00", + "capital": "Avarua", + "continent": "OC", + "currency_code": "NZD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "CW", + "geonameid": 1899402, + "iso3": "COK", + "iso_numeric": 184, + "languages": "en-CK,mi", + "name": "Cook Islands", + "neighbours": null, + "phone": "682", + "population": 21388, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".ck" + }, + "model": "countries_plus.country", + "pk": "CK" + }, + { + "fields": { + "area": "14.00", + "capital": "West Island", + "continent": "AS", + "currency_code": "AUD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "CK", + "geonameid": 1547376, + "iso3": "CCK", + "iso_numeric": 166, + "languages": "ms-CC,en", + "name": "Cocos Islands", + "neighbours": null, + "phone": "61", + "population": 628, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".cc" + }, + "model": "countries_plus.country", + "pk": "CC" + }, + { + "fields": { + "area": "135.00", + "capital": "Flying Fish Cove", + "continent": "OC", + "currency_code": "AUD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "KT", + "geonameid": 2078138, + "iso3": "CXR", + "iso_numeric": 162, + "languages": "en,zh,ms-CC", + "name": "Christmas Island", + "neighbours": null, + "phone": "61", + "population": 1500, + "postal_code_format": "####", + "postal_code_regex": "^(\\d{4})$", + "tld": ".cx" + }, + "model": "countries_plus.country", + "pk": "CX" + }, + { + "fields": { + "area": "262.00", + "capital": "George Town", + "continent": "NA", + "currency_code": "KYD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "CJ", + "geonameid": 3580718, + "iso3": "CYM", + "iso_numeric": 136, + "languages": "en-KY", + "name": "Cayman Islands", + "neighbours": null, + "phone": "+1-345", + "population": 64174, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".ky" + }, + "model": "countries_plus.country", + "pk": "KY" + }, + { + "fields": { + "area": "9984670.00", + "capital": "Ottawa", + "continent": "NA", + "currency_code": "CAD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "CA", + "geonameid": 6251999, + "iso3": "CAN", + "iso_numeric": 124, + "languages": "en-CA,fr-CA,iu", + "name": "Canada", + "neighbours": "US", + "phone": "1", + "population": 37058856, + "postal_code_format": "@#@ #@#", + "postal_code_regex": "^([ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJKLMNPRSTVWXYZ]) ?(\\d[ABCEGHJKLMNPRSTVWXYZ]\\d)$ ", + "tld": ".ca" + }, + "model": "countries_plus.country", + "pk": "CA" + }, + { + "fields": { + "area": "475440.00", + "capital": "Yaounde", + "continent": "AF", + "currency_code": "XAF", + "currency_name": "Franc", + "currency_symbol": "Fr", + "equivalent_fips_code": null, + "fips": "CM", + "geonameid": 2233387, + "iso3": "CMR", + "iso_numeric": 120, + "languages": "en-CM,fr-CM", + "name": "Cameroon", + "neighbours": "TD,CF,GA,GQ,CG,NG", + "phone": "237", + "population": 25216237, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".cm" + }, + "model": "countries_plus.country", + "pk": "CM" + }, + { + "fields": { + "area": "181040.00", + "capital": "Phnom Penh", + "continent": "AS", + "currency_code": "KHR", + "currency_name": "Riels", + "currency_symbol": "\u17db", + "equivalent_fips_code": null, + "fips": "CB", + "geonameid": 1831722, + "iso3": "KHM", + "iso_numeric": 116, + "languages": "km,fr,en", + "name": "Cambodia", + "neighbours": "LA,TH,VN", + "phone": "855", + "population": 16249798, + "postal_code_format": "#####", + "postal_code_regex": "^(\\d{5})$", + "tld": ".kh" + }, + "model": "countries_plus.country", + "pk": "KH" + }, + { + "fields": { + "area": "5770.00", + "capital": "Bandar Seri Begawan", + "continent": "AS", + "currency_code": "BND", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "BX", + "geonameid": 1820814, + "iso3": "BRN", + "iso_numeric": 96, + "languages": "ms-BN,en-BN", + "name": "Brunei", + "neighbours": "MY", + "phone": "673", + "population": 428962, + "postal_code_format": "@@####", + "postal_code_regex": "^([A-Z]{2}\\d{4})$", + "tld": ".bn" + }, + "model": "countries_plus.country", + "pk": "BN" + }, + { + "fields": { + "area": "153.00", + "capital": "Road Town", + "continent": "NA", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "VI", + "geonameid": 3577718, + "iso3": "VGB", + "iso_numeric": 92, + "languages": "en-VG", + "name": "British Virgin Islands", + "neighbours": null, + "phone": "+1-284", + "population": 29802, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".vg" + }, + "model": "countries_plus.country", + "pk": "VG" + }, + { + "fields": { + "area": "60.00", + "capital": "Diego Garcia", + "continent": "AS", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "IO", + "geonameid": 1282588, + "iso3": "IOT", + "iso_numeric": 86, + "languages": "en-IO", + "name": "British Indian Ocean Territory", + "neighbours": null, + "phone": "246", + "population": 4000, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".io" + }, + "model": "countries_plus.country", + "pk": "IO" + }, + { + "fields": { + "area": "8511965.00", + "capital": "Brasilia", + "continent": "SA", + "currency_code": "BRL", + "currency_name": "Real", + "currency_symbol": "R$", + "equivalent_fips_code": null, + "fips": "BR", + "geonameid": 3469034, + "iso3": "BRA", + "iso_numeric": 76, + "languages": "pt-BR,es,en,fr", + "name": "Brazil", + "neighbours": "SR,PE,BO,UY,GY,PY,GF,VE,CO,AR", + "phone": "55", + "population": 209469333, + "postal_code_format": "#####-###", + "postal_code_regex": "^\\d{5}-\\d{3}$", + "tld": ".br" + }, + "model": "countries_plus.country", + "pk": "BR" + }, + { + "fields": { + "area": "600370.00", + "capital": "Gaborone", + "continent": "AF", + "currency_code": "BWP", + "currency_name": "Pula", + "currency_symbol": "P", + "equivalent_fips_code": null, + "fips": "BC", + "geonameid": 933860, + "iso3": "BWA", + "iso_numeric": 72, + "languages": "en-BW,tn-BW", + "name": "Botswana", + "neighbours": "ZW,ZA,NA", + "phone": "267", + "population": 2254126, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".bw" + }, + "model": "countries_plus.country", + "pk": "BW" + }, + { + "fields": { + "area": "328.00", + "capital": null, + "continent": "NA", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": null, + "geonameid": 7626844, + "iso3": "BES", + "iso_numeric": 535, + "languages": "nl,pap,en", + "name": "Bonaire, Saint Eustatius and Saba ", + "neighbours": null, + "phone": "599", + "population": 18012, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".bq" + }, + "model": "countries_plus.country", + "pk": "BQ" + }, + { + "fields": { + "area": "53.00", + "capital": "Hamilton", + "continent": "NA", + "currency_code": "BMD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "BD", + "geonameid": 3573345, + "iso3": "BMU", + "iso_numeric": 60, + "languages": "en-BM,pt", + "name": "Bermuda", + "neighbours": null, + "phone": "+1-441", + "population": 63968, + "postal_code_format": "@@ ##", + "postal_code_regex": "^([A-Z]{2}\\d{2})$", + "tld": ".bm" + }, + "model": "countries_plus.country", + "pk": "BM" + }, + { + "fields": { + "area": "22966.00", + "capital": "Belmopan", + "continent": "NA", + "currency_code": "BZD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "BH", + "geonameid": 3582678, + "iso3": "BLZ", + "iso_numeric": 84, + "languages": "en-BZ,es", + "name": "Belize", + "neighbours": "GT,MX", + "phone": "501", + "population": 383071, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".bz" + }, + "model": "countries_plus.country", + "pk": "BZ" + }, + { + "fields": { + "area": "431.00", + "capital": "Bridgetown", + "continent": "NA", + "currency_code": "BBD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "BB", + "geonameid": 3374084, + "iso3": "BRB", + "iso_numeric": 52, + "languages": "en-BB", + "name": "Barbados", + "neighbours": null, + "phone": "+1-246", + "population": 286641, + "postal_code_format": "BB#####", + "postal_code_regex": "^(?:BB)*(\\d{5})$", + "tld": ".bb" + }, + "model": "countries_plus.country", + "pk": "BB" + }, + { + "fields": { + "area": "144000.00", + "capital": "Dhaka", + "continent": "AS", + "currency_code": "BDT", + "currency_name": "Taka", + "currency_symbol": "\u09f3", + "equivalent_fips_code": null, + "fips": "BG", + "geonameid": 1210997, + "iso3": "BGD", + "iso_numeric": 50, + "languages": "bn-BD,en", + "name": "Bangladesh", + "neighbours": "MM,IN", + "phone": "880", + "population": 161356039, + "postal_code_format": "####", + "postal_code_regex": "^(\\d{4})$", + "tld": ".bd" + }, + "model": "countries_plus.country", + "pk": "BD" + }, + { + "fields": { + "area": "665.00", + "capital": "Manama", + "continent": "AS", + "currency_code": "BHD", + "currency_name": "Dinar", + "currency_symbol": "\u0628.\u062f", + "equivalent_fips_code": null, + "fips": "BA", + "geonameid": 290291, + "iso3": "BHR", + "iso_numeric": 48, + "languages": "ar-BH,en,fa,ur", + "name": "Bahrain", + "neighbours": null, + "phone": "973", + "population": 1569439, + "postal_code_format": "####|###", + "postal_code_regex": "^(\\d{3}\\d?)$", + "tld": ".bh" + }, + "model": "countries_plus.country", + "pk": "BH" + }, + { + "fields": { + "area": "13940.00", + "capital": "Nassau", + "continent": "NA", + "currency_code": "BSD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "BF", + "geonameid": 3572887, + "iso3": "BHS", + "iso_numeric": 44, + "languages": "en-BS", + "name": "Bahamas", + "neighbours": null, + "phone": "+1-242", + "population": 385640, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".bs" + }, + "model": "countries_plus.country", + "pk": "BS" + }, + { + "fields": { + "area": "7686850.00", + "capital": "Canberra", + "continent": "OC", + "currency_code": "AUD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "AS", + "geonameid": 2077456, + "iso3": "AUS", + "iso_numeric": 36, + "languages": "en-AU", + "name": "Australia", + "neighbours": null, + "phone": "61", + "population": 24992369, + "postal_code_format": "####", + "postal_code_regex": "^(\\d{4})$", + "tld": ".au" + }, + "model": "countries_plus.country", + "pk": "AU" + }, + { + "fields": { + "area": "193.00", + "capital": "Oranjestad", + "continent": "NA", + "currency_code": "AWG", + "currency_name": "Guilder", + "currency_symbol": "\u0192", + "equivalent_fips_code": null, + "fips": "AA", + "geonameid": 3577279, + "iso3": "ABW", + "iso_numeric": 533, + "languages": "nl-AW,pap,es,en", + "name": "Aruba", + "neighbours": null, + "phone": "297", + "population": 105845, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".aw" + }, + "model": "countries_plus.country", + "pk": "AW" + }, + { + "fields": { + "area": "2766890.00", + "capital": "Buenos Aires", + "continent": "SA", + "currency_code": "ARS", + "currency_name": "Peso", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "AR", + "geonameid": 3865483, + "iso3": "ARG", + "iso_numeric": 32, + "languages": "es-AR,en,it,de,fr,gn", + "name": "Argentina", + "neighbours": "CL,BO,UY,PY,BR", + "phone": "54", + "population": 44494502, + "postal_code_format": "@####@@@", + "postal_code_regex": "^[A-Z]?\\d{4}[A-Z]{0,3}$", + "tld": ".ar" + }, + "model": "countries_plus.country", + "pk": "AR" + }, + { + "fields": { + "area": "443.00", + "capital": "St. John's", + "continent": "NA", + "currency_code": "XCD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "AC", + "geonameid": 3576396, + "iso3": "ATG", + "iso_numeric": 28, + "languages": "en-AG", + "name": "Antigua and Barbuda", + "neighbours": null, + "phone": "+1-268", + "population": 96286, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".ag" + }, + "model": "countries_plus.country", + "pk": "AG" + }, + { + "fields": { + "area": "102.00", + "capital": "The Valley", + "continent": "NA", + "currency_code": "XCD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "AV", + "geonameid": 3573511, + "iso3": "AIA", + "iso_numeric": 660, + "languages": "en-AI", + "name": "Anguilla", + "neighbours": null, + "phone": "+1-264", + "population": 13254, + "postal_code_format": null, + "postal_code_regex": null, + "tld": ".ai" + }, + "model": "countries_plus.country", + "pk": "AI" + }, + { + "fields": { + "area": "199.00", + "capital": "Pago Pago", + "continent": "OC", + "currency_code": "USD", + "currency_name": "Dollar", + "currency_symbol": "$", + "equivalent_fips_code": null, + "fips": "AQ", + "geonameid": 5880801, + "iso3": "ASM", + "iso_numeric": 16, + "languages": "en-AS,sm,to", + "name": "American Samoa", + "neighbours": null, + "phone": "+1-684", + "population": 55465, + "postal_code_format": "#####-####", + "postal_code_regex": "96799", + "tld": ".as" + }, + "model": "countries_plus.country", + "pk": "AS" + }, + { + "fields": { + "area": null, + "capital": null, + "continent": "AF", + "currency_code": null, + "currency_name": null, + "currency_symbol": null, + "equivalent_fips_code": null, + "fips": null, + "geonameid": null, + "iso3": "AAA", + "iso_numeric": 10000, + "languages": null, + "name": "African Regional Bodies", + "neighbours": null, + "phone": null, + "population": null, + "postal_code_format": null, + "postal_code_regex": null, + "tld": null + }, + "model": "countries_plus.country", + "pk": "AA" + }, + { + "fields": { + "code": "au", + "jurisdiction": "AA", + "name": "African Union (AU)" + }, + "model": "peachjam.locality", + "pk": 1 + }, + { + "fields": { + "countries_spoken": [ + "AS", + "AI", + "AG", + "AR", + "AW", + "AU", + "BS", + "BH", + "BD", + "BB", + "BZ", + "BM", + "BQ", + "BW", + "BR", + "IO", + "VG", + "BN", + "KH", + "CM", + "CA", + "KY", + "CX", + "CC", + "CK", + "CR", + "CY", + "DK", + "DM", + "EG", + "SZ", + "ET", + "FK", + "FJ", + "GM", + "GH", + "GI", + "GR", + "GL", + "GD", + "GU", + "GG", + "GY", + "HK", + "IS", + "IN", + "ID", + "IE", + "IM", + "IL", + "JM", + "JE", + "JO", + "KE", + "KI", + "KW", + "LA", + "LB", + "LS", + "LR", + "LY", + "MY", + "MV", + "MT", + "MH", + "MU", + "FM", + "MC", + "MS", + "NA", + "NR", + "NP", + "AN", + "NZ", + "NI", + "NG", + "NU", + "NF", + "MP", + "OM", + "PK", + "PW", + "PA", + "PG", + "PH", + "PN", + "PR", + "RW", + "SH", + "KN", + "LC", + "VC", + "WS", + "SC", + "SL", + "SG", + "SX", + "SB", + "SO", + "ZA", + "GS", + "KR", + "SS", + "LK", + "SD", + "SR", + "SY", + "TZ", + "TH", + "TL", + "TK", + "TO", + "TT", + "TC", + "TV", + "UG", + "AE", + "GB", + "US", + "UM", + "VI", + "VU", + "VN", + "ZM", + "ZW" + ], + "family": "Indo-European", + "iso_639_2B": "eng", + "iso_639_2T": "eng", + "iso_639_3": "eng", + "name_en": "English", + "name_native": "English", + "notes": "" + }, + "model": "languages_plus.language", + "pk": "en" + } ] diff --git a/peachjam/forms.py b/peachjam/forms.py index 1daebddf3..2ae63cede 100644 --- a/peachjam/forms.py +++ b/peachjam/forms.py @@ -191,7 +191,7 @@ def filter_queryset(self, queryset, exclude=None, filter_q=False): queryset = queryset.filter(judges__name__in=judges).distinct() if natures and exclude != "natures": - queryset = queryset.filter(nature__name__in=natures) + queryset = queryset.filter(nature__code__in=natures) if localities and exclude != "localities": queryset = queryset.filter(locality__name__in=localities) @@ -203,10 +203,10 @@ def filter_queryset(self, queryset, exclude=None, filter_q=False): queryset = queryset.filter(attorneys__name__in=attorneys).distinct() if outcomes and exclude != "outcomes": - queryset = queryset.filter(outcomes__name__in=outcomes).distinct() + queryset = queryset.filter(outcomes__code__in=outcomes).distinct() if taxonomies and exclude != "taxonomies": - queryset = queryset.filter(taxonomies__topic__name__in=taxonomies) + queryset = queryset.filter(taxonomies__topic__slug__in=taxonomies) if filter_q and q and exclude != "q": queryset = queryset.filter(title__icontains=q) diff --git a/peachjam/js/components/FindDocuments/index.vue b/peachjam/js/components/FindDocuments/index.vue index e6304625f..0c2e269df 100644 --- a/peachjam/js/components/FindDocuments/index.vue +++ b/peachjam/js/components/FindDocuments/index.vue @@ -213,7 +213,6 @@ {{ $t('Jurisdiction') }} {{ $t('Locality') }} {{ $t('Matter type') }} - {{ $t('Document nature') }} {{ $t('Language') }} {{ $t('Year') }} @@ -281,7 +280,7 @@ export default { const facets = [ { title: this.$t('Document type'), - name: 'doc_type', + name: 'nature', type: 'checkboxes', value: [], options: [] @@ -350,13 +349,6 @@ export default { value: [], options: [] }, - { - title: this.$t('Document nature'), - name: 'nature', - type: 'checkboxes', - value: [], - options: [] - }, { title: this.$t('Language'), name: 'language', diff --git a/peachjam/migrations/0152_backfill_natures.py b/peachjam/migrations/0152_backfill_natures.py new file mode 100644 index 000000000..deb35b007 --- /dev/null +++ b/peachjam/migrations/0152_backfill_natures.py @@ -0,0 +1,43 @@ +# Generated by Django 4.2.14 on 2024-08-29 13:58 + +from django.db import migrations + + +def forwards(apps, schema_editor): + # backfill natures for existing documents + DocumentNature = apps.get_model("peachjam", "DocumentNature") + + DOC_TYPES = [ + ("core_document", "document", "Document"), + ("gazette", "gazette", "Gazette"), + ("generic_document", "document", "Document"), + ("judgment", "judgment", "Judgment"), + ("legal_instrument", "legal-instrument", "Legal Instrument"), + ("legislation", "act", "Act"), + ("book", "book", "Book"), + ("journal", "journal", "Journal"), + ] + for doc_type, nature, name in DOC_TYPES: + nature = DocumentNature.objects.get_or_create(code=nature)[0] + # get_or_create with defaults={name: name} doesn't seem to work + if not nature.name: + nature.name = name + nature.name_en = name + nature.save() + + # run raw SQL to do the update for this doc_type and nature id + with schema_editor.connection.cursor() as cursor: + cursor.execute( + f"UPDATE peachjam_coredocument SET nature_id = {nature.id} WHERE doc_type = '{doc_type}' AND nature_id IS NULL" + ) + + +class Migration(migrations.Migration): + + dependencies = [ + ("peachjam", "0151_folder_peachjamsettings_allow_save_documents_and_more"), + ] + + operations = [ + migrations.RunPython(forwards, migrations.RunPython.noop), + ] diff --git a/peachjam/migrations/0153_alter_coredocument_nature.py b/peachjam/migrations/0153_alter_coredocument_nature.py new file mode 100644 index 000000000..d2bd86e97 --- /dev/null +++ b/peachjam/migrations/0153_alter_coredocument_nature.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.14 on 2024-08-29 14:06 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("peachjam", "0152_backfill_natures"), + ] + + operations = [ + migrations.AlterField( + model_name="coredocument", + name="nature", + field=models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, + to="peachjam.documentnature", + verbose_name="nature", + ), + ), + ] diff --git a/peachjam/migrations/0154_backfill_nature_elasticsearch.py b/peachjam/migrations/0154_backfill_nature_elasticsearch.py new file mode 100644 index 000000000..56047dd6f --- /dev/null +++ b/peachjam/migrations/0154_backfill_nature_elasticsearch.py @@ -0,0 +1,68 @@ +# Generated by Django 4.2.14 on 2024-08-30 08:50 +import os + +from django.db import migrations + + +def forwards(apps, schema_editor): + from django.conf import settings + from django_elasticsearch_dsl.registries import registry + + DOC_TYPES = [ + ("Gazette", "Gazette"), + ("Generic Document", "Document"), + ("Judgment", "Judgment"), + ("Legal Instrument", "Legal Instrument"), + ("Legislation", "Act"), + ("Book", "Book"), + ("Journal", "Journal"), + ] + + if not settings.DEBUG and os.environ.get("ELASTICSEARCH_HOST"): + for ix in registry.get_indices(): + if not ix._mapping: + continue + + print(f"Backfilling natures for {ix._name}") + + for doc_type, nature in DOC_TYPES: + # update all documents of this doc_type that don't have a nature + # uses English as the default for all the language fields, too + suffixes = ["", "_en", "_sw", "_fr", "_pt"] + script = ";".join( + f"ctx._source.nature{suffix} = '{nature}'" for suffix in suffixes + ) + + # run raw ES to do the update for this doc_type and nature + ix.connection.update_by_query( + index=ix._name, + body={ + "script": { + "source": script, + }, + "query": { + "bool": { + "must": [ + { + "term": { + "doc_type": doc_type, + } + } + ], + "must_not": {"exists": {"field": "nature"}}, + } + }, + }, + wait_for_completion=False, + ) + + +class Migration(migrations.Migration): + + dependencies = [ + ("peachjam", "0153_alter_coredocument_nature"), + ] + + operations = [ + migrations.RunPython(forwards, migrations.RunPython.noop), + ] diff --git a/peachjam/models/core_document_model.py b/peachjam/models/core_document_model.py index 89c94f2ea..176b88f42 100644 --- a/peachjam/models/core_document_model.py +++ b/peachjam/models/core_document_model.py @@ -306,6 +306,17 @@ def best_for_frbr_uri(self, frbr_uri, lang): class CoreDocument(PolymorphicModel): + # There are three ways of indicating a document's type: + # + # 1. doc_type: This is historical and not widely used, since PolymorphicModel does the bulk of the work for us. + # It is used where we need to know the django Model to use for the document. There is a chance + # we could remove this and rely on PolymorphicModel. + # + # 2. frbr_uri_doctype: the doc type used in the FRBR URI. There is a list of allowed values. Usually, each + # value has a concrete django Model, such as act -> Legislation. + # + # 3. nature: a human-friendly label for the document type, which can be more specific than the other two. + DOC_TYPE_CHOICES = ( ("core_document", "Core Document"), ("gazette", "Gazette"), @@ -317,6 +328,10 @@ class CoreDocument(PolymorphicModel): ("journal", "Journal"), ) + # The name of the default nature to use for this type of document, if one is not set. This allows us to ensure + # that all documents have a nature. + default_nature = ("document", "Document") + objects = CoreDocumentManager.from_queryset(CoreDocumentQuerySet)() work = models.ForeignKey( @@ -367,8 +382,8 @@ class CoreDocument(PolymorphicModel): nature = models.ForeignKey( DocumentNature, on_delete=models.PROTECT, - null=True, - blank=True, + null=False, + blank=False, verbose_name=_("nature"), ) @@ -566,10 +581,22 @@ def generate_work_frbr_uri(self): return frbr_uri.work_uri(work_component=False) def set_frbr_uri_subtype(self): - self.frbr_uri_subtype = self.nature.code if self.nature else None + # default the subtype to the nature code, unless the nature is the default nature + if self.nature and self.nature.code != self.default_nature[0]: + self.frbr_uri_subtype = self.nature.code + + def set_nature(self): + # provide a default nature if it's not already set + # use hasattr() because otherwise we'd get a DoesNotExist exception + if not hasattr(self, "nature"): + code, name = self.default_nature + self.nature = DocumentNature.objects.get_or_create( + code=code, defaults={"name": name} + )[0] def pre_save(self): """Pre-populate various fields before saving or running full_clean.""" + self.set_nature() self.set_frbr_uri_subtype() self.assign_frbr_uri() self.expression_frbr_uri = self.generate_expression_frbr_uri() @@ -717,6 +744,12 @@ def search_penalty(self): # provide a very small number instead of zero return 0.0000001 + def get_doc_type_display(self): + """Human-friendly type of this document.""" + if self.nature: + return self.nature.name + return super().get_doc_type_display() + def file_location(instance, filename): if not instance.document.pk: diff --git a/peachjam/models/gazette.py b/peachjam/models/gazette.py index 1ac24a96c..213f5098b 100644 --- a/peachjam/models/gazette.py +++ b/peachjam/models/gazette.py @@ -25,6 +25,8 @@ class Gazette(CoreDocument): ) special = models.BooleanField(_("special"), default=False) + default_nature = ("gazette", "Gazette") + class Meta(CoreDocument.Meta): verbose_name = _("gazette") verbose_name_plural = _("gazettes") diff --git a/peachjam/models/generic_document.py b/peachjam/models/generic_document.py index acb7b411a..63e8c649d 100644 --- a/peachjam/models/generic_document.py +++ b/peachjam/models/generic_document.py @@ -21,6 +21,8 @@ class GenericDocument(CoreDocument): frbr_uri_doctypes = ["doc", "statement"] + default_nature = ("document", "Document") + class Meta(CoreDocument.Meta): verbose_name = _("generic document") verbose_name_plural = _("generic documents") @@ -28,11 +30,6 @@ class Meta(CoreDocument.Meta): def __str__(self): return self.title - def get_doc_type_display(self): - if not self.nature: - return super().get_doc_type_display() - return self.nature.name - def pre_save(self): self.doc_type = "generic_document" super().pre_save() @@ -47,6 +44,8 @@ class LegalInstrument(CoreDocument): frbr_uri_doctypes = [x for x in FRBR_URI_DOCTYPES if x != "judgment"] + default_nature = ("legal-instrument", "Legal Instrument") + class Meta(CoreDocument.Meta): verbose_name = _("legal instrument") verbose_name_plural = _("legal instruments") @@ -54,9 +53,6 @@ class Meta(CoreDocument.Meta): def __str__(self): return self.title - def get_doc_type_display(self): - return self.nature.name - def pre_save(self): self.doc_type = "legal_instrument" super().pre_save() @@ -89,6 +85,8 @@ class Legislation(CoreDocument): frbr_uri_doctypes = ["act"] + default_nature = ("act", "Act") + class Meta(CoreDocument.Meta): verbose_name = _("legislation") verbose_name_plural = _("legislation") diff --git a/peachjam/models/journals_books.py b/peachjam/models/journals_books.py index 7f9350083..6ec35bf32 100644 --- a/peachjam/models/journals_books.py +++ b/peachjam/models/journals_books.py @@ -2,12 +2,13 @@ from martor.models import MartorField from martor.utils import markdownify -from peachjam.models import CoreDocument, DocumentNature +from peachjam.models import CoreDocument class Book(CoreDocument): publisher = models.CharField(max_length=2048) content_markdown = MartorField(blank=True, null=True) + default_nature = ("book", "Book") def delete_citations(self): super().delete_citations() @@ -21,22 +22,17 @@ def convert_content_markdown(self): def pre_save(self): self.frbr_uri_doctype = "doc" - if not self.nature: - self.nature = DocumentNature.objects.get_or_create( - code="book", defaults={"name": "Book"} - )[0] + self.frbr_uri_subtype = "book" self.doc_type = "book" return super().pre_save() class Journal(CoreDocument): publisher = models.CharField(max_length=2048) + default_nature = ("journal", "Journal") def pre_save(self): self.frbr_uri_doctype = "doc" - if not self.nature: - self.nature = DocumentNature.objects.get_or_create( - code="journal", defaults={"name": "Journal"} - )[0] + self.frbr_uri_subtype = "journal" self.doc_type = "journal" return super().pre_save() diff --git a/peachjam/models/judgment.py b/peachjam/models/judgment.py index c6d04bdca..a59365b15 100644 --- a/peachjam/models/judgment.py +++ b/peachjam/models/judgment.py @@ -315,6 +315,8 @@ class Judgment(CoreDocument): frbr_uri_doctypes = ["judgment"] + default_nature = ("judgment", "Judgment") + class Meta(CoreDocument.Meta): ordering = ["title"] verbose_name = _("judgment") diff --git a/peachjam/settings.py b/peachjam/settings.py index 1f15d3c8f..957fc19ab 100644 --- a/peachjam/settings.py +++ b/peachjam/settings.py @@ -641,6 +641,13 @@ def before_send(event, hint): # disable regex matches, we do matching using signals CORS_URLS_REGEX = r"^$" + MESSAGE_TAGS = { messages.ERROR: "danger", } + + +# allow injection of a custom test runner for github actions +TEST_RUNNER = os.environ.get("TEST_RUNNER", "django.test.runner.DiscoverRunner") +# only used by xmlrunner https://github.com/xmlrunner/unittest-xml-reporting#django-support +TEST_OUTPUT_DIR = "./test-reports" diff --git a/peachjam/static/js/app-prod.js b/peachjam/static/js/app-prod.js index feee353c4..49f223f93 100644 --- a/peachjam/static/js/app-prod.js +++ b/peachjam/static/js/app-prod.js @@ -1,3 +1,3 @@ /*! For license information please see app-prod.js.LICENSE.txt */ -!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="53d8b474-9174-43ca-9084-dc2d6e4564a1",e._sentryDebugIdIdentifier="sentry-dbid-53d8b474-9174-43ca-9084-dc2d6e4564a1")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"d0683beccec15acf2c522c78ae1569d3f9155ebd"},(()=>{var __webpack_modules__={9448:(e,t,n)=>{e.exports=n(1908)},1908:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fromRange=function(e,t){if(void 0===e)throw new Error('missing required parameter "root"');if(void 0===t)throw new Error('missing required parameter "range"');return s(e,a.fromRange(e,t))},t.fromTextPosition=s,t.toRange=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=l(e,t,n);return null===r?null:(r.end=Math.min(r.end,e.textContent.length),a.toRange(e,r))},t.toTextPosition=l;var r,o=(r=n(2027))&&r.__esModule?r:{default:r},a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(9535)),i=new RegExp("(.|[\r\n]){1,"+String(32)+"}","g");function s(e,t){if(void 0===e)throw new Error('missing required parameter "root"');if(void 0===t)throw new Error('missing required parameter "selector"');var n=t.start;if(void 0===n)throw new Error('selector missing required property "start"');if(n<0)throw new Error('property "start" must be a non-negative integer');var r=t.end;if(void 0===r)throw new Error('selector missing required property "end"');if(r<0)throw new Error('property "end" must be a non-negative integer');var o=e.textContent.substr(n,r-n),a=Math.max(0,n-32),i=e.textContent.substr(a,n-a),s=Math.min(e.textContent.length,r+32);return{exact:o,prefix:i,suffix:e.textContent.substr(r,s-r)}}function l(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(void 0===e)throw new Error('missing required parameter "root"');if(void 0===t)throw new Error('missing required parameter "selector"');var r=t.exact;if(void 0===r)throw new Error('selector missing required property "exact"');var a=t.prefix,s=t.suffix,l=n.hint,c=new o.default;c.Match_Distance=2*e.textContent.length;var u=r.match(i),d=void 0===l?e.textContent.length/2|0:l,p=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY,f=-1,m=void 0!==a,g=void 0!==s,b=!1;m&&(f=c.match_main(e.textContent,a,d))>-1&&(d=f+a.length,b=!0),g&&!b&&(f=c.match_main(e.textContent,s,d+r.length))>-1&&(d=f-r.length);var v=u.shift();if(!((f=c.match_main(e.textContent,v,d))>-1))return null;d=h=(p=f)+v.length;var y=function(t,n){if(!t)return null;var r=c.match_main(e.textContent,n,t.loc);return-1===r?null:(t.loc=r+n.length,t.start=Math.min(t.start,r),t.end=Math.max(t.end,r+n.length),t)};c.Match_Distance=64;var _=u.reduce(y,{start:p,end:h,loc:d});return _?{start:_.start,end:_.end}:null}},9183:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GutterEnrichmentManager=void 0;const r=n(2581);t.GutterEnrichmentManager=class{constructor(e){this.root=e,this.gutter=e.querySelector("la-gutter"),this.akn=e.querySelector("la-akoma-ntoso"),this.providers=[],this.floatingContainer=this.createFloatingContainer(),this.floaterTimeout=null,this.target=null,document.addEventListener("selectionchange",this.selectionChanged.bind(this))}addProvider(e){this.providers.push(e)}createFloatingContainer(){const e=document.createElement("la-gutter-item"),t=document.createElement("div");return t.className="gutter-enrichment-new-buttons btn-group-vertical btn-group-sm bg-white",e.appendChild(t),e}selectionChanged(){const e=document.getSelection();if(this.akn&&this.gutter)if(e&&e.rangeCount>0&&!e.getRangeAt(0).collapsed){this.floaterTimeout&&window.clearTimeout(this.floaterTimeout);const t=e.getRangeAt(0);if(t.commonAncestorContainer.compareDocumentPosition(this.akn)&Node.DOCUMENT_POSITION_CONTAINS){let e=t.startContainer;for(;e&&e.nodeType!==Node.ELEMENT_NODE;)e=e.parentElement;this.target=(0,r.rangeToTarget)(t,this.akn),this.target?(this.addProviderButtons(this.target),this.floatingContainer.anchor=e,this.gutter.contains(this.floatingContainer)||this.gutter.appendChild(this.floatingContainer)):this.removeFloater()}}else this.floaterTimeout=window.setTimeout(this.removeFloater.bind(this),200)}addProviderButtons(e){const t=this.floatingContainer.firstElementChild;if(t){t.innerHTML="";for(const n of this.providers){const r=n.getButton(e);r&&(r.addEventListener("click",(()=>{this.removeFloater(),n.addEnrichment(e)})),t.appendChild(r))}}}removeFloater(){this.floatingContainer.remove(),this.floaterTimeout=null}}},8482:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),o(n(2720),t),o(n(9183),t)},2720:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.PopupEnrichmentManager=t.EnrichmentMarker=void 0;const o=n(2581),a=r(n(5088));n(9639),n(3612);class i{constructor(e,t){this.provider=e,this.enrichment=t,this.marks=[],this.popups=[]}}t.EnrichmentMarker=i,t.PopupEnrichmentManager=class{constructor(e){this.markTag="mark",this.markClasses=["enrichment","enrichment--popup"],this.documentRoot=e,this.providers=[],this.markers=[],this.observer=this.createObserver()}createObserver(){const e=new MutationObserver((()=>this.applyEnrichments()));return e.observe(this.documentRoot,{childList:!0}),e}addProvider(e){this.providers.push(e)}removeProvider(e){const t=this.providers.indexOf(e);t>-1&&(this.unapplyProviderEnrichments(e),this.providers.splice(t,1))}applyEnrichments(){for(const e of this.providers)this.applyProviderEnrichments(e)}applyProviderEnrichments(e){this.unapplyProviderEnrichments(e);for(const t of e.getEnrichments()){const n=new i(e,t),r=(0,o.targetToRange)(t.target,this.documentRoot);r&&(0,o.markRange)(r,this.markTag,(r=>(n.marks.push(r),r.classList.add(...this.markClasses),e.markCreated(t,r),n.popups.push(this.createPopup(e,t,r)),r))),n.marks.length&&this.markers.push(n)}}unapplyProviderEnrichments(e){const t=this.markers.filter((t=>t.provider===e));for(const e of t)this.unapplyMarker(e)}unapplyMarker(e){for(const t of e.marks)if(t.parentElement){for(;t.firstChild;)t.parentElement.insertBefore(t.firstChild,t);t.parentElement.removeChild(t)}for(const t of e.popups)t.destroy()}createPopup(e,t,n){const r=(0,a.default)(n,{appendTo:document.body,interactive:!0,theme:"light",zIndex:0,delay:[0,0],onShow:r=>{r.setContent(""),r.setContent(e.getPopupContent(t,n))}});return e.popupCreated(t,r),r}}},2581:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.aknRangeToTarget=t.rangeToTarget=t.selectorsToRange=t.targetToAknRange=t.targetToRange=t.withoutForeignElements=t.markRange=t.getTextNodes=t.foreignElementsSelector=void 0;const r=n(9535),o=n(9448);function a(e){const t=[],n={TABLE:1,THEAD:1,TBODY:1,TR:1};let r,o,a,i;function s(e,t){return 0!==t?e.splitText(t):e}if(e.startContainer.nodeType===Node.TEXT_NODE)a=s(e.startContainer,e.startOffset);else if(a=document.createNodeIterator(e.startContainer,NodeFilter.SHOW_TEXT).nextNode(),!a)return t;i=e.endContainer.nodeType===Node.TEXT_NODE?s(e.endContainer,e.endOffset):e.endContainer,r=document.createNodeIterator(e.commonAncestorContainer,NodeFilter.SHOW_TEXT,(function(e){return n[e.parentElement.tagName]?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT}));let l=r.nextNode();for(;l&&l!==a;)l=r.nextNode();for(;l&&(o=l.compareDocumentPosition(i),0!=(o&Node.DOCUMENT_POSITION_CONTAINS)||0!=(o&Node.DOCUMENT_POSITION_FOLLOWING));)t.push(l),l=r.nextNode();return t}function i(e,n,r=t.foreignElementsSelector){const o=[];for(const t of Array.from(e.querySelectorAll(r))){const e={e:t,before:null,parent:null};t.nextSibling?e.before=t.nextSibling:e.parent=t.parentElement,t.parentElement&&t.parentElement.removeChild(t),o.push(e)}try{return n()}finally{o.reverse();for(const e of o)e.before&&e.before.parentElement?e.before.parentElement.insertBefore(e.e,e.before):e.parent&&e.parent.appendChild(e.e)}}function s(e,t){let n;const a=t.find((e=>"TextPositionSelector"===e.type)),i=t.find((e=>"TextQuoteSelector"===e.type));if(a)try{if(n=(0,r.toRange)(e,a),!i||n.toString()===i.exact)return n}catch(e){}if(i)return(0,o.toRange)(e,i)}t.foreignElementsSelector=".ig",t.getTextNodes=a,t.markRange=function(e,t="mark",n){let r=e.commonAncestorContainer;r.nodeType!==Node.ELEMENT_NODE&&(r=r.parentElement),r&&i(r,(()=>{for(const r of a(e))if(r.parentElement){let e=r.ownerDocument.createElement(t);n&&(e=n(e,r)),e&&(r.parentElement.insertBefore(e,r),e.appendChild(r))}}))},t.withoutForeignElements=i,t.targetToRange=function(e,t){let n=e.anchor_id,r=n.lastIndexOf("__"),o=t.querySelector(`[id="${n}"]`);for(;!o&&r>-1;)n=n.substring(0,r),r=n.lastIndexOf("__"),o=t.querySelector(`[id="${n}"]`);if(o){if(e.selectors)return i(o,(()=>s(o,e.selectors)));{const e=t.ownerDocument.createRange();return e.selectNodeContents(o),e}}return null},t.targetToAknRange=function(e,t){function n(e){return"arguments"===e?t.querySelector(e):t.querySelector(`[eId=${e}]`)}let r=e.anchor_id,o=r.lastIndexOf("__"),a=n(r);for(;!a&&o>-1;)r=r.substring(0,o),o=r.lastIndexOf("__"),a=n(r);if(a){if(e.selectors)return s(a,e.selectors);{const e=new Range;return e.selectNodeContents(a),e}}return null},t.selectorsToRange=s,t.rangeToTarget=function(e,t){let n=e.commonAncestorContainer;if(n.nodeType!==Node.ELEMENT_NODE&&(n=n.parentElement,!n))return null;if(n=n.closest("[id]"),!n||n!==t&&0==(n.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINS))return null;const a={anchor_id:n.id,selectors:[]};return i(n,(()=>{let t=(0,r.fromRange)(n,e);t.type="TextPositionSelector",a.selectors.push(t),t=(0,o.fromTextPosition)(n,t),t.type="TextQuoteSelector",a.selectors.push(t)})),a},t.aknRangeToTarget=function(e,t){let n=e.commonAncestorContainer;if(n.nodeType!==Node.ELEMENT_NODE&&(n=n.parentElement,!n))return null;if(n=n.closest("[eId]"),!n||n!==t&&0==(n.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINS))return null;const a={anchor_id:n.getAttribute("eId")||"",selectors:[]};let i=(0,r.fromRange)(n,e);return i.type="TextPositionSelector",a.selectors.push(i),i=(0,o.fromTextPosition)(n,i),i.type="TextQuoteSelector",a.selectors.push(i),a}},8240:(e,t,n)=>{"use strict";n.d(t,{fi:()=>k,kZ:()=>_});var r=n(400),o=n(2163),a=n(2057),i=n(2556),s=n(6333),l=n(4063),c=n(7252),u=n(611),d=n(138);function p(e,t,n){void 0===n&&(n=!1);var p,h,f=(0,i.Re)(t),m=(0,i.Re)(t)&&function(e){var t=e.getBoundingClientRect(),n=(0,d.NM)(t.width)/e.offsetWidth||1,r=(0,d.NM)(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),g=(0,c.Z)(t),b=(0,r.Z)(e,m,n),v={scrollLeft:0,scrollTop:0},y={x:0,y:0};return(f||!f&&!n)&&(("body"!==(0,s.Z)(t)||(0,u.Z)(g))&&(v=(p=t)!==(0,a.Z)(p)&&(0,i.Re)(p)?{scrollLeft:(h=p).scrollLeft,scrollTop:h.scrollTop}:(0,o.Z)(p)),(0,i.Re)(t)?((y=(0,r.Z)(t,!0)).x+=t.clientLeft,y.y+=t.clientTop):g&&(y.x=(0,l.Z)(g))),{x:b.left+v.scrollLeft-y.x,y:b.top+v.scrollTop-y.y,width:b.width,height:b.height}}var h=n(583),f=n(3624),m=n(5961),g=n(7701);function b(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}var v={placement:"bottom",modifiers:[],strategy:"absolute"};function y(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";n.d(t,{Z:()=>o});var r=n(2556);function o(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&(0,r.Zq)(n)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}},400:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(2556),o=n(138),a=n(2057),i=n(7977);function s(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var s=e.getBoundingClientRect(),l=1,c=1;t&&(0,r.Re)(e)&&(l=e.offsetWidth>0&&(0,o.NM)(s.width)/e.offsetWidth||1,c=e.offsetHeight>0&&(0,o.NM)(s.height)/e.offsetHeight||1);var u=((0,r.kK)(e)?(0,a.Z)(e):window).visualViewport,d=!(0,i.Z)()&&n,p=(s.left+(d&&u?u.offsetLeft:0))/l,h=(s.top+(d&&u?u.offsetTop:0))/c,f=s.width/l,m=s.height/c;return{width:f,height:m,top:h,right:p+f,bottom:h+m,left:p,x:p,y:h}}},3062:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(2057);function o(e){return(0,r.Z)(e).getComputedStyle(e)}},7252:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(2556);function o(e){return(((0,r.kK)(e)?e.ownerDocument:e.document)||window.document).documentElement}},583:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(400);function o(e){var t=(0,r.Z)(e),n=e.offsetWidth,o=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-o)<=1&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}}},6333:(e,t,n)=>{"use strict";function r(e){return e?(e.nodeName||"").toLowerCase():null}n.d(t,{Z:()=>r})},5961:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(2057),o=n(6333),a=n(3062),i=n(2556);function s(e){return["table","td","th"].indexOf((0,o.Z)(e))>=0}var l=n(5923),c=n(5918);function u(e){return(0,i.Re)(e)&&"fixed"!==(0,a.Z)(e).position?e.offsetParent:null}function d(e){for(var t=(0,r.Z)(e),n=u(e);n&&s(n)&&"static"===(0,a.Z)(n).position;)n=u(n);return n&&("html"===(0,o.Z)(n)||"body"===(0,o.Z)(n)&&"static"===(0,a.Z)(n).position)?t:n||function(e){var t=/firefox/i.test((0,c.Z)());if(/Trident/i.test((0,c.Z)())&&(0,i.Re)(e)&&"fixed"===(0,a.Z)(e).position)return null;var n=(0,l.Z)(e);for((0,i.Zq)(n)&&(n=n.host);(0,i.Re)(n)&&["html","body"].indexOf((0,o.Z)(n))<0;){var r=(0,a.Z)(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}},5923:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(6333),o=n(7252),a=n(2556);function i(e){return"html"===(0,r.Z)(e)?e:e.assignedSlot||e.parentNode||((0,a.Zq)(e)?e.host:null)||(0,o.Z)(e)}},2057:(e,t,n)=>{"use strict";function r(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}n.d(t,{Z:()=>r})},2163:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(2057);function o(e){var t=(0,r.Z)(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}},4063:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(400),o=n(7252),a=n(2163);function i(e){return(0,r.Z)((0,o.Z)(e)).left+(0,a.Z)(e).scrollLeft}},2556:(e,t,n)=>{"use strict";n.d(t,{Re:()=>a,Zq:()=>i,kK:()=>o});var r=n(2057);function o(e){return e instanceof(0,r.Z)(e).Element||e instanceof Element}function a(e){return e instanceof(0,r.Z)(e).HTMLElement||e instanceof HTMLElement}function i(e){return"undefined"!=typeof ShadowRoot&&(e instanceof(0,r.Z)(e).ShadowRoot||e instanceof ShadowRoot)}},7977:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(5918);function o(){return!/^((?!chrome|android).)*safari/i.test((0,r.Z)())}},611:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(3062);function o(e){var t=(0,r.Z)(e),n=t.overflow,o=t.overflowX,a=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+a+o)}},3624:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(5923),o=n(611),a=n(6333),i=n(2556);function s(e){return["html","body","#document"].indexOf((0,a.Z)(e))>=0?e.ownerDocument.body:(0,i.Re)(e)&&(0,o.Z)(e)?e:s((0,r.Z)(e))}var l=n(2057);function c(e,t){var n;void 0===t&&(t=[]);var a=s(e),i=a===(null==(n=e.ownerDocument)?void 0:n.body),u=(0,l.Z)(a),d=i?[u].concat(u.visualViewport||[],(0,o.Z)(a)?a:[]):a,p=t.concat(d);return i?p:p.concat(c((0,r.Z)(d)))}},7701:(e,t,n)=>{"use strict";n.d(t,{BL:()=>c,Ct:()=>g,DH:()=>k,F2:()=>a,I:()=>o,MS:()=>C,N7:()=>b,Pj:()=>p,XM:()=>_,YP:()=>f,bw:()=>m,cW:()=>A,d7:()=>s,ij:()=>v,iv:()=>x,k5:()=>h,mv:()=>l,r5:()=>y,t$:()=>i,ut:()=>u,wX:()=>w,we:()=>r,xs:()=>S,zV:()=>d});var r="top",o="bottom",a="right",i="left",s="auto",l=[r,o,a,i],c="start",u="end",d="clippingParents",p="viewport",h="popper",f="reference",m=l.reduce((function(e,t){return e.concat([t+"-"+c,t+"-"+u])}),[]),g=[].concat(l,[s]).reduce((function(e,t){return e.concat([t,t+"-"+c,t+"-"+u])}),[]),b="beforeRead",v="read",y="afterRead",_="beforeMain",k="main",w="afterMain",x="beforeWrite",A="write",C="afterWrite",S=[b,v,y,_,k,w,x,A,C]},7824:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(6333),o=n(2556);const a={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},a=t.attributes[e]||{},i=t.elements[e];(0,o.Re)(i)&&(0,r.Z)(i)&&(Object.assign(i.style,n),Object.keys(a).forEach((function(e){var t=a[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var a=t.elements[e],i=t.attributes[e]||{},s=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});(0,o.Re)(a)&&(0,r.Z)(a)&&(Object.assign(a.style,s),Object.keys(i).forEach((function(e){a.removeAttribute(e)})))}))}},requires:["computeStyles"]}},6896:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(6206),o=n(583),a=n(4985),i=n(5961),s=n(1516),l=n(7516),c=n(3293),u=n(3706),d=n(7701);const p={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,a=e.name,p=e.options,h=n.elements.arrow,f=n.modifiersData.popperOffsets,m=(0,r.Z)(n.placement),g=(0,s.Z)(m),b=[d.t$,d.F2].indexOf(m)>=0?"height":"width";if(h&&f){var v=function(e,t){return e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e,(0,c.Z)("number"!=typeof e?e:(0,u.Z)(e,d.mv))}(p.padding,n),y=(0,o.Z)(h),_="y"===g?d.we:d.t$,k="y"===g?d.I:d.F2,w=n.rects.reference[b]+n.rects.reference[g]-f[g]-n.rects.popper[b],x=f[g]-n.rects.reference[g],A=(0,i.Z)(h),C=A?"y"===g?A.clientHeight||0:A.clientWidth||0:0,S=w/2-x/2,E=v[_],T=C-y[b]-v[k],O=C/2-y[b]/2+S,P=(0,l.u)(E,O,T),D=g;n.modifiersData[a]=((t={})[D]=P,t.centerOffset=P-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&(0,a.Z)(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]}},6531:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});var r=n(7701),o=n(5961),a=n(2057),i=n(7252),s=n(3062),l=n(6206),c=n(4943),u=n(138),d={top:"auto",right:"auto",bottom:"auto",left:"auto"};function p(e){var t,n=e.popper,l=e.popperRect,c=e.placement,p=e.variation,h=e.offsets,f=e.position,m=e.gpuAcceleration,g=e.adaptive,b=e.roundOffsets,v=e.isFixed,y=h.x,_=void 0===y?0:y,k=h.y,w=void 0===k?0:k,x="function"==typeof b?b({x:_,y:w}):{x:_,y:w};_=x.x,w=x.y;var A=h.hasOwnProperty("x"),C=h.hasOwnProperty("y"),S=r.t$,E=r.we,T=window;if(g){var O=(0,o.Z)(n),P="clientHeight",D="clientWidth";O===(0,a.Z)(n)&&(O=(0,i.Z)(n),"static"!==(0,s.Z)(O).position&&"absolute"===f&&(P="scrollHeight",D="scrollWidth")),(c===r.we||(c===r.t$||c===r.F2)&&p===r.ut)&&(E=r.I,w-=(v&&O===T&&T.visualViewport?T.visualViewport.height:O[P])-l.height,w*=m?1:-1),c!==r.t$&&(c!==r.we&&c!==r.I||p!==r.ut)||(S=r.F2,_-=(v&&O===T&&T.visualViewport?T.visualViewport.width:O[D])-l.width,_*=m?1:-1)}var I,R=Object.assign({position:f},g&&d),L=!0===b?function(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:(0,u.NM)(n*o)/o||0,y:(0,u.NM)(r*o)/o||0}}({x:_,y:w},(0,a.Z)(n)):{x:_,y:w};return _=L.x,w=L.y,m?Object.assign({},R,((I={})[E]=C?"0":"",I[S]=A?"0":"",I.transform=(T.devicePixelRatio||1)<=1?"translate("+_+"px, "+w+"px)":"translate3d("+_+"px, "+w+"px, 0)",I)):Object.assign({},R,((t={})[E]=C?w+"px":"",t[S]=A?_+"px":"",t.transform="",t))}const h={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,a=n.adaptive,i=void 0===a||a,s=n.roundOffsets,u=void 0===s||s,d={placement:(0,l.Z)(t.placement),variation:(0,c.Z)(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,p(Object.assign({},d,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:u})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,p(Object.assign({},d,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:u})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}}},2372:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(2057),o={passive:!0};const a={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,a=e.options,i=a.scroll,s=void 0===i||i,l=a.resize,c=void 0===l||l,u=(0,r.Z)(t.elements.popper),d=[].concat(t.scrollParents.reference,t.scrollParents.popper);return s&&d.forEach((function(e){e.addEventListener("scroll",n.update,o)})),c&&u.addEventListener("resize",n.update,o),function(){s&&d.forEach((function(e){e.removeEventListener("scroll",n.update,o)})),c&&u.removeEventListener("resize",n.update,o)}},data:{}}},5228:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r={left:"right",right:"left",bottom:"top",top:"bottom"};function o(e){return e.replace(/left|right|bottom|top/g,(function(e){return r[e]}))}var a=n(6206),i={start:"end",end:"start"};function s(e){return e.replace(/start|end/g,(function(e){return i[e]}))}var l=n(9966),c=n(4943),u=n(7701);const d={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,d=void 0===i||i,p=n.altAxis,h=void 0===p||p,f=n.fallbackPlacements,m=n.padding,g=n.boundary,b=n.rootBoundary,v=n.altBoundary,y=n.flipVariations,_=void 0===y||y,k=n.allowedAutoPlacements,w=t.options.placement,x=(0,a.Z)(w),A=f||(x!==w&&_?function(e){if((0,a.Z)(e)===u.d7)return[];var t=o(e);return[s(e),t,s(t)]}(w):[o(w)]),C=[w].concat(A).reduce((function(e,n){return e.concat((0,a.Z)(n)===u.d7?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,s=n.padding,d=n.flipVariations,p=n.allowedAutoPlacements,h=void 0===p?u.Ct:p,f=(0,c.Z)(r),m=f?d?u.bw:u.bw.filter((function(e){return(0,c.Z)(e)===f})):u.mv,g=m.filter((function(e){return h.indexOf(e)>=0}));0===g.length&&(g=m);var b=g.reduce((function(t,n){return t[n]=(0,l.Z)(e,{placement:n,boundary:o,rootBoundary:i,padding:s})[(0,a.Z)(n)],t}),{});return Object.keys(b).sort((function(e,t){return b[e]-b[t]}))}(t,{placement:n,boundary:g,rootBoundary:b,padding:m,flipVariations:_,allowedAutoPlacements:k}):n)}),[]),S=t.rects.reference,E=t.rects.popper,T=new Map,O=!0,P=C[0],D=0;D=0,F=M?"width":"height",N=(0,l.Z)(t,{placement:I,boundary:g,rootBoundary:b,altBoundary:v,padding:m}),j=M?L?u.F2:u.t$:L?u.I:u.we;S[F]>E[F]&&(j=o(j));var $=o(j),B=[];if(d&&B.push(N[R]<=0),h&&B.push(N[j]<=0,N[$]<=0),B.every((function(e){return e}))){P=I,O=!1;break}T.set(I,B)}if(O)for(var q=function(e){var t=C.find((function(t){var n=T.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return P=t,"break"},H=_?3:1;H>0&&"break"!==q(H);H--);t.placement!==P&&(t.modifiersData[r]._skip=!0,t.placement=P,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}}},9892:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(7701),o=n(9966);function a(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function i(e){return[r.we,r.F2,r.I,r.t$].some((function(t){return e[t]>=0}))}const s={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,s=t.rects.popper,l=t.modifiersData.preventOverflow,c=(0,o.Z)(t,{elementContext:"reference"}),u=(0,o.Z)(t,{altBoundary:!0}),d=a(c,r),p=a(u,s,l),h=i(d),f=i(p);t.modifiersData[n]={referenceClippingOffsets:d,popperEscapeOffsets:p,isReferenceHidden:h,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":f})}}},2122:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(6206),o=n(7701);const a={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,a=e.name,i=n.offset,s=void 0===i?[0,0]:i,l=o.Ct.reduce((function(e,n){return e[n]=function(e,t,n){var a=(0,r.Z)(e),i=[o.t$,o.we].indexOf(a)>=0?-1:1,s="function"==typeof n?n(Object.assign({},t,{placement:e})):n,l=s[0],c=s[1];return l=l||0,c=(c||0)*i,[o.t$,o.F2].indexOf(a)>=0?{x:c,y:l}:{x:l,y:c}}(n,t.rects,s),e}),{}),c=l[t.placement],u=c.x,d=c.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=u,t.modifiersData.popperOffsets.y+=d),t.modifiersData[a]=l}}},7421:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(9349);const o={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=(0,r.Z)({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}}},3920:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});var r=n(7701),o=n(6206),a=n(1516),i=n(7516),s=n(583),l=n(5961),c=n(9966),u=n(4943),d=n(3607),p=n(138);const h={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,h=e.name,f=n.mainAxis,m=void 0===f||f,g=n.altAxis,b=void 0!==g&&g,v=n.boundary,y=n.rootBoundary,_=n.altBoundary,k=n.padding,w=n.tether,x=void 0===w||w,A=n.tetherOffset,C=void 0===A?0:A,S=(0,c.Z)(t,{boundary:v,rootBoundary:y,padding:k,altBoundary:_}),E=(0,o.Z)(t.placement),T=(0,u.Z)(t.placement),O=!T,P=(0,a.Z)(E),D="x"===P?"y":"x",I=t.modifiersData.popperOffsets,R=t.rects.reference,L=t.rects.popper,M="function"==typeof C?C(Object.assign({},t.rects,{placement:t.placement})):C,F="number"==typeof M?{mainAxis:M,altAxis:M}:Object.assign({mainAxis:0,altAxis:0},M),N=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,j={x:0,y:0};if(I){if(m){var $,B="y"===P?r.we:r.t$,q="y"===P?r.I:r.F2,H="y"===P?"height":"width",U=I[P],V=U+S[B],z=U-S[q],W=x?-L[H]/2:0,G=T===r.BL?R[H]:L[H],J=T===r.BL?-L[H]:-R[H],Y=t.elements.arrow,X=x&&Y?(0,s.Z)(Y):{width:0,height:0},Z=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:(0,d.Z)(),K=Z[B],Q=Z[q],ee=(0,i.u)(0,R[H],X[H]),te=O?R[H]/2-W-ee-K-F.mainAxis:G-ee-K-F.mainAxis,ne=O?-R[H]/2+W+ee+Q+F.mainAxis:J+ee+Q+F.mainAxis,re=t.elements.arrow&&(0,l.Z)(t.elements.arrow),oe=re?"y"===P?re.clientTop||0:re.clientLeft||0:0,ae=null!=($=null==N?void 0:N[P])?$:0,ie=U+te-ae-oe,se=U+ne-ae,le=(0,i.u)(x?(0,p.VV)(V,ie):V,U,x?(0,p.Fp)(z,se):z);I[P]=le,j[P]=le-U}if(b){var ce,ue="x"===P?r.we:r.t$,de="x"===P?r.I:r.F2,pe=I[D],he="y"===D?"height":"width",fe=pe+S[ue],me=pe-S[de],ge=-1!==[r.we,r.t$].indexOf(E),be=null!=(ce=null==N?void 0:N[D])?ce:0,ve=ge?fe:pe-R[he]-L[he]-be+F.altAxis,ye=ge?pe+R[he]+L[he]-be-F.altAxis:me,_e=x&&ge?(0,i.q)(ve,pe,ye):(0,i.u)(x?ve:fe,pe,x?ye:me);I[D]=_e,j[D]=_e-pe}t.modifiersData[h]=j}},requiresIfExists:["offset"]}},804:(e,t,n)=>{"use strict";n.d(t,{fi:()=>f});var r=n(8240),o=n(2372),a=n(7421),i=n(6531),s=n(7824),l=n(2122),c=n(5228),u=n(3920),d=n(6896),p=n(9892),h=[o.Z,a.Z,i.Z,s.Z,l.Z,c.Z,u.Z,d.Z,p.Z],f=(0,r.kZ)({defaultModifiers:h})},9349:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(6206),o=n(4943),a=n(1516),i=n(7701);function s(e){var t,n=e.reference,s=e.element,l=e.placement,c=l?(0,r.Z)(l):null,u=l?(0,o.Z)(l):null,d=n.x+n.width/2-s.width/2,p=n.y+n.height/2-s.height/2;switch(c){case i.we:t={x:d,y:n.y-s.height};break;case i.I:t={x:d,y:n.y+n.height};break;case i.F2:t={x:n.x+n.width,y:p};break;case i.t$:t={x:n.x-s.width,y:p};break;default:t={x:n.x,y:n.y}}var h=c?(0,a.Z)(c):null;if(null!=h){var f="y"===h?"height":"width";switch(u){case i.BL:t[h]=t[h]-(n[f]/2-s[f]/2);break;case i.ut:t[h]=t[h]+(n[f]/2-s[f]/2)}}return t}},9966:(e,t,n)=>{"use strict";n.d(t,{Z:()=>x});var r=n(7701),o=n(2057),a=n(7252),i=n(4063),s=n(7977),l=n(3062),c=n(2163),u=n(138),d=n(3624),p=n(5961),h=n(2556),f=n(400),m=n(5923),g=n(4985),b=n(6333);function v(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function y(e,t,n){return t===r.Pj?v(function(e,t){var n=(0,o.Z)(e),r=(0,a.Z)(e),l=n.visualViewport,c=r.clientWidth,u=r.clientHeight,d=0,p=0;if(l){c=l.width,u=l.height;var h=(0,s.Z)();(h||!h&&"fixed"===t)&&(d=l.offsetLeft,p=l.offsetTop)}return{width:c,height:u,x:d+(0,i.Z)(e),y:p}}(e,n)):(0,h.kK)(t)?function(e,t){var n=(0,f.Z)(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):v(function(e){var t,n=(0,a.Z)(e),r=(0,c.Z)(e),o=null==(t=e.ownerDocument)?void 0:t.body,s=(0,u.Fp)(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),d=(0,u.Fp)(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),p=-r.scrollLeft+(0,i.Z)(e),h=-r.scrollTop;return"rtl"===(0,l.Z)(o||n).direction&&(p+=(0,u.Fp)(n.clientWidth,o?o.clientWidth:0)-s),{width:s,height:d,x:p,y:h}}((0,a.Z)(e)))}var _=n(9349),k=n(3293),w=n(3706);function x(e,t){void 0===t&&(t={});var n=t,o=n.placement,i=void 0===o?e.placement:o,s=n.strategy,c=void 0===s?e.strategy:s,x=n.boundary,A=void 0===x?r.zV:x,C=n.rootBoundary,S=void 0===C?r.Pj:C,E=n.elementContext,T=void 0===E?r.k5:E,O=n.altBoundary,P=void 0!==O&&O,D=n.padding,I=void 0===D?0:D,R=(0,k.Z)("number"!=typeof I?I:(0,w.Z)(I,r.mv)),L=T===r.k5?r.YP:r.k5,M=e.rects.popper,F=e.elements[P?L:T],N=function(e,t,n,r){var o="clippingParents"===t?function(e){var t=(0,d.Z)((0,m.Z)(e)),n=["absolute","fixed"].indexOf((0,l.Z)(e).position)>=0&&(0,h.Re)(e)?(0,p.Z)(e):e;return(0,h.kK)(n)?t.filter((function(e){return(0,h.kK)(e)&&(0,g.Z)(e,n)&&"body"!==(0,b.Z)(e)})):[]}(e):[].concat(t),a=[].concat(o,[n]),i=a[0],s=a.reduce((function(t,n){var o=y(e,n,r);return t.top=(0,u.Fp)(o.top,t.top),t.right=(0,u.VV)(o.right,t.right),t.bottom=(0,u.VV)(o.bottom,t.bottom),t.left=(0,u.Fp)(o.left,t.left),t}),y(e,i,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}((0,h.kK)(F)?F:F.contextElement||(0,a.Z)(e.elements.popper),A,S,c),j=(0,f.Z)(e.elements.reference),$=(0,_.Z)({reference:j,element:M,strategy:"absolute",placement:i}),B=v(Object.assign({},M,$)),q=T===r.k5?B:j,H={top:N.top-q.top+R.top,bottom:q.bottom-N.bottom+R.bottom,left:N.left-q.left+R.left,right:q.right-N.right+R.right},U=e.modifiersData.offset;if(T===r.k5&&U){var V=U[i];Object.keys(H).forEach((function(e){var t=[r.F2,r.I].indexOf(e)>=0?1:-1,n=[r.we,r.I].indexOf(e)>=0?"y":"x";H[e]+=V[n]*t}))}return H}},3706:(e,t,n)=>{"use strict";function r(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}n.d(t,{Z:()=>r})},6206:(e,t,n)=>{"use strict";function r(e){return e.split("-")[0]}n.d(t,{Z:()=>r})},3607:(e,t,n)=>{"use strict";function r(){return{top:0,right:0,bottom:0,left:0}}n.d(t,{Z:()=>r})},1516:(e,t,n)=>{"use strict";function r(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}n.d(t,{Z:()=>r})},4943:(e,t,n)=>{"use strict";function r(e){return e.split("-")[1]}n.d(t,{Z:()=>r})},138:(e,t,n)=>{"use strict";n.d(t,{Fp:()=>r,NM:()=>a,VV:()=>o});var r=Math.max,o=Math.min,a=Math.round},3293:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(3607);function o(e){return Object.assign({},(0,r.Z)(),e)}},5918:(e,t,n)=>{"use strict";function r(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}n.d(t,{Z:()=>r})},7516:(e,t,n)=>{"use strict";n.d(t,{q:()=>a,u:()=>o});var r=n(138);function o(e,t,n){return(0,r.Fp)(e,(0,r.VV)(t,n))}function a(e,t,n){var r=o(e,t,n);return r>n?n:r}},2262:(e,t,n)=>{"use strict";n.d(t,{$y:()=>Ce,B:()=>i,BK:()=>ze,Bj:()=>a,EB:()=>c,Fl:()=>Ye,IU:()=>Te,Jd:()=>C,OT:()=>ke,PG:()=>Ae,SU:()=>Be,Um:()=>_e,Vh:()=>Ge,WL:()=>He,X$:()=>O,X3:()=>Ee,XI:()=>Fe,Xl:()=>Oe,YS:()=>we,ZM:()=>Ve,cE:()=>k,dq:()=>Le,iH:()=>Me,j:()=>E,lk:()=>S,nZ:()=>l,oR:()=>$e,qj:()=>ye,qq:()=>y,sT:()=>w,yT:()=>Se});var r=n(3577);let o;class a{constructor(e=!1){this.active=!0,this.effects=[],this.cleanups=[],!e&&o&&(this.parent=o,this.index=(o.scopes||(o.scopes=[])).push(this)-1)}run(e){if(this.active)try{return o=this,e()}finally{o=this.parent}}on(){o=this}off(){o=this.parent}stop(e){if(this.active){let t,n;for(t=0,n=this.effects.length;t{const t=new Set(e);return t.w=0,t.n=0,t},d=e=>(e.w&g)>0,p=e=>(e.n&g)>0,h=new WeakMap;let f,m=0,g=1;const b=Symbol(""),v=Symbol("");class y{constructor(e,t=null,n){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,s(this,n)}run(){if(!this.active)return this.fn();let e=f,t=x;for(;e;){if(e===this)return;e=e.parent}try{return this.parent=f,f=this,x=!0,g=1<<++m,m<=30?(({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{("length"===t||t>=o)&&l.push(e)}));else switch(void 0!==n&&l.push(s.get(n)),t){case"add":(0,r.kJ)(e)?(0,r.S0)(n)&&l.push(s.get("length")):(l.push(s.get(b)),(0,r._N)(e)&&l.push(s.get(v)));break;case"delete":(0,r.kJ)(e)||(l.push(s.get(b)),(0,r._N)(e)&&l.push(s.get(v)));break;case"set":(0,r._N)(e)&&l.push(s.get(b))}if(1===l.length)l[0]&&P(l[0]);else{const e=[];for(const t of l)t&&e.push(...t);P(u(e))}}function P(e,t){for(const t of(0,r.kJ)(e)?e:[...e])(t!==f||t.allowRecurse)&&(t.scheduler?t.scheduler():t.run())}const D=(0,r.fY)("__proto__,__v_isRef,__isVue"),I=new Set(Object.getOwnPropertyNames(Symbol).map((e=>Symbol[e])).filter(r.yk)),R=$(),L=$(!1,!0),M=$(!0),F=$(!0,!0),N=j();function j(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=Te(this);for(let e=0,t=this.length;e{e[t]=function(...e){C();const n=Te(this)[t].apply(this,e);return S(),n}})),e}function $(e=!1,t=!1){return function(n,o,a){if("__v_isReactive"===o)return!e;if("__v_isReadonly"===o)return e;if("__v_isShallow"===o)return t;if("__v_raw"===o&&a===(e?t?ve:be:t?ge:me).get(n))return n;const i=(0,r.kJ)(n);if(!e&&i&&(0,r.RI)(N,o))return Reflect.get(N,o,a);const s=Reflect.get(n,o,a);return((0,r.yk)(o)?I.has(o):D(o))?s:(e||E(n,0,o),t?s:Le(s)?i&&(0,r.S0)(o)?s:s.value:(0,r.Kn)(s)?e?ke(s):ye(s):s)}}const B=H(),q=H(!0);function H(e=!1){return function(t,n,o,a){let i=t[n];if(Ce(i)&&Le(i)&&!Le(o))return!1;if(!e&&!Ce(o)&&(Se(o)||(o=Te(o),i=Te(i)),!(0,r.kJ)(t)&&Le(i)&&!Le(o)))return i.value=o,!0;const s=(0,r.kJ)(t)&&(0,r.S0)(n)?Number(n)!0,deleteProperty:(e,t)=>!0},z=(0,r.l7)({},U,{get:L,set:q}),W=(0,r.l7)({},V,{get:F}),G=e=>e,J=e=>Reflect.getPrototypeOf(e);function Y(e,t,n=!1,r=!1){const o=Te(e=e.__v_raw),a=Te(t);t!==a&&!n&&E(o,0,t),!n&&E(o,0,a);const{has:i}=J(o),s=r?G:n?De:Pe;return i.call(o,t)?s(e.get(t)):i.call(o,a)?s(e.get(a)):void(e!==o&&e.get(t))}function X(e,t=!1){const n=this.__v_raw,r=Te(n),o=Te(e);return e!==o&&!t&&E(r,0,e),!t&&E(r,0,o),e===o?n.has(e):n.has(e)||n.has(o)}function Z(e,t=!1){return e=e.__v_raw,!t&&E(Te(e),0,b),Reflect.get(e,"size",e)}function K(e){e=Te(e);const t=Te(this);return J(t).has.call(t,e)||(t.add(e),O(t,"add",e,e)),this}function Q(e,t){t=Te(t);const n=Te(this),{has:o,get:a}=J(n);let i=o.call(n,e);i||(e=Te(e),i=o.call(n,e));const s=a.call(n,e);return n.set(e,t),i?(0,r.aU)(t,s)&&O(n,"set",e,t):O(n,"add",e,t),this}function ee(e){const t=Te(this),{has:n,get:r}=J(t);let o=n.call(t,e);o||(e=Te(e),o=n.call(t,e)),r&&r.call(t,e);const a=t.delete(e);return o&&O(t,"delete",e,void 0),a}function te(){const e=Te(this),t=0!==e.size,n=e.clear();return t&&O(e,"clear",void 0,void 0),n}function ne(e,t){return function(n,r){const o=this,a=o.__v_raw,i=Te(a),s=t?G:e?De:Pe;return!e&&E(i,0,b),a.forEach(((e,t)=>n.call(r,s(e),s(t),o)))}}function re(e,t,n){return function(...o){const a=this.__v_raw,i=Te(a),s=(0,r._N)(i),l="entries"===e||e===Symbol.iterator&&s,c="keys"===e&&s,u=a[e](...o),d=n?G:t?De:Pe;return!t&&E(i,0,c?v:b),{next(){const{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:l?[d(e[0]),d(e[1])]:d(e),done:t}},[Symbol.iterator](){return this}}}}function oe(e){return function(...t){return"delete"!==e&&this}}function ae(){const e={get(e){return Y(this,e)},get size(){return Z(this)},has:X,add:K,set:Q,delete:ee,clear:te,forEach:ne(!1,!1)},t={get(e){return Y(this,e,!1,!0)},get size(){return Z(this)},has:X,add:K,set:Q,delete:ee,clear:te,forEach:ne(!1,!0)},n={get(e){return Y(this,e,!0)},get size(){return Z(this,!0)},has(e){return X.call(this,e,!0)},add:oe("add"),set:oe("set"),delete:oe("delete"),clear:oe("clear"),forEach:ne(!0,!1)},r={get(e){return Y(this,e,!0,!0)},get size(){return Z(this,!0)},has(e){return X.call(this,e,!0)},add:oe("add"),set:oe("set"),delete:oe("delete"),clear:oe("clear"),forEach:ne(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((o=>{e[o]=re(o,!1,!1),n[o]=re(o,!0,!1),t[o]=re(o,!1,!0),r[o]=re(o,!0,!0)})),[e,n,t,r]}const[ie,se,le,ce]=ae();function ue(e,t){const n=t?e?ce:le:e?se:ie;return(t,o,a)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get((0,r.RI)(n,o)&&o in t?n:t,o,a)}const de={get:ue(!1,!1)},pe={get:ue(!1,!0)},he={get:ue(!0,!1)},fe={get:ue(!0,!0)},me=new WeakMap,ge=new WeakMap,be=new WeakMap,ve=new WeakMap;function ye(e){return Ce(e)?e:xe(e,!1,U,de,me)}function _e(e){return xe(e,!1,z,pe,ge)}function ke(e){return xe(e,!0,V,he,be)}function we(e){return xe(e,!0,W,fe,ve)}function xe(e,t,n,o,a){if(!(0,r.Kn)(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=a.get(e);if(i)return i;const s=(l=e).__v_skip||!Object.isExtensible(l)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((0,r.W7)(l));var l;if(0===s)return e;const c=new Proxy(e,2===s?o:n);return a.set(e,c),c}function Ae(e){return Ce(e)?Ae(e.__v_raw):!(!e||!e.__v_isReactive)}function Ce(e){return!(!e||!e.__v_isReadonly)}function Se(e){return!(!e||!e.__v_isShallow)}function Ee(e){return Ae(e)||Ce(e)}function Te(e){const t=e&&e.__v_raw;return t?Te(t):e}function Oe(e){return(0,r.Nj)(e,"__v_skip",!0),e}const Pe=e=>(0,r.Kn)(e)?ye(e):e,De=e=>(0,r.Kn)(e)?ke(e):e;function Ie(e){x&&f&&T((e=Te(e)).dep||(e.dep=u()))}function Re(e,t){(e=Te(e)).dep&&P(e.dep)}function Le(e){return!(!e||!0!==e.__v_isRef)}function Me(e){return Ne(e,!1)}function Fe(e){return Ne(e,!0)}function Ne(e,t){return Le(e)?e:new je(e,t)}class je{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:Te(e),this._value=t?e:Pe(e)}get value(){return Ie(this),this._value}set value(e){e=this.__v_isShallow?e:Te(e),(0,r.aU)(e,this._rawValue)&&(this._rawValue=e,this._value=this.__v_isShallow?e:Pe(e),Re(this))}}function $e(e){Re(e)}function Be(e){return Le(e)?e.value:e}const qe={get:(e,t,n)=>Be(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Le(o)&&!Le(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function He(e){return Ae(e)?e:new Proxy(e,qe)}class Ue{constructor(e){this.dep=void 0,this.__v_isRef=!0;const{get:t,set:n}=e((()=>Ie(this)),(()=>Re(this)));this._get=t,this._set=n}get value(){return this._get()}set value(e){this._set(e)}}function Ve(e){return new Ue(e)}function ze(e){const t=(0,r.kJ)(e)?new Array(e.length):{};for(const n in e)t[n]=Ge(e,n);return t}class We{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0}get value(){const e=this._object[this._key];return void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}}function Ge(e,t,n){const r=e[t];return Le(r)?r:new We(e,t,n)}class Je{constructor(e,t,n,r){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new y(e,(()=>{this._dirty||(this._dirty=!0,Re(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=n}get value(){const e=Te(this);return Ie(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}function Ye(e,t,n=!1){let o,a;const i=(0,r.mf)(e);return i?(o=e,a=r.dG):(o=e.get,a=e.set),new Je(o,a,i||!a,n)}Promise.resolve()},6252:(e,t,n)=>{"use strict";n.d(t,{$d:()=>u,$y:()=>r.$y,Ah:()=>Xe,B:()=>r.B,BK:()=>r.BK,Bj:()=>r.Bj,Bz:()=>lr,C3:()=>fn,C_:()=>o.C_,Cn:()=>X,EB:()=>r.EB,Eo:()=>Mt,F4:()=>_n,FN:()=>Un,Fl:()=>ir,G:()=>Ar,HX:()=>Z,HY:()=>Zt,Ho:()=>kn,IU:()=>r.IU,JJ:()=>ue,Jd:()=>Ye,KU:()=>c,Ko:()=>Pn,LL:()=>Gt,MW:()=>sr,MX:()=>kr,Mr:()=>_r,Nv:()=>Dn,OT:()=>r.OT,Ob:()=>Me,P$:()=>xe,PG:()=>r.PG,Q2:()=>Jt,Q6:()=>Oe,RC:()=>Ie,Rh:()=>he,Rr:()=>dr,S3:()=>d,SU:()=>r.SU,U2:()=>Ce,Uc:()=>vr,Uk:()=>wn,Um:()=>r.Um,Us:()=>Lt,Vh:()=>r.Vh,WI:()=>In,WL:()=>r.WL,WY:()=>cr,Wm:()=>yn,X3:()=>r.X3,XI:()=>r.XI,Xl:()=>r.Xl,Xn:()=>Ge,Y1:()=>Kn,Y3:()=>C,Y8:()=>ke,YP:()=>ge,YS:()=>r.YS,Yq:()=>Ke,ZK:()=>i,ZM:()=>r.ZM,Zq:()=>yr,_:()=>vn,_A:()=>o._A,aZ:()=>Pe,b9:()=>ur,bT:()=>Qe,bv:()=>We,cE:()=>r.cE,d1:()=>et,dD:()=>Y,dG:()=>Tn,dl:()=>Ne,dq:()=>r.dq,ec:()=>j,eq:()=>Cr,f3:()=>de,h:()=>br,hR:()=>o.hR,i8:()=>xr,iD:()=>un,iH:()=>r.iH,ic:()=>Je,j4:()=>dn,j5:()=>o.j5,kC:()=>o.kC,kq:()=>An,l1:()=>pr,lA:()=>pn,lR:()=>Ut,m0:()=>pe,mW:()=>L,mv:()=>gr,mx:()=>Ln,n4:()=>oe,nK:()=>Te,nQ:()=>wr,nZ:()=>r.nZ,oR:()=>r.oR,of:()=>Qn,p1:()=>mr,qG:()=>en,qZ:()=>ln,qb:()=>O,qj:()=>r.qj,qq:()=>r.qq,ry:()=>Sr,sT:()=>r.sT,se:()=>je,sv:()=>Qt,uE:()=>xn,u_:()=>fr,up:()=>zt,vl:()=>Ze,vs:()=>o.vs,w5:()=>K,wF:()=>ze,wg:()=>rn,wy:()=>xt,xv:()=>Kt,yT:()=>r.yT,yX:()=>fe,zw:()=>o.zw});var r=n(2262),o=n(3577);const a=[];function i(e,...t){(0,r.Jd)();const n=a.length?a[a.length-1].component:null,o=n&&n.appContext.config.warnHandler,i=function(){let e=a[a.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const r=e.component&&e.component.parent;e=r&&r.vnode}return t}();if(o)c(o,n,11,[e+t.join(""),n&&n.proxy,i.map((({vnode:e})=>`at <${ar(n,e.type)}>`)).join("\n"),i]);else{const n=[`[Vue warn]: ${e}`,...t];i.length&&n.push("\n",...function(e){const t=[];return e.forEach(((e,n)=>{t.push(...0===n?[]:["\n"],...function({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",r=!!e.component&&null==e.component.parent,o=` at <${ar(e.component,e.type,r)}`,a=">"+n;return e.props?[o,...s(e.props),a]:[o+a]}(e))})),t}(i)),console.warn(...n)}(0,r.lk)()}function s(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach((n=>{t.push(...l(n,e[n]))})),n.length>3&&t.push(" ..."),t}function l(e,t,n){return(0,o.HD)(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):"number"==typeof t||"boolean"==typeof t||null==t?n?t:[`${e}=${t}`]:(0,r.dq)(t)?(t=l(e,(0,r.IU)(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):(0,o.mf)(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=(0,r.IU)(t),n?t:[`${e}=`,t])}function c(e,t,n,r){let o;try{o=r?e(...r):e()}catch(e){d(e,t,n)}return o}function u(e,t,n,r){if((0,o.mf)(e)){const a=c(e,t,n,r);return a&&(0,o.tI)(a)&&a.catch((e=>{d(e,t,n)})),a}const a=[];for(let o=0;o>>1;I(f[r])I(e)-I(t))),k=0;k<_.length;k++)_[k]();_=null,k=0}}const I=e=>null==e.id?1/0:e.id;function R(e){h=!1,p=!0,P(e),f.sort(((e,t)=>I(e)-I(t))),o.dG;try{for(m=0;mL.emit(e,...t))),M=[]):"undefined"!=typeof window&&window.HTMLElement&&!(null===(r=null===(n=window.navigator)||void 0===n?void 0:n.userAgent)||void 0===r?void 0:r.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push((e=>{j(e,t)})),setTimeout((()=>{L||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,F=!0,M=[])}),3e3)):(F=!0,M=[])}const $=H("component:added"),B=H("component:updated"),q=H("component:removed");function H(e){return t=>{N(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}function U(e,t,...n){const r=e.vnode.props||o.kT;let a=n;const i=t.startsWith("update:"),s=i&&t.slice(7);if(s&&s in r){const e=`${"modelValue"===s?"model":s}Modifiers`,{number:t,trim:i}=r[e]||o.kT;i?a=n.map((e=>e.trim())):t&&(a=n.map(o.He))}let l;__VUE_PROD_DEVTOOLS__&&function(e,t,n){N("component:emit",e.appContext.app,e,t,n)}(e,t,a);let c=r[l=(0,o.hR)(t)]||r[l=(0,o.hR)((0,o._A)(t))];!c&&i&&(c=r[l=(0,o.hR)((0,o.rs)(t))]),c&&u(c,e,6,a);const d=r[l+"Once"];if(d){if(e.emitted){if(e.emitted[l])return}else e.emitted={};e.emitted[l]=!0,u(d,e,6,a)}}function V(e,t,n=!1){const r=t.emitsCache,a=r.get(e);if(void 0!==a)return a;const i=e.emits;let s={},l=!1;if(__VUE_OPTIONS_API__&&!(0,o.mf)(e)){const r=e=>{const n=V(e,t,!0);n&&(l=!0,(0,o.l7)(s,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return i||l?((0,o.kJ)(i)?i.forEach((e=>s[e]=null)):(0,o.l7)(s,i),r.set(e,s),s):(r.set(e,null),null)}function z(e,t){return!(!e||!(0,o.F7)(t))&&(t=t.slice(2).replace(/Once$/,""),(0,o.RI)(e,t[0].toLowerCase()+t.slice(1))||(0,o.RI)(e,(0,o.rs)(t))||(0,o.RI)(e,t))}let W=null,G=null;function J(e){const t=W;return W=e,G=e&&e.type.__scopeId||null,t}function Y(e){G=e}function X(){G=null}const Z=e=>K;function K(e,t=W,n){if(!t)return e;if(e._n)return e;const r=(...n)=>{r._d&&ln(-1);const o=J(t),a=e(...n);return J(o),r._d&&ln(1),__VUE_PROD_DEVTOOLS__&&B(t),a};return r._n=!0,r._c=!0,r._d=!0,r}function Q(e){const{type:t,vnode:n,proxy:r,withProxy:a,props:i,propsOptions:[s],slots:l,attrs:c,emit:u,render:p,renderCache:h,data:f,setupState:m,ctx:g,inheritAttrs:b}=e;let v,y;const _=J(e);try{if(4&n.shapeFlag){const e=a||r;v=Cn(p.call(e,e,h,i,m,f,g)),y=c}else{const e=t;v=Cn(e.length>1?e(i,{attrs:c,slots:l,emit:u}):e(i,null)),y=t.props?c:ee(c)}}catch(t){tn.length=0,d(t,e,1),v=yn(Qt)}let k=v;if(y&&!1!==b){const e=Object.keys(y),{shapeFlag:t}=k;e.length&&7&t&&(s&&e.some(o.tR)&&(y=te(y,s)),k=kn(k,y))}return n.dirs&&(k.dirs=k.dirs?k.dirs.concat(n.dirs):n.dirs),n.transition&&(k.transition=n.transition),v=k,J(_),v}const ee=e=>{let t;for(const n in e)("class"===n||"style"===n||(0,o.F7)(n))&&((t||(t={}))[n]=e[n]);return t},te=(e,t)=>{const n={};for(const r in e)(0,o.tR)(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function ne(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let o=0;o0?(ae(e,"onPending"),ae(e,"onFallback"),c(null,e.ssFallback,t,n,r,null,a,i),ce(p,e.ssFallback)):p.resolve()}(t,n,r,o,a,i,s,l,c):function(e,t,n,r,o,a,i,s,{p:l,um:c,o:{createElement:u}}){const d=t.suspense=e.suspense;d.vnode=t,t.el=e.el;const p=t.ssContent,h=t.ssFallback,{activeBranch:f,pendingBranch:m,isInFallback:g,isHydrating:b}=d;if(m)d.pendingBranch=p,hn(p,m)?(l(m,p,d.hiddenContainer,null,o,d,a,i,s),d.deps<=0?d.resolve():g&&(l(f,h,n,r,o,null,a,i,s),ce(d,h))):(d.pendingId++,b?(d.isHydrating=!1,d.activeBranch=m):c(m,o,d),d.deps=0,d.effects.length=0,d.hiddenContainer=u("div"),g?(l(null,p,d.hiddenContainer,null,o,d,a,i,s),d.deps<=0?d.resolve():(l(f,h,n,r,o,null,a,i,s),ce(d,h))):f&&hn(p,f)?(l(f,p,n,r,o,d,a,i,s),d.resolve(!0)):(l(null,p,d.hiddenContainer,null,o,d,a,i,s),d.deps<=0&&d.resolve()));else if(f&&hn(p,f))l(f,p,n,r,o,d,a,i,s),ce(d,p);else if(ae(t,"onPending"),d.pendingBranch=p,d.pendingId++,l(null,p,d.hiddenContainer,null,o,d,a,i,s),d.deps<=0)d.resolve();else{const{timeout:e,pendingId:t}=d;e>0?setTimeout((()=>{d.pendingId===t&&d.fallback(h)}),e):0===e&&d.fallback(h)}}(e,t,n,r,o,i,s,l,c)},hydrate:function(e,t,n,r,o,a,i,s,l){const c=t.suspense=ie(t,r,n,e.parentNode,document.createElement("div"),null,o,a,i,s,!0),u=l(e,c.pendingBranch=t.ssContent,n,c,a,i);return 0===c.deps&&c.resolve(),u},create:ie,normalize:function(e){const{shapeFlag:t,children:n}=e,r=32&t;e.ssContent=se(r?n.default:n),e.ssFallback=r?se(n.fallback):yn(Qt)}};function ae(e,t){const n=e.props&&e.props[t];(0,o.mf)(n)&&n()}function ie(e,t,n,r,a,i,s,l,c,u,p=!1){const{p:h,m:f,um:m,n:g,o:{parentNode:b,remove:v}}=u,y=(0,o.He)(e.props&&e.props.timeout),_={vnode:e,parent:t,parentComponent:n,isSVG:s,container:r,hiddenContainer:a,anchor:i,deps:0,pendingId:0,timeout:"number"==typeof y?y:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:p,isUnmounted:!1,effects:[],resolve(e=!1){const{vnode:t,activeBranch:n,pendingBranch:r,pendingId:o,effects:a,parentComponent:i,container:s}=_;if(_.isHydrating)_.isHydrating=!1;else if(!e){const e=n&&r.transition&&"out-in"===r.transition.mode;e&&(n.transition.afterLeave=()=>{o===_.pendingId&&f(r,s,t,0)});let{anchor:t}=_;n&&(t=g(n),m(n,i,_,!0)),e||f(r,s,t,0)}ce(_,r),_.pendingBranch=null,_.isInFallback=!1;let l=_.parent,c=!1;for(;l;){if(l.pendingBranch){l.effects.push(...a),c=!0;break}l=l.parent}c||O(a),_.effects=[],ae(t,"onResolve")},fallback(e){if(!_.pendingBranch)return;const{vnode:t,activeBranch:n,parentComponent:r,container:o,isSVG:a}=_;ae(t,"onFallback");const i=g(n),s=()=>{_.isInFallback&&(h(null,e,o,i,r,null,a,l,c),ce(_,e))},u=e.transition&&"out-in"===e.transition.mode;u&&(n.transition.afterLeave=s),_.isInFallback=!0,m(n,r,null,!0),u||s()},move(e,t,n){_.activeBranch&&f(_.activeBranch,e,t,n),_.container=e},next:()=>_.activeBranch&&g(_.activeBranch),registerDep(e,t){const n=!!_.pendingBranch;n&&_.deps++;const r=e.vnode.el;e.asyncDep.catch((t=>{d(t,e,0)})).then((o=>{if(e.isUnmounted||_.isUnmounted||_.pendingId!==e.suspenseId)return;e.asyncResolved=!0;const{vnode:a}=e;Zn(e,o,!1),r&&(a.el=r);const i=!r&&e.subTree.el;t(e,a,b(r||e.subTree.el),r?null:g(e.subTree),_,s,c),i&&v(i),re(e,a.el),n&&0==--_.deps&&_.resolve()}))},unmount(e,t){_.isUnmounted=!0,_.activeBranch&&m(_.activeBranch,n,e,t),_.pendingBranch&&m(_.pendingBranch,n,e,t)}};return _}function se(e){let t;if((0,o.mf)(e)){const n=sn&&e._c;n&&(e._d=!1,rn()),e=e(),n&&(e._d=!0,t=nn,on())}if((0,o.kJ)(e)){const t=function(e){let t;for(let n=0;nt!==e))),e}function le(e,t){t&&t.pendingBranch?(0,o.kJ)(e)?t.effects.push(...e):t.effects.push(e):O(e)}function ce(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e,o=n.el=t.el;r&&r.subTree===n&&(r.vnode.el=o,re(r,o))}function ue(e,t){if(Hn){let n=Hn.provides;const r=Hn.parent&&Hn.parent.provides;r===n&&(n=Hn.provides=Object.create(r)),n[e]=t}}function de(e,t,n=!1){const r=Hn||W;if(r){const a=null==r.parent?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(a&&e in a)return a[e];if(arguments.length>1)return n&&(0,o.mf)(t)?t.call(r.proxy):t}}function pe(e,t){return be(e,null,t)}function he(e,t){return be(e,null,{flush:"post"})}function fe(e,t){return be(e,null,{flush:"sync"})}const me={};function ge(e,t,n){return be(e,t,n)}function be(e,t,{immediate:n,deep:a,flush:i,onTrack:s,onTrigger:l}=o.kT){const d=Hn;let p,h,f=!1,m=!1;if((0,r.dq)(e)?(p=()=>e.value,f=(0,r.yT)(e)):(0,r.PG)(e)?(p=()=>e,a=!0):(0,o.kJ)(e)?(m=!0,f=e.some(r.PG),p=()=>e.map((e=>(0,r.dq)(e)?e.value:(0,r.PG)(e)?_e(e):(0,o.mf)(e)?c(e,d,2):void 0))):p=(0,o.mf)(e)?t?()=>c(e,d,2):()=>{if(!d||!d.isUnmounted)return h&&h(),u(e,d,3,[y])}:o.dG,t&&a){const e=p;p=()=>_e(e())}let y=e=>{h=x.onStop=()=>{c(e,d,4)}};if(Yn)return y=o.dG,t?n&&u(t,d,3,[p(),m?[]:void 0,y]):p(),o.dG;let _=m?[]:me;const k=()=>{if(x.active)if(t){const e=x.run();(a||f||(m?e.some(((e,t)=>(0,o.aU)(e,_[t]))):(0,o.aU)(e,_)))&&(h&&h(),u(t,d,3,[e,_===me?void 0:_,y]),_=e)}else x.run()};let w;k.allowRecurse=!!t,w="sync"===i?k:"post"===i?()=>Rt(k,d&&d.suspense):()=>{!d||d.isMounted?function(e){T(e,b,g,v)}(k):k()};const x=new r.qq(p,w);return t?n?k():_=x.run():"post"===i?Rt(x.run.bind(x),d&&d.suspense):x.run(),()=>{x.stop(),d&&d.scope&&(0,o.Od)(d.scope.effects,x)}}function ve(e,t,n){const r=this.proxy,a=(0,o.HD)(e)?e.includes(".")?ye(r,e):()=>r[e]:e.bind(r,r);let i;(0,o.mf)(t)?i=t:(i=t.handler,n=t);const s=Hn;Vn(this);const l=be(a,i.bind(r),n);return s?Vn(s):zn(),l}function ye(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e{_e(e,t)}));else if((0,o.PO)(e))for(const n in e)_e(e[n],t);return e}function ke(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return We((()=>{e.isMounted=!0})),Ye((()=>{e.isUnmounting=!0})),e}const we=[Function,Array],xe={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:we,onEnter:we,onAfterEnter:we,onEnterCancelled:we,onBeforeLeave:we,onLeave:we,onAfterLeave:we,onLeaveCancelled:we,onBeforeAppear:we,onAppear:we,onAfterAppear:we,onAppearCancelled:we},setup(e,{slots:t}){const n=Un(),o=ke();let a;return()=>{const i=t.default&&Oe(t.default(),!0);if(!i||!i.length)return;const s=(0,r.IU)(e),{mode:l}=s,c=i[0];if(o.isLeaving)return Se(c);const u=Ee(c);if(!u)return Se(c);const d=Ce(u,s,o,n);Te(u,d);const p=n.subTree,h=p&&Ee(p);let f=!1;const{getTransitionKey:m}=u.type;if(m){const e=m();void 0===a?a=e:e!==a&&(a=e,f=!0)}if(h&&h.type!==Qt&&(!hn(u,h)||f)){const e=Ce(h,s,o,n);if(Te(h,e),"out-in"===l)return o.isLeaving=!0,e.afterLeave=()=>{o.isLeaving=!1,n.update()},Se(c);"in-out"===l&&u.type!==Qt&&(e.delayLeave=(e,t,n)=>{Ae(o,h)[String(h.key)]=h,e._leaveCb=()=>{t(),e._leaveCb=void 0,delete d.delayedLeave},d.delayedLeave=n})}return c}}};function Ae(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Ce(e,t,n,r){const{appear:o,mode:a,persisted:i=!1,onBeforeEnter:s,onEnter:l,onAfterEnter:c,onEnterCancelled:d,onBeforeLeave:p,onLeave:h,onAfterLeave:f,onLeaveCancelled:m,onBeforeAppear:g,onAppear:b,onAfterAppear:v,onAppearCancelled:y}=t,_=String(e.key),k=Ae(n,e),w=(e,t)=>{e&&u(e,r,9,t)},x={mode:a,persisted:i,beforeEnter(t){let r=s;if(!n.isMounted){if(!o)return;r=g||s}t._leaveCb&&t._leaveCb(!0);const a=k[_];a&&hn(e,a)&&a.el._leaveCb&&a.el._leaveCb(),w(r,[t])},enter(e){let t=l,r=c,a=d;if(!n.isMounted){if(!o)return;t=b||l,r=v||c,a=y||d}let i=!1;const s=e._enterCb=t=>{i||(i=!0,w(t?a:r,[e]),x.delayedLeave&&x.delayedLeave(),e._enterCb=void 0)};t?(t(e,s),t.length<=1&&s()):s()},leave(t,r){const o=String(e.key);if(t._enterCb&&t._enterCb(!0),n.isUnmounting)return r();w(p,[t]);let a=!1;const i=t._leaveCb=n=>{a||(a=!0,r(),w(n?m:f,[t]),t._leaveCb=void 0,k[o]===e&&delete k[o])};k[o]=e,h?(h(t,i),h.length<=1&&i()):i()},clone:e=>Ce(e,t,n,r)};return x}function Se(e){if(Le(e))return(e=kn(e)).children=null,e}function Ee(e){return Le(e)?e.children?e.children[0]:void 0:e}function Te(e,t){6&e.shapeFlag&&e.component?Te(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Oe(e,t=!1){let n=[],r=0;for(let o=0;o1)for(let e=0;e!!e.type.__asyncLoader;function Ie(e){(0,o.mf)(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:a,delay:i=200,timeout:s,suspensible:l=!0,onError:c}=e;let u,p=null,h=0;const f=()=>{let e;return p||(e=p=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),c)return new Promise(((t,n)=>{c(e,(()=>t((h++,p=null,f()))),(()=>n(e)),h+1)}));throw e})).then((t=>e!==p&&p?p:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),u=t,t))))};return Pe({name:"AsyncComponentWrapper",__asyncLoader:f,get __asyncResolved(){return u},setup(){const e=Hn;if(u)return()=>Re(u,e);const t=t=>{p=null,d(t,e,13,!a)};if(l&&e.suspense||Yn)return f().then((t=>()=>Re(t,e))).catch((e=>(t(e),()=>a?yn(a,{error:e}):null)));const o=(0,r.iH)(!1),c=(0,r.iH)(),h=(0,r.iH)(!!i);return i&&setTimeout((()=>{h.value=!1}),i),null!=s&&setTimeout((()=>{if(!o.value&&!c.value){const e=new Error(`Async component timed out after ${s}ms.`);t(e),c.value=e}}),s),f().then((()=>{o.value=!0,e.parent&&Le(e.parent.vnode)&&S(e.parent.update)})).catch((e=>{t(e),c.value=e})),()=>o.value&&u?Re(u,e):c.value&&a?yn(a,{error:c.value}):n&&!h.value?yn(n):void 0}})}function Re(e,{vnode:{ref:t,props:n,children:r}}){const o=yn(e,n,r);return o.ref=t,o}const Le=e=>e.type.__isKeepAlive,Me={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=Un(),r=n.ctx;if(!r.renderer)return t.default;const a=new Map,i=new Set;let s=null;__VUE_PROD_DEVTOOLS__&&(n.__v_cache=a);const l=n.suspense,{renderer:{p:c,m:u,um:d,o:{createElement:p}}}=r,h=p("div");function f(e){qe(e),d(e,n,l,!0)}function m(e){a.forEach(((t,n)=>{const r=or(t.type);!r||e&&e(r)||g(n)}))}function g(e){const t=a.get(e);s&&t.type===s.type?s&&qe(s):f(t),a.delete(e),i.delete(e)}r.activate=(e,t,n,r,a)=>{const i=e.component;u(e,t,n,0,l),c(i.vnode,e,t,n,i,l,r,e.slotScopeIds,a),Rt((()=>{i.isDeactivated=!1,i.a&&(0,o.ir)(i.a);const t=e.props&&e.props.onVnodeMounted;t&&On(t,i.parent,e)}),l),__VUE_PROD_DEVTOOLS__&&$(i)},r.deactivate=e=>{const t=e.component;u(e,h,null,1,l),Rt((()=>{t.da&&(0,o.ir)(t.da);const n=e.props&&e.props.onVnodeUnmounted;n&&On(n,t.parent,e),t.isDeactivated=!0}),l),__VUE_PROD_DEVTOOLS__&&$(t)},ge((()=>[e.include,e.exclude]),(([e,t])=>{e&&m((t=>Fe(e,t))),t&&m((e=>!Fe(t,e)))}),{flush:"post",deep:!0});let b=null;const v=()=>{null!=b&&a.set(b,He(n.subTree))};return We(v),Je(v),Ye((()=>{a.forEach((e=>{const{subTree:t,suspense:r}=n,o=He(t);if(e.type!==o.type)f(e);else{qe(o);const e=o.component.da;e&&Rt(e,r)}}))})),()=>{if(b=null,!t.default)return null;const n=t.default(),r=n[0];if(n.length>1)return s=null,n;if(!pn(r)||!(4&r.shapeFlag||128&r.shapeFlag))return s=null,r;let o=He(r);const l=o.type,c=or(De(o)?o.type.__asyncResolved||{}:l),{include:u,exclude:d,max:p}=e;if(u&&(!c||!Fe(u,c))||d&&c&&Fe(d,c))return s=o,r;const h=null==o.key?l:o.key,f=a.get(h);return o.el&&(o=kn(o),128&r.shapeFlag&&(r.ssContent=o)),b=h,f?(o.el=f.el,o.component=f.component,o.transition&&Te(o,o.transition),o.shapeFlag|=512,i.delete(h),i.add(h)):(i.add(h),p&&i.size>parseInt(p,10)&&g(i.values().next().value)),o.shapeFlag|=256,s=o,r}}};function Fe(e,t){return(0,o.kJ)(e)?e.some((e=>Fe(e,t))):(0,o.HD)(e)?e.split(",").includes(t):!!e.test&&e.test(t)}function Ne(e,t){$e(e,"a",t)}function je(e,t){$e(e,"da",t)}function $e(e,t,n=Hn){const r=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(Ue(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Le(e.parent.vnode)&&Be(r,t,n,e),e=e.parent}}function Be(e,t,n,r){const a=Ue(t,e,r,!0);Xe((()=>{(0,o.Od)(r[t],a)}),n)}function qe(e){let t=e.shapeFlag;256&t&&(t-=256),512&t&&(t-=512),e.shapeFlag=t}function He(e){return 128&e.shapeFlag?e.ssContent:e}function Ue(e,t,n=Hn,o=!1){if(n){const a=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;(0,r.Jd)(),Vn(n);const a=u(t,n,e,o);return zn(),(0,r.lk)(),a});return o?a.unshift(i):a.push(i),i}}const Ve=e=>(t,n=Hn)=>(!Yn||"sp"===e)&&Ue(e,t,n),ze=Ve("bm"),We=Ve("m"),Ge=Ve("bu"),Je=Ve("u"),Ye=Ve("bum"),Xe=Ve("um"),Ze=Ve("sp"),Ke=Ve("rtg"),Qe=Ve("rtc");function et(e,t=Hn){Ue("ec",e,t)}let tt=!0;function nt(e,t,n){u((0,o.kJ)(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function rt(e,t,n,r){const a=r.includes(".")?ye(n,r):()=>n[r];if((0,o.HD)(e)){const n=t[e];(0,o.mf)(n)&&ge(a,n)}else if((0,o.mf)(e))ge(a,e.bind(n));else if((0,o.Kn)(e))if((0,o.kJ)(e))e.forEach((e=>rt(e,t,n,r)));else{const r=(0,o.mf)(e.handler)?e.handler.bind(n):t[e.handler];(0,o.mf)(r)&&ge(a,r,e)}}function ot(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:a,config:{optionMergeStrategies:i}}=e.appContext,s=a.get(t);let l;return s?l=s:o.length||n||r?(l={},o.length&&o.forEach((e=>at(l,e,i,!0))),at(l,t,i)):l=t,a.set(t,l),l}function at(e,t,n,r=!1){const{mixins:o,extends:a}=t;a&&at(e,a,n,!0),o&&o.forEach((t=>at(e,t,n,!0)));for(const o in t)if(r&&"expose"===o);else{const r=it[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}const it={data:st,props:ut,emits:ut,methods:ut,computed:ut,beforeCreate:ct,created:ct,beforeMount:ct,mounted:ct,beforeUpdate:ct,updated:ct,beforeDestroy:ct,beforeUnmount:ct,destroyed:ct,unmounted:ct,activated:ct,deactivated:ct,errorCaptured:ct,serverPrefetch:ct,components:ut,directives:ut,watch:function(e,t){if(!e)return t;if(!t)return e;const n=(0,o.l7)(Object.create(null),e);for(const r in t)n[r]=ct(e[r],t[r]);return n},provide:st,inject:function(e,t){return ut(lt(e),lt(t))}};function st(e,t){return t?e?function(){return(0,o.l7)((0,o.mf)(e)?e.call(this,this):e,(0,o.mf)(t)?t.call(this,this):t)}:t:e}function lt(e){if((0,o.kJ)(e)){const t={};for(let n=0;n{c=!0;const[n,r]=ht(e,t,!0);(0,o.l7)(s,n),r&&l.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!i&&!c)return r.set(e,o.Z6),o.Z6;if((0,o.kJ)(i))for(let e=0;e-1,r[1]=n<0||e-1||(0,o.RI)(r,"default"))&&l.push(t)}}}const u=[s,l];return r.set(e,u),u}function ft(e){return"$"!==e[0]}function mt(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:null===e?"null":""}function gt(e,t){return mt(e)===mt(t)}function bt(e,t){return(0,o.kJ)(t)?t.findIndex((t=>gt(t,e))):(0,o.mf)(t)&>(t,e)?0:-1}const vt=e=>"_"===e[0]||"$stable"===e,yt=e=>(0,o.kJ)(e)?e.map(Cn):[Cn(e)],_t=(e,t,n)=>{const r=K(((...e)=>yt(t(...e))),n);return r._c=!1,r},kt=(e,t,n)=>{const r=e._ctx;for(const n in e){if(vt(n))continue;const a=e[n];if((0,o.mf)(a))t[n]=_t(0,a,r);else if(null!=a){const e=yt(a);t[n]=()=>e}}},wt=(e,t)=>{const n=yt(t);e.slots.default=()=>n};function xt(e,t){if(null===W)return e;const n=W.proxy,r=e.dirs||(e.dirs=[]);for(let e=0;e(i.has(e)||(e&&(0,o.mf)(e.install)?(i.add(e),e.install(l,...t)):(0,o.mf)(e)&&(i.add(e),e(l,...t))),l),mixin:e=>(__VUE_OPTIONS_API__&&(a.mixins.includes(e)||a.mixins.push(e)),l),component:(e,t)=>t?(a.components[e]=t,l):a.components[e],directive:(e,t)=>t?(a.directives[e]=t,l):a.directives[e],mount(o,i,c){if(!s){const u=yn(n,r);return u.appContext=a,i&&t?t(u,o):e(u,o,c),s=!0,l._container=o,o.__vue_app__=l,__VUE_PROD_DEVTOOLS__&&(l._instance=u.component,function(e,t){N("app:init",e,t,{Fragment:Zt,Text:Kt,Comment:Qt,Static:en})}(l,xr)),nr(u.component)||u.component.proxy}},unmount(){s&&(e(null,l._container),__VUE_PROD_DEVTOOLS__&&(l._instance=null,function(e){N("app:unmount",e)}(l)),delete l._container.__vue_app__)},provide:(e,t)=>(a.provides[e]=t,l)};return l}}function Tt(e,t,n,a,i=!1){if((0,o.kJ)(e))return void e.forEach(((e,r)=>Tt(e,t&&((0,o.kJ)(t)?t[r]:t),n,a,i)));if(De(a)&&!i)return;const s=4&a.shapeFlag?nr(a.component)||a.component.proxy:a.el,l=i?null:s,{i:u,r:d}=e,p=t&&t.r,h=u.refs===o.kT?u.refs={}:u.refs,f=u.setupState;if(null!=p&&p!==d&&((0,o.HD)(p)?(h[p]=null,(0,o.RI)(f,p)&&(f[p]=null)):(0,r.dq)(p)&&(p.value=null)),(0,o.mf)(d))c(d,u,12,[l,h]);else{const t=(0,o.HD)(d),a=(0,r.dq)(d);if(t||a){const a=()=>{if(e.f){const n=t?h[d]:d.value;i?(0,o.kJ)(n)&&(0,o.Od)(n,s):(0,o.kJ)(n)?n.includes(s)||n.push(s):t?h[d]=[s]:(d.value=[s],e.k&&(h[e.k]=d.value))}else t?(h[d]=l,(0,o.RI)(f,d)&&(f[d]=l)):(0,r.dq)(d)&&(d.value=l,e.k&&(h[e.k]=l))};l?(a.id=-1,Rt(a,n)):a()}}}let Ot=!1;const Pt=e=>/svg/.test(e.namespaceURI)&&"foreignObject"!==e.tagName,Dt=e=>8===e.nodeType;function It(e){const{mt:t,p:n,o:{patchProp:r,nextSibling:a,parentNode:i,remove:s,insert:l,createComment:c}}=e,u=(n,r,o,s,l,c=!1)=>{const g=Dt(n)&&"["===n.data,b=()=>f(n,r,o,s,l,g),{type:v,ref:y,shapeFlag:_}=r,k=n.nodeType;r.el=n;let w=null;switch(v){case Kt:3!==k?w=b():(n.data!==r.children&&(Ot=!0,n.data=r.children),w=a(n));break;case Qt:w=8!==k||g?b():a(n);break;case en:if(1===k){w=n;const e=!r.children.length;for(let t=0;t{l=l||!!t.dynamicChildren;const{type:c,props:u,patchFlag:d,shapeFlag:h,dirs:f}=t,m="input"===c&&f||"option"===c;if(m||-1!==d){if(f&&At(t,null,n,"created"),u)if(m||!l||48&d)for(const t in u)(m&&t.endsWith("value")||(0,o.F7)(t)&&!(0,o.Gg)(t))&&r(e,t,null,u[t],!1,void 0,n);else u.onClick&&r(e,"onClick",null,u.onClick,!1,void 0,n);let c;if((c=u&&u.onVnodeBeforeMount)&&On(c,n,t),f&&At(t,null,n,"beforeMount"),((c=u&&u.onVnodeMounted)||f)&&le((()=>{c&&On(c,n,t),f&&At(t,null,n,"mounted")}),a),16&h&&(!u||!u.innerHTML&&!u.textContent)){let r=p(e.firstChild,t,e,n,a,i,l);for(;r;){Ot=!0;const e=r;r=r.nextSibling,s(e)}}else 8&h&&e.textContent!==t.children&&(Ot=!0,e.textContent=t.children)}return e.nextSibling},p=(e,t,r,o,a,i,s)=>{s=s||!!t.dynamicChildren;const l=t.children,c=l.length;for(let t=0;t{const{slotScopeIds:u}=t;u&&(o=o?o.concat(u):u);const d=i(e),h=p(a(e),t,d,n,r,o,s);return h&&Dt(h)&&"]"===h.data?a(t.anchor=h):(Ot=!0,l(t.anchor=c("]"),d,h),h)},f=(e,t,r,o,l,c)=>{if(Ot=!0,t.el=null,c){const t=m(e);for(;;){const n=a(e);if(!n||n===t)break;s(n)}}const u=a(e),d=i(e);return s(e),n(null,t,d,u,r,o,Pt(d),l),u},m=e=>{let t=0;for(;e;)if((e=a(e))&&Dt(e)&&("["===e.data&&t++,"]"===e.data)){if(0===t)return a(e);t--}return e};return[(e,t)=>{if(!t.hasChildNodes())return n(null,e,t),void D();Ot=!1,u(t.firstChild,e,null,null,null),D(),Ot&&console.error("Hydration completed but contains mismatches.")},u]}const Rt=le;function Lt(e){return Ft(e)}function Mt(e){return Ft(e,It)}function Ft(e,t){"boolean"!=typeof __VUE_OPTIONS_API__&&((0,o.E9)().__VUE_OPTIONS_API__=!0),"boolean"!=typeof __VUE_PROD_DEVTOOLS__&&((0,o.E9)().__VUE_PROD_DEVTOOLS__=!1);const n=(0,o.E9)();n.__VUE__=!0,__VUE_PROD_DEVTOOLS__&&j(n.__VUE_DEVTOOLS_GLOBAL_HOOK__,n);const{insert:a,remove:i,patchProp:s,createElement:l,createText:c,createComment:u,setText:d,setElementText:p,parentNode:h,nextSibling:g,setScopeId:b=o.dG,cloneNode:v,insertStaticContent:y}=e,_=(e,t,n,r=null,o=null,a=null,i=!1,s=null,l=!!t.dynamicChildren)=>{if(e===t)return;e&&!hn(e,t)&&(r=te(e),Y(e,o,a,!0),e=null),-2===t.patchFlag&&(l=!1,t.dynamicChildren=null);const{type:c,ref:u,shapeFlag:d}=t;switch(c){case Kt:k(e,t,n,r);break;case Qt:w(e,t,n,r);break;case en:null==e&&x(t,n,r,i);break;case Zt:L(e,t,n,r,o,a,i,s,l);break;default:1&d?A(e,t,n,r,o,a,i,s,l):6&d?M(e,t,n,r,o,a,i,s,l):(64&d||128&d)&&c.process(e,t,n,r,o,a,i,s,l,ae)}null!=u&&o&&Tt(u,e&&e.ref,a,t||e,!t)},k=(e,t,n,r)=>{if(null==e)a(t.el=c(t.children),n,r);else{const n=t.el=e.el;t.children!==e.children&&d(n,t.children)}},w=(e,t,n,r)=>{null==e?a(t.el=u(t.children||""),n,r):t.el=e.el},x=(e,t,n,r)=>{[e.el,e.anchor]=y(e.children,t,n,r,e.el,e.anchor)},A=(e,t,n,r,o,a,i,s,l)=>{i=i||"svg"===t.type,null==e?C(t,n,r,o,a,i,s,l):O(e,t,o,a,i,s,l)},C=(e,t,n,r,i,c,u,d)=>{let h,f;const{type:m,props:g,shapeFlag:b,transition:y,patchFlag:_,dirs:k}=e;if(e.el&&void 0!==v&&-1===_)h=e.el=v(e.el);else{if(h=e.el=l(e.type,c,g&&g.is,g),8&b?p(h,e.children):16&b&&T(e.children,h,null,r,i,c&&"foreignObject"!==m,u,d),k&&At(e,null,r,"created"),g){for(const t in g)"value"===t||(0,o.Gg)(t)||s(h,t,null,g[t],c,e.children,r,i,ee);"value"in g&&s(h,"value",null,g.value),(f=g.onVnodeBeforeMount)&&On(f,r,e)}E(h,e,e.scopeId,u,r)}__VUE_PROD_DEVTOOLS__&&(Object.defineProperty(h,"__vnode",{value:e,enumerable:!1}),Object.defineProperty(h,"__vueParentComponent",{value:r,enumerable:!1})),k&&At(e,null,r,"beforeMount");const w=(!i||i&&!i.pendingBranch)&&y&&!y.persisted;w&&y.beforeEnter(h),a(h,t,n),((f=g&&g.onVnodeMounted)||w||k)&&Rt((()=>{f&&On(f,r,e),w&&y.enter(h),k&&At(e,null,r,"mounted")}),i)},E=(e,t,n,r,o)=>{if(n&&b(e,n),r)for(let t=0;t{for(let c=l;c{const c=t.el=e.el;let{patchFlag:u,dynamicChildren:d,dirs:h}=t;u|=16&e.patchFlag;const f=e.props||o.kT,m=t.props||o.kT;let g;n&&Nt(n,!1),(g=m.onVnodeBeforeUpdate)&&On(g,n,t,e),h&&At(t,e,n,"beforeUpdate"),n&&Nt(n,!0);const b=a&&"foreignObject"!==t.type;if(d?I(e.dynamicChildren,d,c,n,r,b,i):l||V(e,t,c,null,n,r,b,i,!1),u>0){if(16&u)R(c,t,f,m,n,r,a);else if(2&u&&f.class!==m.class&&s(c,"class",null,m.class,a),4&u&&s(c,"style",f.style,m.style,a),8&u){const o=t.dynamicProps;for(let t=0;t{g&&On(g,n,t,e),h&&At(t,e,n,"updated")}),r)},I=(e,t,n,r,o,a,i)=>{for(let s=0;s{if(n!==r){for(const c in r){if((0,o.Gg)(c))continue;const u=r[c],d=n[c];u!==d&&"value"!==c&&s(e,c,d,u,l,t.children,a,i,ee)}if(n!==o.kT)for(const c in n)(0,o.Gg)(c)||c in r||s(e,c,n[c],null,l,t.children,a,i,ee);"value"in r&&s(e,"value",n.value,r.value)}},L=(e,t,n,r,o,i,s,l,u)=>{const d=t.el=e?e.el:c(""),p=t.anchor=e?e.anchor:c("");let{patchFlag:h,dynamicChildren:f,slotScopeIds:m}=t;m&&(l=l?l.concat(m):m),null==e?(a(d,n,r),a(p,n,r),T(t.children,n,p,o,i,s,l,u)):h>0&&64&h&&f&&e.dynamicChildren?(I(e.dynamicChildren,f,n,o,i,s,l),(null!=t.key||o&&t===o.subTree)&&jt(e,t,!0)):V(e,t,n,p,o,i,s,l,u)},M=(e,t,n,r,o,a,i,s,l)=>{t.slotScopeIds=s,null==e?512&t.shapeFlag?o.ctx.activate(t,n,r,i,l):F(t,n,r,o,a,i,l):N(e,t,l)},F=(e,t,n,r,o,a,i)=>{const s=e.component=qn(e,r,o);if(Le(e)&&(s.ctx.renderer=ae),Xn(s),s.asyncDep){if(o&&o.registerDep(s,H),!e.el){const e=s.subTree=yn(Qt);w(null,e,t,n)}}else H(s,e,t,n,o,a,i)},N=(e,t,n)=>{const r=t.component=e.component;if(function(e,t,n){const{props:r,children:o,component:a}=e,{props:i,children:s,patchFlag:l}=t,c=a.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&l>=0))return!(!o&&!s||s&&s.$stable)||r!==i&&(r?!i||ne(r,i,c):!!i);if(1024&l)return!0;if(16&l)return r?ne(r,i,c):!!i;if(8&l){const e=t.dynamicProps;for(let t=0;tm&&f.splice(t,1)}(r.update),r.update()}else t.component=e.component,t.el=e.el,r.vnode=t},H=(e,t,n,a,i,s,l)=>{const c=e.effect=new r.qq((()=>{if(e.isMounted){let t,{next:n,bu:r,u:a,parent:c,vnode:u}=e,d=n;Nt(e,!1),n?(n.el=u.el,U(e,n,l)):n=u,r&&(0,o.ir)(r),(t=n.props&&n.props.onVnodeBeforeUpdate)&&On(t,c,n,u),Nt(e,!0);const p=Q(e),f=e.subTree;e.subTree=p,_(f,p,h(f.el),te(f),e,i,s),n.el=p.el,null===d&&re(e,p.el),a&&Rt(a,i),(t=n.props&&n.props.onVnodeUpdated)&&Rt((()=>On(t,c,n,u)),i),__VUE_PROD_DEVTOOLS__&&B(e)}else{let r;const{el:l,props:c}=t,{bm:u,m:d,parent:p}=e,h=De(t);if(Nt(e,!1),u&&(0,o.ir)(u),!h&&(r=c&&c.onVnodeBeforeMount)&&On(r,p,t),Nt(e,!0),l&&se){const n=()=>{e.subTree=Q(e),se(l,e.subTree,e,i,null)};h?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{const r=e.subTree=Q(e);_(null,r,n,a,e,i,s),t.el=r.el}if(d&&Rt(d,i),!h&&(r=c&&c.onVnodeMounted)){const e=t;Rt((()=>On(r,p,e)),i)}256&t.shapeFlag&&e.a&&Rt(e.a,i),e.isMounted=!0,__VUE_PROD_DEVTOOLS__&&$(e),t=n=a=null}}),(()=>S(e.update)),e.scope),u=e.update=c.run.bind(c);u.id=e.uid,Nt(e,!0),u()},U=(e,t,n)=>{t.component=e;const a=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,a){const{props:i,attrs:s,vnode:{patchFlag:l}}=e,c=(0,r.IU)(i),[u]=e.propsOptions;let d=!1;if(!(a||l>0)||16&l){let r;dt(e,t,i,s)&&(d=!0);for(const a in c)t&&((0,o.RI)(t,a)||(r=(0,o.rs)(a))!==a&&(0,o.RI)(t,r))||(u?!n||void 0===n[a]&&void 0===n[r]||(i[a]=pt(u,c,a,void 0,e,!0)):delete i[a]);if(s!==c)for(const e in s)t&&(0,o.RI)(t,e)||(delete s[e],d=!0)}else if(8&l){const n=e.vnode.dynamicProps;for(let r=0;r{const{vnode:r,slots:a}=e;let i=!0,s=o.kT;if(32&r.shapeFlag){const e=t._;e?n&&1===e?i=!1:((0,o.l7)(a,t),n||1!==e||delete a._):(i=!t.$stable,kt(t,a)),s=t}else t&&(wt(e,t),s={default:1});if(i)for(const e in a)vt(e)||e in s||delete a[e]})(e,t.children,n),(0,r.Jd)(),P(void 0,e.update),(0,r.lk)()},V=(e,t,n,r,o,a,i,s,l=!1)=>{const c=e&&e.children,u=e?e.shapeFlag:0,d=t.children,{patchFlag:h,shapeFlag:f}=t;if(h>0){if(128&h)return void G(c,d,n,r,o,a,i,s,l);if(256&h)return void W(c,d,n,r,o,a,i,s,l)}8&f?(16&u&&ee(c,o,a),d!==c&&p(n,d)):16&u?16&f?G(c,d,n,r,o,a,i,s,l):ee(c,o,a,!0):(8&u&&p(n,""),16&f&&T(d,n,r,o,a,i,s,l))},W=(e,t,n,r,a,i,s,l,c)=>{e=e||o.Z6,t=t||o.Z6;const u=e.length,d=t.length,p=Math.min(u,d);let h;for(h=0;hd?ee(e,a,i,!0,!1,p):T(t,n,r,a,i,s,l,c,p)},G=(e,t,n,r,a,i,s,l,c)=>{let u=0;const d=t.length;let p=e.length-1,h=d-1;for(;u<=p&&u<=h;){const r=e[u],o=t[u]=c?Sn(t[u]):Cn(t[u]);if(!hn(r,o))break;_(r,o,n,null,a,i,s,l,c),u++}for(;u<=p&&u<=h;){const r=e[p],o=t[h]=c?Sn(t[h]):Cn(t[h]);if(!hn(r,o))break;_(r,o,n,null,a,i,s,l,c),p--,h--}if(u>p){if(u<=h){const e=h+1,o=eh)for(;u<=p;)Y(e[u],a,i,!0),u++;else{const f=u,m=u,g=new Map;for(u=m;u<=h;u++){const e=t[u]=c?Sn(t[u]):Cn(t[u]);null!=e.key&&g.set(e.key,u)}let b,v=0;const y=h-m+1;let k=!1,w=0;const x=new Array(y);for(u=0;u=y){Y(r,a,i,!0);continue}let o;if(null!=r.key)o=g.get(r.key);else for(b=m;b<=h;b++)if(0===x[b-m]&&hn(r,t[b])){o=b;break}void 0===o?Y(r,a,i,!0):(x[o-m]=u+1,o>=w?w=o:k=!0,_(r,t[o],n,null,a,i,s,l,c),v++)}const A=k?function(e){const t=e.slice(),n=[0];let r,o,a,i,s;const l=e.length;for(r=0;r>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,i=n[a-1];a-- >0;)n[a]=i,i=t[i];return n}(x):o.Z6;for(b=A.length-1,u=y-1;u>=0;u--){const e=m+u,o=t[e],p=e+1{const{el:i,type:s,transition:l,children:c,shapeFlag:u}=e;if(6&u)J(e.component.subTree,t,n,r);else if(128&u)e.suspense.move(t,n,r);else if(64&u)s.move(e,t,n,ae);else if(s!==Zt)if(s!==en)if(2!==r&&1&u&&l)if(0===r)l.beforeEnter(i),a(i,t,n),Rt((()=>l.enter(i)),o);else{const{leave:e,delayLeave:r,afterLeave:o}=l,s=()=>a(i,t,n),c=()=>{e(i,(()=>{s(),o&&o()}))};r?r(i,s,c):c()}else a(i,t,n);else(({el:e,anchor:t},n,r)=>{let o;for(;e&&e!==t;)o=g(e),a(e,n,r),e=o;a(t,n,r)})(e,t,n);else{a(i,t,n);for(let e=0;e{const{type:a,props:i,ref:s,children:l,dynamicChildren:c,shapeFlag:u,patchFlag:d,dirs:p}=e;if(null!=s&&Tt(s,null,n,e,!0),256&u)return void t.ctx.deactivate(e);const h=1&u&&p,f=!De(e);let m;if(f&&(m=i&&i.onVnodeBeforeUnmount)&&On(m,t,e),6&u)K(e.component,n,r);else{if(128&u)return void e.suspense.unmount(n,r);h&&At(e,null,t,"beforeUnmount"),64&u?e.type.remove(e,t,n,o,ae,r):c&&(a!==Zt||d>0&&64&d)?ee(c,t,n,!1,!0):(a===Zt&&384&d||!o&&16&u)&&ee(l,t,n),r&&X(e)}(f&&(m=i&&i.onVnodeUnmounted)||h)&&Rt((()=>{m&&On(m,t,e),h&&At(e,null,t,"unmounted")}),n)},X=e=>{const{type:t,el:n,anchor:r,transition:o}=e;if(t===Zt)return void Z(n,r);if(t===en)return void(({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=g(e),i(e),e=n;i(t)})(e);const a=()=>{i(n),o&&!o.persisted&&o.afterLeave&&o.afterLeave()};if(1&e.shapeFlag&&o&&!o.persisted){const{leave:t,delayLeave:r}=o,i=()=>t(n,a);r?r(e.el,a,i):i()}else a()},Z=(e,t)=>{let n;for(;e!==t;)n=g(e),i(e),e=n;i(t)},K=(e,t,n)=>{const{bum:r,scope:a,update:i,subTree:s,um:l}=e;r&&(0,o.ir)(r),a.stop(),i&&(i.active=!1,Y(s,e,t,n)),l&&Rt(l,t),Rt((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve()),__VUE_PROD_DEVTOOLS__&&q(e)},ee=(e,t,n,r=!1,o=!1,a=0)=>{for(let i=a;i6&e.shapeFlag?te(e.component.subTree):128&e.shapeFlag?e.suspense.next():g(e.anchor||e.el),oe=(e,t,n)=>{null==e?t._vnode&&Y(t._vnode,null,null,!0):_(t._vnode||null,e,t,null,null,null,n),D(),t._vnode=e},ae={p:_,um:Y,m:J,r:X,mt:F,mc:T,pc:V,pbc:I,n:te,o:e};let ie,se;return t&&([ie,se]=t(ae)),{render:oe,hydrate:ie,createApp:Et(oe,ie)}}function Nt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function jt(e,t,n=!1){const r=e.children,a=t.children;if((0,o.kJ)(r)&&(0,o.kJ)(a))for(let e=0;ee&&(e.disabled||""===e.disabled),Bt=e=>"undefined"!=typeof SVGElement&&e instanceof SVGElement,qt=(e,t)=>{const n=e&&e.to;if((0,o.HD)(n)){if(t){return t(n)}return null}return n};function Ht(e,t,n,{o:{insert:r},m:o},a=2){0===a&&r(e.targetAnchor,t,n);const{el:i,anchor:s,shapeFlag:l,children:c,props:u}=e,d=2===a;if(d&&r(i,t,n),(!d||$t(u))&&16&l)for(let e=0;e{16&v&&u(y,e,t,o,a,i,s,l)};b?g(n,c):d&&g(d,p)}else{t.el=e.el;const r=t.anchor=e.anchor,u=t.target=e.target,h=t.targetAnchor=e.targetAnchor,m=$t(e.props),g=m?n:u,v=m?r:h;if(i=i||Bt(u),_?(p(e.dynamicChildren,_,g,o,a,i,s),jt(e,t,!0)):l||d(e,t,g,v,o,a,i,s,!1),b)m||Ht(t,n,r,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const e=t.target=qt(t.props,f);e&&Ht(t,e,null,c,0)}else m&&Ht(t,u,h,c,1)}},remove(e,t,n,r,{um:o,o:{remove:a}},i){const{shapeFlag:s,children:l,anchor:c,targetAnchor:u,target:d,props:p}=e;if(d&&a(u),(i||!$t(p))&&(a(c),16&s))for(let e=0;e0?nn||o.Z6:null,on(),sn>0&&nn&&nn.push(e),e}function un(e,t,n,r,o,a){return cn(vn(e,t,n,r,o,a,!0))}function dn(e,t,n,r,o){return cn(yn(e,t,n,r,o,!0))}function pn(e){return!!e&&!0===e.__v_isVNode}function hn(e,t){return e.type===t.type&&e.key===t.key}function fn(e){an=e}const mn="__vInternal",gn=({key:e})=>null!=e?e:null,bn=({ref:e,ref_key:t,ref_for:n})=>null!=e?(0,o.HD)(e)||(0,r.dq)(e)||(0,o.mf)(e)?{i:W,r:e,k:t,f:!!n}:e:null;function vn(e,t=null,n=null,r=0,a=null,i=(e===Zt?0:1),s=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&gn(t),ref:t&&bn(t),scopeId:G,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null};return l?(En(c,n),128&i&&e.normalize(c)):n&&(c.shapeFlag|=(0,o.HD)(n)?8:16),sn>0&&!s&&nn&&(c.patchFlag>0||6&i)&&32!==c.patchFlag&&nn.push(c),c}const yn=function(e,t=null,n=null,a=0,i=null,s=!1){if(e&&e!==Wt||(e=Qt),pn(e)){const r=kn(e,t,!0);return n&&En(r,n),r}if(l=e,(0,o.mf)(l)&&"__vccOpts"in l&&(e=e.__vccOpts),t){t=_n(t);let{class:e,style:n}=t;e&&!(0,o.HD)(e)&&(t.class=(0,o.C_)(e)),(0,o.Kn)(n)&&((0,r.X3)(n)&&!(0,o.kJ)(n)&&(n=(0,o.l7)({},n)),t.style=(0,o.j5)(n))}var l;return vn(e,t,n,a,i,(0,o.HD)(e)?1:(e=>e.__isSuspense)(e)?128:(e=>e.__isTeleport)(e)?64:(0,o.Kn)(e)?4:(0,o.mf)(e)?2:0,s,!0)};function _n(e){return e?(0,r.X3)(e)||mn in e?(0,o.l7)({},e):e:null}function kn(e,t,n=!1){const{props:r,ref:a,patchFlag:i,children:s}=e,l=t?Tn(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&gn(l),ref:t&&t.ref?n&&a?(0,o.kJ)(a)?a.concat(bn(t)):[a,bn(t)]:bn(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Zt?-1===i?16:16|i:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&kn(e.ssContent),ssFallback:e.ssFallback&&kn(e.ssFallback),el:e.el,anchor:e.anchor}}function wn(e=" ",t=0){return yn(Kt,null,e,t)}function xn(e,t){const n=yn(en,null,e);return n.staticCount=t,n}function An(e="",t=!1){return t?(rn(),dn(Qt,null,e)):yn(Qt,null,e)}function Cn(e){return null==e||"boolean"==typeof e?yn(Qt):(0,o.kJ)(e)?yn(Zt,null,e.slice()):"object"==typeof e?Sn(e):yn(Kt,null,String(e))}function Sn(e){return null===e.el||e.memo?e:kn(e)}function En(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if((0,o.kJ)(t))n=16;else if("object"==typeof t){if(65&r){const n=t.default;return void(n&&(n._c&&(n._d=!1),En(e,n()),n._c&&(n._d=!0)))}{n=32;const r=t._;r||mn in t?3===r&&W&&(1===W.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=W}}else(0,o.mf)(t)?(t={default:t,_ctx:W},n=32):(t=String(t),64&r?(n=16,t=[wn(t)]):n=8);e.children=t,e.shapeFlag|=n}function Tn(...e){const t={};for(let n=0;nt(e,n,void 0,i&&i[n])));else{const n=Object.keys(e);a=new Array(n.length);for(let r=0,o=n.length;r!pn(e)||e.type!==Qt&&!(e.type===Zt&&!Rn(e.children))))?e:null}function Ln(e){const t={};for(const n in e)t[(0,o.hR)(n)]=e[n];return t}const Mn=e=>e?Wn(e)?nr(e)||e.proxy:Mn(e.parent):null,Fn=(0,o.l7)(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Mn(e.parent),$root:e=>Mn(e.root),$emit:e=>e.emit,$options:e=>__VUE_OPTIONS_API__?ot(e):e.type,$forceUpdate:e=>()=>S(e.update),$nextTick:e=>C.bind(e.proxy),$watch:e=>__VUE_OPTIONS_API__?ve.bind(e):o.dG}),Nn={get({_:e},t){const{ctx:n,setupState:a,data:i,props:s,accessCache:l,type:c,appContext:u}=e;let d;if("$"!==t[0]){const r=l[t];if(void 0!==r)switch(r){case 1:return a[t];case 2:return i[t];case 4:return n[t];case 3:return s[t]}else{if(a!==o.kT&&(0,o.RI)(a,t))return l[t]=1,a[t];if(i!==o.kT&&(0,o.RI)(i,t))return l[t]=2,i[t];if((d=e.propsOptions[0])&&(0,o.RI)(d,t))return l[t]=3,s[t];if(n!==o.kT&&(0,o.RI)(n,t))return l[t]=4,n[t];__VUE_OPTIONS_API__&&!tt||(l[t]=0)}}const p=Fn[t];let h,f;return p?("$attrs"===t&&(0,r.j)(e,"get",t),p(e)):(h=c.__cssModules)&&(h=h[t])?h:n!==o.kT&&(0,o.RI)(n,t)?(l[t]=4,n[t]):(f=u.config.globalProperties,(0,o.RI)(f,t)?f[t]:void 0)},set({_:e},t,n){const{data:r,setupState:a,ctx:i}=e;return a!==o.kT&&(0,o.RI)(a,t)?(a[t]=n,!0):r!==o.kT&&(0,o.RI)(r,t)?(r[t]=n,!0):!((0,o.RI)(e.props,t)||"$"===t[0]&&t.slice(1)in e||(i[t]=n,0))},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:a,propsOptions:i}},s){let l;return!!n[s]||e!==o.kT&&(0,o.RI)(e,s)||t!==o.kT&&(0,o.RI)(t,s)||(l=i[0])&&(0,o.RI)(l,s)||(0,o.RI)(r,s)||(0,o.RI)(Fn,s)||(0,o.RI)(a.config.globalProperties,s)},defineProperty(e,t,n){return null!=n.get?this.set(e,t,n.get(),null):null!=n.value&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},jn=(0,o.l7)({},Nn,{get(e,t){if(t!==Symbol.unscopables)return Nn.get(e,t,e)},has:(e,t)=>"_"!==t[0]&&!(0,o.e1)(t)}),$n=Ct();let Bn=0;function qn(e,t,n){const a=e.type,i=(t?t.appContext:e.appContext)||$n,s={uid:Bn++,vnode:e,type:a,parent:t,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,scope:new r.Bj(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(i.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:ht(a,i),emitsOptions:V(a,i),emit:null,emitted:null,propsDefaults:o.kT,inheritAttrs:a.inheritAttrs,ctx:o.kT,data:o.kT,props:o.kT,attrs:o.kT,slots:o.kT,refs:o.kT,setupState:o.kT,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return s.ctx={_:s},s.root=t?t.root:s,s.emit=U.bind(null,s),e.ce&&e.ce(s),s}let Hn=null;const Un=()=>Hn||W,Vn=e=>{Hn=e,e.scope.on()},zn=()=>{Hn&&Hn.scope.off(),Hn=null};function Wn(e){return 4&e.vnode.shapeFlag}let Gn,Jn,Yn=!1;function Xn(e,t=!1){Yn=t;const{props:n,children:a}=e.vnode,i=Wn(e);!function(e,t,n,a=!1){const i={},s={};(0,o.Nj)(s,mn,1),e.propsDefaults=Object.create(null),dt(e,t,i,s);for(const t in e.propsOptions[0])t in i||(i[t]=void 0);n?e.props=a?i:(0,r.Um)(i):e.type.props?e.props=i:e.props=s,e.attrs=s}(e,n,i,t),((e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=(0,r.IU)(t),(0,o.Nj)(t,"_",n)):kt(t,e.slots={})}else e.slots={},t&&wt(e,t);(0,o.Nj)(e.slots,mn,1)})(e,a);const s=i?function(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=(0,r.Xl)(new Proxy(e.ctx,Nn));const{setup:a}=n;if(a){const n=e.setupContext=a.length>1?tr(e):null;Vn(e),(0,r.Jd)();const i=c(a,e,0,[e.props,n]);if((0,r.lk)(),zn(),(0,o.tI)(i)){if(i.then(zn,zn),t)return i.then((n=>{Zn(e,n,t)})).catch((t=>{d(t,e,0)}));e.asyncDep=i}else Zn(e,i,t)}else er(e,t)}(e,t):void 0;return Yn=!1,s}function Zn(e,t,n){(0,o.mf)(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:(0,o.Kn)(t)&&(__VUE_PROD_DEVTOOLS__&&(e.devtoolsRawSetupState=t),e.setupState=(0,r.WL)(t)),er(e,n)}function Kn(e){Gn=e,Jn=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,jn))}}const Qn=()=>!Gn;function er(e,t,n){const a=e.type;if(!e.render){if(!t&&Gn&&!a.render){const t=a.template;if(t){const{isCustomElement:n,compilerOptions:r}=e.appContext.config,{delimiters:i,compilerOptions:s}=a,l=(0,o.l7)((0,o.l7)({isCustomElement:n,delimiters:i},r),s);a.render=Gn(t,l)}}e.render=a.render||o.dG,Jn&&Jn(e)}__VUE_OPTIONS_API__&&(Vn(e),(0,r.Jd)(),function(e){const t=ot(e),n=e.proxy,a=e.ctx;tt=!1,t.beforeCreate&&nt(t.beforeCreate,e,"bc");const{data:i,computed:s,methods:l,watch:c,provide:u,inject:d,created:p,beforeMount:h,mounted:f,beforeUpdate:m,updated:g,activated:b,deactivated:v,beforeDestroy:y,beforeUnmount:_,destroyed:k,unmounted:w,render:x,renderTracked:A,renderTriggered:C,errorCaptured:S,serverPrefetch:E,expose:T,inheritAttrs:O,components:P,directives:D,filters:I}=t;if(d&&function(e,t,n=o.dG,a=!1){(0,o.kJ)(e)&&(e=lt(e));for(const n in e){const i=e[n];let s;s=(0,o.Kn)(i)?"default"in i?de(i.from||n,i.default,!0):de(i.from||n):de(i),(0,r.dq)(s)&&a?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>s.value,set:e=>s.value=e}):t[n]=s}}(d,a,null,e.appContext.config.unwrapInjectedRef),l)for(const e in l){const t=l[e];(0,o.mf)(t)&&(a[e]=t.bind(n))}if(i){const t=i.call(n,n);(0,o.Kn)(t)&&(e.data=(0,r.qj)(t))}if(tt=!0,s)for(const e in s){const t=s[e],r=(0,o.mf)(t)?t.bind(n,n):(0,o.mf)(t.get)?t.get.bind(n,n):o.dG,i=!(0,o.mf)(t)&&(0,o.mf)(t.set)?t.set.bind(n):o.dG,l=ir({get:r,set:i});Object.defineProperty(a,e,{enumerable:!0,configurable:!0,get:()=>l.value,set:e=>l.value=e})}if(c)for(const e in c)rt(c[e],a,n,e);if(u){const e=(0,o.mf)(u)?u.call(n):u;Reflect.ownKeys(e).forEach((t=>{ue(t,e[t])}))}function R(e,t){(0,o.kJ)(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(p&&nt(p,e,"c"),R(ze,h),R(We,f),R(Ge,m),R(Je,g),R(Ne,b),R(je,v),R(et,S),R(Qe,A),R(Ke,C),R(Ye,_),R(Xe,w),R(Ze,E),(0,o.kJ)(T))if(T.length){const t=e.exposed||(e.exposed={});T.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});x&&e.render===o.dG&&(e.render=x),null!=O&&(e.inheritAttrs=O),P&&(e.components=P),D&&(e.directives=D)}(e),(0,r.lk)(),zn())}function tr(e){let t;return{get attrs(){return t||(t=function(e){return new Proxy(e.attrs,{get:(t,n)=>((0,r.j)(e,"get","$attrs"),t[n])})}(e))},slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function nr(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy((0,r.WL)((0,r.Xl)(e.exposed)),{get:(t,n)=>n in t?t[n]:n in Fn?Fn[n](e):void 0}))}const rr=/(?:^|[-_])(\w)/g;function or(e){return(0,o.mf)(e)&&e.displayName||e.name}function ar(e,t,n=!1){let r=or(t);if(!r&&t.__file){const e=t.__file.match(/([^/\\]+)\.\w+$/);e&&(r=e[1])}if(!r&&e&&e.parent){const n=e=>{for(const n in e)if(e[n]===t)return n};r=n(e.components||e.parent.type.components)||n(e.appContext.components)}return r?r.replace(rr,(e=>e.toUpperCase())).replace(/[-_]/g,""):n?"App":"Anonymous"}const ir=(e,t)=>(0,r.Fl)(e,t,Yn);function sr(){return null}function lr(){return null}function cr(e){}function ur(e,t){return null}function dr(){return hr().slots}function pr(){return hr().attrs}function hr(){const e=Un();return e.setupContext||(e.setupContext=tr(e))}function fr(e,t){const n=(0,o.kJ)(e)?e.reduce(((e,t)=>(e[t]={},e)),{}):e;for(const e in t){const r=n[e];r?(0,o.kJ)(r)||(0,o.mf)(r)?n[e]={type:r,default:t[e]}:r.default=t[e]:null===r&&(n[e]={default:t[e]})}return n}function mr(e,t){const n={};for(const r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n}function gr(e){const t=Un();let n=e();return zn(),(0,o.tI)(n)&&(n=n.catch((e=>{throw Vn(t),e}))),[n,()=>Vn(t)]}function br(e,t,n){const r=arguments.length;return 2===r?(0,o.Kn)(t)&&!(0,o.kJ)(t)?pn(t)?yn(e,null,[t]):yn(e,t):yn(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&pn(n)&&(n=[n]),yn(e,t,n))}const vr=Symbol(""),yr=()=>{{const e=de(vr);return e||i("Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build."),e}};function _r(){}function kr(e,t,n,r){const o=n[r];if(o&&wr(o,e))return o;const a=t();return a.memo=e.slice(),n[r]=a}function wr(e,t){const n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e0&&nn&&nn.push(e),!0}const xr="3.2.31",Ar={createComponentInstance:qn,setupComponent:Xn,renderComponentRoot:Q,setCurrentRenderingInstance:J,isVNode:pn,normalizeVNode:Cn},Cr=null,Sr=null},9963:(e,t,n)=>{"use strict";n.r(t),n.d(t,{BaseTransition:()=>o.P$,Comment:()=>o.sv,EffectScope:()=>o.Bj,Fragment:()=>o.HY,KeepAlive:()=>o.Ob,ReactiveEffect:()=>o.qq,Static:()=>o.qG,Suspense:()=>o.n4,Teleport:()=>o.lR,Text:()=>o.xv,Transition:()=>I,TransitionGroup:()=>X,VueElement:()=>C,callWithAsyncErrorHandling:()=>o.$d,callWithErrorHandling:()=>o.KU,camelize:()=>o._A,capitalize:()=>o.kC,cloneVNode:()=>o.Ho,compatUtils:()=>o.ry,computed:()=>o.Fl,createApp:()=>Ee,createBlock:()=>o.j4,createCommentVNode:()=>o.kq,createElementBlock:()=>o.iD,createElementVNode:()=>o._,createHydrationRenderer:()=>o.Eo,createPropsRestProxy:()=>o.p1,createRenderer:()=>o.Us,createSSRApp:()=>Te,createSlots:()=>o.Nv,createStaticVNode:()=>o.uE,createTextVNode:()=>o.Uk,createVNode:()=>o.Wm,customRef:()=>o.ZM,defineAsyncComponent:()=>o.RC,defineComponent:()=>o.aZ,defineCustomElement:()=>w,defineEmits:()=>o.Bz,defineExpose:()=>o.WY,defineProps:()=>o.MW,defineSSRCustomElement:()=>x,devtools:()=>o.mW,effect:()=>o.cE,effectScope:()=>o.B,getCurrentInstance:()=>o.FN,getCurrentScope:()=>o.nZ,getTransitionRawChildren:()=>o.Q6,guardReactiveProps:()=>o.F4,h:()=>o.h,handleError:()=>o.S3,hydrate:()=>Se,initCustomFormatter:()=>o.Mr,initDirectivesForSSR:()=>De,inject:()=>o.f3,isMemoSame:()=>o.nQ,isProxy:()=>o.X3,isReactive:()=>o.PG,isReadonly:()=>o.$y,isRef:()=>o.dq,isRuntimeOnly:()=>o.of,isShallow:()=>o.yT,isVNode:()=>o.lA,markRaw:()=>o.Xl,mergeDefaults:()=>o.u_,mergeProps:()=>o.dG,nextTick:()=>o.Y3,normalizeClass:()=>o.C_,normalizeProps:()=>o.vs,normalizeStyle:()=>o.j5,onActivated:()=>o.dl,onBeforeMount:()=>o.wF,onBeforeUnmount:()=>o.Jd,onBeforeUpdate:()=>o.Xn,onDeactivated:()=>o.se,onErrorCaptured:()=>o.d1,onMounted:()=>o.bv,onRenderTracked:()=>o.bT,onRenderTriggered:()=>o.Yq,onScopeDispose:()=>o.EB,onServerPrefetch:()=>o.vl,onUnmounted:()=>o.Ah,onUpdated:()=>o.ic,openBlock:()=>o.wg,popScopeId:()=>o.Cn,provide:()=>o.JJ,proxyRefs:()=>o.WL,pushScopeId:()=>o.dD,queuePostFlushCb:()=>o.qb,reactive:()=>o.qj,readonly:()=>o.OT,ref:()=>o.iH,registerRuntimeCompiler:()=>o.Y1,render:()=>Ce,renderList:()=>o.Ko,renderSlot:()=>o.WI,resolveComponent:()=>o.up,resolveDirective:()=>o.Q2,resolveDynamicComponent:()=>o.LL,resolveFilter:()=>o.eq,resolveTransitionHooks:()=>o.U2,setBlockTracking:()=>o.qZ,setDevtoolsHook:()=>o.ec,setTransitionHooks:()=>o.nK,shallowReactive:()=>o.Um,shallowReadonly:()=>o.YS,shallowRef:()=>o.XI,ssrContextKey:()=>o.Uc,ssrUtils:()=>o.G,stop:()=>o.sT,toDisplayString:()=>o.zw,toHandlerKey:()=>o.hR,toHandlers:()=>o.mx,toRaw:()=>o.IU,toRef:()=>o.Vh,toRefs:()=>o.BK,transformVNodeArgs:()=>o.C3,triggerRef:()=>o.oR,unref:()=>o.SU,useAttrs:()=>o.l1,useCssModule:()=>S,useCssVars:()=>E,useSSRContext:()=>o.Zq,useSlots:()=>o.Rr,useTransitionState:()=>o.Y8,vModelCheckbox:()=>oe,vModelDynamic:()=>de,vModelRadio:()=>ie,vModelSelect:()=>se,vModelText:()=>re,vShow:()=>ve,version:()=>o.i8,warn:()=>o.ZK,watch:()=>o.YP,watchEffect:()=>o.m0,watchPostEffect:()=>o.Rh,watchSyncEffect:()=>o.yX,withAsyncContext:()=>o.mv,withCtx:()=>o.w5,withDefaults:()=>o.b9,withDirectives:()=>o.wy,withKeys:()=>be,withMemo:()=>o.MX,withModifiers:()=>me,withScopeId:()=>o.HX});var r=n(3577),o=n(6252),a=n(2262);const i="undefined"!=typeof document?document:null,s=i&&i.createElement("template"),l={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?i.createElementNS("http://www.w3.org/2000/svg",e):i.createElement(e,n?{is:n}:void 0);return"select"===e&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:e=>i.createTextNode(e),createComment:e=>i.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>i.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,r,o,a){const i=n?n.previousSibling:t.lastChild;if(o&&(o===a||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),o!==a&&(o=o.nextSibling););else{s.innerHTML=r?`${e}`:e;const o=s.content;if(r){const e=o.firstChild;for(;e.firstChild;)o.appendChild(e.firstChild);o.removeChild(e)}t.insertBefore(o,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},c=/\s*!important$/;function u(e,t,n){if((0,r.kJ)(n))n.forEach((n=>u(e,t,n)));else if(t.startsWith("--"))e.setProperty(t,n);else{const o=function(e,t){const n=p[t];if(n)return n;let o=(0,r._A)(t);if("filter"!==o&&o in e)return p[t]=o;o=(0,r.kC)(o);for(let n=0;ndocument.createEvent("Event").timeStamp&&(f=()=>performance.now());const e=navigator.userAgent.match(/firefox\/(\d+)/i);m=!!(e&&Number(e[1])<=53)}let g=0;const b=Promise.resolve(),v=()=>{g=0};function y(e,t,n,r){e.addEventListener(t,n,r)}const _=/(?:Once|Passive|Capture)$/,k=/^on[a-z]/;function w(e,t){const n=(0,o.aZ)(e);class r extends C{constructor(e){super(n,e,t)}}return r.def=n,r}const x=e=>w(e,Se),A="undefined"!=typeof HTMLElement?HTMLElement:class{};class C extends A{constructor(e,t={},n){super(),this._def=e,this._props=t,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):this.attachShadow({mode:"open"})}connectedCallback(){this._connected=!0,this._instance||this._resolveDef()}disconnectedCallback(){this._connected=!1,(0,o.Y3)((()=>{this._connected||(Ce(null,this.shadowRoot),this._instance=null)}))}_resolveDef(){if(this._resolved)return;this._resolved=!0;for(let e=0;e{for(const t of e)this._setAttr(t.attributeName)})).observe(this,{attributes:!0});const e=e=>{const{props:t,styles:n}=e,o=!(0,r.kJ)(t),a=t?o?Object.keys(t):t:[];let i;if(o)for(const e in this._props){const n=t[e];(n===Number||n&&n.type===Number)&&(this._props[e]=(0,r.He)(this._props[e]),(i||(i=Object.create(null)))[e]=!0)}this._numberProps=i;for(const e of Object.keys(this))"_"!==e[0]&&this._setProp(e,this[e],!0,!1);for(const e of a.map(r._A))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t)}});this._applyStyles(n),this._update()},t=this._def.__asyncLoader;t?t().then(e):e(this._def)}_setAttr(e){let t=this.getAttribute(e);this._numberProps&&this._numberProps[e]&&(t=(0,r.He)(t)),this._setProp((0,r._A)(e),t,!1)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,o=!0){t!==this._props[e]&&(this._props[e]=t,o&&this._instance&&this._update(),n&&(!0===t?this.setAttribute((0,r.rs)(e),""):"string"==typeof t||"number"==typeof t?this.setAttribute((0,r.rs)(e),t+""):t||this.removeAttribute((0,r.rs)(e))))}_update(){Ce(this._createVNode(),this.shadowRoot)}_createVNode(){const e=(0,o.Wm)(this._def,(0,r.l7)({},this._props));return this._instance||(e.ce=e=>{this._instance=e,e.isCE=!0,e.emit=(e,...t)=>{this.dispatchEvent(new CustomEvent(e,{detail:t}))};let t=this;for(;t=t&&(t.parentNode||t.host);)if(t instanceof C){e.parent=t._instance;break}}),e}_applyStyles(e){e&&e.forEach((e=>{const t=document.createElement("style");t.textContent=e,this.shadowRoot.appendChild(t)}))}}function S(e="$style"){{const t=(0,o.FN)();if(!t)return r.kT;const n=t.type.__cssModules;if(!n)return r.kT;return n[e]||r.kT}}function E(e){const t=(0,o.FN)();if(!t)return;const n=()=>T(t.subTree,e(t.proxy));(0,o.Rh)(n),(0,o.bv)((()=>{const e=new MutationObserver(n);e.observe(t.subTree.el.parentNode,{childList:!0}),(0,o.Ah)((()=>e.disconnect()))}))}function T(e,t){if(128&e.shapeFlag){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push((()=>{T(n.activeBranch,t)}))}for(;e.component;)e=e.component.subTree;if(1&e.shapeFlag&&e.el)O(e.el,t);else if(e.type===o.HY)e.children.forEach((e=>T(e,t)));else if(e.type===o.qG){let{el:n,anchor:r}=e;for(;n&&(O(n,t),n!==r);)n=n.nextSibling}}function O(e,t){if(1===e.nodeType){const n=e.style;for(const e in t)n.setProperty(`--${e}`,t[e])}}const P="transition",D="animation",I=(e,{slots:t})=>(0,o.h)(o.P$,N(e),t);I.displayName="Transition";const R={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},L=I.props=(0,r.l7)({},o.P$.props,R),M=(e,t=[])=>{(0,r.kJ)(e)?e.forEach((e=>e(...t))):e&&e(...t)},F=e=>!!e&&((0,r.kJ)(e)?e.some((e=>e.length>1)):e.length>1);function N(e){const t={};for(const n in e)n in R||(t[n]=e[n]);if(!1===e.css)return t;const{name:n="v",type:o,duration:a,enterFromClass:i=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:u=s,appearToClass:d=l,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:f=`${n}-leave-to`}=e,m=function(e){if(null==e)return null;if((0,r.Kn)(e))return[j(e.enter),j(e.leave)];{const t=j(e);return[t,t]}}(a),g=m&&m[0],b=m&&m[1],{onBeforeEnter:v,onEnter:y,onEnterCancelled:_,onLeave:k,onLeaveCancelled:w,onBeforeAppear:x=v,onAppear:A=y,onAppearCancelled:C=_}=t,S=(e,t,n)=>{B(e,t?d:l),B(e,t?u:s),n&&n()},E=(e,t)=>{B(e,f),B(e,h),t&&t()},T=e=>(t,n)=>{const r=e?A:y,a=()=>S(t,e,n);M(r,[t,a]),q((()=>{B(t,e?c:i),$(t,e?d:l),F(r)||U(t,o,g,a)}))};return(0,r.l7)(t,{onBeforeEnter(e){M(v,[e]),$(e,i),$(e,s)},onBeforeAppear(e){M(x,[e]),$(e,c),$(e,u)},onEnter:T(!1),onAppear:T(!0),onLeave(e,t){const n=()=>E(e,t);$(e,p),G(),$(e,h),q((()=>{B(e,p),$(e,f),F(k)||U(e,o,b,n)})),M(k,[e,n])},onEnterCancelled(e){S(e,!1),M(_,[e])},onAppearCancelled(e){S(e,!0),M(C,[e])},onLeaveCancelled(e){E(e),M(w,[e])}})}function j(e){return(0,r.He)(e)}function $(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e._vtc||(e._vtc=new Set)).add(t)}function B(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function q(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let H=0;function U(e,t,n,r){const o=e._endId=++H,a=()=>{o===e._endId&&r()};if(n)return setTimeout(a,n);const{type:i,timeout:s,propCount:l}=V(e,t);if(!i)return r();const c=i+"end";let u=0;const d=()=>{e.removeEventListener(c,p),a()},p=t=>{t.target===e&&++u>=l&&d()};setTimeout((()=>{u(n[e]||"").split(", "),o=r("transitionDelay"),a=r("transitionDuration"),i=z(o,a),s=r("animationDelay"),l=r("animationDuration"),c=z(s,l);let u=null,d=0,p=0;return t===P?i>0&&(u=P,d=i,p=a.length):t===D?c>0&&(u=D,d=c,p=l.length):(d=Math.max(i,c),u=d>0?i>c?P:D:null,p=u?u===P?a.length:l.length:0),{type:u,timeout:d,propCount:p,hasTransform:u===P&&/\b(transform|all)(,|$)/.test(n.transitionProperty)}}function z(e,t){for(;e.lengthW(t)+W(e[n]))))}function W(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function G(){return document.body.offsetHeight}const J=new WeakMap,Y=new WeakMap,X={name:"TransitionGroup",props:(0,r.l7)({},L,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=(0,o.FN)(),r=(0,o.Y8)();let i,s;return(0,o.ic)((()=>{if(!i.length)return;const t=e.moveClass||`${e.name||"v"}-move`;if(!function(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach((e=>{e.split(/\s+/).forEach((e=>e&&r.classList.remove(e)))})),n.split(/\s+/).forEach((e=>e&&r.classList.add(e))),r.style.display="none";const o=1===t.nodeType?t:t.parentNode;o.appendChild(r);const{hasTransform:a}=V(r);return o.removeChild(r),a}(i[0].el,n.vnode.el,t))return;i.forEach(Z),i.forEach(K);const r=i.filter(Q);G(),r.forEach((e=>{const n=e.el,r=n.style;$(n,t),r.transform=r.webkitTransform=r.transitionDuration="";const o=n._moveCb=e=>{e&&e.target!==n||e&&!/transform$/.test(e.propertyName)||(n.removeEventListener("transitionend",o),n._moveCb=null,B(n,t))};n.addEventListener("transitionend",o)}))})),()=>{const l=(0,a.IU)(e),c=N(l);let u=l.tag||o.HY;i=s,s=t.default?(0,o.Q6)(t.default()):[];for(let e=0;e{const t=e.props["onUpdate:modelValue"];return(0,r.kJ)(t)?e=>(0,r.ir)(t,e):t};function te(e){e.target.composing=!0}function ne(e){const t=e.target;t.composing&&(t.composing=!1,function(e,t){const n=document.createEvent("HTMLEvents");n.initEvent("input",!0,!0),e.dispatchEvent(n)}(t))}const re={created(e,{modifiers:{lazy:t,trim:n,number:o}},a){e._assign=ee(a);const i=o||a.props&&"number"===a.props.type;y(e,t?"change":"input",(t=>{if(t.target.composing)return;let o=e.value;n?o=o.trim():i&&(o=(0,r.He)(o)),e._assign(o)})),n&&y(e,"change",(()=>{e.value=e.value.trim()})),t||(y(e,"compositionstart",te),y(e,"compositionend",ne),y(e,"change",ne))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:o,number:a}},i){if(e._assign=ee(i),e.composing)return;if(document.activeElement===e){if(n)return;if(o&&e.value.trim()===t)return;if((a||"number"===e.type)&&(0,r.He)(e.value)===t)return}const s=null==t?"":t;e.value!==s&&(e.value=s)}},oe={deep:!0,created(e,t,n){e._assign=ee(n),y(e,"change",(()=>{const t=e._modelValue,n=ce(e),o=e.checked,a=e._assign;if((0,r.kJ)(t)){const e=(0,r.hq)(t,n),i=-1!==e;if(o&&!i)a(t.concat(n));else if(!o&&i){const n=[...t];n.splice(e,1),a(n)}}else if((0,r.DM)(t)){const e=new Set(t);o?e.add(n):e.delete(n),a(e)}else a(ue(e,o))}))},mounted:ae,beforeUpdate(e,t,n){e._assign=ee(n),ae(e,t,n)}};function ae(e,{value:t,oldValue:n},o){e._modelValue=t,(0,r.kJ)(t)?e.checked=(0,r.hq)(t,o.props.value)>-1:(0,r.DM)(t)?e.checked=t.has(o.props.value):t!==n&&(e.checked=(0,r.WV)(t,ue(e,!0)))}const ie={created(e,{value:t},n){e.checked=(0,r.WV)(t,n.props.value),e._assign=ee(n),y(e,"change",(()=>{e._assign(ce(e))}))},beforeUpdate(e,{value:t,oldValue:n},o){e._assign=ee(o),t!==n&&(e.checked=(0,r.WV)(t,o.props.value))}},se={deep:!0,created(e,{value:t,modifiers:{number:n}},o){const a=(0,r.DM)(t);y(e,"change",(()=>{const t=Array.prototype.filter.call(e.options,(e=>e.selected)).map((e=>n?(0,r.He)(ce(e)):ce(e)));e._assign(e.multiple?a?new Set(t):t:t[0])})),e._assign=ee(o)},mounted(e,{value:t}){le(e,t)},beforeUpdate(e,t,n){e._assign=ee(n)},updated(e,{value:t}){le(e,t)}};function le(e,t){const n=e.multiple;if(!n||(0,r.kJ)(t)||(0,r.DM)(t)){for(let o=0,a=e.options.length;o-1:a.selected=t.has(i);else if((0,r.WV)(ce(a),t))return void(e.selectedIndex!==o&&(e.selectedIndex=o))}n||-1===e.selectedIndex||(e.selectedIndex=-1)}}function ce(e){return"_value"in e?e._value:e.value}function ue(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const de={created(e,t,n){pe(e,t,n,null,"created")},mounted(e,t,n){pe(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){pe(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){pe(e,t,n,r,"updated")}};function pe(e,t,n,r,o){let a;switch(e.tagName){case"SELECT":a=se;break;case"TEXTAREA":a=re;break;default:switch(n.props&&n.props.type){case"checkbox":a=oe;break;case"radio":a=ie;break;default:a=re}}const i=a[o];i&&i(e,t,n,r)}const he=["ctrl","shift","alt","meta"],fe={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>he.some((n=>e[`${n}Key`]&&!t.includes(n)))},me=(e,t)=>(n,...r)=>{for(let e=0;en=>{if(!("key"in n))return;const o=(0,r.rs)(n.key);return t.some((e=>e===o||ge[e]===o))?e(n):void 0},ve={beforeMount(e,{value:t},{transition:n}){e._vod="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):ye(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),ye(e,!0),r.enter(e)):r.leave(e,(()=>{ye(e,!1)})):ye(e,t))},beforeUnmount(e,{value:t}){ye(e,t)}};function ye(e,t){e.style.display=t?e._vod:"none"}const _e=(0,r.l7)({patchProp:(e,t,n,a,i=!1,s,l,c,d)=>{"class"===t?function(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}(e,a,i):"style"===t?function(e,t,n){const o=e.style,a=(0,r.HD)(n);if(n&&!a){for(const e in n)u(o,e,n[e]);if(t&&!(0,r.HD)(t))for(const e in t)null==n[e]&&u(o,e,"")}else{const r=o.display;a?t!==n&&(o.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(o.display=r)}}(e,n,a):(0,r.F7)(t)?(0,r.tR)(t)||function(e,t,n,a,i=null){const s=e._vei||(e._vei={}),l=s[t];if(a&&l)l.value=a;else{const[n,c]=function(e){let t;if(_.test(e)){let n;for(t={};n=e.match(_);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[(0,r.rs)(e.slice(2)),t]}(t);if(a){const l=s[t]=function(e,t){const n=e=>{const a=e.timeStamp||f();(m||a>=n.attached-1)&&(0,o.$d)(function(e,t){if((0,r.kJ)(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=g||(b.then(v),g=f()),n}(a,i);y(e,n,l,c)}else l&&(function(e,t,n,r){e.removeEventListener(t,n,r)}(e,n,l,c),s[t]=void 0)}}(e,t,0,a,l):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):function(e,t,n,o){return o?"innerHTML"===t||"textContent"===t||!!(t in e&&k.test(t)&&(0,r.mf)(n)):"spellcheck"!==t&&"draggable"!==t&&("form"!==t&&(("list"!==t||"INPUT"!==e.tagName)&&(("type"!==t||"TEXTAREA"!==e.tagName)&&((!k.test(t)||!(0,r.HD)(n))&&t in e))))}(e,t,a,i))?function(e,t,n,o,a,i,s){if("innerHTML"===t||"textContent"===t)return o&&s(o,a,i),void(e[t]=null==n?"":n);if("value"===t&&"PROGRESS"!==e.tagName&&!e.tagName.includes("-")){e._value=n;const r=null==n?"":n;return e.value===r&&"OPTION"!==e.tagName||(e.value=r),void(null==n&&e.removeAttribute(t))}if(""===n||null==n){const o=typeof e[t];if("boolean"===o)return void(e[t]=(0,r.yA)(n));if(null==n&&"string"===o)return e[t]="",void e.removeAttribute(t);if("number"===o){try{e[t]=0}catch(e){}return void e.removeAttribute(t)}}try{e[t]=n}catch(e){}}(e,t,a,s,l,c,d):("true-value"===t?e._trueValue=a:"false-value"===t&&(e._falseValue=a),function(e,t,n,o,a){if(o&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(h,t.slice(6,t.length)):e.setAttributeNS(h,t,n);else{const o=(0,r.Pq)(t);null==n||o&&!(0,r.yA)(n)?e.removeAttribute(t):e.setAttribute(t,o?"":n)}}(e,t,a,i))}},l);let ke,we=!1;function xe(){return ke||(ke=(0,o.Us)(_e))}function Ae(){return ke=we?ke:(0,o.Eo)(_e),we=!0,ke}const Ce=(...e)=>{xe().render(...e)},Se=(...e)=>{Ae().hydrate(...e)},Ee=(...e)=>{const t=xe().createApp(...e),{mount:n}=t;return t.mount=e=>{const o=Oe(e);if(!o)return;const a=t._component;(0,r.mf)(a)||a.render||a.template||(a.template=o.innerHTML),o.innerHTML="";const i=n(o,!1,o instanceof SVGElement);return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t},Te=(...e)=>{const t=Ae().createApp(...e),{mount:n}=t;return t.mount=e=>{const t=Oe(e);if(t)return n(t,!0,t instanceof SVGElement)},t};function Oe(e){return(0,r.HD)(e)?document.querySelector(e):e}let Pe=!1;const De=()=>{Pe||(Pe=!0,re.getSSRProps=({value:e})=>({value:e}),ie.getSSRProps=({value:e},t)=>{if(t.props&&(0,r.WV)(t.props.value,e))return{checked:!0}},oe.getSSRProps=({value:e},t)=>{if((0,r.kJ)(e)){if(t.props&&(0,r.hq)(e,t.props.value)>-1)return{checked:!0}}else if((0,r.DM)(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},ve.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}})}},3577:(e,t,n)=>{"use strict";function r(e,t){const n=Object.create(null),r=e.split(",");for(let e=0;e!!n[e.toLowerCase()]:e=>!!n[e]}n.d(t,{C_:()=>d,DM:()=>P,E9:()=>te,F7:()=>w,Gg:()=>H,HD:()=>R,He:()=>Q,Kn:()=>M,NO:()=>_,Nj:()=>K,Od:()=>C,PO:()=>B,Pq:()=>a,RI:()=>E,S0:()=>q,W7:()=>$,WV:()=>h,Z6:()=>v,_A:()=>z,_N:()=>O,aU:()=>X,dG:()=>y,e1:()=>o,fY:()=>r,hR:()=>Y,hq:()=>f,ir:()=>Z,j5:()=>s,kC:()=>J,kJ:()=>T,kT:()=>b,l7:()=>A,mf:()=>I,rs:()=>G,tI:()=>F,tR:()=>x,vs:()=>p,yA:()=>i,yk:()=>L,zw:()=>m});const o=r("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt"),a=r("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function i(e){return!!e||""===e}function s(e){if(T(e)){const t={};for(let n=0;n{if(e){const n=e.split(c);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function d(e){let t="";if(R(e))t=e;else if(T(e))for(let n=0;nh(e,t)))}const m=e=>R(e)?e:null==e?"":T(e)||M(e)&&(e.toString===N||!I(e.toString))?JSON.stringify(e,g,2):String(e),g=(e,t)=>t&&t.__v_isRef?g(e,t.value):O(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:P(t)?{[`Set(${t.size})`]:[...t.values()]}:!M(t)||T(t)||B(t)?t:String(t),b={},v=[],y=()=>{},_=()=>!1,k=/^on[^a-z]/,w=e=>k.test(e),x=e=>e.startsWith("onUpdate:"),A=Object.assign,C=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},S=Object.prototype.hasOwnProperty,E=(e,t)=>S.call(e,t),T=Array.isArray,O=e=>"[object Map]"===j(e),P=e=>"[object Set]"===j(e),D=e=>e instanceof Date,I=e=>"function"==typeof e,R=e=>"string"==typeof e,L=e=>"symbol"==typeof e,M=e=>null!==e&&"object"==typeof e,F=e=>M(e)&&I(e.then)&&I(e.catch),N=Object.prototype.toString,j=e=>N.call(e),$=e=>j(e).slice(8,-1),B=e=>"[object Object]"===j(e),q=e=>R(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,H=r(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),U=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},V=/-(\w)/g,z=U((e=>e.replace(V,((e,t)=>t?t.toUpperCase():"")))),W=/\B([A-Z])/g,G=U((e=>e.replace(W,"-$1").toLowerCase())),J=U((e=>e.charAt(0).toUpperCase()+e.slice(1))),Y=U((e=>e?`on${J(e)}`:"")),X=(e,t)=>!Object.is(e,t),Z=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Q=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let ee;const te=()=>ee||(ee="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:{})},110:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(7537),o=n.n(r),a=n(3645),i=n.n(a)()(o());i.push([e.id,'.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}',"",{version:3,sources:["webpack://./node_modules/tippy.js/dist/tippy.css"],names:[],mappings:"AAAA,mDAAmD,SAAS,CAAC,kBAAkB,4BAA4B,CAAC,WAAW,iBAAiB,CAAC,qBAAqB,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,CAAC,gDAAgD,CAAC,6CAA6C,QAAQ,CAAC,oDAAoD,WAAW,CAAC,MAAM,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,2BAA2B,CAAC,gDAAgD,KAAK,CAAC,uDAAuD,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,2BAA2B,CAAC,8BAA8B,CAAC,8CAA8C,OAAO,CAAC,qDAAqD,0BAA0B,CAAC,yBAAyB,CAAC,UAAU,CAAC,4BAA4B,CAAC,+CAA+C,MAAM,CAAC,sDAAsD,SAAS,CAAC,0BAA0B,CAAC,0BAA0B,CAAC,6BAA6B,CAAC,6CAA6C,yDAAyD,CAAC,aAAa,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,oBAAoB,UAAU,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,eAAe,iBAAiB,CAAC,eAAe,CAAC,SAAS",sourcesContent:['.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'],sourceRoot:""}]);const s=i},2588:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(7537),o=n.n(r),a=n(3645),i=n.n(a)()(o());i.push([e.id,".tippy-box[data-theme~=light]{color:#26323d;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15);background-color:#fff}.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff}.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff}.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff}","",{version:3,sources:["webpack://./node_modules/tippy.js/themes/light.css"],names:[],mappings:"AAAA,8BAA8B,aAAa,CAAC,mHAAmH,CAAC,qBAAqB,CAAC,uEAAuE,qBAAqB,CAAC,0EAA0E,wBAAwB,CAAC,wEAAwE,sBAAsB,CAAC,yEAAyE,uBAAuB,CAAC,8CAA8C,qBAAqB,CAAC,+CAA+C,SAAS",sourcesContent:[".tippy-box[data-theme~=light]{color:#26323d;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15);background-color:#fff}.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff}.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff}.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff}"],sourceRoot:""}]);const s=i},3232:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(7537),o=n.n(r),a=n(3645),i=n.n(a)()(o());i.push([e.id,"\n.diffset-left {\n width: 48%;\n}\n.diffset-left .ins,\n.diffset-left ins {\n display: none !important;\n}\n.diffset-right {\n width: 48%;\n}\n.diffset-right .del,\n.diffset-right del {\n display: none !important;\n}\n","",{version:3,sources:["webpack://./peachjam/js/components/DocDiffs/DiffContent.vue"],names:[],mappings:";AAwCA;EACE,UAAU;AACZ;AACA;;EAEE,wBAAwB;AAC1B;AAEA;EACE,UAAU;AACZ;AACA;;EAEE,wBAAwB;AAC1B",sourcesContent:['\n\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.card-header[data-v-63c9ac08] {\\n background-color: #ffdf80;\\n font-family: var(--bs-body-font-family);\\n}\\n.card-body[data-v-63c9ac08] {\\n background-color: #fff6da;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./peachjam/js/components/DocDiffs/ProvisionDiffInline.vue\"],\"names\":[],\"mappings\":\";AA4KA;EACE,yBAAyB;EACzB,uCAAuC;AACzC;AAEA;EACE,yBAAyB;AAC3B\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.doc-search {\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n padding: 1rem;\\n}\\n.doc-search__results {\\n flex: 1 1 auto;\\n overflow-y: auto;\\n height: 0;\\n}\\n.doc-search__results .snippet-card:focus {\\n border-color: var(--bs-primary);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./peachjam/js/components/DocumentSearch/index.vue\"],\"names\":[],\"mappings\":\";AA4IA;EACE,aAAa;EACb,sBAAsB;EACtB,YAAY;EACZ,aAAa;AACf;AAEA;EACE,cAAc;EACd,gBAAgB;EAChB,SAAS;AACX;AAEA;EACE,+BAA+B;AACjC\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.facets-scrollable[data-v-32034ea4] {\\n max-height: 25vh;\\n overflow-y: auto;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./peachjam/js/components/FilterFacets/SingleFacet.vue\"],\"names\":[],\"mappings\":\";AAoKA;EACE,gBAAgB;EAChB,gBAAgB;AAClB\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.dropdown-menu .dropdown-item[data-v-68cc73fd] {\\n padding-left: 2.5rem;\\n padding-right: 2.5rem;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./peachjam/js/components/FindDocuments/AdvancedSearchFields.vue\"],\"names\":[],\"mappings\":\";AAyKA;EACE,oBAAoB;EACpB,qBAAqB;AACvB\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.mobile-side-drawer__mobile-view[data-v-6caa891a] {\\n position: fixed;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n z-index: 99;\\n visibility: hidden;\\n transition: visibility 300ms ease-in-out;\\n}\\n.mobile-side-drawer__mobile-view__content[data-v-6caa891a] {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n}\\n.mobile-side-drawer__mobile-view__content .slot[data-v-6caa891a] {\\n width: 80%;\\n height: 100%;\\n transition: transform 300ms ease-in-out;\\n transform: translateX(-100%);\\n overflow: auto;\\n}\\n.mobile-side-drawer__mobile-view__content .overlay[data-v-6caa891a] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.5);\\n transition: opacity 300ms ease-in-out;\\n opacity: 0;\\n}\\n.mobile-side-drawer__mobile-view.active[data-v-6caa891a] {\\n visibility: visible;\\n}\\n.mobile-side-drawer__mobile-view.active .slot[data-v-6caa891a] {\\n transform: translateX(0);\\n}\\n.mobile-side-drawer__mobile-view.active .overlay[data-v-6caa891a] {\\n opacity: 1;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./peachjam/js/components/FindDocuments/MobileSideDrawer.vue\"],\"names\":[],\"mappings\":\";AAiCA;EACE,eAAe;EACf,MAAM;EACN,OAAO;EACP,YAAY;EACZ,WAAW;EACX,WAAW;EACX,kBAAkB;EAClB,wCAAwC;AAC1C;AAEA;EACE,WAAW;EACX,YAAY;EACZ,kBAAkB;AACpB;AAEA;EACE,UAAU;EACV,YAAY;EACZ,uCAAuC;EACvC,4BAA4B;EAC5B,cAAc;AAChB;AAEA;EACE,kBAAkB;EAClB,MAAM;EACN,OAAO;EACP,WAAW;EACX,YAAY;EACZ,oCAAoC;EACpC,qCAAqC;EACrC,UAAU;AACZ;AAEA;EACE,mBAAmB;AACrB;AAEA;EACE,wBAAwB;AAC1B;AACA;EACE,UAAU;AACZ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.hit mark {\\n font-weight: bold;\\n padding: 0px;\\n color: inherit;\\n}\\n.snippet {\\n line-height: 1.3;\\n word-break: break-word;\\n}\\n.hit .explanation {\\n max-height: 50vh;\\n overflow-y: auto;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./peachjam/js/components/FindDocuments/SearchResult.vue\"],\"names\":[],\"mappings\":\";AAoKA;EACE,iBAAiB;EACjB,YAAY;EACZ,cAAc;AAChB;AACA;EACE,gBAAgB;EAChB,sBAAsB;AACxB;AACA;EACE,gBAAgB;EAChB,gBAAgB;AAClB\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.overlay[data-v-6963ae4d] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.2);\\n z-index: 9;\\n}\\n.sort-body[data-v-6963ae4d] {\\n display: flex;\\n justify-content: space-between;\\n}\\n@media screen and (max-width: 400px) {\\n.sort-body[data-v-6963ae4d] {\\n flex-direction: column;\\n}\\n.sort__inner[data-v-6963ae4d] {\\n margin-top: 10px;\\n}\\n}\\n@media screen and (max-width: 992px) {\\n.filter-facet-title[data-v-6963ae4d] {\\n position: absolute;\\n margin: auto;\\n left: 0;\\n right: 0;\\n width: 40px;\\n}\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./peachjam/js/components/FindDocuments/index.vue\"],\"names\":[],\"mappings\":\";AA4wBA;EACE,kBAAkB;EAClB,MAAM;EACN,OAAO;EACP,WAAW;EACX,YAAY;EACZ,oCAAoC;EACpC,UAAU;AACZ;AAEA;EACE,aAAa;EACb,8BAA8B;AAChC;AAEA;AACE;IACE,sBAAsB;AACxB;AACA;IACE,gBAAgB;AAClB;AACF;AAEA;AACG;IACC,kBAAkB;IAClB,YAAY;IACZ,OAAO;IACP,QAAQ;IACR,WAAW;AACb;AACF\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.bi-chat-left[data-v-45a14ac2] {\\n text-align: center;\\n position: relative;\\n z-index: 9;\\n}\\n@media screen and (max-width: 992px) {\\n.card[data-v-45a14ac2] {\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n transform: translateY(100%);\\n transition: transform ease-in-out 300ms;\\n z-index: 9;\\n}\\nla-gutter-item[active][data-v-45a14ac2] {\\n z-index: 9;\\n}\\nla-gutter-item[active] .card[data-v-45a14ac2] {\\n transform: translateY(0);\\n}\\n\\n /*So content is above To the top element*/\\n.card .card-body[data-v-45a14ac2] {\\n padding-bottom: 40px;\\n}\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./peachjam/js/components/RelationshipEnrichment/RelationshipEnrichment.vue\"],\"names\":[],\"mappings\":\";AA4LA;EACE,kBAAkB;EAClB,kBAAkB;EAClB,UAAU;AACZ;AAEA;AACE;IACE,eAAe;IACf,SAAS;IACT,OAAO;IACP,WAAW;IACX,2BAA2B;IAC3B,uCAAuC;IACvC,UAAU;AACZ;AAEA;IACE,UAAU;AACZ;AAEA;IACE,wBAAwB;AAC1B;;EAEA,yCAAyC;AACzC;IACE,oBAAoB;AACtB;AACF\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--vs-colors--lightest:rgba(60,60,60,0.26);--vs-colors--light:rgba(60,60,60,0.5);--vs-colors--dark:#333;--vs-colors--darkest:rgba(0,0,0,0.15);--vs-search-input-color:inherit;--vs-search-input-placeholder-color:inherit;--vs-font-size:1rem;--vs-line-height:1.4;--vs-state-disabled-bg:#f8f8f8;--vs-state-disabled-color:var(--vs-colors--light);--vs-state-disabled-controls-color:var(--vs-colors--light);--vs-state-disabled-cursor:not-allowed;--vs-border-color:var(--vs-colors--lightest);--vs-border-width:1px;--vs-border-style:solid;--vs-border-radius:4px;--vs-actions-padding:4px 6px 0 3px;--vs-controls-color:var(--vs-colors--light);--vs-controls-size:1;--vs-controls--deselect-text-shadow:0 1px 0 #fff;--vs-selected-bg:#f0f0f0;--vs-selected-color:var(--vs-colors--dark);--vs-selected-border-color:var(--vs-border-color);--vs-selected-border-style:var(--vs-border-style);--vs-selected-border-width:var(--vs-border-width);--vs-dropdown-bg:#fff;--vs-dropdown-color:inherit;--vs-dropdown-z-index:1000;--vs-dropdown-min-width:160px;--vs-dropdown-max-height:350px;--vs-dropdown-box-shadow:0px 3px 6px 0px var(--vs-colors--darkest);--vs-dropdown-option-bg:#000;--vs-dropdown-option-color:var(--vs-dropdown-color);--vs-dropdown-option-padding:3px 20px;--vs-dropdown-option--active-bg:#5897fb;--vs-dropdown-option--active-color:#fff;--vs-dropdown-option--deselect-bg:#fb5858;--vs-dropdown-option--deselect-color:#fff;--vs-transition-timing-function:cubic-bezier(1,-0.115,0.975,0.855);--vs-transition-duration:150ms}.v-select{font-family:inherit;position:relative}.v-select,.v-select *{box-sizing:border-box}:root{--vs-transition-timing-function:cubic-bezier(1,0.5,0.8,1);--vs-transition-duration:0.15s}@-webkit-keyframes vSelectSpinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes vSelectSpinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.vs__fade-enter-active,.vs__fade-leave-active{pointer-events:none;transition:opacity var(--vs-transition-duration) var(--vs-transition-timing-function)}.vs__fade-enter,.vs__fade-leave-to{opacity:0}:root{--vs-disabled-bg:var(--vs-state-disabled-bg);--vs-disabled-color:var(--vs-state-disabled-color);--vs-disabled-cursor:var(--vs-state-disabled-cursor)}.vs--disabled .vs__clear,.vs--disabled .vs__dropdown-toggle,.vs--disabled .vs__open-indicator,.vs--disabled .vs__search,.vs--disabled .vs__selected{background-color:var(--vs-disabled-bg);cursor:var(--vs-disabled-cursor)}.v-select[dir=rtl] .vs__actions{padding:0 3px 0 6px}.v-select[dir=rtl] .vs__clear{margin-left:6px;margin-right:0}.v-select[dir=rtl] .vs__deselect{margin-left:0;margin-right:2px}.v-select[dir=rtl] .vs__dropdown-menu{text-align:right}.vs__dropdown-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:var(--vs-border-radius);display:flex;padding:0 0 4px;white-space:normal}.vs__selected-options{display:flex;flex-basis:100%;flex-grow:1;flex-wrap:wrap;padding:0 2px;position:relative}.vs__actions{align-items:center;display:flex;padding:var(--vs-actions-padding)}.vs--searchable .vs__dropdown-toggle{cursor:text}.vs--unsearchable .vs__dropdown-toggle{cursor:pointer}.vs--open .vs__dropdown-toggle{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.vs__open-indicator{fill:var(--vs-controls-color);transform:scale(var(--vs-controls-size));transition:transform var(--vs-transition-duration) var(--vs-transition-timing-function);transition-timing-function:var(--vs-transition-timing-function)}.vs--open .vs__open-indicator{transform:rotate(180deg) scale(var(--vs-controls-size))}.vs--loading .vs__open-indicator{opacity:0}.vs__clear{fill:var(--vs-controls-color);background-color:transparent;border:0;cursor:pointer;margin-right:8px;padding:0}.vs__dropdown-menu{background:var(--vs-dropdown-bg);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);border-top-style:none;box-shadow:var(--vs-dropdown-box-shadow);box-sizing:border-box;color:var(--vs-dropdown-color);display:block;left:0;list-style:none;margin:0;max-height:var(--vs-dropdown-max-height);min-width:var(--vs-dropdown-min-width);overflow-y:auto;padding:5px 0;position:absolute;text-align:left;top:calc(100% - var(--vs-border-width));width:100%;z-index:var(--vs-dropdown-z-index)}.vs__no-options{text-align:center}.vs__dropdown-option{clear:both;color:var(--vs-dropdown-option-color);cursor:pointer;display:block;line-height:1.42857143;padding:var(--vs-dropdown-option-padding);white-space:nowrap}.vs__dropdown-option--highlight{background:var(--vs-dropdown-option--active-bg);color:var(--vs-dropdown-option--active-color)}.vs__dropdown-option--deselect{background:var(--vs-dropdown-option--deselect-bg);color:var(--vs-dropdown-option--deselect-color)}.vs__dropdown-option--disabled{background:var(--vs-state-disabled-bg);color:var(--vs-state-disabled-color);cursor:var(--vs-state-disabled-cursor)}.vs__selected{align-items:center;background-color:var(--vs-selected-bg);border:var(--vs-selected-border-width) var(--vs-selected-border-style) var(--vs-selected-border-color);border-radius:var(--vs-border-radius);color:var(--vs-selected-color);display:flex;line-height:var(--vs-line-height);margin:4px 2px 0;padding:0 .25em;z-index:0}.vs__deselect{fill:var(--vs-controls-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;cursor:pointer;display:inline-flex;margin-left:4px;padding:0;text-shadow:var(--vs-controls--deselect-text-shadow)}.vs--single .vs__selected{background-color:transparent;border-color:transparent}.vs--single.vs--loading .vs__selected,.vs--single.vs--open .vs__selected{opacity:.4;position:absolute}.vs--single.vs--searching .vs__selected{display:none}.vs__search::-webkit-search-cancel-button{display:none}.vs__search::-ms-clear,.vs__search::-webkit-search-decoration,.vs__search::-webkit-search-results-button,.vs__search::-webkit-search-results-decoration{display:none}.vs__search,.vs__search:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:1px solid transparent;border-left:none;box-shadow:none;color:var(--vs-search-input-color);flex-grow:1;font-size:var(--vs-font-size);line-height:var(--vs-line-height);margin:4px 0 0;max-width:100%;outline:none;padding:0 7px;width:0;z-index:1}.vs__search::-moz-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search:-ms-input-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search::placeholder{color:var(--vs-search-input-placeholder-color)}.vs--unsearchable .vs__search{opacity:1}.vs--unsearchable:not(.vs--disabled) .vs__search{cursor:pointer}.vs--single.vs--searching:not(.vs--open):not(.vs--loading) .vs__search{opacity:.2}.vs__spinner{align-self:center;-webkit-animation:vSelectSpinner 1.1s linear infinite;animation:vSelectSpinner 1.1s linear infinite;border:.9em solid hsla(0,0%,39%,.1);border-left-color:rgba(60,60,60,.45);font-size:5px;opacity:0;overflow:hidden;text-indent:-9999em;transform:translateZ(0) scale(var(--vs-controls--spinner-size,var(--vs-controls-size)));transition:opacity .1s}.vs__spinner,.vs__spinner:after{border-radius:50%;height:5em;transform:scale(var(--vs-controls--spinner-size,var(--vs-controls-size)));width:5em}.vs--loading .vs__spinner{opacity:1}\\n\\n/*# sourceMappingURL=vue-select.css.map*/\", \"\",{\"version\":3,\"sources\":[\"webpack://VueSelect/src/css/global/variables.css\",\"webpack://VueSelect/src/css/global/component.css\",\"webpack://VueSelect/src/css/global/animations.css\",\"webpack://VueSelect/src/css/global/states.css\",\"webpack://VueSelect/src/css/modules/dropdown-toggle.css\",\"webpack://VueSelect/src/css/modules/open-indicator.css\",\"webpack://VueSelect/src/css/modules/clear.css\",\"webpack://VueSelect/src/css/modules/dropdown-menu.css\",\"webpack://VueSelect/src/css/modules/dropdown-option.css\",\"webpack://VueSelect/src/css/modules/selected.css\",\"webpack://VueSelect/src/css/modules/search-input.css\",\"webpack://VueSelect/src/css/modules/spinner.css\",\"webpack://./node_modules/vue-select/dist/vue-select.css\"],\"names\":[],\"mappings\":\"AAAA,MACI,yCAA6C,CAC7C,qCAAyC,CACzC,sBAAuB,CACvB,qCAAyC,CAGzC,+BAAgC,CAChC,2CAA4C,CAG5C,mBAAoB,CACpB,oBAAqB,CAGrB,8BAA0C,CAC1C,iDAAkD,CAClD,0DAA2D,CAC3D,sCAAuC,CAGvC,4CAA6C,CAC7C,qBAAsB,CACtB,uBAAwB,CACxB,sBAAuB,CAGvB,kCAAmC,CAGnC,2CAA4C,CAC5C,oBAAqB,CACrB,gDAAiD,CAGjD,wBAAyB,CACzB,0CAA2C,CAC3C,iDAAkD,CAClD,iDAAkD,CAClD,iDAAkD,CAGlD,qBAAsB,CACtB,2BAA4B,CAC5B,0BAA2B,CAC3B,6BAA8B,CAC9B,8BAA+B,CAC/B,kEAAmE,CAGnE,4BAA6B,CAC7B,mDAAoD,CACpD,qCAAsC,CAGtC,uCAAwC,CACxC,uCAAwC,CAGxC,yCAA0C,CAC1C,yCAA0C,CAG1C,kEAAsE,CACtE,8BACJ,CCjEA,UAEE,mBAAoB,CADpB,iBAEF,CAEA,sBAEE,qBACF,CCRA,MACI,yDAA6D,CAC7D,8BACJ,CAGA,kCACI,GACI,sBACJ,CACA,GACI,uBACJ,CACJ,CAEA,0BACI,GACI,sBACJ,CACA,GACI,uBACJ,CACJ,CAGA,8CAEI,mBAAoB,CACpB,qFAEJ,CACA,mCAEI,SACJ,CCvBA,MACI,4CAA6C,CAC7C,kDAAmD,CACnD,oDACJ,CAGI,oJAMI,sCAAuC,CADvC,gCAEJ,CAYA,gCACI,mBACJ,CAEA,8BACI,eAAgB,CAChB,cACJ,CAEA,iCACI,aAAc,CACd,gBACJ,CAEA,sCACI,gBACJ,CCzCJ,qBACI,uBAAgB,CAAhB,oBAAgB,CAAhB,eAAgB,CAGhB,eAAgB,CAChB,2EAA4E,CAC5E,qCAAsC,CAJtC,YAAa,CACb,eAAkB,CAIlB,kBACJ,CAEA,sBACI,YAAa,CACb,eAAgB,CAChB,WAAY,CACZ,cAAe,CACf,aAAc,CACd,iBACJ,CAEA,aAEI,kBAAmB,CADnB,YAAa,CAEb,iCACJ,CAGA,qCACI,WACJ,CACA,uCACI,cACJ,CACA,+BACI,+BAAgC,CAChC,2BAA4B,CAC5B,4BACJ,CCzCA,oBACI,6BAA8B,CAC9B,wCAAyC,CACzC,uFACwC,CACxC,+DACJ,CAIA,8BACI,uDACJ,CAIA,iCACI,SACJ,CCvBA,WACI,6BAA8B,CAG9B,4BAA6B,CAD7B,QAAS,CAET,cAAe,CACf,gBAAiB,CAJjB,SAKJ,CCPA,mBAoBI,gCAAiC,CALjC,2EAA4E,CAE5E,iEAAkE,CADlE,qBAAsB,CAFtB,wCAAyC,CAZzC,qBAAsB,CAmBtB,8BAA+B,CApB/B,aAAc,CAKd,MAAO,CAaP,eAAgB,CAVhB,QAAS,CAET,wCAAyC,CACzC,sCAAuC,CACvC,eAAgB,CALhB,aAAc,CALd,iBAAkB,CAelB,eAAgB,CAbhB,uCAAwC,CAKxC,UAAW,CAHX,kCAeJ,CAEA,gBACI,iBACJ,CC3BA,qBAII,UAAW,CACX,qCAAsC,CAEtC,cAAe,CALf,aAAc,CADd,sBAAuB,CAEvB,yCAA0C,CAG1C,kBAEJ,CAEA,gCACI,+CAAgD,CAChD,6CACJ,CAEA,+BACI,iDAAkD,CAClD,+CACJ,CAEA,+BACI,sCAAuC,CACvC,oCAAqC,CACrC,sCACJ,CCxBA,cAEI,kBAAmB,CACnB,sCAAuC,CACvC,sGACmC,CACnC,qCAAsC,CACtC,8BAA+B,CAN/B,YAAa,CAOb,iCAAkC,CAClC,gBAAuB,CACvB,eAAiB,CACjB,SACJ,CAEA,cAQI,6BAA8B,CAN9B,uBAAgB,CAAhB,oBAAgB,CAAhB,eAAgB,CAKhB,eAAgB,CAFhB,QAAS,CACT,cAAe,CALf,mBAAoB,CAEpB,eAAgB,CAChB,SAAU,CAKV,oDACJ,CAKI,0BACI,4BAA6B,CAC7B,wBACJ,CACA,yEAGI,UAAY,CADZ,iBAEJ,CACA,wCACI,YACJ,CClCJ,0CACI,YACJ,CAEA,wJAII,YACJ,CAEA,8BAGI,uBAAgB,CAAhB,oBAAgB,CAAhB,eAAgB,CAQhB,eAAgB,CAJhB,4BAAiB,CAAjB,gBAAiB,CAKjB,eAAgB,CAVhB,kCAAmC,CAanC,WAAY,CAVZ,6BAA8B,CAD9B,iCAAkC,CAKlC,cAAiB,CAKjB,cAAe,CANf,YAAa,CAEb,aAAc,CAGd,OAAQ,CAGR,SACJ,CAEA,8BACI,8CACJ,CAFA,kCACI,8CACJ,CAFA,yBACI,8CACJ,CAQI,8BACI,SACJ,CACA,iDACI,cACJ,CAKA,uEACI,UACJ,CC1DJ,aACI,iBAAkB,CAWlB,qDAA8C,CAA9C,6CAA8C,CAH9C,mCAA+C,CAA/C,oCAA+C,CAN/C,aAAc,CADd,SAAU,CAGV,eAAgB,CADhB,mBAAoB,CAMpB,uFACoE,CAEpE,sBACJ,CACA,gCAEI,iBAAkB,CAElB,UAAW,CACX,yEAA2E,CAF3E,SAGJ,CAGA,0BACI,SACJ;;ACzBA,wCAAwC\",\"sourcesContent\":[\":root {\\n --vs-colors--lightest: rgba(60, 60, 60, 0.26);\\n --vs-colors--light: rgba(60, 60, 60, 0.5);\\n --vs-colors--dark: #333;\\n --vs-colors--darkest: rgba(0, 0, 0, 0.15);\\n\\n /* Search Input */\\n --vs-search-input-color: inherit;\\n --vs-search-input-placeholder-color: inherit;\\n\\n /* Font */\\n --vs-font-size: 1rem;\\n --vs-line-height: 1.4;\\n\\n /* Disabled State */\\n --vs-state-disabled-bg: rgb(248, 248, 248);\\n --vs-state-disabled-color: var(--vs-colors--light);\\n --vs-state-disabled-controls-color: var(--vs-colors--light);\\n --vs-state-disabled-cursor: not-allowed;\\n\\n /* Borders */\\n --vs-border-color: var(--vs-colors--lightest);\\n --vs-border-width: 1px;\\n --vs-border-style: solid;\\n --vs-border-radius: 4px;\\n\\n /* Actions: house the component controls */\\n --vs-actions-padding: 4px 6px 0 3px;\\n\\n /* Component Controls: Clear, Open Indicator */\\n --vs-controls-color: var(--vs-colors--light);\\n --vs-controls-size: 1;\\n --vs-controls--deselect-text-shadow: 0 1px 0 #fff;\\n\\n /* Selected */\\n --vs-selected-bg: #f0f0f0;\\n --vs-selected-color: var(--vs-colors--dark);\\n --vs-selected-border-color: var(--vs-border-color);\\n --vs-selected-border-style: var(--vs-border-style);\\n --vs-selected-border-width: var(--vs-border-width);\\n\\n /* Dropdown */\\n --vs-dropdown-bg: #fff;\\n --vs-dropdown-color: inherit;\\n --vs-dropdown-z-index: 1000;\\n --vs-dropdown-min-width: 160px;\\n --vs-dropdown-max-height: 350px;\\n --vs-dropdown-box-shadow: 0px 3px 6px 0px var(--vs-colors--darkest);\\n\\n /* Options */\\n --vs-dropdown-option-bg: #000;\\n --vs-dropdown-option-color: var(--vs-dropdown-color);\\n --vs-dropdown-option-padding: 3px 20px;\\n\\n /* Active State */\\n --vs-dropdown-option--active-bg: #5897fb;\\n --vs-dropdown-option--active-color: #fff;\\n\\n /* Deselect State */\\n --vs-dropdown-option--deselect-bg: #fb5858;\\n --vs-dropdown-option--deselect-color: #fff;\\n\\n /* Transitions */\\n --vs-transition-timing-function: cubic-bezier(1, -0.115, 0.975, 0.855);\\n --vs-transition-duration: 150ms;\\n}\\n\",\".v-select {\\n position: relative;\\n font-family: inherit;\\n}\\n\\n.v-select,\\n.v-select * {\\n box-sizing: border-box;\\n}\\n\",\":root {\\n --vs-transition-timing-function: cubic-bezier(1, 0.5, 0.8, 1);\\n --vs-transition-duration: 0.15s;\\n}\\n\\n/* KeyFrames */\\n@-webkit-keyframes vSelectSpinner {\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes vSelectSpinner {\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n\\n/* Dropdown Default Transition */\\n.vs__fade-enter-active,\\n.vs__fade-leave-active {\\n pointer-events: none;\\n transition: opacity var(--vs-transition-duration)\\n var(--vs-transition-timing-function);\\n}\\n.vs__fade-enter,\\n.vs__fade-leave-to {\\n opacity: 0;\\n}\\n\",\"/** Component States */\\n\\n/*\\n * Disabled\\n *\\n * When the component is disabled, all interaction\\n * should be prevented. Here we modify the bg color,\\n * and change the cursor displayed on the interactive\\n * components.\\n */\\n\\n:root {\\n --vs-disabled-bg: var(--vs-state-disabled-bg);\\n --vs-disabled-color: var(--vs-state-disabled-color);\\n --vs-disabled-cursor: var(--vs-state-disabled-cursor);\\n}\\n\\n.vs--disabled {\\n .vs__dropdown-toggle,\\n .vs__clear,\\n .vs__search,\\n .vs__selected,\\n .vs__open-indicator {\\n cursor: var(--vs-disabled-cursor);\\n background-color: var(--vs-disabled-bg);\\n }\\n}\\n\\n/*\\n * RTL - Right to Left Support\\n *\\n * Because we're using a flexbox layout, the `dir=\\\"rtl\\\"`\\n * HTML attribute does most of the work for us by\\n * rearranging the child elements visually.\\n */\\n\\n.v-select[dir='rtl'] {\\n .vs__actions {\\n padding: 0 3px 0 6px;\\n }\\n\\n .vs__clear {\\n margin-left: 6px;\\n margin-right: 0;\\n }\\n\\n .vs__deselect {\\n margin-left: 0;\\n margin-right: 2px;\\n }\\n\\n .vs__dropdown-menu {\\n text-align: right;\\n }\\n}\\n\",\"/**\\n Dropdown Toggle\\n\\n The dropdown toggle is the primary wrapper of the component. It\\n has two direct descendants: .vs__selected-options, and .vs__actions.\\n\\n .vs__selected-options holds the .vs__selected's as well as the\\n main search input.\\n\\n .vs__actions holds the clear button and dropdown toggle.\\n */\\n\\n.vs__dropdown-toggle {\\n appearance: none;\\n display: flex;\\n padding: 0 0 4px 0;\\n background: none;\\n border: var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);\\n border-radius: var(--vs-border-radius);\\n white-space: normal;\\n}\\n\\n.vs__selected-options {\\n display: flex;\\n flex-basis: 100%;\\n flex-grow: 1;\\n flex-wrap: wrap;\\n padding: 0 2px;\\n position: relative;\\n}\\n\\n.vs__actions {\\n display: flex;\\n align-items: center;\\n padding: var(--vs-actions-padding);\\n}\\n\\n/* Dropdown Toggle States */\\n.vs--searchable .vs__dropdown-toggle {\\n cursor: text;\\n}\\n.vs--unsearchable .vs__dropdown-toggle {\\n cursor: pointer;\\n}\\n.vs--open .vs__dropdown-toggle {\\n border-bottom-color: transparent;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n\",\"/* Open Indicator */\\n\\n/*\\n The open indicator appears as a down facing\\n caret on the right side of the select.\\n */\\n\\n.vs__open-indicator {\\n fill: var(--vs-controls-color);\\n transform: scale(var(--vs-controls-size));\\n transition: transform var(--vs-transition-duration)\\n var(--vs-transition-timing-function);\\n transition-timing-function: var(--vs-transition-timing-function);\\n}\\n\\n/* Open State */\\n\\n.vs--open .vs__open-indicator {\\n transform: rotate(180deg) scale(var(--vs-controls-size));\\n}\\n\\n/* Loading State */\\n\\n.vs--loading .vs__open-indicator {\\n opacity: 0;\\n}\\n\",\"/* Clear Button */\\n\\n.vs__clear {\\n fill: var(--vs-controls-color);\\n padding: 0;\\n border: 0;\\n background-color: transparent;\\n cursor: pointer;\\n margin-right: 8px;\\n}\\n\",\"/* Dropdown Menu */\\n\\n.vs__dropdown-menu {\\n display: block;\\n box-sizing: border-box;\\n position: absolute;\\n /* calc to ensure the left and right borders of the dropdown appear flush with the toggle. */\\n top: calc(100% - var(--vs-border-width));\\n left: 0;\\n z-index: var(--vs-dropdown-z-index);\\n padding: 5px 0;\\n margin: 0;\\n width: 100%;\\n max-height: var(--vs-dropdown-max-height);\\n min-width: var(--vs-dropdown-min-width);\\n overflow-y: auto;\\n box-shadow: var(--vs-dropdown-box-shadow);\\n border: var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);\\n border-top-style: none;\\n border-radius: 0 0 var(--vs-border-radius) var(--vs-border-radius);\\n text-align: left;\\n list-style: none;\\n background: var(--vs-dropdown-bg);\\n color: var(--vs-dropdown-color);\\n}\\n\\n.vs__no-options {\\n text-align: center;\\n}\\n\",\"/* List Items */\\n.vs__dropdown-option {\\n line-height: 1.42857143; /* Normalize line height */\\n display: block;\\n padding: var(--vs-dropdown-option-padding);\\n clear: both;\\n color: var(--vs-dropdown-option-color); /* Overrides most CSS frameworks */\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n\\n.vs__dropdown-option--highlight {\\n background: var(--vs-dropdown-option--active-bg);\\n color: var(--vs-dropdown-option--active-color);\\n}\\n\\n.vs__dropdown-option--deselect {\\n background: var(--vs-dropdown-option--deselect-bg);\\n color: var(--vs-dropdown-option--deselect-color);\\n}\\n\\n.vs__dropdown-option--disabled {\\n background: var(--vs-state-disabled-bg);\\n color: var(--vs-state-disabled-color);\\n cursor: var(--vs-state-disabled-cursor);\\n}\\n\",\"/* Selected Tags */\\n.vs__selected {\\n display: flex;\\n align-items: center;\\n background-color: var(--vs-selected-bg);\\n border: var(--vs-selected-border-width) var(--vs-selected-border-style)\\n var(--vs-selected-border-color);\\n border-radius: var(--vs-border-radius);\\n color: var(--vs-selected-color);\\n line-height: var(--vs-line-height);\\n margin: 4px 2px 0px 2px;\\n padding: 0 0.25em;\\n z-index: 0;\\n}\\n\\n.vs__deselect {\\n display: inline-flex;\\n appearance: none;\\n margin-left: 4px;\\n padding: 0;\\n border: 0;\\n cursor: pointer;\\n background: none;\\n fill: var(--vs-controls-color);\\n text-shadow: var(--vs-controls--deselect-text-shadow);\\n}\\n\\n/* States */\\n\\n.vs--single {\\n .vs__selected {\\n background-color: transparent;\\n border-color: transparent;\\n }\\n &.vs--open .vs__selected,\\n &.vs--loading .vs__selected {\\n position: absolute;\\n opacity: 0.4;\\n }\\n &.vs--searching .vs__selected {\\n display: none;\\n }\\n}\\n\",\"/* Search Input */\\n\\n/**\\n * Super weird bug... If this declaration is grouped\\n * below, the cancel button will still appear in chrome.\\n * If it's up here on it's own, it'll hide it.\\n */\\n.vs__search::-webkit-search-cancel-button {\\n display: none;\\n}\\n\\n.vs__search::-webkit-search-decoration,\\n.vs__search::-webkit-search-results-button,\\n.vs__search::-webkit-search-results-decoration,\\n.vs__search::-ms-clear {\\n display: none;\\n}\\n\\n.vs__search,\\n.vs__search:focus {\\n color: var(--vs-search-input-color);\\n appearance: none;\\n line-height: var(--vs-line-height);\\n font-size: var(--vs-font-size);\\n border: 1px solid transparent;\\n border-left: none;\\n outline: none;\\n margin: 4px 0 0 0;\\n padding: 0 7px;\\n background: none;\\n box-shadow: none;\\n width: 0;\\n max-width: 100%;\\n flex-grow: 1;\\n z-index: 1;\\n}\\n\\n.vs__search::placeholder {\\n color: var(--vs-search-input-placeholder-color);\\n}\\n\\n/**\\n States\\n */\\n\\n/* Unsearchable */\\n.vs--unsearchable {\\n .vs__search {\\n opacity: 1;\\n }\\n &:not(.vs--disabled) .vs__search {\\n cursor: pointer;\\n }\\n}\\n\\n/* Single, when searching but not loading or open */\\n.vs--single.vs--searching:not(.vs--open):not(.vs--loading) {\\n .vs__search {\\n opacity: 0.2;\\n }\\n}\\n\",\"/* Loading Spinner */\\n.vs__spinner {\\n align-self: center;\\n opacity: 0;\\n font-size: 5px;\\n text-indent: -9999em;\\n overflow: hidden;\\n border-top: 0.9em solid rgba(100, 100, 100, 0.1);\\n border-right: 0.9em solid rgba(100, 100, 100, 0.1);\\n border-bottom: 0.9em solid rgba(100, 100, 100, 0.1);\\n border-left: 0.9em solid rgba(60, 60, 60, 0.45);\\n transform: translateZ(0)\\n scale(var(--vs-controls--spinner-size, var(--vs-controls-size)));\\n animation: vSelectSpinner 1.1s infinite linear;\\n transition: opacity 0.1s;\\n}\\n.vs__spinner,\\n.vs__spinner:after {\\n border-radius: 50%;\\n width: 5em;\\n height: 5em;\\n transform: scale(var(--vs-controls--spinner-size, var(--vs-controls-size)));\\n}\\n\\n/* Loading Spinner States */\\n.vs--loading .vs__spinner {\\n opacity: 1;\\n}\\n\",\":root{--vs-colors--lightest:rgba(60,60,60,0.26);--vs-colors--light:rgba(60,60,60,0.5);--vs-colors--dark:#333;--vs-colors--darkest:rgba(0,0,0,0.15);--vs-search-input-color:inherit;--vs-search-input-placeholder-color:inherit;--vs-font-size:1rem;--vs-line-height:1.4;--vs-state-disabled-bg:#f8f8f8;--vs-state-disabled-color:var(--vs-colors--light);--vs-state-disabled-controls-color:var(--vs-colors--light);--vs-state-disabled-cursor:not-allowed;--vs-border-color:var(--vs-colors--lightest);--vs-border-width:1px;--vs-border-style:solid;--vs-border-radius:4px;--vs-actions-padding:4px 6px 0 3px;--vs-controls-color:var(--vs-colors--light);--vs-controls-size:1;--vs-controls--deselect-text-shadow:0 1px 0 #fff;--vs-selected-bg:#f0f0f0;--vs-selected-color:var(--vs-colors--dark);--vs-selected-border-color:var(--vs-border-color);--vs-selected-border-style:var(--vs-border-style);--vs-selected-border-width:var(--vs-border-width);--vs-dropdown-bg:#fff;--vs-dropdown-color:inherit;--vs-dropdown-z-index:1000;--vs-dropdown-min-width:160px;--vs-dropdown-max-height:350px;--vs-dropdown-box-shadow:0px 3px 6px 0px var(--vs-colors--darkest);--vs-dropdown-option-bg:#000;--vs-dropdown-option-color:var(--vs-dropdown-color);--vs-dropdown-option-padding:3px 20px;--vs-dropdown-option--active-bg:#5897fb;--vs-dropdown-option--active-color:#fff;--vs-dropdown-option--deselect-bg:#fb5858;--vs-dropdown-option--deselect-color:#fff;--vs-transition-timing-function:cubic-bezier(1,-0.115,0.975,0.855);--vs-transition-duration:150ms}.v-select{font-family:inherit;position:relative}.v-select,.v-select *{box-sizing:border-box}:root{--vs-transition-timing-function:cubic-bezier(1,0.5,0.8,1);--vs-transition-duration:0.15s}@-webkit-keyframes vSelectSpinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes vSelectSpinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.vs__fade-enter-active,.vs__fade-leave-active{pointer-events:none;transition:opacity var(--vs-transition-duration) var(--vs-transition-timing-function)}.vs__fade-enter,.vs__fade-leave-to{opacity:0}:root{--vs-disabled-bg:var(--vs-state-disabled-bg);--vs-disabled-color:var(--vs-state-disabled-color);--vs-disabled-cursor:var(--vs-state-disabled-cursor)}.vs--disabled .vs__clear,.vs--disabled .vs__dropdown-toggle,.vs--disabled .vs__open-indicator,.vs--disabled .vs__search,.vs--disabled .vs__selected{background-color:var(--vs-disabled-bg);cursor:var(--vs-disabled-cursor)}.v-select[dir=rtl] .vs__actions{padding:0 3px 0 6px}.v-select[dir=rtl] .vs__clear{margin-left:6px;margin-right:0}.v-select[dir=rtl] .vs__deselect{margin-left:0;margin-right:2px}.v-select[dir=rtl] .vs__dropdown-menu{text-align:right}.vs__dropdown-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:var(--vs-border-radius);display:flex;padding:0 0 4px;white-space:normal}.vs__selected-options{display:flex;flex-basis:100%;flex-grow:1;flex-wrap:wrap;padding:0 2px;position:relative}.vs__actions{align-items:center;display:flex;padding:var(--vs-actions-padding)}.vs--searchable .vs__dropdown-toggle{cursor:text}.vs--unsearchable .vs__dropdown-toggle{cursor:pointer}.vs--open .vs__dropdown-toggle{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.vs__open-indicator{fill:var(--vs-controls-color);transform:scale(var(--vs-controls-size));transition:transform var(--vs-transition-duration) var(--vs-transition-timing-function);transition-timing-function:var(--vs-transition-timing-function)}.vs--open .vs__open-indicator{transform:rotate(180deg) scale(var(--vs-controls-size))}.vs--loading .vs__open-indicator{opacity:0}.vs__clear{fill:var(--vs-controls-color);background-color:transparent;border:0;cursor:pointer;margin-right:8px;padding:0}.vs__dropdown-menu{background:var(--vs-dropdown-bg);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);border-top-style:none;box-shadow:var(--vs-dropdown-box-shadow);box-sizing:border-box;color:var(--vs-dropdown-color);display:block;left:0;list-style:none;margin:0;max-height:var(--vs-dropdown-max-height);min-width:var(--vs-dropdown-min-width);overflow-y:auto;padding:5px 0;position:absolute;text-align:left;top:calc(100% - var(--vs-border-width));width:100%;z-index:var(--vs-dropdown-z-index)}.vs__no-options{text-align:center}.vs__dropdown-option{clear:both;color:var(--vs-dropdown-option-color);cursor:pointer;display:block;line-height:1.42857143;padding:var(--vs-dropdown-option-padding);white-space:nowrap}.vs__dropdown-option--highlight{background:var(--vs-dropdown-option--active-bg);color:var(--vs-dropdown-option--active-color)}.vs__dropdown-option--deselect{background:var(--vs-dropdown-option--deselect-bg);color:var(--vs-dropdown-option--deselect-color)}.vs__dropdown-option--disabled{background:var(--vs-state-disabled-bg);color:var(--vs-state-disabled-color);cursor:var(--vs-state-disabled-cursor)}.vs__selected{align-items:center;background-color:var(--vs-selected-bg);border:var(--vs-selected-border-width) var(--vs-selected-border-style) var(--vs-selected-border-color);border-radius:var(--vs-border-radius);color:var(--vs-selected-color);display:flex;line-height:var(--vs-line-height);margin:4px 2px 0;padding:0 .25em;z-index:0}.vs__deselect{fill:var(--vs-controls-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;cursor:pointer;display:inline-flex;margin-left:4px;padding:0;text-shadow:var(--vs-controls--deselect-text-shadow)}.vs--single .vs__selected{background-color:transparent;border-color:transparent}.vs--single.vs--loading .vs__selected,.vs--single.vs--open .vs__selected{opacity:.4;position:absolute}.vs--single.vs--searching .vs__selected{display:none}.vs__search::-webkit-search-cancel-button{display:none}.vs__search::-ms-clear,.vs__search::-webkit-search-decoration,.vs__search::-webkit-search-results-button,.vs__search::-webkit-search-results-decoration{display:none}.vs__search,.vs__search:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:1px solid transparent;border-left:none;box-shadow:none;color:var(--vs-search-input-color);flex-grow:1;font-size:var(--vs-font-size);line-height:var(--vs-line-height);margin:4px 0 0;max-width:100%;outline:none;padding:0 7px;width:0;z-index:1}.vs__search::-moz-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search:-ms-input-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search::placeholder{color:var(--vs-search-input-placeholder-color)}.vs--unsearchable .vs__search{opacity:1}.vs--unsearchable:not(.vs--disabled) .vs__search{cursor:pointer}.vs--single.vs--searching:not(.vs--open):not(.vs--loading) .vs__search{opacity:.2}.vs__spinner{align-self:center;-webkit-animation:vSelectSpinner 1.1s linear infinite;animation:vSelectSpinner 1.1s linear infinite;border:.9em solid hsla(0,0%,39%,.1);border-left-color:rgba(60,60,60,.45);font-size:5px;opacity:0;overflow:hidden;text-indent:-9999em;transform:translateZ(0) scale(var(--vs-controls--spinner-size,var(--vs-controls-size)));transition:opacity .1s}.vs__spinner,.vs__spinner:after{border-radius:50%;height:5em;transform:scale(var(--vs-controls--spinner-size,var(--vs-controls-size)));width:5em}.vs--loading .vs__spinner{opacity:1}\\n\\n/*# sourceMappingURL=vue-select.css.map*/\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","/**\n * Diff Match and Patch\n * Copyright 2018 The diff-match-patch Authors.\n * https://github.com/google/diff-match-patch\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Computes the difference between two texts to create a patch.\n * Applies the patch onto another text, allowing for errors.\n * @author fraser@google.com (Neil Fraser)\n */\n\n/**\n * Class containing the diff, match and patch methods.\n * @constructor\n */\nvar diff_match_patch = function() {\n\n // Defaults.\n // Redefine these in your program to override the defaults.\n\n // Number of seconds to map a diff before giving up (0 for infinity).\n this.Diff_Timeout = 1.0;\n // Cost of an empty edit operation in terms of edit characters.\n this.Diff_EditCost = 4;\n // At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n this.Match_Threshold = 0.5;\n // How far to search for a match (0 = exact location, 1000+ = broad match).\n // A match this many characters away from the expected location will add\n // 1.0 to the score (0.0 is a perfect match).\n this.Match_Distance = 1000;\n // When deleting a large block of text (over ~64 characters), how close do\n // the contents have to be to match the expected contents. (0.0 = perfection,\n // 1.0 = very loose). Note that Match_Threshold controls how closely the\n // end points of a delete need to match.\n this.Patch_DeleteThreshold = 0.5;\n // Chunk size for context length.\n this.Patch_Margin = 4;\n\n // The number of bits in an int.\n this.Match_MaxBits = 32;\n};\n\n\n// DIFF FUNCTIONS\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n/**\n * Class representing one diff tuple.\n * ~Attempts to look like a two-element array (which is what this used to be).~\n * Constructor returns an actual two-element array, to allow destructing @JackuB\n * See https://github.com/JackuB/diff-match-patch/issues/14 for details\n * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.\n * @param {string} text Text to be deleted, inserted, or retained.\n * @constructor\n */\ndiff_match_patch.Diff = function(op, text) {\n return [op, text];\n};\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean=} opt_checklines Optional speedup flag. If present and false,\n * then don't run a line-level diff first to identify the changed areas.\n * Defaults to true, which does a faster, slightly less optimal diff.\n * @param {number=} opt_deadline Optional time when the diff should be complete\n * by. Used internally for recursive calls. Users should set DiffTimeout\n * instead.\n * @return {!Array.} Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_main = function(text1, text2, opt_checklines,\n opt_deadline) {\n // Set a deadline by which time the diff must be complete.\n if (typeof opt_deadline == 'undefined') {\n if (this.Diff_Timeout <= 0) {\n opt_deadline = Number.MAX_VALUE;\n } else {\n opt_deadline = (new Date).getTime() + this.Diff_Timeout * 1000;\n }\n }\n var deadline = opt_deadline;\n\n // Check for null inputs.\n if (text1 == null || text2 == null) {\n throw new Error('Null input. (diff_main)');\n }\n\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [new diff_match_patch.Diff(DIFF_EQUAL, text1)];\n }\n return [];\n }\n\n if (typeof opt_checklines == 'undefined') {\n opt_checklines = true;\n }\n var checklines = opt_checklines;\n\n // Trim off common prefix (speedup).\n var commonlength = this.diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = this.diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = this.diff_compute_(text1, text2, checklines, deadline);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, commonprefix));\n }\n if (commonsuffix) {\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, commonsuffix));\n }\n this.diff_cleanupMerge(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean} checklines Speedup flag. If false, then don't run a\n * line-level diff first to identify the changed areas.\n * If true, then run a faster, slightly less optimal diff.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_compute_ = function(text1, text2, checklines,\n deadline) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [new diff_match_patch.Diff(DIFF_INSERT, text2)];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [new diff_match_patch.Diff(DIFF_DELETE, text1)];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(0, i)),\n new diff_match_patch.Diff(DIFF_EQUAL, shorttext),\n new diff_match_patch.Diff(DIFF_INSERT,\n longtext.substring(i + shorttext.length))];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [new diff_match_patch.Diff(DIFF_DELETE, text1),\n new diff_match_patch.Diff(DIFF_INSERT, text2)];\n }\n\n // Check to see if the problem can be split in two.\n var hm = this.diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);\n var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline);\n // Merge the results.\n return diffs_a.concat([new diff_match_patch.Diff(DIFF_EQUAL, mid_common)],\n diffs_b);\n }\n\n if (checklines && text1.length > 100 && text2.length > 100) {\n return this.diff_lineMode_(text1, text2, deadline);\n }\n\n return this.diff_bisect_(text1, text2, deadline);\n};\n\n\n/**\n * Do a quick line-level diff on both strings, then rediff the parts for\n * greater accuracy.\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_lineMode_ = function(text1, text2, deadline) {\n // Scan the text on a line-by-line basis first.\n var a = this.diff_linesToChars_(text1, text2);\n text1 = a.chars1;\n text2 = a.chars2;\n var linearray = a.lineArray;\n\n var diffs = this.diff_main(text1, text2, false, deadline);\n\n // Convert the diff back to original text.\n this.diff_charsToLines_(diffs, linearray);\n // Eliminate freak matches (e.g. blank lines)\n this.diff_cleanupSemantic(diffs);\n\n // Rediff any replacement blocks, this time character-by-character.\n // Add a dummy entry at the end.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete >= 1 && count_insert >= 1) {\n // Delete the offending records and add the merged ones.\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert);\n pointer = pointer - count_delete - count_insert;\n var subDiff =\n this.diff_main(text_delete, text_insert, false, deadline);\n for (var j = subDiff.length - 1; j >= 0; j--) {\n diffs.splice(pointer, 0, subDiff[j]);\n }\n pointer = pointer + subDiff.length;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n pointer++;\n }\n diffs.pop(); // Remove the dummy entry at the end.\n\n return diffs;\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisect_ = function(text1, text2, deadline) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Bail out if deadline is reached.\n if ((new Date()).getTime() > deadline) {\n break;\n }\n\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [new diff_match_patch.Diff(DIFF_DELETE, text1),\n new diff_match_patch.Diff(DIFF_INSERT, text2)];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisectSplit_ = function(text1, text2, x, y,\n deadline) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = this.diff_main(text1a, text2a, false, deadline);\n var diffsb = this.diff_main(text1b, text2b, false, deadline);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Split two texts into an array of strings. Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {{chars1: string, chars2: string, lineArray: !Array.}}\n * An object containing the encoded text1, the encoded text2 and\n * the array of unique strings.\n * The zeroth element of the array of unique strings is intentionally blank.\n * @private\n */\ndiff_match_patch.prototype.diff_linesToChars_ = function(text1, text2) {\n var lineArray = []; // e.g. lineArray[4] == 'Hello\\n'\n var lineHash = {}; // e.g. lineHash['Hello\\n'] == 4\n\n // '\\x00' is a valid character, but various debuggers don't like it.\n // So we'll insert a junk entry to avoid generating a null character.\n lineArray[0] = '';\n\n /**\n * Split a text into an array of strings. Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * Modifies linearray and linehash through being a closure.\n * @param {string} text String to encode.\n * @return {string} Encoded string.\n * @private\n */\n function diff_linesToCharsMunge_(text) {\n var chars = '';\n // Walk the text, pulling out a substring for each line.\n // text.split('\\n') would would temporarily double our memory footprint.\n // Modifying text would create many large strings to garbage collect.\n var lineStart = 0;\n var lineEnd = -1;\n // Keeping our own length variable is faster than looking it up.\n var lineArrayLength = lineArray.length;\n while (lineEnd < text.length - 1) {\n lineEnd = text.indexOf('\\n', lineStart);\n if (lineEnd == -1) {\n lineEnd = text.length - 1;\n }\n var line = text.substring(lineStart, lineEnd + 1);\n\n if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) :\n (lineHash[line] !== undefined)) {\n chars += String.fromCharCode(lineHash[line]);\n } else {\n if (lineArrayLength == maxLines) {\n // Bail out at 65535 because\n // String.fromCharCode(65536) == String.fromCharCode(0)\n line = text.substring(lineStart);\n lineEnd = text.length;\n }\n chars += String.fromCharCode(lineArrayLength);\n lineHash[line] = lineArrayLength;\n lineArray[lineArrayLength++] = line;\n }\n lineStart = lineEnd + 1;\n }\n return chars;\n }\n // Allocate 2/3rds of the space for text1, the rest for text2.\n var maxLines = 40000;\n var chars1 = diff_linesToCharsMunge_(text1);\n maxLines = 65535;\n var chars2 = diff_linesToCharsMunge_(text2);\n return {chars1: chars1, chars2: chars2, lineArray: lineArray};\n};\n\n\n/**\n * Rehydrate the text in a diff from a string of line hashes to real lines of\n * text.\n * @param {!Array.} diffs Array of diff tuples.\n * @param {!Array.} lineArray Array of unique strings.\n * @private\n */\ndiff_match_patch.prototype.diff_charsToLines_ = function(diffs, lineArray) {\n for (var i = 0; i < diffs.length; i++) {\n var chars = diffs[i][1];\n var text = [];\n for (var j = 0; j < chars.length; j++) {\n text[j] = lineArray[chars.charCodeAt(j)];\n }\n diffs[i][1] = text.join('');\n }\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\ndiff_match_patch.prototype.diff_commonPrefix = function(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\ndiff_match_patch.prototype.diff_commonSuffix = function(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n * string and the start of the second string.\n * @private\n */\ndiff_match_patch.prototype.diff_commonOverlap_ = function(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n // Eliminate the null case.\n if (text1_length == 0 || text2_length == 0) {\n return 0;\n }\n // Truncate the longer string.\n if (text1_length > text2_length) {\n text1 = text1.substring(text1_length - text2_length);\n } else if (text1_length < text2_length) {\n text2 = text2.substring(0, text1_length);\n }\n var text_length = Math.min(text1_length, text2_length);\n // Quick check for the worst case.\n if (text1 == text2) {\n return text_length;\n }\n\n // Start by looking for a single character match\n // and increase length until no match is found.\n // Performance analysis: https://neil.fraser.name/news/2010/11/04/\n var best = 0;\n var length = 1;\n while (true) {\n var pattern = text1.substring(text_length - length);\n var found = text2.indexOf(pattern);\n if (found == -1) {\n return best;\n }\n length += found;\n if (found == 0 || text1.substring(text_length - length) ==\n text2.substring(0, length)) {\n best = length;\n length++;\n }\n }\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n * @private\n */\ndiff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) {\n if (this.Diff_Timeout <= 0) {\n // Don't risk returning a non-optimal diff if we have unlimited time.\n return null;\n }\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n var dmp = this; // 'this' becomes 'window' in a closure.\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = dmp.diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemantic = function(diffs) {\n var changes = false;\n var equalities = []; // Stack of indices where equalities are found.\n var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n /** @type {?string} */\n var lastEquality = null;\n // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n var pointer = 0; // Index of current position.\n // Number of characters that changed prior to the equality.\n var length_insertions1 = 0;\n var length_deletions1 = 0;\n // Number of characters that changed after the equality.\n var length_insertions2 = 0;\n var length_deletions2 = 0;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found.\n equalities[equalitiesLength++] = pointer;\n length_insertions1 = length_insertions2;\n length_deletions1 = length_deletions2;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastEquality = diffs[pointer][1];\n } else { // An insertion or deletion.\n if (diffs[pointer][0] == DIFF_INSERT) {\n length_insertions2 += diffs[pointer][1].length;\n } else {\n length_deletions2 += diffs[pointer][1].length;\n }\n // Eliminate an equality that is smaller or equal to the edits on both\n // sides of it.\n if (lastEquality && (lastEquality.length <=\n Math.max(length_insertions1, length_deletions1)) &&\n (lastEquality.length <= Math.max(length_insertions2,\n length_deletions2))) {\n // Duplicate record.\n diffs.splice(equalities[equalitiesLength - 1], 0,\n new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n // Change second copy to insert.\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n // Throw away the equality we just deleted.\n equalitiesLength--;\n // Throw away the previous equality (it needs to be reevaluated).\n equalitiesLength--;\n pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n length_insertions1 = 0; // Reset the counters.\n length_deletions1 = 0;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastEquality = null;\n changes = true;\n }\n }\n pointer++;\n }\n\n // Normalize the diff.\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n this.diff_cleanupSemanticLossless(diffs);\n\n // Find any overlaps between deletions and insertions.\n // e.g: abcxxxxxxdef\n // -> abcxxxdef\n // e.g: xxxabcdefxxx\n // -> defxxxabc\n // Only extract an overlap if it is as big as the edit ahead or behind it.\n pointer = 1;\n while (pointer < diffs.length) {\n if (diffs[pointer - 1][0] == DIFF_DELETE &&\n diffs[pointer][0] == DIFF_INSERT) {\n var deletion = diffs[pointer - 1][1];\n var insertion = diffs[pointer][1];\n var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);\n var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);\n if (overlap_length1 >= overlap_length2) {\n if (overlap_length1 >= deletion.length / 2 ||\n overlap_length1 >= insertion.length / 2) {\n // Overlap found. Insert an equality and trim the surrounding edits.\n diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n insertion.substring(0, overlap_length1)));\n diffs[pointer - 1][1] =\n deletion.substring(0, deletion.length - overlap_length1);\n diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n pointer++;\n }\n } else {\n if (overlap_length2 >= deletion.length / 2 ||\n overlap_length2 >= insertion.length / 2) {\n // Reverse overlap found.\n // Insert an equality and swap and trim the surrounding edits.\n diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n deletion.substring(0, overlap_length2)));\n diffs[pointer - 1][0] = DIFF_INSERT;\n diffs[pointer - 1][1] =\n insertion.substring(0, insertion.length - overlap_length2);\n diffs[pointer + 1][0] = DIFF_DELETE;\n diffs[pointer + 1][1] =\n deletion.substring(overlap_length2);\n pointer++;\n }\n }\n pointer++;\n }\n pointer++;\n }\n};\n\n\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The cat came. -> The cat came.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) {\n /**\n * Given two strings, compute a score representing whether the internal\n * boundary falls on logical boundaries.\n * Scores range from 6 (best) to 0 (worst).\n * Closure, but does not reference any external variables.\n * @param {string} one First string.\n * @param {string} two Second string.\n * @return {number} The score.\n * @private\n */\n function diff_cleanupSemanticScore_(one, two) {\n if (!one || !two) {\n // Edges are the best.\n return 6;\n }\n\n // Each port of this function behaves slightly differently due to\n // subtle differences in each language's definition of things like\n // 'whitespace'. Since this function's purpose is largely cosmetic,\n // the choice has been made to use each language's native features\n // rather than force total conformity.\n var char1 = one.charAt(one.length - 1);\n var char2 = two.charAt(0);\n var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_);\n var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_);\n var whitespace1 = nonAlphaNumeric1 &&\n char1.match(diff_match_patch.whitespaceRegex_);\n var whitespace2 = nonAlphaNumeric2 &&\n char2.match(diff_match_patch.whitespaceRegex_);\n var lineBreak1 = whitespace1 &&\n char1.match(diff_match_patch.linebreakRegex_);\n var lineBreak2 = whitespace2 &&\n char2.match(diff_match_patch.linebreakRegex_);\n var blankLine1 = lineBreak1 &&\n one.match(diff_match_patch.blanklineEndRegex_);\n var blankLine2 = lineBreak2 &&\n two.match(diff_match_patch.blanklineStartRegex_);\n\n if (blankLine1 || blankLine2) {\n // Five points for blank lines.\n return 5;\n } else if (lineBreak1 || lineBreak2) {\n // Four points for line breaks.\n return 4;\n } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n // Three points for end of sentences.\n return 3;\n } else if (whitespace1 || whitespace2) {\n // Two points for whitespace.\n return 2;\n } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n // One point for non-alphanumeric.\n return 1;\n }\n return 0;\n }\n\n var pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n var equality1 = diffs[pointer - 1][1];\n var edit = diffs[pointer][1];\n var equality2 = diffs[pointer + 1][1];\n\n // First, shift the edit as far left as possible.\n var commonOffset = this.diff_commonSuffix(equality1, edit);\n if (commonOffset) {\n var commonString = edit.substring(edit.length - commonOffset);\n equality1 = equality1.substring(0, equality1.length - commonOffset);\n edit = commonString + edit.substring(0, edit.length - commonOffset);\n equality2 = commonString + equality2;\n }\n\n // Second, step character by character right, looking for the best fit.\n var bestEquality1 = equality1;\n var bestEdit = edit;\n var bestEquality2 = equality2;\n var bestScore = diff_cleanupSemanticScore_(equality1, edit) +\n diff_cleanupSemanticScore_(edit, equality2);\n while (edit.charAt(0) === equality2.charAt(0)) {\n equality1 += edit.charAt(0);\n edit = edit.substring(1) + equality2.charAt(0);\n equality2 = equality2.substring(1);\n var score = diff_cleanupSemanticScore_(equality1, edit) +\n diff_cleanupSemanticScore_(edit, equality2);\n // The >= encourages trailing rather than leading whitespace on edits.\n if (score >= bestScore) {\n bestScore = score;\n bestEquality1 = equality1;\n bestEdit = edit;\n bestEquality2 = equality2;\n }\n }\n\n if (diffs[pointer - 1][1] != bestEquality1) {\n // We have an improvement, save it back to the diff.\n if (bestEquality1) {\n diffs[pointer - 1][1] = bestEquality1;\n } else {\n diffs.splice(pointer - 1, 1);\n pointer--;\n }\n diffs[pointer][1] = bestEdit;\n if (bestEquality2) {\n diffs[pointer + 1][1] = bestEquality2;\n } else {\n diffs.splice(pointer + 1, 1);\n pointer--;\n }\n }\n }\n pointer++;\n }\n};\n\n// Define some regex patterns for matching boundaries.\ndiff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\ndiff_match_patch.whitespaceRegex_ = /\\s/;\ndiff_match_patch.linebreakRegex_ = /[\\r\\n]/;\ndiff_match_patch.blanklineEndRegex_ = /\\n\\r?\\n$/;\ndiff_match_patch.blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n\n/**\n * Reduce the number of edits by eliminating operationally trivial equalities.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupEfficiency = function(diffs) {\n var changes = false;\n var equalities = []; // Stack of indices where equalities are found.\n var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n /** @type {?string} */\n var lastEquality = null;\n // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n var pointer = 0; // Index of current position.\n // Is there an insertion operation before the last equality.\n var pre_ins = false;\n // Is there a deletion operation before the last equality.\n var pre_del = false;\n // Is there an insertion operation after the last equality.\n var post_ins = false;\n // Is there a deletion operation after the last equality.\n var post_del = false;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found.\n if (diffs[pointer][1].length < this.Diff_EditCost &&\n (post_ins || post_del)) {\n // Candidate found.\n equalities[equalitiesLength++] = pointer;\n pre_ins = post_ins;\n pre_del = post_del;\n lastEquality = diffs[pointer][1];\n } else {\n // Not a candidate, and can never become one.\n equalitiesLength = 0;\n lastEquality = null;\n }\n post_ins = post_del = false;\n } else { // An insertion or deletion.\n if (diffs[pointer][0] == DIFF_DELETE) {\n post_del = true;\n } else {\n post_ins = true;\n }\n /*\n * Five types to be split:\n * ABXYCD\n * AXCD\n * ABXC\n * AXCD\n * ABXC\n */\n if (lastEquality && ((pre_ins && pre_del && post_ins && post_del) ||\n ((lastEquality.length < this.Diff_EditCost / 2) &&\n (pre_ins + pre_del + post_ins + post_del) == 3))) {\n // Duplicate record.\n diffs.splice(equalities[equalitiesLength - 1], 0,\n new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n // Change second copy to insert.\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n equalitiesLength--; // Throw away the equality we just deleted;\n lastEquality = null;\n if (pre_ins && pre_del) {\n // No changes made which could affect previous entry, keep going.\n post_ins = post_del = true;\n equalitiesLength = 0;\n } else {\n equalitiesLength--; // Throw away the previous equality.\n pointer = equalitiesLength > 0 ?\n equalities[equalitiesLength - 1] : -1;\n post_ins = post_del = false;\n }\n changes = true;\n }\n }\n pointer++;\n }\n\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupMerge = function(diffs) {\n // Add a dummy entry at the end.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = this.diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n text_insert.substring(0, commonlength)));\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = this.diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n pointer -= count_delete + count_insert;\n diffs.splice(pointer, count_delete + count_insert);\n if (text_delete.length) {\n diffs.splice(pointer, 0,\n new diff_match_patch.Diff(DIFF_DELETE, text_delete));\n pointer++;\n }\n if (text_insert.length) {\n diffs.splice(pointer, 0,\n new diff_match_patch.Diff(DIFF_INSERT, text_insert));\n pointer++;\n }\n pointer++;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n};\n\n\n/**\n * loc is a location in text1, compute and return the equivalent location in\n * text2.\n * e.g. 'The cat' vs 'The big cat', 1->1, 5->8\n * @param {!Array.} diffs Array of diff tuples.\n * @param {number} loc Location within text1.\n * @return {number} Location within text2.\n */\ndiff_match_patch.prototype.diff_xIndex = function(diffs, loc) {\n var chars1 = 0;\n var chars2 = 0;\n var last_chars1 = 0;\n var last_chars2 = 0;\n var x;\n for (x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) { // Equality or deletion.\n chars1 += diffs[x][1].length;\n }\n if (diffs[x][0] !== DIFF_DELETE) { // Equality or insertion.\n chars2 += diffs[x][1].length;\n }\n if (chars1 > loc) { // Overshot the location.\n break;\n }\n last_chars1 = chars1;\n last_chars2 = chars2;\n }\n // Was the location was deleted?\n if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {\n return last_chars2;\n }\n // Add the remaining character length.\n return last_chars2 + (loc - last_chars1);\n};\n\n\n/**\n * Convert a diff array into a pretty HTML report.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} HTML representation.\n */\ndiff_match_patch.prototype.diff_prettyHtml = function(diffs) {\n var html = [];\n var pattern_amp = /&/g;\n var pattern_lt = //g;\n var pattern_para = /\\n/g;\n for (var x = 0; x < diffs.length; x++) {\n var op = diffs[x][0]; // Operation (insert, delete, equal)\n var data = diffs[x][1]; // Text of change.\n var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<')\n .replace(pattern_gt, '>').replace(pattern_para, '¶
');\n switch (op) {\n case DIFF_INSERT:\n html[x] = '' + text + '';\n break;\n case DIFF_DELETE:\n html[x] = '' + text + '';\n break;\n case DIFF_EQUAL:\n html[x] = '' + text + '';\n break;\n }\n }\n return html.join('');\n};\n\n\n/**\n * Compute and return the source text (all equalities and deletions).\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Source text.\n */\ndiff_match_patch.prototype.diff_text1 = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) {\n text[x] = diffs[x][1];\n }\n }\n return text.join('');\n};\n\n\n/**\n * Compute and return the destination text (all equalities and insertions).\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Destination text.\n */\ndiff_match_patch.prototype.diff_text2 = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_DELETE) {\n text[x] = diffs[x][1];\n }\n }\n return text.join('');\n};\n\n\n/**\n * Compute the Levenshtein distance; the number of inserted, deleted or\n * substituted characters.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {number} Number of changes.\n */\ndiff_match_patch.prototype.diff_levenshtein = function(diffs) {\n var levenshtein = 0;\n var insertions = 0;\n var deletions = 0;\n for (var x = 0; x < diffs.length; x++) {\n var op = diffs[x][0];\n var data = diffs[x][1];\n switch (op) {\n case DIFF_INSERT:\n insertions += data.length;\n break;\n case DIFF_DELETE:\n deletions += data.length;\n break;\n case DIFF_EQUAL:\n // A deletion and an insertion is one substitution.\n levenshtein += Math.max(insertions, deletions);\n insertions = 0;\n deletions = 0;\n break;\n }\n }\n levenshtein += Math.max(insertions, deletions);\n return levenshtein;\n};\n\n\n/**\n * Crush the diff into an encoded string which describes the operations\n * required to transform text1 into text2.\n * E.g. =3\\t-2\\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'.\n * Operations are tab-separated. Inserted text is escaped using %xx notation.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Delta text.\n */\ndiff_match_patch.prototype.diff_toDelta = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n switch (diffs[x][0]) {\n case DIFF_INSERT:\n text[x] = '+' + encodeURI(diffs[x][1]);\n break;\n case DIFF_DELETE:\n text[x] = '-' + diffs[x][1].length;\n break;\n case DIFF_EQUAL:\n text[x] = '=' + diffs[x][1].length;\n break;\n }\n }\n return text.join('\\t').replace(/%20/g, ' ');\n};\n\n\n/**\n * Given the original text1, and an encoded string which describes the\n * operations required to transform text1 into text2, compute the full diff.\n * @param {string} text1 Source string for the diff.\n * @param {string} delta Delta text.\n * @return {!Array.} Array of diff tuples.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.diff_fromDelta = function(text1, delta) {\n var diffs = [];\n var diffsLength = 0; // Keeping our own length var is faster in JS.\n var pointer = 0; // Cursor in text1\n var tokens = delta.split(/\\t/g);\n for (var x = 0; x < tokens.length; x++) {\n // Each token begins with a one character parameter which specifies the\n // operation of this token (delete, insert, equality).\n var param = tokens[x].substring(1);\n switch (tokens[x].charAt(0)) {\n case '+':\n try {\n diffs[diffsLength++] =\n new diff_match_patch.Diff(DIFF_INSERT, decodeURI(param));\n } catch (ex) {\n // Malformed URI sequence.\n throw new Error('Illegal escape in diff_fromDelta: ' + param);\n }\n break;\n case '-':\n // Fall through.\n case '=':\n var n = parseInt(param, 10);\n if (isNaN(n) || n < 0) {\n throw new Error('Invalid number in diff_fromDelta: ' + param);\n }\n var text = text1.substring(pointer, pointer += n);\n if (tokens[x].charAt(0) == '=') {\n diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_EQUAL, text);\n } else {\n diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_DELETE, text);\n }\n break;\n default:\n // Blank tokens are ok (from a trailing \\t).\n // Anything else is an error.\n if (tokens[x]) {\n throw new Error('Invalid diff operation in diff_fromDelta: ' +\n tokens[x]);\n }\n }\n }\n if (pointer != text1.length) {\n throw new Error('Delta length (' + pointer +\n ') does not equal source text length (' + text1.length + ').');\n }\n return diffs;\n};\n\n\n// MATCH FUNCTIONS\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc'.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n */\ndiff_match_patch.prototype.match_main = function(text, pattern, loc) {\n // Check for null inputs.\n if (text == null || pattern == null || loc == null) {\n throw new Error('Null input. (match_main)');\n }\n\n loc = Math.max(0, Math.min(loc, text.length));\n if (text == pattern) {\n // Shortcut (potentially not guaranteed by the algorithm)\n return 0;\n } else if (!text.length) {\n // Nothing to match.\n return -1;\n } else if (text.substring(loc, loc + pattern.length) == pattern) {\n // Perfect match at the perfect spot! (Includes case of null pattern)\n return loc;\n } else {\n // Do a fuzzy compare.\n return this.match_bitap_(text, pattern, loc);\n }\n};\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc' using the\n * Bitap algorithm.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n * @private\n */\ndiff_match_patch.prototype.match_bitap_ = function(text, pattern, loc) {\n if (pattern.length > this.Match_MaxBits) {\n throw new Error('Pattern too long for this browser.');\n }\n\n // Initialise the alphabet.\n var s = this.match_alphabet_(pattern);\n\n var dmp = this; // 'this' becomes 'window' in a closure.\n\n /**\n * Compute and return the score for a match with e errors and x location.\n * Accesses loc and pattern through being a closure.\n * @param {number} e Number of errors in match.\n * @param {number} x Location of match.\n * @return {number} Overall score for match (0.0 = good, 1.0 = bad).\n * @private\n */\n function match_bitapScore_(e, x) {\n var accuracy = e / pattern.length;\n var proximity = Math.abs(loc - x);\n if (!dmp.Match_Distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy;\n }\n return accuracy + (proximity / dmp.Match_Distance);\n }\n\n // Highest score beyond which we give up.\n var score_threshold = this.Match_Threshold;\n // Is there a nearby exact match? (speedup)\n var best_loc = text.indexOf(pattern, loc);\n if (best_loc != -1) {\n score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n // What about in the other direction? (speedup)\n best_loc = text.lastIndexOf(pattern, loc + pattern.length);\n if (best_loc != -1) {\n score_threshold =\n Math.min(match_bitapScore_(0, best_loc), score_threshold);\n }\n }\n\n // Initialise the bit arrays.\n var matchmask = 1 << (pattern.length - 1);\n best_loc = -1;\n\n var bin_min, bin_mid;\n var bin_max = pattern.length + text.length;\n var last_rd;\n for (var d = 0; d < pattern.length; d++) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from 'loc' we can stray at this\n // error level.\n bin_min = 0;\n bin_mid = bin_max;\n while (bin_min < bin_mid) {\n if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n bin_min = bin_mid;\n } else {\n bin_max = bin_mid;\n }\n bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);\n }\n // Use the result from this iteration as the maximum for the next.\n bin_max = bin_mid;\n var start = Math.max(1, loc - bin_mid + 1);\n var finish = Math.min(loc + bin_mid, text.length) + pattern.length;\n\n var rd = Array(finish + 2);\n rd[finish + 1] = (1 << d) - 1;\n for (var j = finish; j >= start; j--) {\n // The alphabet (s) is a sparse hash, so the following line generates\n // warnings.\n var charMatch = s[text.charAt(j - 1)];\n if (d === 0) { // First pass: exact match.\n rd[j] = ((rd[j + 1] << 1) | 1) & charMatch;\n } else { // Subsequent passes: fuzzy match.\n rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) |\n (((last_rd[j + 1] | last_rd[j]) << 1) | 1) |\n last_rd[j + 1];\n }\n if (rd[j] & matchmask) {\n var score = match_bitapScore_(d, j - 1);\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (score <= score_threshold) {\n // Told you so.\n score_threshold = score;\n best_loc = j - 1;\n if (best_loc > loc) {\n // When passing loc, don't exceed our current distance from loc.\n start = Math.max(1, 2 * loc - best_loc);\n } else {\n // Already passed loc, downhill from here on in.\n break;\n }\n }\n }\n }\n // No hope for a (better) match at greater error levels.\n if (match_bitapScore_(d + 1, loc) > score_threshold) {\n break;\n }\n last_rd = rd;\n }\n return best_loc;\n};\n\n\n/**\n * Initialise the alphabet for the Bitap algorithm.\n * @param {string} pattern The text to encode.\n * @return {!Object} Hash of character locations.\n * @private\n */\ndiff_match_patch.prototype.match_alphabet_ = function(pattern) {\n var s = {};\n for (var i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] = 0;\n }\n for (var i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] |= 1 << (pattern.length - i - 1);\n }\n return s;\n};\n\n\n// PATCH FUNCTIONS\n\n\n/**\n * Increase the context until it is unique,\n * but don't let the pattern expand beyond Match_MaxBits.\n * @param {!diff_match_patch.patch_obj} patch The patch to grow.\n * @param {string} text Source text.\n * @private\n */\ndiff_match_patch.prototype.patch_addContext_ = function(patch, text) {\n if (text.length == 0) {\n return;\n }\n if (patch.start2 === null) {\n throw Error('patch not initialized');\n }\n var pattern = text.substring(patch.start2, patch.start2 + patch.length1);\n var padding = 0;\n\n // Look for the first and last matches of pattern in text. If two different\n // matches are found, increase the pattern length.\n while (text.indexOf(pattern) != text.lastIndexOf(pattern) &&\n pattern.length < this.Match_MaxBits - this.Patch_Margin -\n this.Patch_Margin) {\n padding += this.Patch_Margin;\n pattern = text.substring(patch.start2 - padding,\n patch.start2 + patch.length1 + padding);\n }\n // Add one chunk for good luck.\n padding += this.Patch_Margin;\n\n // Add the prefix.\n var prefix = text.substring(patch.start2 - padding, patch.start2);\n if (prefix) {\n patch.diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, prefix));\n }\n // Add the suffix.\n var suffix = text.substring(patch.start2 + patch.length1,\n patch.start2 + patch.length1 + padding);\n if (suffix) {\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, suffix));\n }\n\n // Roll back the start points.\n patch.start1 -= prefix.length;\n patch.start2 -= prefix.length;\n // Extend the lengths.\n patch.length1 += prefix.length + suffix.length;\n patch.length2 += prefix.length + suffix.length;\n};\n\n\n/**\n * Compute a list of patches to turn text1 into text2.\n * Use diffs if provided, otherwise compute it ourselves.\n * There are four ways to call this function, depending on what data is\n * available to the caller:\n * Method 1:\n * a = text1, b = text2\n * Method 2:\n * a = diffs\n * Method 3 (optimal):\n * a = text1, b = diffs\n * Method 4 (deprecated, use method 3):\n * a = text1, b = text2, c = diffs\n *\n * @param {string|!Array.} a text1 (methods 1,3,4) or\n * Array of diff tuples for text1 to text2 (method 2).\n * @param {string|!Array.=} opt_b text2 (methods 1,4) or\n * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2).\n * @param {string|!Array.=} opt_c Array of diff tuples\n * for text1 to text2 (method 4) or undefined (methods 1,2,3).\n * @return {!Array.} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_make = function(a, opt_b, opt_c) {\n var text1, diffs;\n if (typeof a == 'string' && typeof opt_b == 'string' &&\n typeof opt_c == 'undefined') {\n // Method 1: text1, text2\n // Compute diffs from text1 and text2.\n text1 = /** @type {string} */(a);\n diffs = this.diff_main(text1, /** @type {string} */(opt_b), true);\n if (diffs.length > 2) {\n this.diff_cleanupSemantic(diffs);\n this.diff_cleanupEfficiency(diffs);\n }\n } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' &&\n typeof opt_c == 'undefined') {\n // Method 2: diffs\n // Compute text1 from diffs.\n diffs = /** @type {!Array.} */(a);\n text1 = this.diff_text1(diffs);\n } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' &&\n typeof opt_c == 'undefined') {\n // Method 3: text1, diffs\n text1 = /** @type {string} */(a);\n diffs = /** @type {!Array.} */(opt_b);\n } else if (typeof a == 'string' && typeof opt_b == 'string' &&\n opt_c && typeof opt_c == 'object') {\n // Method 4: text1, text2, diffs\n // text2 is not used.\n text1 = /** @type {string} */(a);\n diffs = /** @type {!Array.} */(opt_c);\n } else {\n throw new Error('Unknown call format to patch_make.');\n }\n\n if (diffs.length === 0) {\n return []; // Get rid of the null case.\n }\n var patches = [];\n var patch = new diff_match_patch.patch_obj();\n var patchDiffLength = 0; // Keeping our own length var is faster in JS.\n var char_count1 = 0; // Number of characters into the text1 string.\n var char_count2 = 0; // Number of characters into the text2 string.\n // Start with text1 (prepatch_text) and apply the diffs until we arrive at\n // text2 (postpatch_text). We recreate the patches one by one to determine\n // context info.\n var prepatch_text = text1;\n var postpatch_text = text1;\n for (var x = 0; x < diffs.length; x++) {\n var diff_type = diffs[x][0];\n var diff_text = diffs[x][1];\n\n if (!patchDiffLength && diff_type !== DIFF_EQUAL) {\n // A new patch starts here.\n patch.start1 = char_count1;\n patch.start2 = char_count2;\n }\n\n switch (diff_type) {\n case DIFF_INSERT:\n patch.diffs[patchDiffLength++] = diffs[x];\n patch.length2 += diff_text.length;\n postpatch_text = postpatch_text.substring(0, char_count2) + diff_text +\n postpatch_text.substring(char_count2);\n break;\n case DIFF_DELETE:\n patch.length1 += diff_text.length;\n patch.diffs[patchDiffLength++] = diffs[x];\n postpatch_text = postpatch_text.substring(0, char_count2) +\n postpatch_text.substring(char_count2 +\n diff_text.length);\n break;\n case DIFF_EQUAL:\n if (diff_text.length <= 2 * this.Patch_Margin &&\n patchDiffLength && diffs.length != x + 1) {\n // Small equality inside a patch.\n patch.diffs[patchDiffLength++] = diffs[x];\n patch.length1 += diff_text.length;\n patch.length2 += diff_text.length;\n } else if (diff_text.length >= 2 * this.Patch_Margin) {\n // Time for a new patch.\n if (patchDiffLength) {\n this.patch_addContext_(patch, prepatch_text);\n patches.push(patch);\n patch = new diff_match_patch.patch_obj();\n patchDiffLength = 0;\n // Unlike Unidiff, our patch lists have a rolling context.\n // https://github.com/google/diff-match-patch/wiki/Unidiff\n // Update prepatch text & pos to reflect the application of the\n // just completed patch.\n prepatch_text = postpatch_text;\n char_count1 = char_count2;\n }\n }\n break;\n }\n\n // Update the current character count.\n if (diff_type !== DIFF_INSERT) {\n char_count1 += diff_text.length;\n }\n if (diff_type !== DIFF_DELETE) {\n char_count2 += diff_text.length;\n }\n }\n // Pick up the leftover patch if not empty.\n if (patchDiffLength) {\n this.patch_addContext_(patch, prepatch_text);\n patches.push(patch);\n }\n\n return patches;\n};\n\n\n/**\n * Given an array of patches, return another array that is identical.\n * @param {!Array.} patches Array of Patch objects.\n * @return {!Array.} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_deepCopy = function(patches) {\n // Making deep copies is hard in JavaScript.\n var patchesCopy = [];\n for (var x = 0; x < patches.length; x++) {\n var patch = patches[x];\n var patchCopy = new diff_match_patch.patch_obj();\n patchCopy.diffs = [];\n for (var y = 0; y < patch.diffs.length; y++) {\n patchCopy.diffs[y] =\n new diff_match_patch.Diff(patch.diffs[y][0], patch.diffs[y][1]);\n }\n patchCopy.start1 = patch.start1;\n patchCopy.start2 = patch.start2;\n patchCopy.length1 = patch.length1;\n patchCopy.length2 = patch.length2;\n patchesCopy[x] = patchCopy;\n }\n return patchesCopy;\n};\n\n\n/**\n * Merge a set of patches onto the text. Return a patched text, as well\n * as a list of true/false values indicating which patches were applied.\n * @param {!Array.} patches Array of Patch objects.\n * @param {string} text Old text.\n * @return {!Array.>} Two element Array, containing the\n * new text and an array of boolean values.\n */\ndiff_match_patch.prototype.patch_apply = function(patches, text) {\n if (patches.length == 0) {\n return [text, []];\n }\n\n // Deep copy the patches so that no changes are made to originals.\n patches = this.patch_deepCopy(patches);\n\n var nullPadding = this.patch_addPadding(patches);\n text = nullPadding + text + nullPadding;\n\n this.patch_splitMax(patches);\n // delta keeps track of the offset between the expected and actual location\n // of the previous patch. If there are patches expected at positions 10 and\n // 20, but the first patch was found at 12, delta is 2 and the second patch\n // has an effective expected position of 22.\n var delta = 0;\n var results = [];\n for (var x = 0; x < patches.length; x++) {\n var expected_loc = patches[x].start2 + delta;\n var text1 = this.diff_text1(patches[x].diffs);\n var start_loc;\n var end_loc = -1;\n if (text1.length > this.Match_MaxBits) {\n // patch_splitMax will only provide an oversized pattern in the case of\n // a monster delete.\n start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits),\n expected_loc);\n if (start_loc != -1) {\n end_loc = this.match_main(text,\n text1.substring(text1.length - this.Match_MaxBits),\n expected_loc + text1.length - this.Match_MaxBits);\n if (end_loc == -1 || start_loc >= end_loc) {\n // Can't find valid trailing context. Drop this patch.\n start_loc = -1;\n }\n }\n } else {\n start_loc = this.match_main(text, text1, expected_loc);\n }\n if (start_loc == -1) {\n // No match found. :(\n results[x] = false;\n // Subtract the delta for this failed patch from subsequent patches.\n delta -= patches[x].length2 - patches[x].length1;\n } else {\n // Found a match. :)\n results[x] = true;\n delta = start_loc - expected_loc;\n var text2;\n if (end_loc == -1) {\n text2 = text.substring(start_loc, start_loc + text1.length);\n } else {\n text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);\n }\n if (text1 == text2) {\n // Perfect match, just shove the replacement text in.\n text = text.substring(0, start_loc) +\n this.diff_text2(patches[x].diffs) +\n text.substring(start_loc + text1.length);\n } else {\n // Imperfect match. Run a diff to get a framework of equivalent\n // indices.\n var diffs = this.diff_main(text1, text2, false);\n if (text1.length > this.Match_MaxBits &&\n this.diff_levenshtein(diffs) / text1.length >\n this.Patch_DeleteThreshold) {\n // The end points match, but the content is unacceptably bad.\n results[x] = false;\n } else {\n this.diff_cleanupSemanticLossless(diffs);\n var index1 = 0;\n var index2;\n for (var y = 0; y < patches[x].diffs.length; y++) {\n var mod = patches[x].diffs[y];\n if (mod[0] !== DIFF_EQUAL) {\n index2 = this.diff_xIndex(diffs, index1);\n }\n if (mod[0] === DIFF_INSERT) { // Insertion\n text = text.substring(0, start_loc + index2) + mod[1] +\n text.substring(start_loc + index2);\n } else if (mod[0] === DIFF_DELETE) { // Deletion\n text = text.substring(0, start_loc + index2) +\n text.substring(start_loc + this.diff_xIndex(diffs,\n index1 + mod[1].length));\n }\n if (mod[0] !== DIFF_DELETE) {\n index1 += mod[1].length;\n }\n }\n }\n }\n }\n }\n // Strip the padding off.\n text = text.substring(nullPadding.length, text.length - nullPadding.length);\n return [text, results];\n};\n\n\n/**\n * Add some padding on text start and end so that edges can match something.\n * Intended to be called only from within patch_apply.\n * @param {!Array.} patches Array of Patch objects.\n * @return {string} The padding string added to each side.\n */\ndiff_match_patch.prototype.patch_addPadding = function(patches) {\n var paddingLength = this.Patch_Margin;\n var nullPadding = '';\n for (var x = 1; x <= paddingLength; x++) {\n nullPadding += String.fromCharCode(x);\n }\n\n // Bump all the patches forward.\n for (var x = 0; x < patches.length; x++) {\n patches[x].start1 += paddingLength;\n patches[x].start2 += paddingLength;\n }\n\n // Add some padding on start of first diff.\n var patch = patches[0];\n var diffs = patch.diffs;\n if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {\n // Add nullPadding equality.\n diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n patch.start1 -= paddingLength; // Should be 0.\n patch.start2 -= paddingLength; // Should be 0.\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n } else if (paddingLength > diffs[0][1].length) {\n // Grow first equality.\n var extraLength = paddingLength - diffs[0][1].length;\n diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];\n patch.start1 -= extraLength;\n patch.start2 -= extraLength;\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n }\n\n // Add some padding on end of last diff.\n patch = patches[patches.length - 1];\n diffs = patch.diffs;\n if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {\n // Add nullPadding equality.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n } else if (paddingLength > diffs[diffs.length - 1][1].length) {\n // Grow last equality.\n var extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n }\n\n return nullPadding;\n};\n\n\n/**\n * Look through the patches and break up any which are longer than the maximum\n * limit of the match algorithm.\n * Intended to be called only from within patch_apply.\n * @param {!Array.} patches Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_splitMax = function(patches) {\n var patch_size = this.Match_MaxBits;\n for (var x = 0; x < patches.length; x++) {\n if (patches[x].length1 <= patch_size) {\n continue;\n }\n var bigpatch = patches[x];\n // Remove the big old patch.\n patches.splice(x--, 1);\n var start1 = bigpatch.start1;\n var start2 = bigpatch.start2;\n var precontext = '';\n while (bigpatch.diffs.length !== 0) {\n // Create one of several smaller patches.\n var patch = new diff_match_patch.patch_obj();\n var empty = true;\n patch.start1 = start1 - precontext.length;\n patch.start2 = start2 - precontext.length;\n if (precontext !== '') {\n patch.length1 = patch.length2 = precontext.length;\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, precontext));\n }\n while (bigpatch.diffs.length !== 0 &&\n patch.length1 < patch_size - this.Patch_Margin) {\n var diff_type = bigpatch.diffs[0][0];\n var diff_text = bigpatch.diffs[0][1];\n if (diff_type === DIFF_INSERT) {\n // Insertions are harmless.\n patch.length2 += diff_text.length;\n start2 += diff_text.length;\n patch.diffs.push(bigpatch.diffs.shift());\n empty = false;\n } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 &&\n patch.diffs[0][0] == DIFF_EQUAL &&\n diff_text.length > 2 * patch_size) {\n // This is a large deletion. Let it pass in one chunk.\n patch.length1 += diff_text.length;\n start1 += diff_text.length;\n empty = false;\n patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n bigpatch.diffs.shift();\n } else {\n // Deletion or equality. Only take as much as we can stomach.\n diff_text = diff_text.substring(0,\n patch_size - patch.length1 - this.Patch_Margin);\n patch.length1 += diff_text.length;\n start1 += diff_text.length;\n if (diff_type === DIFF_EQUAL) {\n patch.length2 += diff_text.length;\n start2 += diff_text.length;\n } else {\n empty = false;\n }\n patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n if (diff_text == bigpatch.diffs[0][1]) {\n bigpatch.diffs.shift();\n } else {\n bigpatch.diffs[0][1] =\n bigpatch.diffs[0][1].substring(diff_text.length);\n }\n }\n }\n // Compute the head context for the next patch.\n precontext = this.diff_text2(patch.diffs);\n precontext =\n precontext.substring(precontext.length - this.Patch_Margin);\n // Append the end context for this patch.\n var postcontext = this.diff_text1(bigpatch.diffs)\n .substring(0, this.Patch_Margin);\n if (postcontext !== '') {\n patch.length1 += postcontext.length;\n patch.length2 += postcontext.length;\n if (patch.diffs.length !== 0 &&\n patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {\n patch.diffs[patch.diffs.length - 1][1] += postcontext;\n } else {\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, postcontext));\n }\n }\n if (!empty) {\n patches.splice(++x, 0, patch);\n }\n }\n }\n};\n\n\n/**\n * Take a list of patches and return a textual representation.\n * @param {!Array.} patches Array of Patch objects.\n * @return {string} Text representation of patches.\n */\ndiff_match_patch.prototype.patch_toText = function(patches) {\n var text = [];\n for (var x = 0; x < patches.length; x++) {\n text[x] = patches[x];\n }\n return text.join('');\n};\n\n\n/**\n * Parse a textual representation of patches and return a list of Patch objects.\n * @param {string} textline Text representation of patches.\n * @return {!Array.} Array of Patch objects.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.patch_fromText = function(textline) {\n var patches = [];\n if (!textline) {\n return patches;\n }\n var text = textline.split('\\n');\n var textPointer = 0;\n var patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\n while (textPointer < text.length) {\n var m = text[textPointer].match(patchHeader);\n if (!m) {\n throw new Error('Invalid patch string: ' + text[textPointer]);\n }\n var patch = new diff_match_patch.patch_obj();\n patches.push(patch);\n patch.start1 = parseInt(m[1], 10);\n if (m[2] === '') {\n patch.start1--;\n patch.length1 = 1;\n } else if (m[2] == '0') {\n patch.length1 = 0;\n } else {\n patch.start1--;\n patch.length1 = parseInt(m[2], 10);\n }\n\n patch.start2 = parseInt(m[3], 10);\n if (m[4] === '') {\n patch.start2--;\n patch.length2 = 1;\n } else if (m[4] == '0') {\n patch.length2 = 0;\n } else {\n patch.start2--;\n patch.length2 = parseInt(m[4], 10);\n }\n textPointer++;\n\n while (textPointer < text.length) {\n var sign = text[textPointer].charAt(0);\n try {\n var line = decodeURI(text[textPointer].substring(1));\n } catch (ex) {\n // Malformed URI sequence.\n throw new Error('Illegal escape in patch_fromText: ' + line);\n }\n if (sign == '-') {\n // Deletion.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_DELETE, line));\n } else if (sign == '+') {\n // Insertion.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_INSERT, line));\n } else if (sign == ' ') {\n // Minor equality.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, line));\n } else if (sign == '@') {\n // Start of next patch.\n break;\n } else if (sign === '') {\n // Blank line? Whatever.\n } else {\n // WTF?\n throw new Error('Invalid patch mode \"' + sign + '\" in: ' + line);\n }\n textPointer++;\n }\n }\n return patches;\n};\n\n\n/**\n * Class representing one patch operation.\n * @constructor\n */\ndiff_match_patch.patch_obj = function() {\n /** @type {!Array.} */\n this.diffs = [];\n /** @type {?number} */\n this.start1 = null;\n /** @type {?number} */\n this.start2 = null;\n /** @type {number} */\n this.length1 = 0;\n /** @type {number} */\n this.length2 = 0;\n};\n\n\n/**\n * Emulate GNU diff's format.\n * Header: @@ -382,8 +481,9 @@\n * Indices are printed as 1-based, not 0-based.\n * @return {string} The GNU diff string.\n */\ndiff_match_patch.patch_obj.prototype.toString = function() {\n var coords1, coords2;\n if (this.length1 === 0) {\n coords1 = this.start1 + ',0';\n } else if (this.length1 == 1) {\n coords1 = this.start1 + 1;\n } else {\n coords1 = (this.start1 + 1) + ',' + this.length1;\n }\n if (this.length2 === 0) {\n coords2 = this.start2 + ',0';\n } else if (this.length2 == 1) {\n coords2 = this.start2 + 1;\n } else {\n coords2 = (this.start2 + 1) + ',' + this.length2;\n }\n var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\\n'];\n var op;\n // Escape the body of the patch with %xx notation.\n for (var x = 0; x < this.diffs.length; x++) {\n switch (this.diffs[x][0]) {\n case DIFF_INSERT:\n op = '+';\n break;\n case DIFF_DELETE:\n op = '-';\n break;\n case DIFF_EQUAL:\n op = ' ';\n break;\n }\n text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\\n';\n }\n return text.join('').replace(/%20/g, ' ');\n};\n\n\n// The following export code was added by @ForbesLindesay\nmodule.exports = diff_match_patch;\nmodule.exports['diff_match_patch'] = diff_match_patch;\nmodule.exports['DIFF_DELETE'] = DIFF_DELETE;\nmodule.exports['DIFF_INSERT'] = DIFF_INSERT;\nmodule.exports['DIFF_EQUAL'] = DIFF_EQUAL;","module.exports = require('./lib')\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fromRange = fromRange;\nexports.toRange = toRange;\n\nvar _domSeek = _interopRequireDefault(require(\"dom-seek\"));\n\nvar _rangeToString = _interopRequireDefault(require(\"./range-to-string\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar SHOW_TEXT = 4;\n\nfunction fromRange(root, range) {\n if (root === undefined) {\n throw new Error('missing required parameter \"root\"');\n }\n\n if (range === undefined) {\n throw new Error('missing required parameter \"range\"');\n }\n\n var document = root.ownerDocument;\n var prefix = document.createRange();\n var startNode = range.startContainer;\n var startOffset = range.startOffset;\n prefix.setStart(root, 0);\n prefix.setEnd(startNode, startOffset);\n var start = (0, _rangeToString[\"default\"])(prefix).length;\n var end = start + (0, _rangeToString[\"default\"])(range).length;\n return {\n start: start,\n end: end\n };\n}\n\nfunction toRange(root) {\n var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (root === undefined) {\n throw new Error('missing required parameter \"root\"');\n }\n\n var document = root.ownerDocument;\n var range = document.createRange();\n var iter = document.createNodeIterator(root, SHOW_TEXT);\n var start = selector.start || 0;\n var end = selector.end || start;\n var startOffset = start - (0, _domSeek[\"default\"])(iter, start);\n var startNode = iter.referenceNode;\n var remainder = end - start + startOffset;\n var endOffset = remainder - (0, _domSeek[\"default\"])(iter, remainder);\n var endNode = iter.referenceNode;\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n return range;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = rangeToString;\n\n/**\n * Return the next node after `node` in a tree order traversal of the document.\n */\nfunction nextNode(node, skipChildren) {\n if (!skipChildren && node.firstChild) {\n return node.firstChild;\n }\n\n do {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n\n node = node.parentNode;\n } while (node);\n /* istanbul ignore next */\n\n\n return node;\n}\n\nfunction firstNode(range) {\n if (range.startContainer.nodeType === Node.ELEMENT_NODE) {\n var node = range.startContainer.childNodes[range.startOffset];\n return node || nextNode(range.startContainer, true\n /* skip children */\n );\n }\n\n return range.startContainer;\n}\n\nfunction firstNodeAfter(range) {\n if (range.endContainer.nodeType === Node.ELEMENT_NODE) {\n var node = range.endContainer.childNodes[range.endOffset];\n return node || nextNode(range.endContainer, true\n /* skip children */\n );\n }\n\n return nextNode(range.endContainer);\n}\n\nfunction forEachNodeInRange(range, cb) {\n var node = firstNode(range);\n var pastEnd = firstNodeAfter(range);\n\n while (node !== pastEnd) {\n cb(node);\n node = nextNode(node);\n }\n}\n/**\n * A ponyfill for Range.toString().\n * Spec: https://dom.spec.whatwg.org/#dom-range-stringifier\n *\n * Works around the buggy Range.toString() implementation in IE and Edge.\n * See https://github.com/tilgovi/dom-anchor-text-position/issues/4\n */\n\n\nfunction rangeToString(range) {\n // This is a fairly direct translation of the Range.toString() implementation\n // in Blink.\n var text = '';\n forEachNodeInRange(range, function (node) {\n if (node.nodeType !== Node.TEXT_NODE) {\n return;\n }\n\n var start = node === range.startContainer ? range.startOffset : 0;\n var end = node === range.endContainer ? range.endOffset : node.textContent.length;\n text += node.textContent.slice(start, end);\n });\n return text;\n}\n//# sourceMappingURL=range-to-string.js.map","module.exports = require('./lib')['default'];\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = seek;\nvar E_END = 'Iterator exhausted before seek ended.';\nvar E_SHOW = 'Argument 1 of seek must use filter NodeFilter.SHOW_TEXT.';\nvar E_WHERE = 'Argument 2 of seek must be an integer or a Text Node.';\nvar DOCUMENT_POSITION_PRECEDING = 2;\nvar SHOW_TEXT = 4;\nvar TEXT_NODE = 3;\n\nfunction seek(iter, where) {\n if (iter.whatToShow !== SHOW_TEXT) {\n var error; // istanbul ignore next\n\n try {\n error = new DOMException(E_SHOW, 'InvalidStateError');\n } catch (_unused) {\n error = new Error(E_SHOW);\n error.code = 11;\n error.name = 'InvalidStateError';\n\n error.toString = function () {\n return \"InvalidStateError: \".concat(E_SHOW);\n };\n }\n\n throw error;\n }\n\n var count = 0;\n var node = iter.referenceNode;\n var predicates = null;\n\n if (isInteger(where)) {\n predicates = {\n forward: function forward() {\n return count < where;\n },\n backward: function backward() {\n return count > where || !iter.pointerBeforeReferenceNode;\n }\n };\n } else if (isText(where)) {\n var forward = before(node, where) ? function () {\n return false;\n } : function () {\n return node !== where;\n };\n\n var backward = function backward() {\n return node !== where || !iter.pointerBeforeReferenceNode;\n };\n\n predicates = {\n forward: forward,\n backward: backward\n };\n } else {\n throw new TypeError(E_WHERE);\n }\n\n while (predicates.forward()) {\n node = iter.nextNode();\n\n if (node === null) {\n throw new RangeError(E_END);\n }\n\n count += node.nodeValue.length;\n }\n\n if (iter.nextNode()) {\n node = iter.previousNode();\n }\n\n while (predicates.backward()) {\n node = iter.previousNode();\n\n if (node === null) {\n throw new RangeError(E_END);\n }\n\n count -= node.nodeValue.length;\n }\n\n if (!isText(iter.referenceNode)) {\n throw new RangeError(E_END);\n }\n\n return count;\n}\n\nfunction isInteger(n) {\n if (typeof n !== 'number') return false;\n return isFinite(n) && Math.floor(n) === n;\n}\n\nfunction isText(node) {\n return node.nodeType === TEXT_NODE;\n}\n\nfunction before(ref, node) {\n return ref.compareDocumentPosition(node) & DOCUMENT_POSITION_PRECEDING;\n}\n//# sourceMappingURL=index.js.map","var htmx = (function() {\n 'use strict'\n\n // Public API\n const htmx = {\n // Tsc madness here, assigning the functions directly results in an invalid TypeScript output, but reassigning is fine\n /* Event processing */\n /** @type {typeof onLoadHelper} */\n onLoad: null,\n /** @type {typeof processNode} */\n process: null,\n /** @type {typeof addEventListenerImpl} */\n on: null,\n /** @type {typeof removeEventListenerImpl} */\n off: null,\n /** @type {typeof triggerEvent} */\n trigger: null,\n /** @type {typeof ajaxHelper} */\n ajax: null,\n /* DOM querying helpers */\n /** @type {typeof find} */\n find: null,\n /** @type {typeof findAll} */\n findAll: null,\n /** @type {typeof closest} */\n closest: null,\n /**\n * Returns the input values that would resolve for a given element via the htmx value resolution mechanism\n *\n * @see https://htmx.org/api/#values\n *\n * @param {Element} elt the element to resolve values on\n * @param {HttpVerb} type the request type (e.g. **get** or **post**) non-GET's will include the enclosing form of the element. Defaults to **post**\n * @returns {Object}\n */\n values: function(elt, type) {\n const inputValues = getInputValues(elt, type || 'post')\n return inputValues.values\n },\n /* DOM manipulation helpers */\n /** @type {typeof removeElement} */\n remove: null,\n /** @type {typeof addClassToElement} */\n addClass: null,\n /** @type {typeof removeClassFromElement} */\n removeClass: null,\n /** @type {typeof toggleClassOnElement} */\n toggleClass: null,\n /** @type {typeof takeClassForElement} */\n takeClass: null,\n /** @type {typeof swap} */\n swap: null,\n /* Extension entrypoints */\n /** @type {typeof defineExtension} */\n defineExtension: null,\n /** @type {typeof removeExtension} */\n removeExtension: null,\n /* Debugging */\n /** @type {typeof logAll} */\n logAll: null,\n /** @type {typeof logNone} */\n logNone: null,\n /* Debugging */\n /**\n * The logger htmx uses to log with\n *\n * @see https://htmx.org/api/#logger\n */\n logger: null,\n /**\n * A property holding the configuration htmx uses at runtime.\n *\n * Note that using a [meta tag](https://htmx.org/docs/#config) is the preferred mechanism for setting these properties.\n *\n * @see https://htmx.org/api/#config\n */\n config: {\n /**\n * Whether to use history.\n * @type boolean\n * @default true\n */\n historyEnabled: true,\n /**\n * The number of pages to keep in **localStorage** for history support.\n * @type number\n * @default 10\n */\n historyCacheSize: 10,\n /**\n * @type boolean\n * @default false\n */\n refreshOnHistoryMiss: false,\n /**\n * The default swap style to use if **[hx-swap](https://htmx.org/attributes/hx-swap)** is omitted.\n * @type HtmxSwapStyle\n * @default 'innerHTML'\n */\n defaultSwapStyle: 'innerHTML',\n /**\n * The default delay between receiving a response from the server and doing the swap.\n * @type number\n * @default 0\n */\n defaultSwapDelay: 0,\n /**\n * The default delay between completing the content swap and settling attributes.\n * @type number\n * @default 20\n */\n defaultSettleDelay: 20,\n /**\n * If true, htmx will inject a small amount of CSS into the page to make indicators invisible unless the **htmx-indicator** class is present.\n * @type boolean\n * @default true\n */\n includeIndicatorStyles: true,\n /**\n * The class to place on indicators when a request is in flight.\n * @type string\n * @default 'htmx-indicator'\n */\n indicatorClass: 'htmx-indicator',\n /**\n * The class to place on triggering elements when a request is in flight.\n * @type string\n * @default 'htmx-request'\n */\n requestClass: 'htmx-request',\n /**\n * The class to temporarily place on elements that htmx has added to the DOM.\n * @type string\n * @default 'htmx-added'\n */\n addedClass: 'htmx-added',\n /**\n * The class to place on target elements when htmx is in the settling phase.\n * @type string\n * @default 'htmx-settling'\n */\n settlingClass: 'htmx-settling',\n /**\n * The class to place on target elements when htmx is in the swapping phase.\n * @type string\n * @default 'htmx-swapping'\n */\n swappingClass: 'htmx-swapping',\n /**\n * Allows the use of eval-like functionality in htmx, to enable **hx-vars**, trigger conditions & script tag evaluation. Can be set to **false** for CSP compatibility.\n * @type boolean\n * @default true\n */\n allowEval: true,\n /**\n * If set to false, disables the interpretation of script tags.\n * @type boolean\n * @default true\n */\n allowScriptTags: true,\n /**\n * If set, the nonce will be added to inline scripts.\n * @type string\n * @default ''\n */\n inlineScriptNonce: '',\n /**\n * If set, the nonce will be added to inline styles.\n * @type string\n * @default ''\n */\n inlineStyleNonce: '',\n /**\n * The attributes to settle during the settling phase.\n * @type string[]\n * @default ['class', 'style', 'width', 'height']\n */\n attributesToSettle: ['class', 'style', 'width', 'height'],\n /**\n * Allow cross-site Access-Control requests using credentials such as cookies, authorization headers or TLS client certificates.\n * @type boolean\n * @default false\n */\n withCredentials: false,\n /**\n * @type number\n * @default 0\n */\n timeout: 0,\n /**\n * The default implementation of **getWebSocketReconnectDelay** for reconnecting after unexpected connection loss by the event code **Abnormal Closure**, **Service Restart** or **Try Again Later**.\n * @type {'full-jitter' | ((retryCount:number) => number)}\n * @default \"full-jitter\"\n */\n wsReconnectDelay: 'full-jitter',\n /**\n * The type of binary data being received over the WebSocket connection\n * @type BinaryType\n * @default 'blob'\n */\n wsBinaryType: 'blob',\n /**\n * @type string\n * @default '[hx-disable], [data-hx-disable]'\n */\n disableSelector: '[hx-disable], [data-hx-disable]',\n /**\n * @type {'auto' | 'instant' | 'smooth'}\n * @default 'smooth'\n */\n scrollBehavior: 'instant',\n /**\n * If the focused element should be scrolled into view.\n * @type boolean\n * @default false\n */\n defaultFocusScroll: false,\n /**\n * If set to true htmx will include a cache-busting parameter in GET requests to avoid caching partial responses by the browser\n * @type boolean\n * @default false\n */\n getCacheBusterParam: false,\n /**\n * If set to true, htmx will use the View Transition API when swapping in new content.\n * @type boolean\n * @default false\n */\n globalViewTransitions: false,\n /**\n * htmx will format requests with these methods by encoding their parameters in the URL, not the request body\n * @type {(HttpVerb)[]}\n * @default ['get', 'delete']\n */\n methodsThatUseUrlParams: ['get', 'delete'],\n /**\n * If set to true, disables htmx-based requests to non-origin hosts.\n * @type boolean\n * @default false\n */\n selfRequestsOnly: true,\n /**\n * If set to true htmx will not update the title of the document when a title tag is found in new content\n * @type boolean\n * @default false\n */\n ignoreTitle: false,\n /**\n * Whether the target of a boosted element is scrolled into the viewport.\n * @type boolean\n * @default true\n */\n scrollIntoViewOnBoost: true,\n /**\n * The cache to store evaluated trigger specifications into.\n * You may define a simple object to use a never-clearing cache, or implement your own system using a [proxy object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Proxy)\n * @type {Object|null}\n * @default null\n */\n triggerSpecsCache: null,\n /** @type boolean */\n disableInheritance: false,\n /** @type HtmxResponseHandlingConfig[] */\n responseHandling: [\n { code: '204', swap: false },\n { code: '[23]..', swap: true },\n { code: '[45]..', swap: false, error: true }\n ],\n /**\n * Whether to process OOB swaps on elements that are nested within the main response element.\n * @type boolean\n * @default true\n */\n allowNestedOobSwaps: true\n },\n /** @type {typeof parseInterval} */\n parseInterval: null,\n /** @type {typeof internalEval} */\n _: null,\n version: '2.0.1'\n }\n // Tsc madness part 2\n htmx.onLoad = onLoadHelper\n htmx.process = processNode\n htmx.on = addEventListenerImpl\n htmx.off = removeEventListenerImpl\n htmx.trigger = triggerEvent\n htmx.ajax = ajaxHelper\n htmx.find = find\n htmx.findAll = findAll\n htmx.closest = closest\n htmx.remove = removeElement\n htmx.addClass = addClassToElement\n htmx.removeClass = removeClassFromElement\n htmx.toggleClass = toggleClassOnElement\n htmx.takeClass = takeClassForElement\n htmx.swap = swap\n htmx.defineExtension = defineExtension\n htmx.removeExtension = removeExtension\n htmx.logAll = logAll\n htmx.logNone = logNone\n htmx.parseInterval = parseInterval\n htmx._ = internalEval\n\n const internalAPI = {\n addTriggerHandler,\n bodyContains,\n canAccessLocalStorage,\n findThisElement,\n filterValues,\n swap,\n hasAttribute,\n getAttributeValue,\n getClosestAttributeValue,\n getClosestMatch,\n getExpressionVars,\n getHeaders,\n getInputValues,\n getInternalData,\n getSwapSpecification,\n getTriggerSpecs,\n getTarget,\n makeFragment,\n mergeObjects,\n makeSettleInfo,\n oobSwap,\n querySelectorExt,\n settleImmediately,\n shouldCancel,\n triggerEvent,\n triggerErrorEvent,\n withExtensions\n }\n\n const VERBS = ['get', 'post', 'put', 'delete', 'patch']\n const VERB_SELECTOR = VERBS.map(function(verb) {\n return '[hx-' + verb + '], [data-hx-' + verb + ']'\n }).join(', ')\n\n const HEAD_TAG_REGEX = makeTagRegEx('head')\n\n //= ===================================================================\n // Utilities\n //= ===================================================================\n\n /**\n * @param {string} tag\n * @param {boolean} global\n * @returns {RegExp}\n */\n function makeTagRegEx(tag, global = false) {\n return new RegExp(`<${tag}(\\\\s[^>]*>|>)([\\\\s\\\\S]*?)<\\\\/${tag}>`,\n global ? 'gim' : 'im')\n }\n\n /**\n * Parses an interval string consistent with the way htmx does. Useful for plugins that have timing-related attributes.\n *\n * Caution: Accepts an int followed by either **s** or **ms**. All other values use **parseFloat**\n *\n * @see https://htmx.org/api/#parseInterval\n *\n * @param {string} str timing string\n * @returns {number|undefined}\n */\n function parseInterval(str) {\n if (str == undefined) {\n return undefined\n }\n\n let interval = NaN\n if (str.slice(-2) == 'ms') {\n interval = parseFloat(str.slice(0, -2))\n } else if (str.slice(-1) == 's') {\n interval = parseFloat(str.slice(0, -1)) * 1000\n } else if (str.slice(-1) == 'm') {\n interval = parseFloat(str.slice(0, -1)) * 1000 * 60\n } else {\n interval = parseFloat(str)\n }\n return isNaN(interval) ? undefined : interval\n }\n\n /**\n * @param {Node} elt\n * @param {string} name\n * @returns {(string | null)}\n */\n function getRawAttribute(elt, name) {\n return elt instanceof Element && elt.getAttribute(name)\n }\n\n /**\n * @param {Element} elt\n * @param {string} qualifiedName\n * @returns {boolean}\n */\n // resolve with both hx and data-hx prefixes\n function hasAttribute(elt, qualifiedName) {\n return !!elt.hasAttribute && (elt.hasAttribute(qualifiedName) ||\n elt.hasAttribute('data-' + qualifiedName))\n }\n\n /**\n *\n * @param {Node} elt\n * @param {string} qualifiedName\n * @returns {(string | null)}\n */\n function getAttributeValue(elt, qualifiedName) {\n return getRawAttribute(elt, qualifiedName) || getRawAttribute(elt, 'data-' + qualifiedName)\n }\n\n /**\n * @param {Node} elt\n * @returns {Node | null}\n */\n function parentElt(elt) {\n const parent = elt.parentElement\n if (!parent && elt.parentNode instanceof ShadowRoot) return elt.parentNode\n return parent\n }\n\n /**\n * @returns {Document}\n */\n function getDocument() {\n return document\n }\n\n /**\n * @param {Node} elt\n * @param {boolean} global\n * @returns {Node|Document}\n */\n function getRootNode(elt, global) {\n return elt.getRootNode ? elt.getRootNode({ composed: global }) : getDocument()\n }\n\n /**\n * @param {Node} elt\n * @param {(e:Node) => boolean} condition\n * @returns {Node | null}\n */\n function getClosestMatch(elt, condition) {\n while (elt && !condition(elt)) {\n elt = parentElt(elt)\n }\n\n return elt || null\n }\n\n /**\n * @param {Element} initialElement\n * @param {Element} ancestor\n * @param {string} attributeName\n * @returns {string|null}\n */\n function getAttributeValueWithDisinheritance(initialElement, ancestor, attributeName) {\n const attributeValue = getAttributeValue(ancestor, attributeName)\n const disinherit = getAttributeValue(ancestor, 'hx-disinherit')\n var inherit = getAttributeValue(ancestor, 'hx-inherit')\n if (initialElement !== ancestor) {\n if (htmx.config.disableInheritance) {\n if (inherit && (inherit === '*' || inherit.split(' ').indexOf(attributeName) >= 0)) {\n return attributeValue\n } else {\n return null\n }\n }\n if (disinherit && (disinherit === '*' || disinherit.split(' ').indexOf(attributeName) >= 0)) {\n return 'unset'\n }\n }\n return attributeValue\n }\n\n /**\n * @param {Element} elt\n * @param {string} attributeName\n * @returns {string | null}\n */\n function getClosestAttributeValue(elt, attributeName) {\n let closestAttr = null\n getClosestMatch(elt, function(e) {\n return !!(closestAttr = getAttributeValueWithDisinheritance(elt, asElement(e), attributeName))\n })\n if (closestAttr !== 'unset') {\n return closestAttr\n }\n }\n\n /**\n * @param {Node} elt\n * @param {string} selector\n * @returns {boolean}\n */\n function matches(elt, selector) {\n // @ts-ignore: non-standard properties for browser compatibility\n // noinspection JSUnresolvedVariable\n const matchesFunction = elt instanceof Element && (elt.matches || elt.matchesSelector || elt.msMatchesSelector || elt.mozMatchesSelector || elt.webkitMatchesSelector || elt.oMatchesSelector)\n return !!matchesFunction && matchesFunction.call(elt, selector)\n }\n\n /**\n * @param {string} str\n * @returns {string}\n */\n function getStartTag(str) {\n const tagMatcher = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i\n const match = tagMatcher.exec(str)\n if (match) {\n return match[1].toLowerCase()\n } else {\n return ''\n }\n }\n\n /**\n * @param {string} resp\n * @returns {Document}\n */\n function parseHTML(resp) {\n const parser = new DOMParser()\n return parser.parseFromString(resp, 'text/html')\n }\n\n /**\n * @param {DocumentFragment} fragment\n * @param {Node} elt\n */\n function takeChildrenFor(fragment, elt) {\n while (elt.childNodes.length > 0) {\n fragment.append(elt.childNodes[0])\n }\n }\n\n /**\n * @param {HTMLScriptElement} script\n * @returns {HTMLScriptElement}\n */\n function duplicateScript(script) {\n const newScript = getDocument().createElement('script')\n forEach(script.attributes, function(attr) {\n newScript.setAttribute(attr.name, attr.value)\n })\n newScript.textContent = script.textContent\n newScript.async = false\n if (htmx.config.inlineScriptNonce) {\n newScript.nonce = htmx.config.inlineScriptNonce\n }\n return newScript\n }\n\n /**\n * @param {HTMLScriptElement} script\n * @returns {boolean}\n */\n function isJavaScriptScriptNode(script) {\n return script.matches('script') && (script.type === 'text/javascript' || script.type === 'module' || script.type === '')\n }\n\n /**\n * we have to make new copies of script tags that we are going to insert because\n * SOME browsers (not saying who, but it involves an element and an animal) don't\n * execute scripts created in