Файловый менеджер - Редактировать - /home/jogoso94/public_html/static/img/logo/simon_master.zip
�азад
PK �ZAiE� sw.jsnu �[��� 'use strict';const OFFLINE_DATA_FILE="offline.json";const CACHE_NAME_PREFIX="c3offline";const BROADCASTCHANNEL_NAME="offline";const CONSOLE_PREFIX="[SW] ";const LAZYLOAD_KEYNAME="";const broadcastChannel=typeof BroadcastChannel==="undefined"?null:new BroadcastChannel(BROADCASTCHANNEL_NAME); class PromiseThrottle{constructor(maxParallel){this._maxParallel=maxParallel;this._queue=[];this._activeCount=0}Add(func){return new Promise((resolve,reject)=>{this._queue.push({func,resolve,reject});this._MaybeStartNext()})}async _MaybeStartNext(){if(!this._queue.length||this._activeCount>=this._maxParallel)return;this._activeCount++;const job=this._queue.shift();try{const result=await job.func();job.resolve(result)}catch(err){job.reject(err)}this._activeCount--;this._MaybeStartNext()}} const networkThrottle=new PromiseThrottle(20);function PostBroadcastMessage(o){if(!broadcastChannel)return;setTimeout(()=>broadcastChannel.postMessage(o),3E3)}function Broadcast(type){PostBroadcastMessage({"type":type})}function BroadcastDownloadingUpdate(version){PostBroadcastMessage({"type":"downloading-update","version":version})}function BroadcastUpdateReady(version){PostBroadcastMessage({"type":"update-ready","version":version})} function IsUrlInLazyLoadList(url,lazyLoadList){if(!lazyLoadList)return false;try{for(const lazyLoadRegex of lazyLoadList)if((new RegExp(lazyLoadRegex)).test(url))return true}catch(err){console.error(CONSOLE_PREFIX+"Error matching in lazy-load list: ",err)}return false}function WriteLazyLoadListToStorage(lazyLoadList){if(typeof localforage==="undefined")return Promise.resolve();else return localforage.setItem(LAZYLOAD_KEYNAME,lazyLoadList)} function ReadLazyLoadListFromStorage(){if(typeof localforage==="undefined")return Promise.resolve([]);else return localforage.getItem(LAZYLOAD_KEYNAME)}function GetCacheBaseName(){return CACHE_NAME_PREFIX+"-"+self.registration.scope}function GetCacheVersionName(version){return GetCacheBaseName()+"-v"+version}async function GetAvailableCacheNames(){const cacheNames=await caches.keys();const cacheBaseName=GetCacheBaseName();return cacheNames.filter(n=>n.startsWith(cacheBaseName))} async function IsUpdatePending(){const availableCacheNames=await GetAvailableCacheNames();return availableCacheNames.length>=2}async function GetMainPageUrl(){const allClients=await clients.matchAll({includeUncontrolled:true,type:"window"});for(const c of allClients){let url=c.url;if(url.startsWith(self.registration.scope))url=url.substring(self.registration.scope.length);if(url&&url!=="/"){if(url.startsWith("?"))url="/"+url;return url}}return""} function fetchWithBypass(request,bypassCache){if(typeof request==="string")request=new Request(request);if(bypassCache)return fetch(request.url,{headers:request.headers,mode:request.mode,credentials:request.credentials,redirect:request.redirect,cache:"no-store"});else return fetch(request)} async function CreateCacheFromFileList(cacheName,fileList,bypassCache){const responses=await Promise.all(fileList.map(url=>networkThrottle.Add(()=>fetchWithBypass(url,bypassCache))));let allOk=true;for(const response of responses)if(!response.ok){allOk=false;console.error(CONSOLE_PREFIX+"Error fetching '"+response.url+"' ("+response.status+" "+response.statusText+")")}if(!allOk)throw new Error("not all resources were fetched successfully");const cache=await caches.open(cacheName);try{return await Promise.all(responses.map((response, i)=>cache.put(fileList[i],response)))}catch(err){console.error(CONSOLE_PREFIX+"Error writing cache entries: ",err);caches.delete(cacheName);throw err;}} async function UpdateCheck(isFirst){try{const response=await fetchWithBypass(OFFLINE_DATA_FILE,true);if(!response.ok)throw new Error(OFFLINE_DATA_FILE+" responded with "+response.status+" "+response.statusText);const data=await response.json();const version=data.version;const fileList=data.fileList;const lazyLoadList=data.lazyLoad;const currentCacheName=GetCacheVersionName(version);const cacheExists=await caches.has(currentCacheName);if(cacheExists){const isUpdatePending=await IsUpdatePending();if(isUpdatePending){console.log(CONSOLE_PREFIX+ "Update pending");Broadcast("update-pending")}else{console.log(CONSOLE_PREFIX+"Up to date");Broadcast("up-to-date")}return}const mainPageUrl=await GetMainPageUrl();fileList.unshift("./");if(mainPageUrl&&fileList.indexOf(mainPageUrl)===-1)fileList.unshift(mainPageUrl);console.log(CONSOLE_PREFIX+"Caching "+fileList.length+" files for offline use");if(isFirst)Broadcast("downloading");else BroadcastDownloadingUpdate(version);if(lazyLoadList)await WriteLazyLoadListToStorage(lazyLoadList);await CreateCacheFromFileList(currentCacheName, fileList,!isFirst);const isUpdatePending=await IsUpdatePending();if(isUpdatePending){console.log(CONSOLE_PREFIX+"All resources saved, update ready");BroadcastUpdateReady(version)}else{console.log(CONSOLE_PREFIX+"All resources saved, offline support ready");Broadcast("offline-ready")}}catch(err){console.warn(CONSOLE_PREFIX+"Update check failed: ",err)}}self.addEventListener("install",event=>{event.waitUntil(UpdateCheck(true).catch(()=>null))}); async function GetCacheNameToUse(availableCacheNames,doUpdateCheck){if(availableCacheNames.length===1||!doUpdateCheck)return availableCacheNames[0];const allClients=await clients.matchAll();if(allClients.length>1)return availableCacheNames[0];const latestCacheName=availableCacheNames[availableCacheNames.length-1];console.log(CONSOLE_PREFIX+"Updating to new version");await Promise.all(availableCacheNames.slice(0,-1).map(c=>caches.delete(c)));return latestCacheName} async function HandleFetch(event,doUpdateCheck){const availableCacheNames=await GetAvailableCacheNames();if(!availableCacheNames.length)return fetch(event.request);const useCacheName=await GetCacheNameToUse(availableCacheNames,doUpdateCheck);const cache=await caches.open(useCacheName);const cachedResponse=await cache.match(event.request);if(cachedResponse)return cachedResponse;const result=await Promise.all([fetch(event.request),ReadLazyLoadListFromStorage()]);const fetchResponse=result[0];const lazyLoadList= result[1];if(IsUrlInLazyLoadList(event.request.url,lazyLoadList))try{await cache.put(event.request,fetchResponse.clone())}catch(err){console.warn(CONSOLE_PREFIX+"Error caching '"+event.request.url+"': ",err)}return fetchResponse} self.addEventListener("fetch",event=>{if((new URL(event.request.url)).origin!==location.origin)return;const doUpdateCheck=event.request.mode==="navigate";const responsePromise=HandleFetch(event,doUpdateCheck);if(doUpdateCheck)event.waitUntil(responsePromise.then(()=>UpdateCheck(false)));event.respondWith(responsePromise)}); PK �Z&:��a a style.cssnu �[��� html, body { padding: 0; margin: 0; overflow: hidden; height: 100%; } body { background: #000000; color: white; } html, body, canvas { touch-action-delay: none; touch-action: none; } canvas, .c3htmlwrap { position: absolute; } .c3htmlwrap { contain: strict; } .c3overlay { pointer-events: none; } .c3htmlwrap > * { pointer-events: auto; } /* HACK - work around elements being selectable only in iOS WKWebView for some reason */ html[ioswebview] .c3htmlwrap, html[ioswebview] canvas { -webkit-user-select: none; user-select: none; } html[ioswebview] .c3htmlwrap > * { -webkit-user-select: auto; user-select: auto; } #notSupportedWrap { margin: 2em auto 1em auto; width: 75%; max-width: 45em; border: 2px solid #aaa; border-radius: 1em; padding: 2em; background-color: #f0f0f0; font-family: "Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif; color: black; } #notSupportedTitle { font-size: 1.8em; } .notSupportedMessage { font-size: 1.2em; } .notSupportedMessage em { color: #888; } /* bbcode styles */ .bbCodeH1 { font-size: 2em; font-weight: bold; } .bbCodeH2 { font-size: 1.5em; font-weight: bold; } .bbCodeH3 { font-size: 1.25em; font-weight: bold; } .bbCodeH4 { font-size: 1.1em; font-weight: bold; } .bbCodeItem::before { content: " • "; } /* For text icons converted to HTML: size the height to the line height preserving the aspect ratio. Also add position: relative as that allows just adding a 'top' style for the iconoffsety style. */ .c3-text-icon { height: 1em; width: auto; position: relative; } /* screen reader text */ .c3-screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); }PK �Z����P P images/shared-0-sheet2.webpnu �[��� RIFFH WEBPVP8L; /?���m#�7x<��A(h�F���s����(�$)ٻ/��?P��=�q#I��U]�=f~�A� �d�"����c� o�p����F>C�O��QN�8P>J*I���7��A�1��&�у���=bS�PyP����D� �9D_���D*D Q@@ R�H��\�D���� � bA@� ��{ �3�u���G8�Y�2�w2H�m۴��^��ضm�i۶�ۻ����ms���O��{����� o�Jl}��?7,>{�2��>�`�QG���g��f�(ؙ��[X��>����A>l:�C���\���(ȁy� c߀f��[�{ �lȕd��V|�1zoF^Ϸ����L�l� �7������JŎB>��)$�Q�x�5ꉴM�fGz�m��O�G�����&Pc�0�1Wu��c�<C�� Q?�����$�n5��q���)���~{T����Qw��ߤ��A��Z��b���u�Lg�k�[Hܗ�R� ox<~"O�_3��A��.� ~�x8G6?q�EB�t��˭�O�#˿��� PK �Z�Ny�' �' images/button_colors-sheet0.webpnu �[��� RIFF�' WEBPVP8L�' /����$�mS3� �:�0�\N ���� ]N��U�#�Z�[o��f�]̴���ж7m��/��b�zFe��2q�WN�m�m:������ع�� ����}�(�m�$�&�yr�$�z&[�/a\r~��Z��M�Ֆ��z�Enɢ�c�LrY�- 3�E�')p=)��� ���/\�10���F��VA�.H^�*F�t쪣��Qs��[��h�];���v�Ͷ]�WDm!�7-ܤ�7��� eU�Y�2�B>��1��sΎ�x�^�#�9k��MQ���9s��m�v3(O�9��q�l�'�(���7��\NJ�m��4�ςEv��-��2 ���R����0���m#EΉ^q��g�V} ��yFV=C���O�[�v�Cՙ����4$�'709Z���Fj�Lu�d�d���8Kw ���]�fg$IV�D��}?�B�R��'�F�U ��(M�䦔�bSo�v!�ꝁ�f�7P@i��B�0�@"�J��{�, �pn�5��bS&duح����=�Z���h�8j*Y�Q�`�|w�N�n0����e�uR�)����G�,�4���P�x�r�&"�*j��$I>h1YOړ�t�$�^ۣ%F}i:��ߥ���l$Խ�����,�zB=\� d�D�z�n�V�<!��*{��N�o�Wi+������)�Ӿ�8Wk�4��DN���E�;��Pْ�K'���mNQ7�i����<������8I`y]�v-�/����bvmg�\���Ly,��&��9��.��S(���#���a'�F- c�ү�/c�3Q�L�1�(��Ӹ��<�'���NO�9n�B^���O&