import ky from "/node_modules/.vite/deps/ky.js?v=cbf55a96";
|
import { createSignal } from "/node_modules/.vite/deps/solid-js.js?v=93754656";
|
import { toast } from "/node_modules/solid-toast/dist/source/index.jsx";
|
import { useRequest } from "/src/signals/index.ts";
|
export const closeAllConnectionsAPI = () => {
|
const request = useRequest();
|
return request.delete("connections");
|
};
|
export const closeSingleConnectionAPI = (id) => {
|
const request = useRequest();
|
return request.delete(`connections/${id}`);
|
};
|
export const [reloadingConfigFile, setReloadingConfigFile] = createSignal(false);
|
export const [updatingGEODatabases, setUpdatingGEODatabases] = createSignal(false);
|
export const [flushingFakeIPData, setFlushingFakeIPData] = createSignal(false);
|
export const [upgradingBackend, setUpgradingBackend] = createSignal(false);
|
export const [restartingBackend, setRestartingBackend] = createSignal(false);
|
export const reloadConfigFileAPI = async () => {
|
const request = useRequest();
|
setReloadingConfigFile(true);
|
try {
|
await request.put("configs", {
|
searchParams: { force: true },
|
json: { path: "", payload: "" }
|
});
|
} catch {
|
}
|
setReloadingConfigFile(false);
|
};
|
export const flushFakeIPDataAPI = async () => {
|
const request = useRequest();
|
setFlushingFakeIPData(true);
|
try {
|
await request.post("cache/fakeip/flush");
|
} catch {
|
}
|
setFlushingFakeIPData(false);
|
};
|
export const updateGEODatabasesAPI = async () => {
|
const request = useRequest();
|
setUpdatingGEODatabases(true);
|
try {
|
await request.post("configs/geo");
|
} catch {
|
}
|
setUpdatingGEODatabases(false);
|
};
|
export const upgradeBackendAPI = async () => {
|
const request = useRequest();
|
setUpgradingBackend(true);
|
try {
|
await request.post("upgrade");
|
} catch {
|
}
|
setUpgradingBackend(false);
|
};
|
export const restartBackendAPI = async () => {
|
const request = useRequest();
|
setRestartingBackend(true);
|
try {
|
await request.post("restart");
|
} catch {
|
}
|
setRestartingBackend(false);
|
};
|
export const fetchBackendConfigAPI = () => {
|
const request = useRequest();
|
return request.get("configs").json();
|
};
|
export const updateBackendConfigAPI = async (key, value, refetch) => {
|
try {
|
const request = useRequest();
|
await request.patch("configs", { json: { [key]: value } }).json();
|
await refetch();
|
} catch (err) {
|
toast.error(err.message);
|
}
|
};
|
export const fetchBackendVersionAPI = async () => {
|
const request = useRequest();
|
const { version } = await request.get("version").json();
|
return version;
|
};
|
export const fetchProxyProvidersAPI = () => {
|
const request = useRequest();
|
return request.get("providers/proxies").json();
|
};
|
export const fetchProxiesAPI = () => {
|
const request = useRequest();
|
return request.get("proxies").json();
|
};
|
export const updateProxyProviderAPI = (providerName) => {
|
const request = useRequest();
|
return request.put(`providers/proxies/${providerName}`);
|
};
|
export const proxyProviderHealthCheckAPI = (providerName) => {
|
const request = useRequest();
|
return request.get(`providers/proxies/${providerName}/healthcheck`, {
|
timeout: 5 * 1e3
|
}).json();
|
};
|
export const selectProxyInGroupAPI = (groupName, proxyName) => {
|
const request = useRequest();
|
return request.put(`proxies/${groupName}`, {
|
body: JSON.stringify({
|
name: proxyName
|
})
|
});
|
};
|
export const proxyLatencyTestAPI = (proxyName, provider, url, timeout) => {
|
const request = useRequest();
|
if (provider !== "") {
|
return proxyProviderHealthCheckAPI(provider).then((latencyMap) => ({
|
delay: latencyMap[proxyName]
|
}));
|
}
|
return request.get(`proxies/${proxyName}/delay`, {
|
searchParams: {
|
url,
|
timeout
|
}
|
}).json();
|
};
|
export const proxyGroupLatencyTestAPI = (groupName, url, timeout) => {
|
const request = useRequest();
|
return request.get(`group/${groupName}/delay`, {
|
searchParams: {
|
url,
|
timeout
|
}
|
}).json();
|
};
|
export const fetchRulesAPI = () => {
|
const request = useRequest();
|
return request.get("rules").json();
|
};
|
export const fetchRuleProvidersAPI = () => {
|
const request = useRequest();
|
return request.get("providers/rules").json();
|
};
|
export const updateRuleProviderAPI = (providerName) => {
|
const request = useRequest();
|
return request.put(`providers/rules/${providerName}`);
|
};
|
export const isUpdateAvailableAPI = async (versionResponse) => {
|
const match = /(alpha|beta|meta)-?(\w+)/.exec(versionResponse);
|
if (!match) {
|
return false;
|
}
|
const channel = match[1], version = match[2];
|
if (channel === "meta") {
|
const { assets } = await ky.get("https://api.github.com/repos/MetaCubeX/Clash.Meta/releases/latest").json();
|
const alreadyLatest = assets.some(({ name }) => name.includes(version));
|
return !alreadyLatest;
|
}
|
if (channel === "alpha") {
|
const { assets } = await ky.get(
|
"https://api.github.com/repos/MetaCubeX/Clash.Meta/releases/tags/Prerelease-Alpha"
|
).json();
|
const alreadyLatest = assets.some(({ name }) => name.includes(version));
|
return !alreadyLatest;
|
}
|
return false;
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBreSBmcm9tICdreSdcclxuaW1wb3J0IHsgUmVzb3VyY2VBY3Rpb25zLCBjcmVhdGVTaWduYWwgfSBmcm9tICdzb2xpZC1qcydcclxuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdzb2xpZC10b2FzdCdcclxuaW1wb3J0IHsgdXNlUmVxdWVzdCB9IGZyb20gJ34vc2lnbmFscydcclxuaW1wb3J0IHtcclxuICBCYWNrZW5kVmVyc2lvbixcclxuICBDb25maWcsXHJcbiAgUHJveHksXHJcbiAgUHJveHlQcm92aWRlcixcclxuICBSdWxlLFxyXG4gIFJ1bGVQcm92aWRlcixcclxufSBmcm9tICd+L3R5cGVzJ1xyXG5cclxuZXhwb3J0IGNvbnN0IGNsb3NlQWxsQ29ubmVjdGlvbnNBUEkgPSAoKSA9PiB7XHJcbiAgY29uc3QgcmVxdWVzdCA9IHVzZVJlcXVlc3QoKVxyXG5cclxuICByZXR1cm4gcmVxdWVzdC5kZWxldGUoJ2Nvbm5lY3Rpb25zJylcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNsb3NlU2luZ2xlQ29ubmVjdGlvbkFQSSA9IChpZDogc3RyaW5nKSA9PiB7XHJcbiAgY29uc3QgcmVxdWVzdCA9IHVzZVJlcXVlc3QoKVxyXG5cclxuICByZXR1cm4gcmVxdWVzdC5kZWxldGUoYGNvbm5lY3Rpb25zLyR7aWR9YClcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFtyZWxvYWRpbmdDb25maWdGaWxlLCBzZXRSZWxvYWRpbmdDb25maWdGaWxlXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcclxuZXhwb3J0IGNvbnN0IFt1cGRhdGluZ0dFT0RhdGFiYXNlcywgc2V0VXBkYXRpbmdHRU9EYXRhYmFzZXNdID1cclxuICBjcmVhdGVTaWduYWwoZmFsc2UpXHJcbmV4cG9ydCBjb25zdCBbZmx1c2hpbmdGYWtlSVBEYXRhLCBzZXRGbHVzaGluZ0Zha2VJUERhdGFdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxyXG5leHBvcnQgY29uc3QgW3VwZ3JhZGluZ0JhY2tlbmQsIHNldFVwZ3JhZGluZ0JhY2tlbmRdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxyXG5leHBvcnQgY29uc3QgW3Jlc3RhcnRpbmdCYWNrZW5kLCBzZXRSZXN0YXJ0aW5nQmFja2VuZF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXHJcblxyXG5leHBvcnQgY29uc3QgcmVsb2FkQ29uZmlnRmlsZUFQSSA9IGFzeW5jICgpID0+IHtcclxuICBjb25zdCByZXF1ZXN0ID0gdXNlUmVxdWVzdCgpXHJcbiAgc2V0UmVsb2FkaW5nQ29uZmlnRmlsZSh0cnVlKVxyXG4gIHRyeSB7XHJcbiAgICBhd2FpdCByZXF1ZXN0LnB1dCgnY29uZmlncycsIHtcclxuICAgICAgc2VhcmNoUGFyYW1zOiB7IGZvcmNlOiB0cnVlIH0sXHJcbiAgICAgIGpzb246IHsgcGF0aDogJycsIHBheWxvYWQ6ICcnIH0sXHJcbiAgICB9KVxyXG4gIH0gY2F0Y2gge31cclxuICBzZXRSZWxvYWRpbmdDb25maWdGaWxlKGZhbHNlKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZmx1c2hGYWtlSVBEYXRhQVBJID0gYXN5bmMgKCkgPT4ge1xyXG4gIGNvbnN0IHJlcXVlc3QgPSB1c2VSZXF1ZXN0KClcclxuICBzZXRGbHVzaGluZ0Zha2VJUERhdGEodHJ1ZSlcclxuICB0cnkge1xyXG4gICAgYXdhaXQgcmVxdWVzdC5wb3N0KCdjYWNoZS9mYWtlaXAvZmx1c2gnKVxyXG4gIH0gY2F0Y2gge31cclxuICBzZXRGbHVzaGluZ0Zha2VJUERhdGEoZmFsc2UpXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCB1cGRhdGVHRU9EYXRhYmFzZXNBUEkgPSBhc3luYyAoKSA9PiB7XHJcbiAgY29uc3QgcmVxdWVzdCA9IHVzZVJlcXVlc3QoKVxyXG4gIHNldFVwZGF0aW5nR0VPRGF0YWJhc2VzKHRydWUpXHJcbiAgdHJ5IHtcclxuICAgIGF3YWl0IHJlcXVlc3QucG9zdCgnY29uZmlncy9nZW8nKVxyXG4gIH0gY2F0Y2gge31cclxuICBzZXRVcGRhdGluZ0dFT0RhdGFiYXNlcyhmYWxzZSlcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHVwZ3JhZGVCYWNrZW5kQVBJID0gYXN5bmMgKCkgPT4ge1xyXG4gIGNvbnN0IHJlcXVlc3QgPSB1c2VSZXF1ZXN0KClcclxuICBzZXRVcGdyYWRpbmdCYWNrZW5kKHRydWUpXHJcbiAgdHJ5IHtcclxuICAgIGF3YWl0IHJlcXVlc3QucG9zdCgndXBncmFkZScpXHJcbiAgfSBjYXRjaCB7fVxyXG4gIHNldFVwZ3JhZGluZ0JhY2tlbmQoZmFsc2UpXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCByZXN0YXJ0QmFja2VuZEFQSSA9IGFzeW5jICgpID0+IHtcclxuICBjb25zdCByZXF1ZXN0ID0gdXNlUmVxdWVzdCgpXHJcbiAgc2V0UmVzdGFydGluZ0JhY2tlbmQodHJ1ZSlcclxuICB0cnkge1xyXG4gICAgYXdhaXQgcmVxdWVzdC5wb3N0KCdyZXN0YXJ0JylcclxuICB9IGNhdGNoIHt9XHJcbiAgc2V0UmVzdGFydGluZ0JhY2tlbmQoZmFsc2UpXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBmZXRjaEJhY2tlbmRDb25maWdBUEkgPSAoKSA9PiB7XHJcbiAgY29uc3QgcmVxdWVzdCA9IHVzZVJlcXVlc3QoKVxyXG5cclxuICByZXR1cm4gcmVxdWVzdC5nZXQoJ2NvbmZpZ3MnKS5qc29uPENvbmZpZz4oKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgdXBkYXRlQmFja2VuZENvbmZpZ0FQSSA9IGFzeW5jIChcclxuICBrZXk6IGtleW9mIENvbmZpZyxcclxuICB2YWx1ZTogUGFydGlhbDxDb25maWdba2V5b2YgQ29uZmlnXT4sXHJcbiAgcmVmZXRjaDogUmVzb3VyY2VBY3Rpb25zPENvbmZpZyB8IHVuZGVmaW5lZD5bJ3JlZmV0Y2gnXSxcclxuKSA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlcXVlc3QgPSB1c2VSZXF1ZXN0KClcclxuXHJcbiAgICBhd2FpdCByZXF1ZXN0LnBhdGNoKCdjb25maWdzJywgeyBqc29uOiB7IFtrZXldOiB2YWx1ZSB9IH0pLmpzb248Q29uZmlnPigpXHJcblxyXG4gICAgYXdhaXQgcmVmZXRjaCgpXHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICB0b2FzdC5lcnJvcigoZXJyIGFzIEVycm9yKS5tZXNzYWdlKVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGZldGNoQmFja2VuZFZlcnNpb25BUEkgPSBhc3luYyAoKSA9PiB7XHJcbiAgY29uc3QgcmVxdWVzdCA9IHVzZVJlcXVlc3QoKVxyXG5cclxuICBjb25zdCB7IHZlcnNpb24gfSA9IGF3YWl0IHJlcXVlc3QuZ2V0KCd2ZXJzaW9uJykuanNvbjxCYWNrZW5kVmVyc2lvbj4oKVxyXG5cclxuICByZXR1cm4gdmVyc2lvblxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZmV0Y2hQcm94eVByb3ZpZGVyc0FQSSA9ICgpID0+IHtcclxuICBjb25zdCByZXF1ZXN0ID0gdXNlUmVxdWVzdCgpXHJcblxyXG4gIHJldHVybiByZXF1ZXN0XHJcbiAgICAuZ2V0KCdwcm92aWRlcnMvcHJveGllcycpXHJcbiAgICAuanNvbjx7IHByb3ZpZGVyczogUmVjb3JkPHN0cmluZywgUHJveHlQcm92aWRlcj4gfT4oKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZmV0Y2hQcm94aWVzQVBJID0gKCkgPT4ge1xyXG4gIGNvbnN0IHJlcXVlc3QgPSB1c2VSZXF1ZXN0KClcclxuXHJcbiAgcmV0dXJuIHJlcXVlc3QuZ2V0KCdwcm94aWVzJykuanNvbjx7IHByb3hpZXM6IFJlY29yZDxzdHJpbmcsIFByb3h5PiB9PigpXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCB1cGRhdGVQcm94eVByb3ZpZGVyQVBJID0gKHByb3ZpZGVyTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgY29uc3QgcmVxdWVzdCA9IHVzZVJlcXVlc3QoKVxyXG5cclxuICByZXR1cm4gcmVxdWVzdC5wdXQoYHByb3ZpZGVycy9wcm94aWVzLyR7cHJvdmlkZXJOYW1lfWApXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBwcm94eVByb3ZpZGVySGVhbHRoQ2hlY2tBUEkgPSAocHJvdmlkZXJOYW1lOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCByZXF1ZXN0ID0gdXNlUmVxdWVzdCgpXHJcblxyXG4gIHJldHVybiByZXF1ZXN0XHJcbiAgICAuZ2V0KGBwcm92aWRlcnMvcHJveGllcy8ke3Byb3ZpZGVyTmFtZX0vaGVhbHRoY2hlY2tgLCB7XHJcbiAgICAgIHRpbWVvdXQ6IDUgKiAxMDAwLFxyXG4gICAgfSlcclxuICAgIC5qc29uPFJlY29yZDxzdHJpbmcsIG51bWJlcj4+KClcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHNlbGVjdFByb3h5SW5Hcm91cEFQSSA9IChncm91cE5hbWU6IHN0cmluZywgcHJveHlOYW1lOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCByZXF1ZXN0ID0gdXNlUmVxdWVzdCgpXHJcblxyXG4gIHJldHVybiByZXF1ZXN0LnB1dChgcHJveGllcy8ke2dyb3VwTmFtZX1gLCB7XHJcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIG5hbWU6IHByb3h5TmFtZSxcclxuICAgIH0pLFxyXG4gIH0pXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBwcm94eUxhdGVuY3lUZXN0QVBJID0gKFxyXG4gIHByb3h5TmFtZTogc3RyaW5nLFxyXG4gIHByb3ZpZGVyOiBzdHJpbmcsXHJcbiAgdXJsOiBzdHJpbmcsXHJcbiAgdGltZW91dDogbnVtYmVyLFxyXG4pID0+IHtcclxuICBjb25zdCByZXF1ZXN0ID0gdXNlUmVxdWVzdCgpXHJcblxyXG4gIGlmIChwcm92aWRlciAhPT0gJycpIHtcclxuICAgIHJldHVybiBwcm94eVByb3ZpZGVySGVhbHRoQ2hlY2tBUEkocHJvdmlkZXIpLnRoZW4oKGxhdGVuY3lNYXApID0+ICh7XHJcbiAgICAgIGRlbGF5OiBsYXRlbmN5TWFwW3Byb3h5TmFtZV0sXHJcbiAgICB9KSlcclxuICB9XHJcblxyXG4gIHJldHVybiByZXF1ZXN0XHJcbiAgICAuZ2V0KGBwcm94aWVzLyR7cHJveHlOYW1lfS9kZWxheWAsIHtcclxuICAgICAgc2VhcmNoUGFyYW1zOiB7XHJcbiAgICAgICAgdXJsLFxyXG4gICAgICAgIHRpbWVvdXQsXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gICAgLmpzb248eyBkZWxheTogbnVtYmVyIH0+KClcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHByb3h5R3JvdXBMYXRlbmN5VGVzdEFQSSA9IChcclxuICBncm91cE5hbWU6IHN0cmluZyxcclxuICB1cmw6IHN0cmluZyxcclxuICB0aW1lb3V0OiBudW1iZXIsXHJcbikgPT4ge1xyXG4gIGNvbnN0IHJlcXVlc3QgPSB1c2VSZXF1ZXN0KClcclxuXHJcbiAgcmV0dXJuIHJlcXVlc3RcclxuICAgIC5nZXQoYGdyb3VwLyR7Z3JvdXBOYW1lfS9kZWxheWAsIHtcclxuICAgICAgc2VhcmNoUGFyYW1zOiB7XHJcbiAgICAgICAgdXJsLFxyXG4gICAgICAgIHRpbWVvdXQsXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gICAgLmpzb248UmVjb3JkPHN0cmluZywgbnVtYmVyPj4oKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZmV0Y2hSdWxlc0FQSSA9ICgpID0+IHtcclxuICBjb25zdCByZXF1ZXN0ID0gdXNlUmVxdWVzdCgpXHJcblxyXG4gIHJldHVybiByZXF1ZXN0LmdldCgncnVsZXMnKS5qc29uPHsgcnVsZXM6IFJlY29yZDxzdHJpbmcsIFJ1bGU+IH0+KClcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGZldGNoUnVsZVByb3ZpZGVyc0FQSSA9ICgpID0+IHtcclxuICBjb25zdCByZXF1ZXN0ID0gdXNlUmVxdWVzdCgpXHJcblxyXG4gIHJldHVybiByZXF1ZXN0XHJcbiAgICAuZ2V0KCdwcm92aWRlcnMvcnVsZXMnKVxyXG4gICAgLmpzb248eyBwcm92aWRlcnM6IFJlY29yZDxzdHJpbmcsIFJ1bGVQcm92aWRlcj4gfT4oKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgdXBkYXRlUnVsZVByb3ZpZGVyQVBJID0gKHByb3ZpZGVyTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgY29uc3QgcmVxdWVzdCA9IHVzZVJlcXVlc3QoKVxyXG5cclxuICByZXR1cm4gcmVxdWVzdC5wdXQoYHByb3ZpZGVycy9ydWxlcy8ke3Byb3ZpZGVyTmFtZX1gKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgaXNVcGRhdGVBdmFpbGFibGVBUEkgPSBhc3luYyAodmVyc2lvblJlc3BvbnNlOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCBtYXRjaCA9IC8oYWxwaGF8YmV0YXxtZXRhKS0/KFxcdyspLy5leGVjKHZlcnNpb25SZXNwb25zZSlcclxuXHJcbiAgaWYgKCFtYXRjaCkge1xyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG5cclxuICBjb25zdCBjaGFubmVsID0gbWF0Y2hbMV0sXHJcbiAgICB2ZXJzaW9uID0gbWF0Y2hbMl1cclxuXHJcbiAgaWYgKGNoYW5uZWwgPT09ICdtZXRhJykge1xyXG4gICAgY29uc3QgeyBhc3NldHMgfSA9IGF3YWl0IGt5XHJcbiAgICAgIC5nZXQoJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvTWV0YUN1YmVYL0NsYXNoLk1ldGEvcmVsZWFzZXMvbGF0ZXN0JylcclxuICAgICAgLmpzb248e1xyXG4gICAgICAgIGFzc2V0czoge1xyXG4gICAgICAgICAgbmFtZTogc3RyaW5nXHJcbiAgICAgICAgfVtdXHJcbiAgICAgIH0+KClcclxuXHJcbiAgICBjb25zdCBhbHJlYWR5TGF0ZXN0ID0gYXNzZXRzLnNvbWUoKHsgbmFtZSB9KSA9PiBuYW1lLmluY2x1ZGVzKHZlcnNpb24pKVxyXG5cclxuICAgIHJldHVybiAhYWxyZWFkeUxhdGVzdFxyXG4gIH1cclxuXHJcbiAgaWYgKGNoYW5uZWwgPT09ICdhbHBoYScpIHtcclxuICAgIGNvbnN0IHsgYXNzZXRzIH0gPSBhd2FpdCBreVxyXG4gICAgICAuZ2V0KFxyXG4gICAgICAgICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL01ldGFDdWJlWC9DbGFzaC5NZXRhL3JlbGVhc2VzL3RhZ3MvUHJlcmVsZWFzZS1BbHBoYScsXHJcbiAgICAgIClcclxuICAgICAgLmpzb248e1xyXG4gICAgICAgIGFzc2V0czoge1xyXG4gICAgICAgICAgbmFtZTogc3RyaW5nXHJcbiAgICAgICAgfVtdXHJcbiAgICAgIH0+KClcclxuXHJcbiAgICBjb25zdCBhbHJlYWR5TGF0ZXN0ID0gYXNzZXRzLnNvbWUoKHsgbmFtZSB9KSA9PiBuYW1lLmluY2x1ZGVzKHZlcnNpb24pKVxyXG5cclxuICAgIHJldHVybiAhYWxyZWFkeUxhdGVzdFxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZhbHNlXHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVE7QUFDZixTQUEwQixvQkFBb0I7QUFDOUMsU0FBUyxhQUFhO0FBQ3RCLFNBQVMsa0JBQWtCO0FBVXBCLGFBQU0seUJBQXlCLE1BQU07QUFDMUMsUUFBTSxVQUFVLFdBQVc7QUFFM0IsU0FBTyxRQUFRLE9BQU8sYUFBYTtBQUNyQztBQUVPLGFBQU0sMkJBQTJCLENBQUMsT0FBZTtBQUN0RCxRQUFNLFVBQVUsV0FBVztBQUUzQixTQUFPLFFBQVEsT0FBTyxlQUFlLEVBQUUsRUFBRTtBQUMzQztBQUVPLGFBQU0sQ0FBQyxxQkFBcUIsc0JBQXNCLElBQUksYUFBYSxLQUFLO0FBQ3hFLGFBQU0sQ0FBQyxzQkFBc0IsdUJBQXVCLElBQ3pELGFBQWEsS0FBSztBQUNiLGFBQU0sQ0FBQyxvQkFBb0IscUJBQXFCLElBQUksYUFBYSxLQUFLO0FBQ3RFLGFBQU0sQ0FBQyxrQkFBa0IsbUJBQW1CLElBQUksYUFBYSxLQUFLO0FBQ2xFLGFBQU0sQ0FBQyxtQkFBbUIsb0JBQW9CLElBQUksYUFBYSxLQUFLO0FBRXBFLGFBQU0sc0JBQXNCLFlBQVk7QUFDN0MsUUFBTSxVQUFVLFdBQVc7QUFDM0IseUJBQXVCLElBQUk7QUFDM0IsTUFBSTtBQUNGLFVBQU0s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
|