import {
    W as oi,
    X as ni,
    Y as ei,
    U as ti,
    V as si,
    c as ai,
    d as ci,
    e as ri,
    f as mi,
    g as pi,
    h as li,
    i as hi,
    j as yi,
    k as di,
    l as gi,
    m as _i,
    n as fi,
    o as ui,
    p as bi,
    q as xi,
    r as zi,
    s as ki,
    t as Mi,
    u as vi,
    v as Ii,
    w as Pi,
    x as Hi,
    y as Ti,
    z as Ei,
    A as Si,
    B as Oi,
    C as Li,
    D as Ci,
    E as wi,
    F as Di,
    G as Ai,
    H as Zi,
    I as Ni,
    J as $i,
    K as Bi,
    L as Wi,
    M as Ui,
    N as Gi,
    O as Fi,
    P as Ri,
    Q as ji,
    R as Yi,
    S as Vi,
    T as Ji,
    _ as qi,
    a as Ki,
    b as Xi
} from "./phoneSharingCar.js";
import {
    _ as Qi
} from "./DefaultMapMarkerOverwrite.js";
import {
    w as F
} from "./dom.js";
import {
    _ as io,
    a as oo,
    b as no,
    c as eo,
    d as to,
    e as so,
    f as ao,
    g as co,
    h as ro,
    i as mo,
    j as po,
    k as lo,
    l as ho,
    m as yo,
    n as go,
    o as _o,
    p as fo,
    q as uo,
    r as bo,
    s as xo,
    t as zo,
    u as ko,
    v as Mo,
    w as vo,
    x as Io,
    y as Po,
    z as Ho,
    A as To,
    B as Eo,
    C as So
} from "./92.js";
import {
    a6 as Oo,
    o as Lo,
    c as Co,
    a as wo,
    d as Do,
    n as Ao,
    _ as Zo
} from "./index.js";
import {
    r as No
} from "./array.js";
const vn = ["Общественные места", "Транспортные узлы", "Государственные организации", "Базы преступных группировок", "По работе", "Банки", "Развлечения", "Интересные места", "Ближайшие места", "Другое", "Бизнесы"],
    $o = [{
        category: 0,
        points: [{
            icon: 2,
            name: "Автошкола",
            keys: ["аш", "права"],
            position: {
                x: 1928.960083,
                y: 1930.185302,
                z: 15.7747
            }
        }, {
            icon: 3,
            name: "Военкомат",
            position: {
                x: 1919.346435,
                y: 2303.978271,
                z: 15.5697
            }
        }, {
            icon: 4,
            name: "Штрафстоянка (Арзамас)",
            keys: ["шс", "эвакуатор"],
            position: {
                x: -287.9703,
                y: 1106.8292,
                z: 12.0085
            }
        }, {
            icon: 4,
            name: "Штрафстоянка (Южный)",
            keys: ["шс", "эвакуатор"],
            position: {
                x: 2501.4827,
                y: -2350.407,
                z: 21.9883
            }
        }, {
            icon: 5,
            name: "Утилизация автомобиля",
            keys: ["сдача автомобиля в утиль", "сдать авто утиль", "авто на металл", "утиль"],
            position: {
                x: -2702.877441,
                y: -1323.058594,
                z: 11.00024
            }
        }, {
            icon: 65,
            name: "Автосалон эконом класса",
            keys: ["низкий класс", "низкого класса", "эконом", "бюджетные авто", "авто эконом", "дешовые", "дешевые"],
            position: {
                x: 2595.322998,
                y: -616.805175,
                z: 12.2039
            }
        }, {
            icon: 76,
            name: "Автосалон среднего класса",
            keys: ["средний салон", "автосалон арзамас"],
            position: {
                x: 393.304504,
                y: 793.709594,
                z: 12.0254
            }
        }, {
            icon: 75,
            name: "Автосалон премиум класса",
            keys: ["элитные авто", "элитный класс", "высокий", "дорогие"],
            position: {
                x: 1865.836181,
                y: 2821.910156,
                z: 12.14
            }
        }, {
            icon: 43,
            name: "Автосалон грузовиков",
            keys: ["фура", "фуры", "прицеп", "фургон", "фуру"],
            position: {
                x: 1050.203247,
                y: -1898.325927,
                z: 34.216899
            }
        }, {
            icon: 10,
            name: "Салон воздушного транспорта",
            keys: ["вертолет", "вертолёт"],
            position: {
                x: -41.418899,
                y: 925.561706,
                z: 12.332099
            }
        }, {
            icon: 11,
            name: "Салон водного транспорта",
            keys: ["лодка", "яхта", "купить водный транспорт", "водный салон"],
            position: {
                x: 2642.364502,
                y: -3433.827393,
                z: 3.206867
            }
        }, {
            icon: 100,
            name: "Мото-Вело салон",
            keys: ["байк", "мотоцикл", "квадроцикл", "велосипед", "велик", "автосалон лыткарино", "салон лыткарино"],
            position: {
                x: -2243.689941,
                y: 263.236999,
                z: 24.5337
            }
        }, {
            icon: 75,
            name: "Автосалон эксклюзивный",
            keys: ["эксклюзивный", "донат", "элитный класс", "дорогие","Rcoins","салон южный"],
            position: {
                x: 2311.5249,
                y: -1940.309,
                z: 22.4284
            }
        }, {
            icon: 67,
            name: "Стадион",
            keys: ["футбол", "спорт"],
            position: {
                x: -237.169601,
                y: 408.328308,
                z: 14.277899
            }
        }, {
            icon: 72,
            name: "Заброшенная церковь",
            position: {
                x: 2684.137207,
                y: -2535.212402,
                z: 22.557399
            }
        }, {
            icon: 69,
            name: "Рынок Барвиха",
            keys: ["базар", "продажа шкуры", "продажа добычи", "урожай", "огород"],
            position: {
                x: 3780.9419,
                y: 3909.6238,
                z: 7.93
            }
        }, {
            icon: 69,
            name: "Рынок Бусаево",
            keys: ["базар", "продажа шкуры", "продажа добычи", "урожай", "огород"],
            position: {
                x: -393.167236,
                y: -1553.73584,
                z: 40.502674
            }
        }, {
            icon: 86,
            name: "Государственный Аукцион",
            keys: ["гос аук", "гос.аук", "имущество", "недвижимость"],
            position: {
                x: 2265.126,
                y: -2128.3083,
                z: 23.0532
            }
        }, {
            icon: 86,
            name: "Черный рынок",
            keys: ["черный аук"],
            position: {
                x: -1759.7064,
                y: 2893.83,
                z: 6.3117
            }
        }, {
            icon: 0,
            name: "Магазин антиквариата",
            position: {
                x: 2350.1963,
                y: -2138.4834,
                z: 22.6401
            }
        }, {
            icon: 8,
            name: "Салон покупки дома на колесах",
            keys: ["автосалон трейлеров", "трейлер", "автосалон лыткарино"],
            position: {
                x: -2381.655761,
                y: 201.770004,
                z: 21.1639
            }
        }, {
            icon: 69,
            name: "Торговый центр",
            keys: ["ТЦ", "Букмекерская контора", "БК", "Киоски", "Бадабум", "Badaboom", "Спортзал", "Зоомагазин", "Закусочная", "Лапка", "Бургер Мир", "Фитнес Клуб"],
            position: {
                x: 3239.2073,
                y: -28.6978,
                z: 6.3227
            }
        }]
    }, {
        category: 1,
        points: [{
            icon: 64,
            name: "Автовокзал (Арзамас)",
            position: {
                x: 408.422088,
                y: 1540.027709,
                z: 12.142499
            }
        }, {
            icon: 64,
            name: "Автовокзал (Бусаево)",
            position: {
                x: -391.177124,
                y: -1612.271484,
                z: 40.391716
            }
        }, {
            icon: 64,
            name: "Автовокзал (Эдово)",
            position: {
                x: -2472.383056,
                y: 2833.901611,
                z: 37.719001
            }
        }, {
            icon: 34,
            name: "Ж/Д вокзал (Южный)",
            position: {
                x: 2489.6973,
                y: -2065.1501,
                z: 21.9619
            }
        }, {
            icon: 34,
            name: "Ж/Д вокзал (Арзамас)",
            position: {
                x: 849.1477,
                y: 596.7825,
                z: 15.8857
            }
        }, {
            icon: 34,
            name: "Ж/Д вокзал (Лыткарино)",
            position: {
                x: -2668.7114,
                y: 142.2194,
                z: 12.2908
            }
        }, {
            icon: 26,
            name: "Порт Южного",
            position: {
                x: 2890.404052,
                y: -2565.231201,
                z: 4.0966
            }
        }, {
            icon: 26,
            name: "Грузовой порт",
            keys: ["контейнеры", "конты"],
            position: {
                x: -2098.918701,
                y: 2769.901367,
                z: 5.9972
            }
        }]
    }, {
        category: 2,
        points: [{
            icon: 18,
            name: "Министерство Внутренних Дел",
            keys: ["мвд", "полиция арзамас", "милиция арзамас", "полиция", "ппс", "дпс"],
            position: {
                x: 260.449707,
                y: 1385.785767,
                z: 12.357799
            }
        }, {
            icon: 21,
            name: "Войсковая часть",
            keys: ["армия", "мо", "военная часть", "военная база", "вч"],
            position: {
                x: 1291.4896,
                y: 3273.4926,
                z: 11.2684
            }
        }, {
            icon: 41,
            name: "Склад боеприпасов",
            keys: ["загрузка пт", "загрузка патрон", "загрузка материалов"],
            position: {
                x: 416.3092,
                y: -2807.5667,
                z: 20.2657
            }
        }, {
            icon: 14,
            name: "Больница Арзамаса",
            keys: ["болька арзамас", "поликлиника арзамас", "мз"],
            position: {
                x: 448.3067,
                y: 1781.339,
                z: 12.1266
            }
        }, {
            icon: 14,
            name: "Больница Южного",
            keys: ["болька южный", "поликлиника южный", "мз"],
            position: {
                x: 2403.879394,
                y: -2656.51538,
                z: 22.2756
            }
        }, {
            icon: 70,
            name: "ТРК 'Ритм'",
            keys: ["Телерадиокомпания Ритм", "реклама", "новости"],
            position: {
                x: 2178.1677,
                y: -1964.4229,
                z: 19.9815
            }
        }, {
            icon: 30,
            name: "Правительство",
            keys: ["право", "правик", "мэрия"],
            position: {
                x: -2447.165771,
                y: 1596.214111,
                z: 53.188927
            }
        }, {
            icon: 15,
            name: "МЧС",
            keys: ["пожарные", "спасатели"],
            position: {
                x: -2591.609863,
                y: 2114.949462,
                z: 53.828498
            }
        }, {
            icon: 19,
            name: "Тюрьма",
            keys: ["ФСИН"],
            position: {
                x: -1788.317,
                y: -2646.054,
                z: 10.475
            }
        }, {
            icon: 140,
            name: "ФСБ",
            keys: ["ФСБ"],
            position: {
                x: 2333.9502,
                y: -1828.7899,
                z: 23.7472
            }
        }]
    }, {
        category: 3,
        points: [{
            icon: 88,
            name: "Автосервис (пневмоподвеска)",
            keys: ["пневма", "тюнинг авто", "тюн авто"],
            position: {
                x: -397.498504,
                y: 1009.901123,
                z: 12.138099
            }
        }, {
            icon: 87,
            name: "Гараж Петровича (спил пружин)",
            keys: ["срез пружин", "спилить пружины", "срезать пружины", "тюн авто"],
            position: {
                x: 2442.0813,
                y: -2003.4467,
                z: 21.9701
            }
        }, {
            icon: 39,
            name: "СТО г.Южный (тюнинг транспорта)",
            keys: ["тюнинг", "тюн", "тюн авто"],
            position: {
                x: 2125.8271,
                y: -1845.2745,
                z: 18.8213
            }
        }, {
            icon: 39,
            name: "СТО г.Арзамас (тюнинг транспорта)",
            keys: ["тюнинг", "тюн", "тюн авто"],
            position: {
                x: -318.8690,
                y: 316.0693,
                z: 13.1182
            }
        }, {
            icon: 39,
            name: "СТО пгт.Лыткарино (тюнинг транспорта)",
            keys: ["тюнинг", "тюн", "тюн авто"],
            position: {
                x: -2527.7007,
                y: 1108.8402,
                z: 8.7268
            }
        }, {
            icon: 83,
            name: "Детейлинг центр г.Южный (тонировка, винилы)",
            keys: ["тонировка", "тонер", "винил", "тюн"],
            position: {
                x: 2213.1860,
                y: -2571.1201,
                z: 21.8295
            }
        }, {
            icon: 83,
            name: "Детейлинг центр пгт.Батырево (тонировка, винилы)",
            keys: ["тонировка", "тонер", "винил", "тюн"],
            position: {
                x: 1812.9221,
                y: 2346.7109,
                z: 15.3785
            }
        }, {
            icon: 83,
            name: "Детейлинг центр пгт.Лыткарино (тонировка, винилы)",
            keys: ["тонировка", "тонер", "винил", "тюн"],
            position: {
                x: -2520.5903,
                y: 1151.0016,
                z: 8.7600
            }
        }, {
            icon: 38,
            name: "Шиномонтаж г.Арзамас (диски)",
            keys: ["диски", "тюн", "тюнинг"],
            position: {
                x: -317.8491,
                y: 326.2791,
                z: 13.1182
            }
        }, {
            icon: 37,
            name: "Шиномонтаж г.Южный (диски)",
            keys: ["диски", "тюн", "тюнинг"],
            position: {
                x: 2172.1907,
                y: -1837.9861,
                z: 18.8040
            }
        }, {
            icon: 36,
            name: "Шиномонтаж пгт.Лыткарино (диски)",
            keys: ["диски", "тюн", "тюнинг"],
            position: {
                x: -2532.2183,
                y: 1098.1243,
                z: 8.7165
            }
        }, {
            icon: 98,
            name: "Автосервис в Южном (чип-тюнинг)",
            keys: ["stage", "стейдж", "выхлоп", "радиатор", "турбин", "нагнетатель", "тюн авто", "скорость"],
            position: {
                x: 2344.840087,
                y: -2610.296386,
                z: 21.795999
            }
        }, {
            icon: 98,
            name: "Автосервис в Арзамасе (чип-тюнинг)",
            keys: ["stage", "стейдж", "выхлоп", "радиатор", "турбин", "нагнетатель", "тюн авто", "скорость"],
            position: {
                x: 441.4109,
                y: 774.0497,
                z: 12.0000
            }
        }]
    }, {
        category: 4,
        points: [{
            icon: 1,
            name: "Центр занятости",
            keys: ["работа", "работы", "цз"],
            position: {
                x: 317.168247,
                y: 510.8367,
                z: 12.187
            }
        }, {
            icon: 84,
            name: "Шахта",
            position: {
                x: -486.2821,
                y: 3337.2534,
                z: 31.0381
            }
        }, {
            businessId: 181,
            icon: 77,
            name: "Лесопилка",
            position: {
                x: 425.483,
                y: -2441.1978,
                z: 34.9269
            }
        }, {
            icon: 74,
            name: "База мусоровозов",
            position: {
                x: -2083.327393,
                y: -172.50885,
                z: 25.74626
            }
        }, {
            icon: 85,
            name: "Завод по производству продуктов",
            position: {
                x: -1078.54602,
                y: 2184.036621,
                z: 38.0657
            }
        }, {
            icon: 62,
            name: "Нефтезавод",
            keys: ["загрузка топлива"],
            position: {
                x: 2650.35376,
                y: 633.86145,
                z: 14.195112
            }
        }, {
            icon: 26,
            name: "Пирс",
            keys: ["рыболова", "краболов", "рыба"],
            position: {
                x: 2890.2808,
                y: 1401.1296,
                z: 2.6106
            }
        }, {
            icon: 93,
            name: "АТП",
            keys: ["стоянка автобусов", "водитель автобуса"],
            position: {
                x: 786.306885,
                y: 748.833496,
                z: 12.092654
            }
        }, {
            icon: 94,
            name: "Таксопарк",
            keys: ["такси"],
            position: {
                x: 217.5208,
                y: 248.8099,
                z: 11.594
            },
            businessId: 197
        }, {
            icon: 82,
            name: "Дорожная служба",
            keys: ["ремонт дорог"],
            position: {
                x: 299.18869,
                y: 434.35791,
                z: 11.9531
            }
        }, {
            icon: 78,
            name: "Ферма 'Зеленый луг'",
            position: {
                x: 1699.439331,
                y: 685.014709,
                z: 15.8822
            },
            businessId: 106
        }, {
            icon: 78,
            name: "Ферма 'Молочная долина'",
            position: {
                x: -1082.691772,
                y: -835.418029,
                z: 51.230598
            },
            businessId: 107
        }, {
            icon: 61,
            name: "Железнодорожное депо",
            keys: ["машинист южный", "поезд"],
            position: {
                x: 1970.236328,
                y: -2603.836914,
                z: 11.482299
            }
        }, {
            icon: 61,
            name: "Депо метрополитена",
            keys: ["машинист арзамас"],
            position: {
                x: -358.37,
                y: 449.9,
                z: 12.59
            }
        }, {
            icon: 73,
            name: "Аэропорт",
            keys: ["самолет", "работа пилота"],
            position: {
                x: 2813.583496,
                y: -2036.2406,
                z: 21.394399
            }
        }, {
            icon: 43,
            name: "Транспортная компания 'Южный'",
            keys: ["ТК южное", "тк южный"],
            position: {
                x: 2421.487304,
                y: -756.260314,
                z: 12.3633
            },
            businessId: 137
        }, {
            icon: 43,
            name: "Транспортная компания 'Лыткарино'",
            keys: ["ТК лыткарино"],
            position: {
                x: -2483.80664,
                y: -69.750701,
                z: 13.9453
            },
            businessId: 138
        }, {
            icon: 43,
            name: "Транспортная компания 'Батырево'",
            keys: ["ТК батырево"],
            position: {
                x: 2084.760009,
                y: 1860.183593,
                z: 15.2796
            },
            businessId: 139
        }, {
            icon: 39,
            name: "Работа электрика",
            keys: ["электрик"],
            position: {
                x: 1801.6002,
                y: 2506.5854,
                z: 16.3863
            }
        }, {
            icon: 9,
            name: "Зона для рыбалки №1 (1+ lvl)",
            keys: ["рыболова", "рыба", "рыбкалка"],
            position: {
                x: -275.55069,
                y: 2297.300537,
                z: -.55
            }
        }, {
            icon: 9,
            name: "Зона для рыбалки №2 (1+ lvl)",
            keys: ["рыболова", "рыба", "рыбкалка"],
            position: {
                x: 1315.585571,
                y: 2043.356323,
                z: -.454344
            }
        }, {
            icon: 9,
            name: "Зона для рыбалки №3 (2+ lvl)",
            keys: ["рыболова", "рыба", "рыбкалка"],
            position: {
                x: -2886.154541,
                y: -674.604858,
                z: -.579387
            }
        }, {
            icon: 9,
            name: "Зона для рыбалки №4 (2+ lvl)",
            keys: ["рыболова", "рыба", "рыбкалка"],
            position: {
                x: 4204.732422,
                y: 3963.182129,
                z: -.905545
            }
        }, {
            icon: 9,
            name: "Зона для рыбалки №5 (3+ lvl)",
            keys: ["рыболова", "рыба", "рыбкалка"],
            position: {
                x: 3070.477539,
                y: 1352.182861,
                z: -.783137
            }
        }, {
            icon: 9,
            name: "Зона для рыбалки №6 (3+ lvl)",
            keys: ["рыболова", "рыба", "рыбкалка"],
            position: {
                x: 2549.223877,
                y: 2110.489502,
                z: 4.65
            }
        }, {
            icon: 9,
            name: "Зона для рыбалки №7 (3+ lvl)",
            keys: ["рыболова", "рыба", "рыбкалка"],
            position: {
                x: 2078.196045,
                y: 1076.217773,
                z: 11.45
            }
        }, {
            icon: 9,
            name: "Зона для рыбалки №8 (4+ lvl)",
            keys: ["рыболова", "рыба", "рыбкалка"],
            position: {
                x: 393.921234,
                y: -260.088745,
                z: -.541728
            }
        }, {
            icon: 9,
            name: "Зона для рыбалки №9 (4+ lvl)",
            keys: ["рыболова", "рыба", "рыбкалка"],
            position: {
                x: 3194.578857,
                y: -3671.617676,
                z: -.431766
            }
        }, {
            icon: 9,
            name: "Зона для рыбалки №10 (3+ lvl)",
            keys: ["рыболова", "рыба", "рыбкалка"],
            position: {
                x: -252.6403,
                y: -1197.0809,
                z: 35.1705
            }
        }, {
            icon: 9,
            name: "Зона для рыбалки №11 (2+ lvl)",
            keys: ["рыболова", "рыба", "рыбкалка"],
            position: {
                x: -111.0057,
                y: -1807.2277,
                z: 38.3703
            }
        }, {
            icon: 123,
            name: "Зона для дайвинга №1",
            keys: ["дайвинг"],
            position: {
                x: 930.473,
                y: 4517.16,
                z: 10
            }
        }, {
            icon: 123,
            name: "Зона для дайвинга №2",
            keys: ["дайвинг"],
            position: {
                x: 3551.71,
                y: 943.969,
                z: 10
            }
        }]
    }, {
        category: 5,
        points: [{
            icon: 47,
            name: "Банк г.Арзамас",
            position: {
                x: 556.0103,
                y: 491.02,
                z: 16.6632
            }
        }, {
            icon: 47,
            name: "Частный банк Рубль",
            keys: ["банк южный"],
            position: {
                x: 2417.5142,
                y: -1843.6786,
                z: 21.8567
            }
        }, {
            icon: 47,
            name: "Частный банк Развитие",
            keys: ["банк эдово"],
            position: {
                x: -2579.6416,
                y: 2874.0686,
                z: 37.634
            }
        }, {
            icon: 47,
            name: "Частный банк Развитие",
            keys: ["банк южный"],
            position: {
                x: 2376.3748,
                y: -2140.7278,
                z: 21.9607
            }
        }, {
            icon: 47,
            name: "Частный банк Вектор",
            position: {
                x: -420.2986,
                y: -1541.5993,
                z: 40.8521
            }
        }, {
            icon: 47,
            name: "Частный банк Интеграл",
            position: {
                x: 1850.339965,
                y: 2035.010009,
                z: 16.974199
            }
        }]
    }, {
        category: 6,
        points: [{
            businessId: 75,
            icon: 66,
            name: "Казино 'Бендер'",
            keys: ["казино лыткарино", "казик"],
            position: {
                x: -2195.768798,
                y: -301.148895,
                z: 23.513999
            }
        }, {
            businessId: 76,
            icon: 66,
            name: "Казино 'Royal'",
            keys: ["казино южный", "казик"],
            position: {
                x: 1920.334229,
                y: -1933.534302,
                z: 31.793201
            }
        }, {
            icon: 68,
            name: "Танцевальная школа",
            position: {
                x: 2409.052246,
                y: -2143.323242,
                z: 21.956899
            }
        }, {
            icon: 90,
            name: "Пейнтбол",
            keys: ["пб", "арена", "стрельба"],
            position: {
                x: 2383.745849,
                y: 1938.874267,
                z: 15.819999
            }
        }, {
            icon: 49,
            name: "Уличные гонки",
            keys: ["драг", "гонки"],
            position: {
                x: 1667.3724,
                y: 1658.2129,
                z: 16.8935
            }
        }, {
            icon: 49,
            name: "Центр развлечений",
            keys: ["драг", "гонки"],
            position: {
                x: -693.1893,
                y: 873.6188,
                z: 10.2481
            }
        }]
    }, {
        category: 7,
        points: [{
            icon: 55,
            name: "Густой лес",
            position: {
                x: 2336.433105,
                y: 962.531372,
                z: 15.9075
            }
        }, {
            icon: 25,
            name: "Охотничий лес №1",
            position: {
                x: 1370.592,
                y: -861.3977,
                z: 40.7276
            }
        }, {
            icon: 25,
            name: "Охотничий лес №2",
            position: {
                x: -2275.5205,
                y: -546.8337,
                z: 40.1723
            }
        }, {
            icon: 25,
            name: "Охотничий лес №3",
            position: {
                x: 2331.8989,
                y: 1057.6584,
                z: 15.8969
            }
        }, {
            icon: 25,
            name: "Охотничий лес №4",
            position: {
                x: 2257.8489,
                y: 594.0218,
                z: 27.6953
            }
        }, {
            icon: 56,
            name: "Церковь",
            position: {
                x: -435.3986,
                y: -1650.7899,
                z: 40.9723
            }
        }, {
            icon: 57,
            name: "Маяк на берегу моря",
            position: {
                x: -13.460399,
                y: -2898.71997,
                z: 32.93
            }
        }, {
            icon: 58,
            name: "Центральное кладбище",
            position: {
                x: -2478.449951,
                y: 2515.400878,
                z: 46.010898
            }
        }, {
            icon: 48,
            name: "Свалка",
            position: {
                x: -2722.655273,
                y: -1338.805419,
                z: 9.888299
            }
        }, {
            icon: 50,
            name: "Охотничье озеро",
            keys: ["охота", "утки"],
            position: {
                x: -393.091491,
                y: 2532.265869,
                z: 5.373899
            }
        }, {
            icon: 107,
            name: "Поле металлолома №1",
            keys: ["работа металлоискателя", "работа металоискателя"],
            position: {
                x: 299.4396,
                y: 363.8673,
                z: 12.9876
            }
        }, {
            icon: 107,
            name: "Поле металлолома №2",
            keys: ["работа металлоискателя", "работа металоискателя"],
            position: {
                x: 892.3199,
                y: 333.2881,
                z: 12.1924
            }
        }, {
            icon: 107,
            name: "Поле металлолома №3",
            keys: ["работа металлоискателя", "работа металоискателя"],
            position: {
                x: 1720.8596,
                y: 1313.8342,
                z: 11.9986
            }
        }, {
            icon: 107,
            name: "Поле металлолома №4",
            keys: ["работа металлоискателя", "работа металоискателя"],
            position: {
                x: 2243.6396,
                y: -2757.9917,
                z: 2.9282
            }
        }, {
            icon: 107,
            name: "Поле металлолома №5",
			keys: ["работа металлоискателя", "работа металоискателя"],
            position: {
                x: 817.8010,
                y: -33.8330,
                z: 12.7455
            }
        }, {
            icon: 108,
            name: "Продажа металлолома",
            position: {
                x: 161.31282,
                y: 406.582336,
                z: 10.935534
            }
        }, {
            icon: 9,
            name: "Продажа рыбного улова",
            keys: ["продать рыбу", "рыба"],
            position: {
                x: -2242.086181,
                y: 224.323394,
                z: 24.777999
            }
        }, {
            icon: 71,
            name: "Скупщик марихуаны",
            keys: ["продать марихауна", "продать марихуану"],
            position: {
                x: 2188.945312,
                y: 1371.75061,
                z: 11.4361
            }
        }, {
            icon: 14,
            name: "Свадебная площадка",
            keys: ["свадьба", "площадка для свадьбы"],
            position: {
                x: 2963.94043,
                y: 2742.582031,
                z: 6.430914
            }
        }]
    }],
    Bo = [{
        category: -1,
        points: [{
            icon: 97,
            name: "Банкомат",
            position: {
                x: -101.94,
                y: 986.82,
                z: 11.79
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: -2524.78,
                y: 2850.44,
                z: 37.244
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 192.965,
                y: 486.79,
                z: 11.6
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 458.484,
                y: 1562.79,
                z: 11.839
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 472.762,
                y: 1786.2,
                z: 12.1288
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 1858.66,
                y: 2828.15,
                z: 11.65
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 1929.27,
                y: 1933.9,
                z: 15.2825
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 1882.99,
                y: -2923.17,
                z: 3.47985
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 2722.15,
                y: -2442.45,
                z: 21.5521
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 2236.37,
                y: -1704.52,
                z: 21.673
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 3229.95,
                y: -24.0521,
                z: 5.06886
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: -1896.52,
                y: 1900.37,
                z: 175.77
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 2450.39,
                y: -1894.44,
                z: 21.5919
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: -2355.11,
                y: 257.921,
                z: 23.3081
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 559.428,
                y: 1196.37,
                z: 4.51987
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 723.862,
                y: 2574.21,
                z: 11.8375
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 265.222,
                y: 2726.85,
                z: 10.64
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 2398.78,
                y: -733.181,
                z: 11.9341
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: -2407.98,
                y: 2099.54,
                z: 54.1263
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: -2131.17,
                y: -1949.75,
                z: 8.575
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: -2451.92,
                y: -80.2692,
                z: 13.5153
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 849.912,
                y: 596.74,
                z: 15.5057
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: 133.935,
                y: 696.064,
                z: 11.9194
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: -310.068,
                y: 450.596,
                z: 12.4955
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: -359.918,
                y: 1022.74,
                z: 12.8632
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: -412.289,
                y: -1611.12,
                z: 40.054
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: -422.46,
                y: -1336.04,
                z: 40.2166
            }
        }, {
            icon: 97,
            name: "Банкомат",
            position: {
                x: -597.108,
                y: -1494.31,
                z: 40.0429
            }
        }]
    }],
    Wo = [{
        category: -1,
        points: [{
            icon: 99,
            name: "Станция метро Центральная",
            position: {
                x: 191.489105,
                y: 790.671325,
                z: 12.1724
            }
        }, {
            icon: 99,
            name: "Станция метро Арзамас-Сити",
            position: {
                x: 35.523799,
                y: 322.951385,
                z: 11.4756
            }
        }, {
            icon: 99,
            name: "Станция метро Вокзальная",
            position: {
                x: 765.08142,
                y: 660.966003,
                z: 13.781299
            }
        }, {
            icon: 99,
            name: "Станция метро Союзная",
            position: {
                x: 86.7789,
                y: 1415.645263,
                z: 12
            }
        }, {
            icon: 99,
            name: "Станция метро Больничная",
            position: {
                x: 299.431396,
                y: 1720.724243,
                z: 12.1484
            }
        }, {
            icon: 33,
            name: "StellDeli Арзамас",
            position: {
                x: 512.498,
                y: 431.587,
                z: 12
            }
        }, {
            icon: 33,
            name: "ГАЗКОМ Мирный",
            position: {
                x: 565.388,
                y: 1206.54,
                z: 4.9099
            }
        }, {
            icon: 33,
            name: "LUXOIL Армейское",
            position: {
                x: 726.951,
                y: 2560.08,
                z: 12.1875
            }
        }, {
            icon: 33,
            name: "LUXOIL Барвиха",
            position: {
                x: 3979.21,
                y: 4324.32,
                z: 7.9306
            }
        }, {
            icon: 33,
            name: "ГАЗКОМ Рублевка",
            position: {
                x: 1890.05,
                y: -2909.78,
                z: 3.88984
            }
        }, {
            icon: 33,
            name: "StellDeli Лесное",
            position: {
                x: -2032.03,
                y: -2003.57,
                z: 8.6555
            }
        }, {
            icon: 33,
            name: "ГАЗКОМ Лыткарино",
            position: {
                x: -2620.4,
                y: -37.6664,
                z: 12.1909
            }
        }, {
            icon: 33,
            name: "ГАЗКОМ Кремлевское",
            position: {
                x: -2583.09,
                y: 1964.82,
                z: 52.9992
            }
        }, {
            icon: 33,
            name: "StellDeli Анашан",
            position: {
                x: 1930.68,
                y: -847.06,
                z: 15.9643
            }
        }, {
            icon: 33,
            name: "ГАЗКОМ Южный",
            position: {
                x: 2247.08,
                y: -1715.99,
                z: 22.0344
            }
        }, {
            icon: 33,
            name: "LUXOIL Южный",
            position: {
                x: 2554.45,
                y: -2423.95,
                z: 21.8579
            }
        }, {
            icon: 33,
            name: "АЗС Бусаево",
            position: {
                x: -432.898,
                y: -1363.39,
                z: 40.6371
            }
        }, {
            icon: 33,
            name: "StellDeli Бусаево",
            position: {
                x: -479.556,
                y: -1835.94,
                z: 41.3267
            }
        }, {
            icon: 33,
            name: "АЗС Батырево",
            position: {
                x: 1906.12,
                y: 1701.38,
                z: 16.209
            }
        }]
    }],
    Uo = [{
        category: 10,
        points: [{
            id: 1,
            icon: 6,
            name: "Супермаркет 'Гарель'",
            position: {
                x: 2533.24,
                y: -230.676,
                z: 2.575
            }
        }, {
            id: 2,
            icon: 6,
            name: "Супермаркет 'Батырево'",
            position: {
                x: 1867.71,
                y: 1383.09,
                z: 9.799
            }
        }, {
            id: 3,
            icon: 6,
            name: "Бистро 'Юность'",
            position: {
                x: 1949.89,
                y: 1912.68,
                z: 15.465
            }
        }, {
            id: 4,
            icon: 22,
            name: "Магазин одежды 'Фасон'",
            position: {
                x: 1945.7,
                y: 2069.14,
                z: 16.199
            }
        }, {
            id: 5,
            icon: 45,
            name: "Ресторан 'Лакомка'",
            position: {
                x: 1856.28,
                y: 2251.27,
                z: 15.617
            }
        }, {
            id: 6,
            icon: 6,
            name: "Универсам 'Барвиха'",
            position: {
                x: 3768.501465,
                y: 3918.253174,
                z: 8.380856
            }
        }, {
            id: 7,
            icon: 6,
            name: "Супермаркет 'Армейский'",
            position: {
                x: 718.799438,
                y: 2571.078125,
                z: 12.1875
            }
        }, {
            id: 9,
            icon: 6,
            name: "Универсам 'Эдово'",
            position: {
                x: -2427.92,
                y: 2804.76,
                z: 37.751
            }
        }, {
            id: 10,
            icon: 95,
            name: "Клуб парашютистов 'SkyRush'",
            position: {
                x: 1889.83,
                y: 1887.5,
                z: 13.755
            }
        }, {
            id: 11,
            icon: 96,
            name: "Магазин игрушек 'Лидер'",
            position: {
                x: 1921.68,
                y: 2093.07,
                z: 16.199
            }
        }, {
            id: 12,
            icon: 6,
            name: "Магазин пиротехники 'Салютыч'",
            position: {
                x: 1940.04,
                y: 2039.06,
                z: 15.869
            }
        }, {
            id: 13,
            icon: 45,
            name: "Закусочная 'Эдово'",
            position: {
                x: -2528.97,
                y: 2850.65,
                z: 37.655
            }
        }, {
            id: 14,
            icon: 32,
            name: "Магазин аксессуаров 'Модняш'",
            position: {
                x: -2521.3,
                y: 2937.34,
                z: 38.118
            }
        }, {
            id: 15,
            icon: 13,
            name: "Кондитерская 'Эдово'",
            position: {
                x: -2385.03,
                y: 2901.65,
                z: 38.009
            }
        }, {
            id: 16,
            icon: 29,
            name: "Бар 'Пивная у Лешеньки'",
            position: {
                x: -2367.57,
                y: 198.875,
                z: 21.445
            }
        }, {
            id: 17,
            icon: 32,
            name: "Магазин аксессуаров 'СтильОК'",
            position: {
                x: -2140.43,
                y: -186.614,
                z: 26.982
            }
        }, {
            id: 18,
            icon: 22,
            name: "Магазин одежды 'Луксити'",
            position: {
                x: -2171.48,
                y: 148.28,
                z: 25.74
            }
        }, {
            id: 19,
            icon: 96,
            name: "Магазин игрушек 'Малютка'",
            position: {
                x: -2172.04,
                y: 155.39,
                z: 25.38
            }
        }, {
            id: 20,
            icon: 6,
            name: "Минимаркет 'Корзинка'",
            position: {
                x: -2167.88,
                y: 139.08,
                z: 26.35
            }
        }, {
            id: 21,
            icon: 27,
            name: "Спортзал 'Атлет'",
            position: {
                x: -2201.53,
                y: -227.113,
                z: 25.99
            }
        }, {
            id: 22,
            icon: 13,
            name: "Кондитерская 'Лыткарино'",
            position: {
                x: -2349.03,
                y: 87.127,
                z: 21.335
            }
        }, {
            id: 23,
            icon: 6,
            name: "Минимаркет 'Бусаево'",
            position: {
                x: -596.1466,
                y: -1490.5859,
                z: 40.8048
            }
        }, {
            id: 24,
            icon: 45,
            name: "Закусочная 'Бусаево'",
            position: {
                x: -504.4136,
                y: -1435.978,
                z: 40.4963
            }
        }, {
            id: 25,
            icon: 45,
            name: "Ресторан 'Нева'",
            position: {
                x: -321.8679,
                y: -1367.4316,
                z: 40.8342
            }
        }, {
            id: 26,
            icon: 13,
            name: "Кондитерская 'Бусаево'",
            position: {
                x: -598.7485,
                y: -1608.7456,
                z: 41.3469
            }
        }, {
            id: 27,
            icon: 29,
            name: "Бар 'Бусаевский ДворикЪ'",
            position: {
                x: -640.3897,
                y: -1554.0159,
                z: 40.4218
            }
        }, {
            id: 28,
            icon: 79,
            name: "Риэлторское агентство 'Простор'",
            position: {
                x: -423.1671,
                y: -1339.2628,
                z: 40.7023
            }
        }, {
            id: 29,
            icon: 29,
            name: "Бар 'Старая Мельница'",
            position: {
                x: -314.762,
                y: 410.352,
                z: 13.114
            }
        }, {
            id: 30,
            icon: 45,
            name: "Закусочная 'Стадионная'",
            position: {
                x: -18.5746,
                y: 541.8546,
                z: 12.567
            }
        }, {
            id: 31,
            icon: 13,
            name: "Кондитерская 'Алтынь'",
            position: {
                x: -335.845,
                y: 986.532,
                z: 12.149
            }
        }, {
            id: 34,
            icon: 6,
            name: "Минимаркет 'Славянский'",
            position: {
                x: 13.16,
                y: 910.7,
                z: 12.15
            }
        }, {
            id: 35,
            icon: 22,
            name: "Магазин одежды 'Шмотландия'",
            position: {
                x: 203.619,
                y: 828.669,
                z: 13.383
            }
        }, {
            id: 36,
            icon: 27,
            name: "Спортзал 'Колизей'",
            position: {
                x: 207.654,
                y: 829.787,
                z: 13.383
            }
        }, {
            id: 37,
            icon: 45,
            name: "Ресторан 'Граф'",
            position: {
                x: 112.81,
                y: 642.27,
                z: 12.26
            }
        }, {
            id: 38,
            icon: 40,
            name: "Ночной клуб 'Ночь и бал'",
            position: {
                x: 130.57,
                y: 690.76,
                z: 12.39
            }
        }, {
            id: 39,
            icon: 6,
            name: "Минимаркет 'Поляна'",
            position: {
                x: 60.1467,
                y: 396.559,
                z: 10.9544
            }
        }, {
            id: 41,
            icon: 6,
            name: "Минимаркет 'Остров'",
            position: {
                x: 296.994965,
                y: 1571.807129,
                z: 12.016057
            }
        }, {
            id: 43,
            icon: 45,
            name: "Закусочная 'Крамбл Кукис'",
            position: {
                x: 179.393,
                y: 1502.66,
                z: 12.0166
            }
        }, {
            id: 44,
            icon: 6,
            name: "Магазин пиротехники 'Вжух'",
            position: {
                x: 293.536865,
                y: 1549.254395,
                z: 12
            }
        }, {
            id: 45,
            icon: 13,
            name: "Кондитерская 'Вкусхассл'",
            position: {
                x: 307.729309,
                y: 1666.422119,
                z: 12
            }
        }, {
            id: 46,
            icon: 45,
            name: "Закусочная 'Первая'",
            position: {
                x: 405.652,
                y: 1960.75,
                z: 8.164
            }
        }, {
            id: 47,
            icon: 13,
            name: "Кондитерская 'Мирное'",
            position: {
                x: 833.371,
                y: 645.385,
                z: 16.0282
            }
        }, {
            id: 48,
            icon: 45,
            name: "Закусочная 'Привокзальная'",
            position: {
                x: 697.997,
                y: 585.94,
                z: 12.008
            }
        }, {
            id: 49,
            icon: 40,
            name: "Ночной клуб 'Рай'",
            position: {
                x: 216.816,
                y: 860.622,
                z: 13.3753
            }
        }, {
            id: 50,
            icon: 6,
            name: "Минимаркет 'Плаза'",
            position: {
                x: 582.57,
                y: 472.7715,
                z: 16.663239
            }
        }, {
            id: 51,
            icon: 45,
            name: "Закусочная 'Плаза'",
            position: {
                x: 587.377808,
                y: 487.697418,
                z: 16.663239
            }
        }, {
            id: 52,
            icon: 6,
            name: "Супермаркет 'Пассаж'",
            position: {
                x: 119.3227,
                y: 662.0888,
                z: 12.3947
            }
        }, {
            id: 54,
            icon: 6,
            name: "Универмаг 'Юность'",
            position: {
                x: 290.815,
                y: 986.075,
                z: 12.5516
            }
        }, {
            id: 55,
            icon: 45,
            name: "Закусочная 'Волшебный комбул'",
            position: {
                x: 17.3696,
                y: 922.848,
                z: 12.3009
            }
        }, {
            id: 56,
            icon: 6,
            name: "Минимаркет 'Рублевский'",
            position: {
                x: 1880.720825,
                y: -2916.66748,
                z: 3.852238
            }
        }, {
            id: 57,
            icon: 40,
            name: "Ночной клуб '7 бит'",
            position: {
                x: -110.3955,
                y: 986.087,
                z: 12.7534
            }
        }, {
            id: 58,
            icon: 27,
            name: "Спортзал 'Славянский зажим'",
            position: {
                x: -32.5037,
                y: 1350.26,
                z: 12.875
            }
        }, {
            id: 60,
            icon: 13,
            name: "Кондитерская 'Пончики'",
            position: {
                x: 344.773,
                y: 676.431,
                z: 12.9297
            }
        }, {
            id: 61,
            icon: 79,
            name: "Риэлторское агентство 'Недвиж+'",
            position: {
                x: 649.685,
                y: 654.403,
                z: 12.4325
            }
        }, {
            id: 62,
            icon: 92,
            name: "Магазин для взрослых 'Метла'",
            position: {
                x: -310.208,
                y: 447.44,
                z: 13.107
            }
        }, {
            id: 64,
            icon: 92,
            name: "Магазин для взрослых 'Пассаж'",
            position: {
                x: 162.44,
                y: 589.673,
                z: 12.188
            }
        }, {
            id: 65,
            icon: 47,
            name: "Частный банк 'Развитие'",
            position: {
                x: -2579.87,
                y: 2876.02,
                z: 37.6516
            }
        }, {
            id: 66,
            icon: 47,
            name: "Частный банк 'Вектор'",
            position: {
                x: -420.2986,
                y: -1541.5993,
                z: 40.8521
            }
        }, {
            id: 67,
            icon: 47,
            name: "Частный банк 'Интеграл'",
            position: {
                x: 1850.34,
                y: 2035.01,
                z: 16.9742
            }
        }, {
            id: 68,
            icon: 65,
            name: "Автосалон 'Эконом'",
            position: {
                x: 2595.32,
                y: -616.805,
                z: 12.2039
            }
        }, {
            id: 69,
            icon: 65,
            name: "Мото-Вело рынок",
            position: {
                x: -2243.69,
                y: 263.237,
                z: 24.5337
            }
        }, {
            id: 71,
            icon: 52,
            name: "Гостиница 'Диана'",
            position: {
                x: 178.197,
                y: 491.574,
                z: 13.145
            }
        }, {
            id: 72,
            icon: 52,
            name: "Гостиница 'Нижегородск'",
            position: {
                x: -2366.9,
                y: 1814.59,
                z: 54.245
            }
        }, {
            id: 78,
            icon: 53,
            name: "Сотовый салон 'Лыткарино'",
            position: {
                x: -2386.46,
                y: 259.483,
                z: 23.932
            }
        }, {
            id: 79,
            icon: 94,
            name: "Аренда авто 'БипDrive'",
            position: {
                x: 1731.01,
                y: 2468.09,
                z: 15.5433
            }
        }, {
            id: 80,
            icon: 94,
            name: "Аренда авто 'КарШеринг'",
            position: {
                x: 504.205933,
                y: 1902.531,
                z: 11.95
            }
        }, {
            id: 81,
            icon: 65,
            name: "Автомойка 'Кольцевая'",
            position: {
                x: 527.6119,
                y: 442.1591,
                z: 12
            }
        }, {
            id: 82,
            icon: 65,
            name: "Автомойка 'Бусаевская'",
            position: {
                x: -492.093,
                y: -1849.5384,
                z: 41.3188
            }
        }, {
            id: 84,
            icon: 65,
            name: "Автомойка 'Мирное'",
            position: {
                x: 554.0169,
                y: 1191.2826,
                z: 4.9021
            }
        }, {
            id: 85,
            icon: 65,
            name: "Автомойка 'Батырево'",
            position: {
                x: 1913.31,
                y: 1686.68,
                z: 15.9985
            }
        }, {
            id: 86,
            icon: 65,
            name: "Автомойка 'Барвиха'",
            position: {
                x: 3992.5317,
                y: 4341.3657,
                z: 7.930597
            }
        }, {
            id: 87,
            icon: 65,
            name: "Автомойка 'Нижегородская'",
            position: {
                x: -2563.4458,
                y: 1965.1514,
                z: 52.9992
            }
        }, {
            id: 88,
            icon: 39,
            name: "СТО 'Арзамас'",
            position: {
                x: -315.82,
                y: 310.35,
                z: 13.11
            }
        }, {
            id: 89,
            icon: 39,
            name: "СТО 'Нижегородск'",
            position: {
                x: -2519.1,
                y: 1086.65,
                z: 8.7173
            }
        }, {
            id: 90,
            icon: 53,
            name: "Сотовый салон 'Бусаево'",
            position: {
                x: -610.7387,
                y: -1602.3974,
                z: 41.3543
            }
        }, {
            id: 91,
            icon: 65,
            name: "Автомойка 'Лыткарино'",
            position: {
                x: -2605.2,
                y: -23.6183,
                z: 12.1909
            }
        }, {
            id: 92,
            icon: 65,
            name: "Автомойка 'Анашан'",
            position: {
                x: 1935.3,
                y: -832.582,
                z: 15.7839
            }
        }, {
            id: 94,
            icon: 65,
            name: "Автомойка 'Военная часть'",
            position: {
                x: 706.4072,
                y: 2568.5192,
                z: 12.1875
            }
        }, {
            id: 96,
            icon: 91,
            name: "Нотариус 'ЮрШтамп'",
            position: {
                x: -359.943,
                y: 1024.96,
                z: 13.2432
            }
        }, {
            id: 97,
            icon: 91,
            name: "Нотариальное бюро 'Легитимус'",
            position: {
                x: 124.2,
                y: 671.21,
                z: 12.26
            }
        }, {
            id: 98,
            icon: 39,
            name: "СТО 'Южный'",
            position: {
                x: 2130.27,
                y: -1845.31,
                z: 18.8213
            }
        }, {
            id: 99,
            icon: 6,
            name: "Минимаркет 'Ассорти'",
            position: {
                x: 2435.07,
                y: -2435.07,
                z: 22.01
            }
        }, {
            id: 100,
            icon: 6,
            name: "Минимаркет 'Платошино'",
            position: {
                x: 2323.37,
                y: -2550.78,
                z: 21.7855
            }
        }, {
            id: 101,
            icon: 47,
            name: "Частный банк 'Рубль'",
            position: {
                x: 2417.55,
                y: -1841.73,
                z: 22.1135
            }
        }, {
            id: 102,
            icon: 47,
            name: "Частный банк 'Развитие'",
            position: {
                x: 2376.68,
                y: -2139.26,
                z: 22.0776
            }
        }, {
            id: 103,
            icon: 22,
            name: "Магазин одежды 'Секонд фреш'",
            position: {
                x: 2267.5693,
                y: -2076.541,
                z: 21.9671
            }
        }, {
            id: 104,
            icon: 53,
            name: "Сотовый салон 'Южный'",
            position: {
                x: 2629.6,
                y: -2415.07,
                z: 22.7873
            }
        }, {
            id: 105,
            icon: 94,
            name: "Аренда авто 'Crown Car'",
            position: {
                x: 2120.75,
                y: -1802.21,
                z: 18.9853
            }
        }, {
            id: 108,
            icon: 86,
            name: "Аукцион 'Вершина торгов'",
            position: {
                x: 2092.6,
                y: -2284.72,
                z: 23.103
            }
        }, {
            id: 109,
            icon: 86,
            name: "Аукцион 'Золотой лот'",
            position: {
                x: 2577.56,
                y: -2377.68,
                z: 22.9376
            }
        }, {
            id: 110,
            icon: 28,
            name: "Бильярдный клуб 'Шарикoff'",
            position: {
                x: 1938.544189,
                y: -1931.048462,
                z: 35.051014
            }
        }, {
            id: 111,
            icon: 33,
            name: "АЗС 'Кольцевая'",
            position: {
                x: 511.628662,
                y: 431.675903,
                z: 12
            }
        }, {
            id: 112,
            icon: 33,
            name: "АЗС 'Бусаевская'",
            position: {
                x: -479.6611,
                y: -1835.9111,
                z: 41.3266
            }
        }, {
            id: 113,
            icon: 33,
            name: "АЗС 'Мирное'",
            position: {
                x: 565.5144,
                y: 1206.9462,
                z: 4.9099
            }
        }, {
            id: 114,
            icon: 33,
            name: "АЗС 'Батырево'",
            position: {
                x: 1913.14,
                y: 1706.69,
                z: 15.8548
            }
        }, {
            id: 115,
            icon: 33,
            name: "АЗС 'Барвиха'",
            position: {
                x: 3978.621826,
                y: 4324.114746,
                z: 7.930597
            }
        }, {
            id: 116,
            icon: 33,
            name: "АЗС 'Нижегородская'",
            position: {
                x: -2583.138916,
                y: 1964.710327,
                z: 52.999249
            }
        }, {
            id: 117,
            icon: 33,
            name: "АЗС 'Лыткарино'",
            position: {
                x: -2620.534912,
                y: -37.606796,
                z: 12.190937
            }
        }, {
            id: 118,
            icon: 33,
            name: "АЗС 'Анашан'",
            position: {
                x: 1894.424561,
                y: -866.545959,
                z: 14.713625
            }
        }, {
            id: 119,
            icon: 33,
            name: "АЗС 'Рублевская'",
            position: {
                x: 1890.414185,
                y: -2909.783203,
                z: 3.889845
            }
        }, {
            id: 120,
            icon: 33,
            name: "АЗС 'Военная часть'",
            position: {
                x: 726.851013,
                y: 2560.070312,
                z: 12.1875
            }
        }, {
            id: 121,
            icon: 33,
            name: "АЗС 'Останкино'",
            position: {
                x: 2246.867432,
                y: -1715.875854,
                z: 22.034378
            }
        }, {
            id: 122,
            icon: 94,
            name: "Аренда авто 'WowDrive'",
            position: {
                x: -5215.22,
                y: -4956.06,
                z: 5.4267
            }
        }, {
            id: 123,
            icon: 33,
            name: "АЗС 'Майами'",
            position: {
                x: -5059.81,
                y: -5006.37,
                z: 5.4239
            }
        }, {
            id: 124,
            icon: 6,
            name: "Минимаркет 'Майами'",
            position: {
                x: -5070.04,
                y: -5006.23,
                z: 5.4239
            }
        }, {
            id: 125,
            icon: 65,
            name: "Автомойка 'Майами'",
            position: {
                x: -5084.5,
                y: -5013.41,
                z: 5.4239
            }
        }, {
            id: 126,
            icon: 40,
            name: "Ночной клуб 'Малибу'",
            position: {
                x: -4076.35,
                y: -5459.28,
                z: 6.4461
            }
        }, {
            id: 136,
            icon: 83,
            name: "Детейлинг Центр 'Южный'",
            position: {
                x: 2215.23,
                y: -2577.69,
                z: 21.9637
            }
        }, {
            id: 135,
            icon: 83,
            name: "Детейлинг Центр 'Батырево'",
            position: {
                x: 1810.65,
                y: 2342.49,
                z: 15.3647
            }
        }, {
            id: 134,
            icon: 83,
            name: "Детейлинг Центр 'Нижегородск'",
            position: {
                x: -2509.77,
                y: 1147.79,
                z: 8.7663
            }
        }, {
            id: 140,
            icon: 53,
            name: "Сотовый салон 'Арзамас'",
            position: {
                x: 290.918,
                y: 972.907,
                z: 12.4813
            }
        }, {
            id: 141,
            icon: 33,
            name: "АЗС 'Южный порт'",
            position: {
                x: 2553.9116,
                y: -2424.758,
                z: 21.8578
            }
        }, {
            id: 142,
            icon: 33,
            name: "АЗС 'Лесная'",
            position: {
                x: -2041.46,
                y: -2010.59,
                z: 8.5077
            }
        }, {
            id: 143,
            icon: 6,
            name: "Минимаркет 'Берёзка'",
            position: {
                x: 265.487,
                y: 2735.26,
                z: 11
            }
        }, {
            id: 144,
            icon: 6,
            name: "Супермаркет 'Простоквасино'",
            position: {
                x: -886.515,
                y: 1932.14,
                z: 45.5166
            }
        }, {
            id: 145,
            icon: 6,
            name: "Минимаркет 'Визит'",
            position: {
                x: -377.0439,
                y: -1491.1938,
                z: 40.5495
            }
        }, {
            id: 146,
            icon: 6,
            name: "Супермаркет 'Луксоил'",
            position: {
                x: 2540.9,
                y: -2425.78,
                z: 21.8579
            }
        }, {
            id: 147,
            icon: 6,
            name: "Универсам 'Лесной'",
            position: {
                x: -2136.13,
                y: -1943.84,
                z: 9.2795
            }
        }, {
            id: 148,
            icon: 6,
            name: "Универсам 'Кремлевский'",
            position: {
                x: -2328.2,
                y: 1768.8,
                z: 53.5171
            }
        }, {
            id: 149,
            icon: 6,
            name: "Минимаркет 'Уют'",
            position: {
                x: -2596.39,
                y: 220.968,
                z: 12.7452
            }
        }, {
            id: 150,
            icon: 22,
            name: "Магазин одежды 'Лукозавр'",
            position: {
                x: -2494.18,
                y: 2937.34,
                z: 38.1184
            }
        }, {
            id: 151,
            icon: 33,
            name: "АЗС 'Старое Бусаево'",
            position: {
                x: -428.349,
                y: -1363.701,
                z: 40.374
            }
        }, {
            id: 152,
            icon: 6,
            name: "Рыболовный магазин 'Улов'",
            position: {
                x: 2249.94873,
                y: 1362.974243,
                z: 11.367085
            }
        }, {
            id: 153,
            icon: 6,
            name: "Рыболовный магазин 'Рыбалка'",
            position: {
                x: -372.482788,
                y: -1530.050781,
                z: 40.424549
            }
        }, {
            id: 154,
            icon: 6,
            name: "Рыболовный магазин 'На крючке'",
            position: {
                x: 567.8457,
                y: 1194.8501,
                z: 4.9958
            }
        }, {
            id: 158,
            icon: 45,
            name: "Закусочная 'Гриль'",
            position: {
                x: 2692.49,
                y: -2137.2,
                z: 21.9932
            }
        }, {
            id: 159,
            icon: 6,
            name: "Универсам 'Молоко'",
            position: {
                x: 2377.5874,
                y: -1706.0392,
                z: 21.9592
            }
        }, {
            id: 160,
            icon: 6,
            name: "Супермаркет 'Останкино'",
            position: {
                x: 2175.9543,
                y: -1867.9079,
                z: 18.8138
            }
        }, {
            id: 155,
            icon: 65,
            name: "Авторынок эконом класс",
            keys: ["БУ"],
            position: {
                x: 2207.68,
                y: 2333.12,
                z: 13.5938
            }
        }, {
            id: 156,
            icon: 76,
            name: "Авторынок средний класс",
            keys: ["БУ"],
            position: {
                x: 2702.28,
                y: -2442.69,
                z: 21.8921
            }
        }, {
            id: 157,
            icon: 75,
            name: "Авторынок высокий класс",
            keys: ["БУ"],
            position: {
                x: -1896.39,
                y: 1911.65,
                z: 176.156
            }
        }, {
            id: 163,
            icon: 44,
            name: "Автозапчасти 'Драйв'",
            position: {
                x: -430.2109,
                y: -1584.6655,
                z: 40.6123
            }
        }, {
            id: 162,
            icon: 44,
            name: "Автозапчасти 'Форсаж'",
            position: {
                x: 126.9227,
                y: 681.4544,
                z: 12.3947
            }
        }, {
            id: 164,
            icon: 36,
            name: "Шиномонтаж 'Арзамас'",
            position: {
                x: -325.7686,
                y: 332.7399,
                z: 13.1182
            }
        }, {
            id: 161,
            icon: 46,
            name: "Садовод 'Лесной'",
            position: {
                x: -2330.3,
                y: -1657.87,
                z: 8.7969
            }
        }, {
            id: 166,
            icon: 38,
            name: "Шиномонтаж 'Нижегородск'",
            position: {
                x: -2498.2214,
                y: 1112.8529,
                z: 8.7268
            }
        }, {
            id: 167,
            icon: 38,
            name: "Шиномонтаж 'Южный'",
            position: {
                x: 2168.44,
                y: -1844.75,
                z: 18.7993
            }
        }, {
            id: 168,
            icon: 90,
            name: "Тир 'Шот'",
            position: {
                x: -2713.89,
                y: 2932.66,
                z: 37.7731
            }
        }, {
            id: 169,
            icon: 90,
            name: "Тир 'Пуля'",
            position: {
                x: 2450.32,
                y: -1903.54,
                z: 21.9619
            }
        }, {
            id: 170,
            icon: 90,
            name: "Тир 'Молния'",
            position: {
                x: 105.42,
                y: 622.73,
                z: 12.26
            }
        }, {
            id: 171,
            icon: 22,
            name: "Прачечная 'Лаванда'",
            position: {
                x: 109.01,
                y: 632.7,
                z: 12.26
            }
        }, {
            id: 172,
            icon: 22,
            name: "Прачечная 'Пена-Люкс'",
            position: {
                x: 2482.93,
                y: -2420.68,
                z: 21.9688
            }
        }, {
            id: 173,
            icon: 110,
            name: "Аптека Оптимальная",
            position: {
                x: 2268.8801,
                y: -2072.8228,
                z: 21.9671
            }
        }, {
            id: 174,
            icon: 110,
            name: "Аптека Народная",
            position: {
                x: 1980.87,
                y: 1893.37,
                z: 15.528
            }
        }, {
            id: 175,
            icon: 110,
            name: "Аптека Социальная",
            position: {
                x: 301.837036,
                y: 1619.031372,
                z: 12
            }
        }, {
            id: 176,
            icon: 110,
            name: "Аптека Лекфарм",
            position: {
                x: 116.69,
                y: 651.9,
                z: 12.26
            }
        }, {
            id: 177,
            icon: 110,
            name: "Аптека Копейка",
            position: {
                x: -2135.72,
                y: -203.515,
                z: 26.9366
            }
        }, {
            id: 178,
            icon: 110,
            name: "Аптека Здоровье",
            position: {
                x: -2555.44,
                y: 2952.29,
                z: 38.1887
            }
        }, {
            id: 179,
            icon: 110,
            name: "Аптека Низких цен",
            position: {
                x: -484.8288,
                y: -1438.0674,
                z: 40.4588
            }
        }, {
            id: 180,
            icon: 46,
            name: "Садовод 'Егерь'",
            position: {
                x: 1986.34,
                y: 1932.56,
                z: 15.8253
            }
        }, {
            id: 182,
            icon: 25,
            name: "Зоомагазин 'Лапка'",
            position: {
                x: -14.745,
                y: 594.163,
                z: 12.736
            }
        }, {
            id: 183,
            icon: 25,
            name: "Зоомагазин 'Пёс да Лис'",
            position: {
                x: -2264.02,
                y: 301.996,
                z: 24.7483
            }
        }, {
            id: 184,
            icon: 41,
            name: "Магазин оружия 'Калибр'",
            position: {
                x: 2493.49,
                y: -325.096,
                z: 1.7662
            }
        }, {
            id: 185,
            icon: 41,
            name: "Магазин оружия 'Арсенал'",
            position: {
                x: 2247.421875,
                y: -1778.068237,
                z: 22.0229
            }
        }, {
            id: 192,
            icon: 27,
            name: "Спортзал 'Импульс'",
            position: {
                x: 3239.2073,
                y: .6978,
                z: 6.3227
            }
        }, {
            id: 193,
            icon: 25,
            name: "Зоомагазин 'Мохнатое счастье'",
            position: {
                x: 3239.2073,
                y: -65.6978,
                z: 6.3227
            }
        }, {
            id: 194,
            icon: 45,
            name: "Закусочная 'Бургер Мир'",
            position: {
                x: 3269.2073,
                y: .6978,
                z: 6.3227
            }
        }, {
            id: 195,
            icon: 65,
            name: "Автомойка грузовая 'TruckWash'",
            position: {
                x: -1100.07,
                y: 2179.93,
                z: 38.4603
            }
        }, {
            id: 196,
            icon: 65,
            name: "Автомойка грузовая 'CleanCargo'",
            position: {
                x: 2738.21,
                y: 687.276,
                z: 14.4297
            }
        }, {
            id: 198,
            icon: 65,
            name: "Автомойка 'Рублевская'",
            position: {
                x: 1872.4642,
                y: -2904.8732,
                z: 3.8322
            }
        }, {
            id: 199,
            icon: 65,
            name: "Автомойка 'Южный порт'",
            position: {
                x: 2537.3686,
                y: -2416.2871,
                z: 21.8578
            }
        }, {
            id: 200,
            icon: 65,
            name: "Автомойка 'Останкино'",
            position: {
                x: 2256.5715,
                y: -1699.3653,
                z: 22.0556
            }
        }, {
            id: 201,
            icon: 41,
            name: "Магазин оружия 'Охотник'",
            position: {
                x: -520.3828,
                y: -1454.1801,
                z: 41.6534
            }
        }, {
            id: 202,
            icon: 91,
            name: "Нотариальное бюро 'ЮрШтамп'",
            position: {
                x: -319.4705,
                y: -1439.6558,
                z: 40.8382
            }
        }]
    }],
    In = [{
        name: "Южный"
    }, {
        name: "Бусаево"
    }, {
        name: "Простоквасино"
    }, {
        name: "Барвиха"
    }, {
        name: "Арзамас"
    }, {
        name: "Корякино"
    }, {
        name: "Батырево"
    }, {
        name: "Бусаево"
    }, {
        name: "Гарель"
    }, {
        name: "Лыткарино"
    }, {
        name: "Морское"
    }, {
        name: "Рублёвка"
    }, {
        name: "Нижегородск"
    }, {
        name: "Эдово"
    }, {
        name: "Майами"
    }, {
        name: "Армейское"
    }, {
        name: "Роговичи"
    }, {
        name: "Лесное"
    }, {
        name: "Нижегородская обл."
    }],
    S = {
        MAIN: 0,
        BUSINESS: 1,
        METRO: 2,
        BUS_STOP: 3,
        ATM: 4,
        OTHER: 5
    },
    U = [{
        type: S.MAIN,
        points: $o
    }, {
        type: S.BUSINESS,
        points: Uo
    }, {
        type: S.METRO,
        points: Wo
    }, {
        type: S.ATM,
        points: Bo
    }],
    Go = [{
        category: 8,
        points: [{
            icon: 53,
            target: 2,
            name: "Ближайший сотовый салон"
        }, {
            icon: 33,
            target: 3,
            name: "Ближайшая АЗС"
        }, {
            icon: 97,
            target: 4,
            name: "Ближайший банкомат"
        }, {
            icon: 81,
            target: 5,
            name: "Ближайшая зарядочная станция"
        }, {
            icon: 9,
            target: 6,
            name: "Ближайший рыболовный магазин"
        }, {
            icon: 65,
            target: 7,
            name: "Ближайший авторынок"
        }, {
            icon: 36,
            target: 8,
            name: "Ближайший шиномонтаж"
        }, {
            icon: 44,
            target: 9,
            name: "Ближайший магазин автозапчастей"
        }, {
            icon: 99,
            target: 10,
            name: "Ближайшая станция метро"
        }, {
            icon: 46,
            target: 0,
            name: "Найти огород"
        }]
    }],
    Pn = (i = [], n = null) => {
        let o = [],
            e = [];
        const t = n != null ? U.filter(n) : U;
        for (const s of t)
            for (const a of s.points) {
                e = a.points;
                for (let c = 0; c < e.length; ++c) e[c].type = s.type;
                o = o.concat(e)
            }
        return o = o.concat(i), o = o.map(s => s.type === S.ATM ? {
            ...s,
            position: {
                ...s.position,
                x: s.position.x + 30
            }
        } : s), console.log(o.filter(s => s.type == S.ATM)), o
    },
    Hn = (i = []) => {
        let n = [];
        for (const o of U) n = n.concat(o.points);
        return n = n.concat(Go), n.push({
            category: 9,
            points: i
        }), n
    },
    Fo = [{
        name: "ЭДОВО",
        position: {
            x: -2473.416016,
            y: 2832.019775,
            z: 37.633999
        }
    }, {
        name: "НИЖЕГОРОДСК",
        position: {
            x: -2452.380127,
            y: 1809.366821,
            z: 53.014874
        }
    }, {
        name: "ЛЫТКАРИНО",
        position: {
            x: -2338.692871,
            y: 87.078735,
            z: 20.999163
        }
    }, {
        name: "ОЗЕРЬЕ",
        position: {
            x: -2597.69458,
            y: -857.097534,
            z: 29.902834
        }
    }, {
        name: "ЛЕСНОЕ",
        position: {
            x: -2186.417236,
            y: -1766.566772,
            z: 8.585836
        }
    }, {
        name: "БУСАЕВО",
        position: {
            x: -401.859314,
            y: -1608.81604,
            z: 40.533924
        }
    }, {
        name: "КОРЯКИНО",
        position: {
            x: 671.170105,
            y: -1310.355591,
            z: 39.743389
        }
    }, {
        name: "РУБЛЁВКА",
        position: {
            x: 2074.365967,
            y: -3273.702881,
            z: 3.879918
        }
    }, {
        name: "ЮЖНЫЙ",
        position: {
            x: 2464.621826,
            y: -2153.569824,
            z: 21.813499
        }
    }, {
        name: "ГАРЕЛЬ",
        position: {
            x: 2458.993164,
            y: -222.642441,
            z: 2.223438
        }
    }, {
        name: "РОГОВИЧИ",
        position: {
            x: 1906.871704,
            y: 1140.204224,
            z: 29.856438
        }
    }, {
        name: "БАТЫРЕВО",
        position: {
            x: 2040.023071,
            y: 1908.648315,
            z: 15.95041
        }
    }, {
        name: "БАРВИХА",
        position: {
            x: 3868.539307,
            y: 4015.315674,
            z: 7.930017
        }
    }, {
        name: "АРМЕЙСКОЕ",
        position: {
            x: 365.991089,
            y: 2708.304688,
            z: 11.072963
        }
    }, {
        name: "ШАХТЕРСКОЕ",
        position: {
            x: -174.704025,
            y: 2890.3125,
            z: 7.437785
        }
    }, {
        name: "ПРОСТОКВАСИНО",
        position: {
            x: -807.204285,
            y: 1995.020142,
            z: 45.815346
        }
    }, {
        name: "МИРНОЕ",
        position: {
            x: 689.176453,
            y: 1223.279419,
            z: 4.897887
        }
    }, {
        name: "АРЗАМАС",
        position: {
            x: 113.406128,
            y: 765.651855,
            z: 11.950388
        }
    }];
(function(i) {
    var n = "Class";
    i.version.charAt(0) !== "0" && (n = "Layer"), i.EdgeMarker = i[n].extend({
        options: {
            distanceOpacity: !1,
            distanceOpacityFactor: 4,
            layerGroup: null,
            rotateIcons: !0,
            edgeOffset: {
                top: {
                    value: 0,
                    isTransparent: !1
                },
                right: {
                    value: 0,
                    isTransparent: !1
                },
                bottom: {
                    value: 0,
                    isTransparent: !1
                },
                left: {
                    value: 0,
                    isTransparent: !1
                }
            },
            findEdge: function(o) {
                return i.bounds([0, 0], o.getSize())
            },
            arrowIconUrl: i.Icon.Default.imagePath + "/edge-arrow-marker.png",
            arrowIconSize: [48, 48],
            contentIconUrl: null,
            contentIconSize: [32, 32]
        },
        initialize: function(o) {
            i.setOptions(this, o), this._markerPool = {}
        },
        _buildIcon: function() {
            var o = this.options,
                e = o.arrowIconSize[0],
                t = o.arrowIconSize[1],
                s = '<img class="leaflet-edge-arrow" src="' + o.arrowIconUrl + '" style="width:' + e + "px;height:" + t + 'px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:50% 50%;" />',
                a = "";
            if (o.contentIconUrl) {
                var c = o.contentIconSize[0],
                    r = o.contentIconSize[1];
                a = '<img class="leaflet-edge-content" src="' + o.contentIconUrl + '" style="width:' + c + "px;height:" + r + 'px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);" />'
            }
            return i.divIcon({
                className: "edge-marker-icon",
                html: '<div style="position:relative;width:' + e + "px;height:" + t + 'px;">' + s + a + "</div>",
                iconSize: [e, t],
                iconAnchor: [e / 2, t / 2],
                bgPos: [0, 0]
            })
        },
        addTo: function(o) {
            return this._map = o, typeof o._getFeatures != "function" && i.extend(o, {
                _getFeatures: function() {
                    var e = [];
                    for (var t in this._layers) typeof this._layers[t].getLatLng < "u" && e.push(this._layers[t]);
                    return e
                }
            }), o.on("move", this._addEdgeMarkers, this), o.on("viewreset", this._addEdgeMarkers, this), this._addEdgeMarkers(), this
        },
        destroy: function() {
            this._map && (this._map.off("move", this._addEdgeMarkers, this), this._map.off("viewreset", this._addEdgeMarkers, this), this._borderMarkerLayer && (this._borderMarkerLayer.clearLayers(), this._map.removeLayer(this._borderMarkerLayer), this._borderMarkerLayer = void 0), delete this._map._getFeatures, this._markerPool = {}, this._map = null)
        },
        onClick: function(o) {
            this._map.setView(o.target.options.latlng, this._map.getZoom())
        },
        _borderMarkerLayer: void 0,
        _addEdgeMarkers: function() {
            typeof this._borderMarkerLayer > "u" && (this._borderMarkerLayer = new i.LayerGroup);
            var o = [];
            this.options.layerGroup != null ? o = this.options.layerGroup.getLayers() : o = this._map._getFeatures();
            for (var e = this.options.findEdge(this._map), t = function(A) {
                    return A && typeof A == "object" ? A : {
                        value: A || 0,
                        isTransparent: !1
                    }
                }, s = this.options.edgeOffset, a = t(s.top), c = t(s.right), r = t(s.bottom), f = t(s.left), u = i.bounds([e.min.x + (f.isTransparent ? 0 : f.value), e.min.y + (a.isTransparent ? 0 : a.value)], [e.max.x - (c.isTransparent ? 0 : c.value), e.max.y - (r.isTransparent ? 0 : r.value)]), m = i.bounds([e.min.x + f.value, e.min.y + a.value], [e.max.x - c.value, e.max.y - r.value]), p = this.options.arrowIconSize[0], d = this.options.arrowIconSize[1], k = this._buildIcon(), M = {}, x = 0; x < o.length; x++) {
                var b = this._map.latLngToContainerPoint(o[x].getLatLng());
                if (b.y < u.min.y || b.y > u.max.y || b.x > u.max.x || b.x < u.min.x) {
                    var y = b.x,
                        g = b.y,
                        v, l = m.getCenter(),
                        I = Math.atan2(l.y - g, l.x - y),
                        P = Math.atan2(l.y - m.min.y, l.x - m.min.x);
                    Math.abs(I) > P && Math.abs(I) < Math.PI - P ? g < l.y ? (g = m.min.y + d / 2, y = l.x - (l.y - g) / Math.tan(Math.abs(I)), v = b.y - m.y) : (g = m.max.y - d / 2, y = l.x - (g - l.y) / Math.tan(Math.abs(I)), v = -b.y) : y < l.x ? (y = m.min.x + p / 2, g = l.y - (l.x - y) * Math.tan(I), v = -b.x) : (y = m.max.x - p / 2, g = l.y + (y - l.x) * Math.tan(I), v = b.x - m.x), g < m.min.y + d / 2 ? g = m.min.y + d / 2 : g > m.max.y - d / 2 && (g = m.max.y - d / 2), y > m.max.x - p / 2 ? y = m.max.x - p / 2 : y < p / 2 && (y = m.min.x + p / 2);
                    var C = this._map.containerPointToLatLng([y, g]),
                        E = this.options.rotateIcons ? I / Math.PI * 180 : 0,
                        T = o[x]._leaflet_id !== void 0 ? o[x]._leaflet_id : x;
                    M[T] = !0;
                    var z;
                    if (this._markerPool[T]) {
                        if (z = this._markerPool[T], z.setLatLng(C), z.options.latlng = o[x].getLatLng(), z.options.angle = E, z._icon) {
                            z._icon.style.display = "";
                            var H = z._icon.querySelector(".leaflet-edge-arrow");
                            H && (H.style.transform = "translate(-50%, -50%) rotate(" + E + "deg)")
                        }
                    } else {
                        var w = i.extend({}, this.options, {
                            icon: k,
                            latlng: o[x].getLatLng(),
                            angle: E
                        });
                        this.options.distanceOpacity && (w.fillOpacity = (100 - v / this.options.distanceOpacityFactor) / 100), z = i.rotatedMarker(C, w)
                            .addTo(this._borderMarkerLayer), z.on("click", this.onClick, z), this._markerPool[T] = z
                    }
                }
            }
            for (var D in this._markerPool)
                if (!M[D]) {
                    var G = this._markerPool[D];
                    G._icon && (G._icon.style.display = "none")
                } this._map.hasLayer(this._borderMarkerLayer) || this._borderMarkerLayer.addTo(this._map)
        }
    }), i.RotatedMarker = i.Marker.extend({
        options: {
            angle: 0
        },
        _initIcon: function() {
            i.Marker.prototype._initIcon.call(this)
        },
        _setPos: function(o) {
            i.Marker.prototype._setPos.call(this, o);
            var e = this._icon && this._icon.querySelector(".leaflet-edge-arrow");
            e && (e.style.transform = "translate(-50%, -50%) rotate(" + this.options.angle + "deg)")
        },
        setAngle: function(o) {
            this.options.angle = o
        }
    }), i.rotatedMarker = function(o, e) {
        return new i.RotatedMarker(o, e)
    }, i.edgeMarker = function(o) {
        return new i.EdgeMarker(o)
    }
})(L);
const R = 1080;

function h(i) {
    let n = window.dpiScale * window.scale;
    const o = (window.screen.height > R ? window.screen.height / R : 1)
        .toFixed(2);
    let e = i * (n > 1 ? n : 1) * o,
        t = e / 2;
    return {
        size: e,
        anchor: t
    }
}
const O = "isScalable",
    Ro = 1.4;
(function() {
    const i = L.Marker.prototype._setPos;
    L.Marker.prototype._setPos = function(n) {
        if (i.call(this, n), this._icon && this.options[O]) {
            const o = this._map;
            if (o) {
                const e = o.getZoom(),
                    t = o.getMinZoom(),
                    a = o.getMaxZoom() - t,
                    c = Math.max(1, Ro * ((e - t) / a)),
                    r = this._icon.style.transform;
                this._icon.style.transform = `${r} scale(${c})`, this._icon.style.transformOrigin = "center"
            }
        }
    }
})();
const j = Object.assign({
        "/src/assets/images/map/points/special/basket.png": oi,
        "/src/assets/images/map/points/special/gold-basket.png": ni,
        "/src/assets/images/map/points/special/phoneSharingCar.png": ei
    }),
    jo = Object.assign({
        "/src/assets/images/map/points/special/backdrops/gold-circle.png": ti,
        "/src/assets/images/map/points/special/backdrops/grey-circle.png": si
    }),
    Q = {
        phoneSharingCar: {
            image: "phoneSharingCar",
            WIDTH: 32,
            HEIGHT: 32,
            backdrop: {
                image: "phoneSharingCarBg",
                WIDTH: 48,
                HEIGHT: 48
            }
        },
        easterBasket: {
            image: "basket",
            WIDTH: 42,
            HEIGHT: 42,
            backdrop: {
                image: "grey-circle",
                WIDTH: 62,
                HEIGHT: 62
            }
        },
        easterGoldBasket: {
            image: "gold-basket",
            WIDTH: 42,
            HEIGHT: 42,
            backdrop: {
                image: "gold-circle",
                WIDTH: 62,
                HEIGHT: 62,
                animation: "spin"
            }
        }
    },
    Y = Object.keys(Q),
    Yo = {
        methods: {
            updateSpecialPointMarkers(i) {
                if (this.leafletMap) {
                    this.specialPointMarkers && this.specialPointMarkers.forEach(n => n.removeFrom(this.leafletMap)), this.specialPointMarkers = [];
                    for (let n = 0; n < this.specialPoints.length; n++) {
                        const o = this.specialPoints[n];
                        if (!Y.includes(o.type)) {
                            console.error(`Error: Wrong special point type: ${o.type}, supported types: ${Y.join(", ")}`);
                            continue
                        }
                        const e = Q[o.type],
                            {
                                WIDTH: t,
                                HEIGHT: s,
                                backdrop: a,
                                image: c
                            } = e,
                            r = h(t),
                            f = h(s);
                        let u;
                        if (a) {
                            const m = h(a.WIDTH),
                                p = h(a.HEIGHT),
                                d = m.size,
                                k = p.size,
                                M = r.size,
                                x = f.size,
                                b = jo[`/src/assets/images/map/points/special/backdrops/${a.image}.png`],
                                y = j[`/src/assets/images/map/points/special/${c}.png`],
                                g = a.animation ? `special-point-backdrop--${a.animation}` : "";
                            u = `
            <div class="special-point-wrapper" style="width:${d}px;height:${k}px;">
              <img class="special-point-backdrop ${g}" src="${b}" style="width:${d}px;height:${k}px;" />
              <img class="special-point-icon" src="${y}" style="width:${M}px;height:${x}px;" />
            </div>
          `;
                            const v = L.divIcon({
                                    html: u,
                                    className: "",
                                    iconSize: [d, k],
                                    iconAnchor: [d / 2, k / 2]
                                }),
                                l = [o.position.y, o.position.x];
                            this.specialPointMarkers.push(L.marker(l, {
                                    [O]: !0,
                                    arrowIcon: o.arrowIcon,
                                    contentIcon: o.contentIcon
                                })
                                .addTo(this.leafletMap)
                                .setIcon(v))
                        } else {
                            const m = L.icon({
                                    iconUrl: j[`/src/assets/images/map/points/special/${c}.png`],
                                    iconSize: [r.size, f.size],
                                    iconAnchor: [r.anchor, f.anchor]
                                }),
                                p = [o.position.y, o.position.x];
                            this.specialPointMarkers.push(L.marker(p, {
                                    [O]: !0,
                                    arrowIcon: o.arrowIcon,
                                    contentIcon: o.contentIcon
                                })
                                .addTo(this.leafletMap)
                                .setIcon(m))
                        }
                    }
                }
            }
        }
    };

function ii(i, n) {
    if (i === n) return !0;
    if (typeof i != "object" || typeof n != "object" || !i || !n) return !1;
    const o = Object.keys(i),
        e = Object.keys(n);
    if (o.length !== e.length) return !1;
    for (const t of o)
        if (!e.includes(t) || !ii(i[t], n[t])) return !1;
    return !0
}

function Vo(i, n = 100) {
    let o;
    return (...e) => {
        clearTimeout(o), o = setTimeout(() => i(...e), n)
    }
}
const B = ["honeycomb", "special-honeycomb", "manor", "dual", "dual-rotated", "triple", "mall", "airport", "jail", "port"],
    Jo = {
        HEIGHT: 40,
        WIDTH: 35
    },
    qo = {
        HEIGHT: 70,
        WIDTH: 72
    },
    Ko = {
        HEIGHT: 40,
        WIDTH: 72
    },
    Xo = {
        HEIGHT: 70,
        WIDTH: 54
    },
    Qo = {
        HEIGHT: 70,
        WIDTH: 72
    },
    on = {
        HEIGHT: 131,
        WIDTH: 72
    },
    nn = {
        HEIGHT: 131,
        WIDTH: 127
    },
    en = {
        HEIGHT: 101,
        WIDTH: 109
    },
    tn = {
        HEIGHT: 70,
        WIDTH: 90
    },
    V = "main-map__honeycomb-marker",
    sn = 280,
    an = 3,
    cn = 100,
    rn = Object.assign({
        "/src/assets/images/icons/gang-icons/0.png": io,
        "/src/assets/images/icons/gang-icons/1.png": oo,
        "/src/assets/images/icons/gang-icons/10.png": no,
        "/src/assets/images/icons/gang-icons/11.png": eo,
        "/src/assets/images/icons/gang-icons/12.png": to,
        "/src/assets/images/icons/gang-icons/13.png": so,
        "/src/assets/images/icons/gang-icons/14.png": ao,
        "/src/assets/images/icons/gang-icons/15.png": co,
        "/src/assets/images/icons/gang-icons/16.png": ro,
        "/src/assets/images/icons/gang-icons/17.png": mo,
        "/src/assets/images/icons/gang-icons/18.png": po,
        "/src/assets/images/icons/gang-icons/19.png": lo,
        "/src/assets/images/icons/gang-icons/2.png": ho,
        "/src/assets/images/icons/gang-icons/20.png": yo,
        "/src/assets/images/icons/gang-icons/21.png": go,
        "/src/assets/images/icons/gang-icons/22.png": _o,
        "/src/assets/images/icons/gang-icons/23.png": fo,
        "/src/assets/images/icons/gang-icons/24.png": uo,
        "/src/assets/images/icons/gang-icons/25.png": bo,
        "/src/assets/images/icons/gang-icons/26.png": xo,
        "/src/assets/images/icons/gang-icons/27.png": zo,
        "/src/assets/images/icons/gang-icons/28.png": ko,
        "/src/assets/images/icons/gang-icons/29.png": Mo,
        "/src/assets/images/icons/gang-icons/3.png": vo,
        "/src/assets/images/icons/gang-icons/4.png": Io,
        "/src/assets/images/icons/gang-icons/5.png": Po,
        "/src/assets/images/icons/gang-icons/6.png": Ho,
        "/src/assets/images/icons/gang-icons/7.png": To,
        "/src/assets/images/icons/gang-icons/8.png": Eo,
        "/src/assets/images/icons/gang-icons/9.png": So
    }),
    mn = Object.assign({
        "/src/assets/images/map/points/honeycomb/airport-honeycomb.png": ai,
        "/src/assets/images/map/points/honeycomb/airport-honeycomb_friendly.png": ci,
        "/src/assets/images/map/points/honeycomb/airport-honeycomb_mask.png": ri,
        "/src/assets/images/map/points/honeycomb/airport-honeycomb_selected.png": mi,
        "/src/assets/images/map/points/honeycomb/circle-pattern.png": pi,
        "/src/assets/images/map/points/honeycomb/cross.png": li,
        "/src/assets/images/map/points/honeycomb/dual-honeycomb.png": hi,
        "/src/assets/images/map/points/honeycomb/dual-honeycomb_friendly.png": yi,
        "/src/assets/images/map/points/honeycomb/dual-honeycomb_mask.png": di,
        "/src/assets/images/map/points/honeycomb/dual-honeycomb_selected.png": gi,
        "/src/assets/images/map/points/honeycomb/dual-rotated-honeycomb.png": _i,
        "/src/assets/images/map/points/honeycomb/dual-rotated-honeycomb_friendly.png": fi,
        "/src/assets/images/map/points/honeycomb/dual-rotated-honeycomb_mask.png": ui,
        "/src/assets/images/map/points/honeycomb/dual-rotated-honeycomb_selected.png": bi,
        "/src/assets/images/map/points/honeycomb/honeycomb-selected-light.png": xi,
        "/src/assets/images/map/points/honeycomb/honeycomb-unavailable-pattern.png": zi,
        "/src/assets/images/map/points/honeycomb/honeycomb.png": ki,
        "/src/assets/images/map/points/honeycomb/honeycomb_friendly.png": Mi,
        "/src/assets/images/map/points/honeycomb/honeycomb_mask.png": vi,
        "/src/assets/images/map/points/honeycomb/honeycomb_selected.png": Ii,
        "/src/assets/images/map/points/honeycomb/honeycomb_unavailable.png": Pi,
        "/src/assets/images/map/points/honeycomb/jail-honeycomb.png": Hi,
        "/src/assets/images/map/points/honeycomb/jail-honeycomb_friendly.png": Ti,
        "/src/assets/images/map/points/honeycomb/jail-honeycomb_mask.png": Ei,
        "/src/assets/images/map/points/honeycomb/jail-honeycomb_selected.png": Si,
        "/src/assets/images/map/points/honeycomb/landing-flag.png": Oi,
        "/src/assets/images/map/points/honeycomb/mall-honeycomb.png": Li,
        "/src/assets/images/map/points/honeycomb/mall-honeycomb_friendly.png": Ci,
        "/src/assets/images/map/points/honeycomb/mall-honeycomb_mask.png": wi,
        "/src/assets/images/map/points/honeycomb/mall-honeycomb_selected.png": Di,
        "/src/assets/images/map/points/honeycomb/manor-honeycomb.png": Ai,
        "/src/assets/images/map/points/honeycomb/manor-honeycomb_mask.png": Zi,
        "/src/assets/images/map/points/honeycomb/manor-icon.png": Ni,
        "/src/assets/images/map/points/honeycomb/port-honeycomb.png": $i,
        "/src/assets/images/map/points/honeycomb/port-honeycomb_friendly.png": Bi,
        "/src/assets/images/map/points/honeycomb/port-honeycomb_mask.png": Wi,
        "/src/assets/images/map/points/honeycomb/port-honeycomb_selected.png": Ui,
        "/src/assets/images/map/points/honeycomb/special-honeycomb.png": Gi,
        "/src/assets/images/map/points/honeycomb/special-honeycomb_friendly.png": Fi,
        "/src/assets/images/map/points/honeycomb/sword.png": Ri,
        "/src/assets/images/map/points/honeycomb/triple-honeycomb.png": ji,
        "/src/assets/images/map/points/honeycomb/triple-honeycomb_friendly.png": Yi,
        "/src/assets/images/map/points/honeycomb/triple-honeycomb_mask.png": Vi,
        "/src/assets/images/map/points/honeycomb/triple-honeycomb_selected.png": Ji
    }),
    pn = {
        data() {
            return {
                prevHoneycombPoints: []
            }
        },
        computed: {
            honeycombPointsClasses() {
                return {
                    "main-map_honeycomb-marker-selected": this.isSelectedHoneycomb
                }
            },
            isSelectedHoneycomb() {
                return this.honeycombPoints.some(i => i.params.isSelected)
            }
        },
        created() {
            this.processHoneycombPointsChanges = Vo(this._processHoneycombPointsChanges.bind(this), cn)
        },
        methods: {
            _processHoneycombPointsChanges(i, n) {
                if (!this.leafletMap) return;
                if (!this.honeycombPointMarkers || !this.honeycombPointMarkers.length) {
                    this.setHoneycombPointMarkers(this.leafletMap.getZoom());
                    return
                }
                const o = new Map(n.map(t => [t.id, t])),
                    e = new Map(i.map(t => [t.id, t]));
                i.forEach(t => {
                    const s = o.get(t.id);
                    s ? ii(t, s) || this.updateHoneycombPointMarker(t) : this.addHoneycombPointMarker(t)
                }), n.forEach(t => {
                    e.has(t.id) || this.removeHoneycombPointMarker(t)
                }), this.prevHoneycombPoints = [...i]
            },
            updateHoneycombPointMarker(i) {
                const n = this.honeycombPointMarkers.findIndex(o => o.id === i.id);
                if (n < 0) {
                    this.addHoneycombPointMarker(i);
                    return
                }
                this.leafletMap.removeLayer(this.honeycombPointMarkers[n]), this.honeycombPointMarkers[n] = this.generateHoneycombMarker(i)
            },
            removeHoneycombPointMarker(i) {
                const n = this.honeycombPointMarkers.findIndex(o => o.id === i.id);
                n < 0 || (this.honeycombPointMarkers[n].removeFrom(this.leafletMap), this.honeycombPointMarkers.splice(n, 1))
            },
            addHoneycombPointMarker(i) {
                const n = this.generateHoneycombMarker(i);
                n && this.honeycombPointMarkers.push(n)
            },
            setHoneycombPointMarkers() {
                if (this.leafletMap) {
                    this.honeycombPointMarkers && this.honeycombPointMarkers.forEach(i => i.removeFrom(this.leafletMap)), this.honeycombPointMarkers = [];
                    for (let i = 0; i < this.honeycombPoints.length; i++) {
                        const n = this.honeycombPoints[i],
                            o = this.generateHoneycombMarker(n);
                        o && this.honeycombPointMarkers.push(o)
                    }
                    this.prevHoneycombPoints = [...this.honeycombPointMarkers]
                }
            },
            generateHoneycombMarker(i) {
                if (!B.includes(i.type)) return console.error(`Error: Wrong honeycomb point type: ${i.type}, supported types: ${B.join(", ")}`), !1;
                const n = this.getHoneycombIcon(i.type, i.params),
                    o = [i.position.y, i.position.x],
                    e = L.marker(o, {
                        draggable: i.isDraggable
                    })
                    .addTo(this.leafletMap)
                    .setIcon(n)
                    .on("click", t => this.$emit("honeycombClick", t.target.id))
                    .on("dragstart", t => {
                        i.isDraggable && this.$emit("honeycombDragStart", t.target.id)
                    })
                    .on("dragend", t => {
                        i.isDraggable && this.onHoneycombDragEnd(t)
                    })
                    .on("mouseover", t => this.$emit("honeycombMouseOver", t.target.id))
                    .on("mouseout", t => this.$emit("honeycombMouseOut", t.target.id))
                    .setZIndexOffset(i.type === "honeycomb" ? 1e3 : 1);
                return e.id = i.id, e.type = i.type, e
            },
            getHoneycombIcon(i, n = []) {
                const {
                    width: o,
                    height: e
                } = this.getHoneycombIconSize(i), {
                    ownerImageLink: t,
                    ownerIconId: s,
                    ownerColor: a,
                    isTaken: c,
                    isHostile: r,
                    isLanding: f,
                    businessIconLink: u,
                    isAttackable: m,
                    isUnavailable: p,
                    isSelected: d
                } = n, k = h(e), M = h(o), b = `style="background: ${t?`url('${t}') center / cover no-repeat`:`url('${rn[`/src/assets/images/icons/gang-icons/${s}.png`]}') center / contain no-repeat, ${a}`}"`, y = mn["/src/assets/images/map/points/honeycomb/cross.png"], v = `style="background: url('${u||y}') center / 70% no-repeat"`, l = i === "honeycomb", I = i === "manor", P = f, C = c && !P, E = !p && !P && m && (!c || r), T = (!P || r) && (t || s >= 0 || a), z = I || !E && !T && !P, H = [i];
                c && (r ? H.push("hostile") : H.push("friendly")), p && H.push("unavailable"), d && H.push("selected"), P && H.push("landing");
                const w = `
      <div class='${V} ${H.map(D=>`${V}_${D}`).join(" ")}'>
        <div class='main-map__honeycomb-marker-bg'></div>
        ${p&&l?"<div class='main-map__honeycomb-marker-unavailable-pattern'></div>":""}
        ${d?"<div class='main-map__honeycomb-marker-selected-light'></div>":""}
        ${z?`<div class='main-map__honeycomb-marker-icon' ${v}></div>`:""}
        ${T?`<div class='main-map__honeycomb-marker-image' ${b}></div>`:""}
        ${E?"<div class='main-map__honeycomb-marker-sword-icon'></div>":""}
        ${C?`<div class='main-map__honeycomb-marker-business-mini-icon'><div class='main-map__honeycomb-marker-business-mini-icon-icon' ${v}></div></div>`:""}
        ${P?"<div class='main-map__honeycomb-marker-landing-flag'></div>":""}
        <div class='main-map__honeycomb-marker-circle-pattern'></div>
      </div>`;
                return L.divIcon({
                    html: w,
                    iconSize: [M.size, k.size],
                    iconAnchor: [M.anchor, k.anchor]
                })
            },
            onHoneycombDragEnd(i) {
                const n = i.target;
                n && this.adjustHoneycombPosition(n)
            },
            async adjustHoneycombPositionById(i) {
                let n = null;
                await this.waitForHoneycombToExist(i)
                    .then(o => n = o), n && this.adjustHoneycombPosition(n)
            },
            adjustHoneycombPosition(i) {
                const n = i.getLatLng();
                let o = n;
                i.type === "honeycomb" && (o = this.getHoneycombDragEndPos(n, i), i.setLatLng([o.lat, o.lng])), this.$emit("honeycombPointPositionUpdated", {
                    id: i.id,
                    position: {
                        x: o.lng,
                        y: o.lat
                    }
                })
            },
            getHoneycombDragEndPos(i, n) {
                const {
                    sideOffsets: o,
                    collisionDistance: e
                } = this.calculateHoneycombOffsetAndCollisionDistance(), t = this.findNearestMarkers(i, this.honeycombPointMarkers, [n])
                    .filter(a => a.marker.type === "honeycomb");
                let s = null;
                if (t.length && t[0].distance > sn) return i;
                for (const a of t) {
                    if (s) break;
                    const c = a.marker.getLatLng(),
                        r = i.lng - c.lng,
                        f = i.lat - c.lat,
                        u = Math.atan2(f, r);
                    let m = this.getHoneycombSnapDirection(u, [i.lat, i.lng], [c.lat, c.lng]),
                        p = o[m.x][m.y];
                    const d = No(Object.keys(o[m.x]), m.y)
                        .filter(M => M !== m.y),
                        k = this.getHoneycombNearestDistance(this.getHoneycombPositionWithOffset(c, p), [a.marker, n]);
                    if (Math.round(k) > e) s = this.getHoneycombPositionWithOffset(c, p);
                    else
                        for (const M of d) {
                            m.y = M, p = o[m.x][m.y];
                            const x = this.getHoneycombNearestDistance(this.getHoneycombPositionWithOffset(c, p), [a.marker, n]);
                            if (Math.round(x) > e) {
                                s = this.getHoneycombPositionWithOffset(c, p);
                                break
                            }
                        }
                }
                return s || i
            },
            calculateHoneycombOffsetAndCollisionDistance() {
                const {
                    honeycombWidth: i,
                    honeycombHeight: n
                } = this.getHoneycombCoordsSize(), o = {
                    right: {
                        top: [i / 2, -n * .72],
                        center: [i, 0],
                        bottom: [i / 2, n * .72]
                    },
                    left: {
                        top: [-i / 2, -n * .72],
                        center: [-i, 0],
                        bottom: [-i / 2, n * .72]
                    }
                }, e = Math.round(i) / 1.5;
                return {
                    sideOffsets: o,
                    collisionDistance: e
                }
            },
            getHoneycombSnapDirection(i, n, o) {
                const [e, t] = n, [s, a] = o, c = {
                    x: "left",
                    y: "center"
                };
                t > a && (c.x = "right");
                const r = i * 180 / Math.PI;
                return (r < -30 && r > -150 || r > 30 && r < 150) && (e > s ? c.y = "top" : c.y = "bottom"), c
            },
            getHoneycombNearestDistance(i, n) {
                const o = this.findNearestMarkers({
                    lat: i.lat,
                    lng: i.lng
                }, this.honeycombPointMarkers, n)[0];
                return o ? Math.round(o.distance) : 1 / 0
            },
            getHoneycombPositionWithOffset(i, n) {
                return {
                    lat: i.lat - n[1],
                    lng: i.lng + n[0]
                }
            },
            async findNeighboringHoneycombIds(i) {
                const n = [];
                let o = null;
                if (await this.waitForHoneycombToExist(i)
                    .then(a => o = a), !o) return n;
                const {
                    honeycombWidth: e
                } = this.getHoneycombCoordsSize(), t = o.getLatLng(), s = this.findNearestMarkers({
                    lat: t.lat,
                    lng: t.lng
                }, this.honeycombPointMarkers, [o]);
                for (let a = 0; a < s.length; a++)
                    if (s[a].distance <= e * 1.5) n.push(s[a].marker.id);
                    else return n;
                return n
            },
            waitForHoneycombToExist(i, {
                timeout: n = 500,
                interval: o = 10
            } = {}) {
                return new Promise((e, t) => {
                    const s = Date.now(),
                        a = () => {
                            const c = this.honeycombPointMarkers.find(r => r.id === i);
                            if (c) return e(c);
                            if (Date.now() - s >= n) return t(new Error("Marker didn't appear in time"));
                            setTimeout(a, o)
                        };
                    a()
                })
            },
            getHoneycombCoordsSize() {
                const i = this.leafletMap.latLngToContainerPoint([0, 0]),
                    {
                        width: n,
                        height: o
                    } = this.getHoneycombIconSize(),
                    e = this.leafletMap.containerPointToLatLng([i.x - n / 2, i.y - o / 2]),
                    t = this.leafletMap.containerPointToLatLng([i.x + n / 2, i.y + o / 2]);
                return {
                    honeycombWidth: Math.abs(t.lng - e.lng),
                    honeycombHeight: Math.abs(e.lat - t.lat)
                }
            },
            getHoneycombIconSize(i = B[0]) {
                const n = this.leafletMap.getZoom(),
                    o = this.leafletMap.getZoomScale(n, an);
                let e = Jo;
                return i === "manor" && (e = qo), i === "dual" && (e = Ko), i === "dual-rotated" && (e = Xo), i === "triple" && (e = Qo), i === "mall" && (e = on), i === "airport" && (e = nn), i === "jail" && (e = en), i === "port" && (e = tn), {
                    width: e.WIDTH * o,
                    height: e.HEIGHT * o
                }
            },
            findNearestMarkers(i, n, o) {
                return [...n].filter(e => !o.find(t => t == e))
                    .map(e => ({
                        marker: e,
                        distance: this.getMarkersDistance(e.getLatLng(), i)
                    }))
                    .sort((e, t) => e.distance - t.distance)
            },
            getMarkersDistance(i, n) {
                return Oo(i.lat, i.lng, n.lat, n.lng, !1)
            },
            getHoneycombPointRectById(i) {
                const n = this.honeycombPointMarkers.find(o => o.id === i);
                return n ? n._icon.getBoundingClientRect() : {}
            }
        },
        watch: {
            honeycombPoints: {
                handler(i) {
                    this.processHoneycombPointsChanges(i, this.prevHoneycombPoints)
                },
                deep: !0
            }
        }
    };

function ln(i, n, o, e, t, s) {
    return Lo(), Co("div", {
        class: Ao(["main-map", s.classes])
    }, [wo("div", {
        class: "main-map__map",
        ref: "map",
        style: Do({
            marginLeft: o.leftOffset,
            background: t.THEMES[o.tilesThemeIndex].background
        })
    }, null, 4)], 2)
}
const hn = 256,
    _ = 6e3,
    W = 3,
    Z = 5,
    N = 1,
    yn = "#fcb900",
    dn = 1e3,
    J = {
        HEIGHT: 28,
        WIDTH: 24
    },
    q = {
        HEIGHT: 36,
        WIDTH: 36
    },
    K = {
        HEIGHT: 18,
        WIDTH: 18
    },
    gn = {
        HEIGHT: 40,
        WIDTH: 40
    },
    _n = {
        HEIGHT: 60,
        WIDTH: 60
    },
    X = {
        HEIGHT: 64,
        WIDTH: 64
    },
    $ = [{
        background: "#003f7f",
        tiles: "images/map/themes/0/{z}/{x}/{y}.jpg",
        fallback: "images/map/themes/0/fallback.jpg"
    }, {
        background: "transparent",
        tiles: "images/map/themes/1/{z}/{x}/{y}.png",
        fallback: "images/map/themes/1/fallback.png"
    }],
    fn = {
        mixins: [Qi, Yo, pn],
        inject: ["vhToPx"],
        props: {
            points: {
                type: Array,
                default: () => []
            },
            specialPoints: {
                type: Array,
                default: () => []
            },
            honeycombPoints: {
                type: Array,
                default: () => []
            },
            selectedPointIndex: {
                type: Number,
                default: -1
            },
            isPointSelected: {
                type: Boolean,
                default: !1
            },
            moveToPlayerCount: {
                type: Number,
                default: 0
            },
            playerPosition: {
                type: Object,
                required: !1
            },
            markersIsHidden: {
                type: Boolean,
                default: !1
            },
            destinationPointAvailable: {
                type: Boolean,
                default: !0
            },
            routeAvailable: {
                type: Boolean,
                default: !0
            },
            initEvent: {
                type: String,
                default: ""
            },
            leftOffset: {
                type: String,
                default: "0px"
            },
            initialZoomPercent: {
                type: Number,
                default: 100
            },
            isShowGangZones: {
                type: Boolean,
                default: !1
            },
            isCenteredOnPlayer: {
                type: Boolean,
                default: !0
            },
            centerOnPoint: {
                type: [Object, Boolean],
                default: !1
            },
            isMobile: {
                type: Boolean,
                default: !1
            },
            disableDestinationPointCounter: {
                type: Number,
                default: 0
            },
            isShowCheckpoint: {
                type: Boolean,
                default: !1
            },
            allowZoom: {
                type: Boolean,
                default: !0
            },
            isShowCities: {
                type: Boolean,
                default: !0
            },
            tilesThemeIndex: {
                type: Number,
                default: 0
            },
            tilesOpacity: {
                type: Number,
                default: 1
            },
            isInteractionDisabled: {
                type: Boolean,
                default: !1
            },
            autoFollowPlayer: {
                type: Boolean,
                default: !1
            },
            edgeMarkersOffset: {
                type: Object,
                default: () => ({
                    top: {
                        value: 0,
                        isTransparent: !1
                    },
                    right: {
                        value: 0,
                        isTransparent: !1
                    },
                    bottom: {
                        value: 0,
                        isTransparent: !1
                    },
                    left: {
                        value: 0,
                        isTransparent: !1
                    }
                })
            }
        },
        data() {
            return {
                edgeIcons: Object.assign({
                    "/src/assets/images/map/points/edge/basket-arrow.png": qi,
                    "/src/assets/images/map/points/edge/basket-gold.png": Ki,
                    "/src/assets/images/map/points/edge/basket.png": Xi
                }),
                THEMES: $,
                isUnmounted: !1,
                destinationPoint: {
                    show: !1,
                    position: {
                        x: 0,
                        y: 0
                    }
                },
                pointSelectionStage: null,
                currentPoint: !1,
                map: {},
                rightClickIsOnPoint: !1,
                flashedTimers: []
            }
        },
        computed: {
            storedRoute() {
                let i = this.$store.getters["player/route"];
                return i !== null && (i = i.map(n => [n[1], n[0]])), i
            },
            gangZones() {
                return this.$store.getters["player/gangZones"]
            },
            classes() {
                return {
                    "main-map_hidden-markers": this.markersIsHidden,
                    "main-map_interaction-disabled": this.isInteractionDisabled,
                    ...this.honeycombPointsClasses
                }
            },
            flashedGangZones() {
                return this.$store.getters["player/flashedGangZones"]
            },
            pointIconDefaultSize() {
                return this.isMobile ? _n : gn
            },
            checkpoint() {
                return this.$store.getters["player/checkpoint"]
            },
            initialZoom() {
                return W + this.initialZoomPercent / 100 * (Z - W)
            }
        },
        created() {
            this.leafletIcons = {}, this.leafletIcons.destination = this.getLeafletDestinationIcon(), this.leafletIcons.checkpoint = this.getLeafletCheckpointIcon(), this.updatePointsLefaletIcons()
        },
        mounted() {
            F(() => {
                this.isUnmounted || (this.initMap(), this.initEvent.length && sendClientEvent(gm.EVENT_EXECUTE_PUBLIC, this.initEvent))
            })
        },
        beforeUnmount() {
            this.isUnmounted = !0
        },
        unmounted() {
            for (const i of this.flashedTimers) clearInterval(i);
            this.flashedTimers = null, this.destroyEdgeMarkers(), F(() => {
                this.leafletMap && this.leafletMap.remove && (this.leafletMap.off(), this.leafletMap.remove(), this.leafletMap = null)
            })
        },
        methods: {
            setRoute(i) {
                if (this.route && this.route.removeFrom(this.leafletMap), !i.length) return;
                i !== null && (this.route = L.polyline(i, {
                        color: yn
                    })
                    .addTo(this.leafletMap));
                const [n, o] = i[i.length - 1];
                this.setDestinationPoint(n, o)
            },
            moveToPlayer(i = Z) {
                this.$nextTick(() => {
                    this.leafletMap.invalidateSize(!0), this.leafletMap.flyTo([this.playerPosition.y, this.playerPosition.x], i, {
                        animate: !0,
                        duration: .4
                    })
                })
            },
            mapMoveStart(i) {
                this.map.pointselectionStage === "start" ? this.map.pointselectionStage = "moveStart" : (this.map.pointselectionStage === "moveStart" || this.map.pointselectionStage === "finish") && (this.map.pointselectionStage = null)
            },
            mapDragStart() {
                this.$emit("mapDrag")
            },
            mapMoveEnd(i) {
                this.map.pointselectionStage === "moveStart" && (this.map.pointselectionStage = "finish"), this.$emit("moveend")
            },
            mapZoomEnd(i) {
                this.map.pointselectionStage === "moveStart" && (this.map.pointselectionStage = "finish"), this.currentZoom = i;
                const n = this.leafletMap.getZoom() - this.leafletMap.getMinZoom() + 1;
                this.$emit("zoom", n)
            },
            onMapClick(i) {
                this.$emit("mapClick"), this.isMobile && this.setDestinationPoint(i.latlng.lat, i.latlng.lng)
            },
            onMapMouseUp(i) {
                this.$emit("mapMouseUp", i.originalEvent), i.originalEvent.button === 2 && (this.rightClickIsOnPoint || (this.destinationPointMarker ? this.disableDestinationPoint() : this.setDestinationPoint(i.latlng.lat, i.latlng.lng)), this.rightClickIsOnPoint = !1)
            },
            removeDestinationPointMarker() {
                this.destinationPointMarker && this.destinationPointMarker.removeFrom(this.leafletMap), this.destinationPointMarker = null
            },
            setDestinationPoint(i, n) {
                this.destinationPointAvailable && (this.destinationPoint.show = !0, this.destinationPoint.position = {
                        x: i,
                        y: n
                    }, this.removeDestinationPointMarker(), this.destinationPointMarker = L.marker([i, n])
                    .addTo(this.leafletMap)
                    .setIcon(this.leafletIcons.destination)
                    .on("click", this.disableDestinationPoint), window.startNavigationInterval(n, i))
            },
            disableDestinationPoint() {
                this.destinationPoint.show && (this.destinationPoint.show = !1, this.removeDestinationPointMarker(), window.discardRoute())
            },
            onPointClick(i, n) {
                this.$emit("pointClick", i, n)
            },
            onPointMouseUp(i, n) {
                i.originalEvent.button === 2 && (this.rightClickIsOnPoint = !0, this.$emit("pointRightClick", i, n))
            },
            updateCheckpointMarker() {
                this.checkpointMarker && this.checkpointMarker.removeFrom(this.leafletMap), !(!this.checkpoint || !this.isShowCheckpoint) && (this.checkpointMarker = L.marker([this.checkpoint.y, this.checkpoint.x])
                    .addTo(this.leafletMap)
                    .setIcon(this.leafletIcons.checkpoint))
            },
            focusMarker(i) {
                i !== this.focusedMarker && i.setZIndexOffset && (this.focusedMarker && this.focusedMarker.setZIndexOffset(this.focusedMarker.zIndexOld), i.zIndexOld = i._zIndex, i.setZIndexOffset(1122334455), this.focusedMarker = i)
            },
            unfocusMarker(i) {
                i !== this.focusedMarker || !this.focusedMarker || this.focusedMarker.setZIndexOffset(this.focusedMarker.zIndexOld)
            },
            markerMouseOver(i) {
                this.focusMarker(i.target)
            },
            markerMouseOut(i) {
                this.unfocusMarker(i.target)
            },
            adjustSelectPointPosition(i, n, o) {
                const e = p => p > 0 ? _ - p : Math.abs(p) + _,
                    t = [i, n],
                    s = this.leafletMap.getBounds(),
                    a = this.leafletMap.getZoom(),
                    c = this.leafletMap.getZoomScale(o, a),
                    r = s.getSouthWest(),
                    f = s.getNorthEast(),
                    u = (e(r.lat) - e(f.lat)) / c,
                    m = (e(r.lng) - e(f.lng)) / c;
                return Math.abs(i) + u / 2 > _ && (t[0] = (_ - u / 2) * (i > 0 ? 1 : -1)), Math.abs(n) + m / 2 > _ && (t[1] = (_ - m / 2) * (n > 0 ? 1 : -1)), t
            },
            selectPoint(i, n, o) {
                if (this.currentPoint === o) return;
                this.map.pointselectionStage = "start", this.currentPoint = o, this.focusMarker(n), this.setActiveMarker(i);
                const e = Z,
                    t = this.adjustSelectPointPosition(o.position.y, o.position.x, e);
                this.leafletMap.flyTo(t, e, {
                    animate: !0,
                    duration: .4
                })
            },
            updatePlayerPoint() {
                const i = `rotate(${this.playerPosition.angle?this.playerPosition.angle:0}deg)`,
                    n = h(J.HEIGHT),
                    o = h(J.WIDTH),
                    e = `<img class="main-map__player-marker" src="/images/gps/player.png" style="transform: ${i};"/>`,
                    t = L.divIcon({
                        html: e,
                        iconSize: [o.size, n.size],
                        iconAnchor: [o.anchor, n.anchor]
                    }),
                    s = [this.playerPosition.y, this.playerPosition.x];
                this.playerPoint && this.playerPoint.removeFrom(this.leafletMap), this.playerPoint = L.marker(s)
                    .addTo(this.leafletMap)
                    .setIcon(t)
                    .setZIndexOffset(1122334455)
            },
            setActiveMarker(i) {
                const n = this.points[i],
                    o = "<div class='main-map__active-marker'></div>",
                    e = h(this.pointIconDefaultSize.HEIGHT),
                    t = h(this.pointIconDefaultSize.WIDTH),
                    s = L.divIcon({
                        html: o,
                        iconSize: [t.size, e.size],
                        iconAnchor: [t.anchor, e.anchor]
                    }),
                    a = [n.position.y, n.position.x];
                this.removeActiveMarker(), this.activeMarkerPoint = L.marker(a, {
                        [O]: !0
                    })
                    .addTo(this.leafletMap)
                    .setIcon(s)
            },
            removeActiveMarker() {
                this.activeMarkerPoint && this.activeMarkerPoint.removeFrom(this.leafletMap)
            },
            updatePointMarkers() {
                this.leafletMap && (this.pointMarkers && this.pointMarkers.forEach(i => i.removeFrom(this.leafletMap)), this.pointMarkers = [], this.pointMarkers = this.points.map((i, n) => L.marker([i.position.y, i.position.x], {
                        [O]: !0,
                        arrowIcon: i.arrowIcon,
                        contentIcon: i.contentIcon
                    })
                    .addTo(this.leafletMap)
                    .setIcon(this.leafletIcons[i.icon])
                    .on("click", o => this.onPointClick(o, i))
                    .on("mouseup", o => this.onPointMouseUp(o, i))
                    .on("mouseover", this.markerMouseOver)
                    .on("mouseout", this.markerMouseOut)
                    .setZIndexOffset(1100)))
            },
            updateEdgeMarkers() {
                var i, n, o, e;
                if (this.leafletMap) {
                    this.destroyEdgeMarkers(), this.edgeMarkerInstances = [];
                    for (const t of this.groupEdgeMarkersByIcons(this.pointMarkers, this.specialPointMarkers)) {
                        const s = L.layerGroup(t),
                            a = L.edgeMarker({
                                arrowIconUrl: this.getEdgeUrl(t[0].options.arrowIcon.name),
                                arrowIconSize: t[0].options.arrowIcon.size,
                                contentIconUrl: this.getEdgeUrl((n = (i = t[0].options) == null ? void 0 : i.contentIcon) == null ? void 0 : n.name),
                                contentIconSize: (e = (o = t[0].options) == null ? void 0 : o.contentIcon) == null ? void 0 : e.size,
                                rotateIcons: !0,
                                edgeOffset: Object.fromEntries(["top", "right", "bottom", "left"].map(c => {
                                    const r = this.edgeMarkersOffset[c];
                                    return [c, {
                                        value: this.vhToPx((r == null ? void 0 : r.value) ?? 0),
                                        isTransparent: (r == null ? void 0 : r.isTransparent) ?? !1
                                    }]
                                })),
                                layerGroup: s
                            })
                            .addTo(this.leafletMap);
                        this.edgeMarkerInstances.push(a)
                    }
                }
            },
            destroyEdgeMarkers() {
                this.edgeMarkerInstances && (this.edgeMarkerInstances.forEach(i => i.destroy()), this.edgeMarkerInstances = null)
            },
            getEdgeUrl(i) {
                return i ? this.edgeIcons[`/src/assets/images/map/points/edge/${i}`] : null
            },
            groupEdgeMarkersByIcons(...i) {
                const n = new Map;
                for (const o of i)
                    for (const e of o) {
                        const t = e.options.arrowIcon != null,
                            s = e.options.contentIcon != null;
                        if (!t && !s) continue;
                        const a = t ? e.options.arrowIcon.name : "__none__",
                            c = s ? e.options.contentIcon.name : "__none__",
                            r = a + "|||" + c;
                        n.has(r) || n.set(r, []), n.get(r)
                            .push(e)
                    }
                return Array.from(n.values())
            },
            updatePointsLefaletIcons() {
                this.points.map(i => {
                    const n = h(this.pointIconDefaultSize.HEIGHT),
                        o = h(this.pointIconDefaultSize.WIDTH);
                    this.leafletIcons[i.icon] = L.icon({
                        iconUrl: `/images/gps/${i.icon}.png`,
                        iconSize: [o.size, n.size],
                        iconAnchor: [o.anchor, n.anchor]
                    })
                })
            },
            updateCitiesMarkers() {
                if (!this.leafletMap) return;
                const i = h(X.HEIGHT),
                    n = h(X.WIDTH);
                this.citiesMarkers && this.citiesMarkers.forEach(o => o.removeFrom(this.leafletMap)), this.citiesMarkers = [], this.citiesMarkers = Fo.map((o, e) => {
                    const t = `<div class='main-map__city'><div class='main-map__city-label'>${o.name}</div><div class='main-map__city-point'></div></div>`,
                        s = L.divIcon({
                            html: t,
                            iconSize: [n.size, i.size],
                            iconAnchor: [n.anchor, i.anchor]
                        });
                    return L.marker([o.position.y, o.position.x], {
                            interactive: !1
                        })
                        .addTo(this.leafletMap)
                        .setIcon(s)
                        .setZIndexOffset(11223344)
                })
            },
            getLeafletCheckpointIcon() {
                const i = h(K.HEIGHT),
                    n = h(K.WIDTH),
                    o = "<div class='main-map__checkpoint-marker'></div>";
                return L.divIcon({
                    html: o,
                    iconSize: [n.size, i.size],
                    iconAnchor: [n.anchor, i.anchor]
                })
            },
            getLeafletDestinationIcon() {
                const i = h(q.HEIGHT),
                    n = h(q.WIDTH),
                    o = "<div class='main-map__destination-marker'></div>";
                return L.divIcon({
                    html: o,
                    iconSize: [n.size, i.size],
                    iconAnchor: [n.anchor, i.anchor]
                })
            },
            renderGangZones() {
                for (const [i, n] of Object.entries(this.gangZones)) {
                    const [o, ...e] = n;
                    if (!e || !Object.keys(e)
                        .length) continue;
                    const t = L.rectangle(this.fixGangZonesBounds(e), {
                        fillColor: o,
                        weight: 0,
                        fillOpacity: .4
                    });
                    if (t.addTo(this.leafletMap), this.flashedGangZones[i] === void 0) continue;
                    const s = this.flashedGangZones[i],
                        a = setInterval(() => {
                            const r = t.options.fillColor === s ? o : s;
                            t.setStyle({
                                fillColor: r
                            })
                        }, dn);
                    this.flashedTimers.push(a)
                }
            },
            fixGangZonesBounds(i) {
                return i.map(([n, o]) => [o, n])
            },
            getPointRect(i) {
                return this.pointMarkers[i]._icon.getBoundingClientRect()
            },
            initMap() {
                let i = window.dpiScale * window.scale,
                    n = Math.round(hn * (i > 1 ? i : 1)),
                    o = n / 2;
                if (this.leafletMap = L.map(this.$refs.map, {
                        crs: L.extend({}, L.CRS.Simple, {
                            transformation: new L.Transformation(o / _, o, -o / _, o)
                        }),
                        center: [0, 0],
                        maxBounds: [
                            [-_ * N, -_ * N],
                            [_ * N, _ * N]
                        ],
                        maxBoundsViscosity: 1,
                        zoomControl: !1,
                        attributionControl: !1,
                        zoom: this.initialZoom,
                        zoomSnap: !1,
                        zoomAnimation: !1,
                        minZoom: W,
                        maxZoom: Z,
                        bounceAtZoomLimits: !1,
                        scrollWheelZoom: this.allowZoom,
                        doubleClickZoom: this.allowZoom,
                        boxZoom: this.allowZoom,
                        touchZoom: this.allowZoom
                    })
                    .on("click", this.onMapClick)
                    .on("mouseup", this.onMapMouseUp)
                    .on("touchend", this.onMapMouseUp)
                    .on("movestart", this.mapMoveStart)
                    .on("moveend", this.mapMoveEnd)
                    .on("dragstart", this.mapDragStart)
                    .on("zoomend", this.mapZoomEnd), this.leafletMap.createPane("fallback"), this.leafletMap.getPane("fallback")
                    .style.zIndex = 100, $[this.tilesThemeIndex].fallback) {
                    const e = [
                        [-_, -_],
                        [_, _]
                    ];
                    L.imageOverlay($[this.tilesThemeIndex].fallback, e, {
                            pane: "fallback",
                            opacity: this.tilesOpacity
                        })
                        .addTo(this.leafletMap)
                }
                L.tileLayer($[this.tilesThemeIndex].tiles, {
                        opacity: this.tilesOpacity,
                        tileSize: n,
                        noWrap: !0
                    })
                    .addTo(this.leafletMap), this.playerPosition && this.updatePlayerPoint(), this.destinationPoint.show && this.setDestinationPoint(this.destinationPoint.position.y, this.destinationPoint.position.x), this.updateCheckpointMarker(), this.updatePointMarkers(), this.updateSpecialPointMarkers(this.leafletMap.getZoom()), this.setHoneycombPointMarkers(this.leafletMap.getZoom()), this.updateEdgeMarkers(), this.isShowCities && this.updateCitiesMarkers(), this.isShowGangZones && this.renderGangZones(), this.routeAvailable && this.setRoute(this.storedRoute), this.playerPosition && this.isCenteredOnPlayer && this.leafletMap.setView([this.playerPosition.y, this.playerPosition.x]), this.centerOnPoint && this.leafletMap.setView([this.centerOnPoint.y, this.centerOnPoint.x]), this.changeInteractionStatus(this.isInteractionDisabled)
            },
            getBounds() {
                return this.leafletMap.getBounds()
            },
            changeInteractionStatus(i) {
                if (!this.leafletMap) return;
                const n = i ? "disable" : "enable",
                    o = this.allowZoom ? n : "disable";
                this.leafletMap.touchZoom[o](), this.leafletMap.doubleClickZoom[o](), this.leafletMap.scrollWheelZoom[o](), this.leafletMap.boxZoom[o](), this.leafletMap.dragging[n](), this.leafletMap.keyboard[n](), this.leafletMap.tap && this.leafletMap.tap[n]()
            }
        },
        watch: {
            isInteractionDisabled: {
                handler(i) {
                    this.changeInteractionStatus(i)
                }
            },
            playerPosition: {
                handler(i, n) {
                    JSON.stringify(i) !== JSON.stringify(n) && (this.updatePlayerPoint(), this.autoFollowPlayer && this.leafletMap && this.leafletMap.setView([this.playerPosition.y, this.playerPosition.x], this.leafletMap.getZoom(), {
                        animate: !1
                    }))
                },
                deep: !0
            },
            storedRoute: {
                handler(i, n) {
                    if (!this.routeAvailable) return;
                    JSON.stringify(i) !== JSON.stringify(n) && this.setRoute(i)
                },
                deep: !0
            },
            checkpoint: {
                handler(i, n) {
                    JSON.stringify(i) !== JSON.stringify(n) && this.updateCheckpointMarker()
                },
                deep: !0
            },
            selectedPointIndex(i) {
                this.removeActiveMarker(), i < 0 || !this.points[i] ? this.currentPoint = !1 : this.selectPoint(i, this.leafletMap.getPane("markerPane")
                    .children[i], this.points[i])
            },
            isPointSelected(i) {
                i || this.unfocusMarker(this.focusMarker)
            },
            moveToPlayerCount() {
                this.isCenteredOnPlayer && this.moveToPlayer()
            },
            points() {
                this.updatePointsLefaletIcons(), this.updatePointMarkers(), this.updateEdgeMarkers()
            },
            specialPoints() {
                this.updateSpecialPointMarkers(this.leafletMap.getZoom()), this.updateEdgeMarkers()
            },
            edgeMarkersOffset: {
                handler() {
                    this.updateEdgeMarkers()
                },
                deep: !0
            },
            disableDestinationPointCounter() {
                this.disableDestinationPoint()
            }
        }
    },
    Tn = Zo(fn, [
        ["render", ln],
        ["__scopeId", "data-v-7340b196"]
    ]);
export {
    Bo as A, Uo as B, In as C, Wo as M, S as P, vn as a, Pn as b, Tn as c, $o as d, Hn as g
};