jekyll-zeta 0.10.5.3 → 0.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/_includes/encrypt_page.js +1 -4
- data/_includes/getPostData.js +1 -4
- data/_includes/getmapdata.js +16 -18
- data/_includes/heatmap.html +4 -3
- data/_includes/heatmap.js +1 -4
- data/_includes/heatmap_svg.js +1 -4
- data/_includes/js_source/getmapdata.js +40 -21
- data/_includes/lovemap_layout.html +8 -9
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cda1db53dcb0beb2a0684bafe4c8bca93e0673ee99200f035fa292898dc901bf
|
4
|
+
data.tar.gz: 9d4b59ff6e701e6893de47f76c3d83f324af56839607c4037e201ac700e20b0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bb3e7e0889220157107a739ca2c860d41ff27d6c5fa7ee6152536cd9ddd141b2d6d1b01e9948b1d8790854558bb19866f6c0474417d2081b7de3d98727b0a54
|
7
|
+
data.tar.gz: 9fc338a7629df8097778110979c46a3362ccaaa8e047c87bbeddaa115f3b5d452bfb0088ff81e995a632b8d614cb02f51f8f4a2bce0b9170f403a46d6ec92af0
|
data/_includes/encrypt_page.js
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
|
4
|
-
/*********** encrypt_page.js ***********/
|
3
|
+
/*********** encrypt_page.js [1fd1f63dac] ***********/
|
5
4
|
|
6
5
|
function _InitEnc(e,t,n,c,o){!function(){const a=crypto.subtle,r=e,i=t.substring(3),d=base64js.decode(i);d.subarray(0,12),d.subarray(12);async function l(e,t,n){if(e.length<8)throw n&&(n.count=e.length),"err";let c=0
|
7
6
|
;for(let t=0;t<4;t++)c|=(e[t]^e[t+4]^t)<<8*(3-t);if(n&&(n.count=c),e.length<c)return;let o=e.slice(4,20),r=e.slice(20,c);var i=await a.importKey("raw",t,{name:"AES-CTR"},!1,["decrypt"]),d={name:"AES-CTR",counter:o,length:64};try{
|
@@ -16,5 +15,3 @@ s(document.getElementById("passwordinput").value)},document.getElementById("Encr
|
|
16
15
|
document.getElementById("decryptContent").innerHTML=":)",m();const e=window._after_enc_fun;e&&"function"==typeof e&&e()},document.getElementById("ClearBtn1").onclick=function(){localStorage.clear(),document.getElementById("passwordinput").value=""},
|
17
16
|
document.getElementById("ClearBtn2").onclick=function(){localStorage.clear()};const u=o?function(){}:function(){var e=r,t=localStorage.getItem(e);return t?base64js.decode(t):null},y=o?function(e){}:function(e){
|
18
17
|
var t=r,n=new Uint8Array(e),c=base64js.encode(n);return localStorage.setItem(t,c)},m=o?function(){}:function(){var e=r;localStorage.removeItem(e)};var w=u();w&&s(w,!0)}()}
|
19
|
-
|
20
|
-
|
data/_includes/getPostData.js
CHANGED
@@ -1,12 +1,9 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
|
4
|
-
/*********** getPostData.js ***********/
|
3
|
+
/*********** getPostData.js [ff49082e5f] ***********/
|
5
4
|
|
6
5
|
function hm_getPostData(e,t){e=(""+e).substring(0,4);let n=t.split("/");n.pop();const r=n.join("/");var l=window.__GDATA__;l||(l={},window.__GDATA__);let a=window._y_queue||[];function i(e){if(l[e=""+e])return l[e]
|
7
6
|
;let t="_singleyearFlg"+e,n="_singleyearQueue"+e;if(1==l[t]){let e=l[n];return e||(e=[],l[n]=e),new Promise((t=>{e.push(t)}))}return l[t]=1,fetch(`${r}/${e}.json`).then((e=>e.json())).then((r=>{l[t]=0,l[e]=r;let a=l[n]
|
8
7
|
;return a&&a.length&&(a.forEach((e=>{e(r)})),a.length=0,l[n]=void 0),r})).catch((e=>null))}return window._y_queue=a,function(){let n=""+e,r=""+(Number(n)-1);return(l._allYear?l._allYear:1==window._isFetchAllYearData?new Promise((e=>{a.push(e)
|
9
8
|
})):(window._isFetchAllYearData=1,fetch(t).then((e=>e.json())).then((e=>(window._isFetchAllYearData=0,a.length&&(a.forEach((t=>{t(e)})),a.length=0),l._allYear=e,e))))).then((e=>{let t=e,l=[];return t[n]&&l.push(i(n)),t[r]&&l.push(i(r)),
|
10
9
|
Promise.all(l).then((e=>{let t={},n=e[0],r=e[1];return n&&n.year&&(t[n.year]=n),r&&r.year&&(t[r.year]=r),Promise.resolve(t)}))}))}()}
|
11
|
-
|
12
|
-
|
data/_includes/getmapdata.js
CHANGED
@@ -1,21 +1,19 @@
|
|
1
1
|
|
2
2
|
|
3
|
+
/*********** getmapdata.js [5faaaf3558] ***********/
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
;return
|
8
|
-
;
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
;
|
14
|
-
|
15
|
-
|
16
|
-
;
|
17
|
-
let t=document.
|
18
|
-
|
19
|
-
window._after_enc_fun=function(){document.getElementById("loveiContainer").innerHTML=""}}();
|
20
|
-
|
21
|
-
|
5
|
+
!function(){var t=100;function e(t){const e=t.split("-").map(Number);if(3!==e.length)throw new Error(`Invalid date format: ${t}`);const[n,r,l]=e;return new Date(n,r-1,l)}function n(t,e){if(t){const n=t.split("-")
|
6
|
+
;if(3==n.length)return`${n[0]}-${n[1].padStart(2,"0")}-${n[2].padStart(2,"0")}`;if(2==n.length)return`${e}-${n[0].padStart(2,"0")}-${n[1].padStart(2,"0")}`}return t}function r(t){let e=t.getMonth()+1,n=t.getDate()
|
7
|
+
;return`${t.getFullYear()}-${e<10?"0"+e:e}-${n<10?"0"+n:n}`}function l(t,i,a){if(!t)return null;let o=t.trim();if(!o)return null;if(i&&function(t,e){if(t&&t.startsWith("#")){let n=t.split(" ");if(n.length>=2){let r=n[0].substring(1)
|
8
|
+
;if(r)return e[r]=t.substring(r.length+2).trim(),1}}return 0}(o,i))return null;var u=o.split(" "),s=u[0];if(s=s.replace("~","~"),i&&s.indexOf("~")>0){let t=s.split("~"),i=t[0],o=t[1],f=e(n(i,a));if(!f||isNaN(f))return;let c=7;if(o){let t=e(n(o,a))
|
9
|
+
;t&&!isNaN(t)&&(c=Math.floor((t.getTime()-f.getTime())/864e5)+1)}else c=Math.floor((Date.now()-f.getTime())/864e5)+1,c>7&&(c=7);const d=u.slice(1).join(" ");let g=[];const p=f.getTime();for(let t=0;t<c;t++){
|
10
|
+
const e=l(r(new Date(p+864e5*t))+" "+d,null,a);e&&g.push(e)}return g.length?g:null}let f="";if(!s)return null;{let t=s.split("-"),e=0,n=0,r=0;if(a&&2==t.length)e=a,n=t[0],r=t[1];else{if(3!=t.length)return;e=t[0],n=t[1],r=t[2]}
|
11
|
+
let l=Number(e),i=Number(n),o=Number(n);if(isNaN(l)||isNaN(o)||isNaN(i)||l<1900||l>2100||i<1||i>12||o<1||o>31)return null;f=e+"-"+n.padStart(2,"0")+"-"+r.padStart(2,"0")}if(!f)return null;var c="";let d;if(u.length>1){c=u.slice(1).join(" ")
|
12
|
+
;const t=/#[0-9a-fA-F]{6}/;let e=t.exec(c);e&&e.length&&(d=e[0],c=c.replace(t,""))}return{date:f,title:c,color:d}}function i(t,e){if(!e)return;let n=e.date.substring(0,4),r=e.date.substring(5,7),l=t.allYear[n];t.allYear[n]=l?l+1:1;let i=t[n]
|
13
|
+
;i||(i={},t[n]=i);let a=i[r];a||(a=[],i[r]=a),a.push(e)}function a(e,n){let r={},a={allYear:r},o=0,u=new Date,s=`${u.getFullYear()-1}-${(u.getMonth()+1).toString().padStart(2,"0")}-${u.getDate().toString().padStart(2,"0")}`,f=null
|
14
|
+
;if(e.split("\n").forEach((function(t,e){if(0==e)return;let n=l(t,a,f);n&&Array.isArray(n)?n.forEach((t=>{i(a,t),t&&(f=t.date.substring(0,4),t.date>=s&&o++)})):(i(a,n),n&&(f=n.date.substring(0,4),n.date>=s&&o++))})),a.title){
|
15
|
+
let t=document.createElement("div");t.className="custom-map-title",t.innerText=a.title||"",n.parentNode.insertBefore(t,n)}let c=Object.keys(r).sort().reverse(),d=a.recent,g=!0;g=d?"1"==d:o&&c.length>1,
|
16
|
+
g&&create_heatmap_lv("lmpRecent365"+t++,"",a,"Last 1Y",o,n);for(let e=0;e<c.length;e++){let r=c[e];create_heatmap_lv("lmp"+r+t++,r,a,void 0,void 0,n)}n.style.display="none"}async function o(){let t=document.querySelectorAll("pre > code")
|
17
|
+
;if(t&&0!=t.length&&t.length>0)for(let n=0;n<t.length;n++){const r=t[n];var e=r.textContent;if(!e.startsWith("#mapdata"))return;a(e,r.parentNode.parentNode.parentNode)}}o(),window._after_dec_fun=function(){
|
18
|
+
let t=document.getElementById("loveiContainer");if(!t){let e=document.getElementById("decryptContent");if(!e)return;t=document.createElement("div"),t.id="loveiContainer",e.insertBefore(t,e.firstChild)}o()},window._after_enc_fun=function(){
|
19
|
+
document.getElementById("loveiContainer").innerHTML=""}}();
|
data/_includes/heatmap.html
CHANGED
@@ -23,16 +23,17 @@
|
|
23
23
|
|
24
24
|
</div>
|
25
25
|
{%- if datemapidOnPage == 0 -%}
|
26
|
-
|
27
26
|
{% comment %}
|
28
27
|
只加载一次
|
29
28
|
{% endcomment %}
|
30
29
|
<script >
|
30
|
+
|
31
31
|
|
32
32
|
function create_heatmap(heatmapid,endYear){
|
33
|
-
|
34
|
-
{%- include heatmap_svg.js -%}
|
33
|
+
|
35
34
|
|
35
|
+
{% include getPostData.js %}
|
36
|
+
{% include heatmap_svg.js %}
|
36
37
|
|
37
38
|
/**************************************/
|
38
39
|
/***************Create Map***********************/
|
data/_includes/heatmap.js
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
|
4
|
-
/*********** heatmap.js ***********/
|
3
|
+
/*********** heatmap.js [28cffbc911] ***********/
|
5
4
|
|
6
5
|
function __filldata(e,t,n,a,l,r,c,s){function o(e){let t=new Date(y-36e5*($-1-e)*24),n=t.getMonth()+1,a=t.getDate();return`${t.getFullYear()}-${n<10?"0"+n:n}-${a<10?"0"+a:a}`}const i=parseInt(n),h=s&&s.color;var m=s&&s.beginDate
|
7
6
|
;m&&10!=m.length&&(beginDateArr=m.split("-"),3==beginDateArr.length&&(m=`${beginDateArr[0]}-${beginDateArr[1].padStart(2,"0")}-${beginDateArr[2].padStart(2,"0")}`));var d=window._G_DATA;d||(d={},window._G_DATA=d);const u=function(e){
|
@@ -25,5 +24,3 @@ n.appendChild(r)})),d.appendChild(t)}}}function p(){let e=a;for((!e||e<=0)&&(e=8
|
|
25
24
|
n.style.gridColumnEnd="span 4"}}const m=document.createElement("div");m.className="heatmap-week";const d=r.split(" ");for(let e=0;e<d.length;e++){const t=(e+i)%7;let n=document.createElement("div");n.className="heatmap-week-cell",
|
26
25
|
n.innerHTML=e%2?`<span>${d[t]}</span>`:"",m.appendChild(n)}n.appendChild(m);const u=document.createElement("div");u.className="heatmap-day",u.id=w;for(let e=0;e<53;e++)for(let t=0;t<7&&!(t>s&&52==e);t++){let e=document.createElement("span")
|
27
26
|
;e.classList="heatmap-day-cell hm-check-nodata",u.appendChild(e)}n.appendChild(u),t.append(n)}()}
|
28
|
-
|
29
|
-
|
data/_includes/heatmap_svg.js
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
|
4
|
-
/*********** heatmap_svg.js ***********/
|
3
|
+
/*********** heatmap_svg.js [0a20da5738] ***********/
|
5
4
|
|
6
5
|
function createSVGMap(t,e,n,r,i){const s=n.split(" "),o=r.split(" "),l=i||0;t?4==t.length&&(t=`${t}-12-31`):t=`${(new Date).getFullYear()}-12-31`;let u=new Date(v(new Date(t))),a=e?new Date(v(new Date(e))):e
|
7
6
|
;const d="http://www.w3.org/2000/svg",c=30,b=12,f="MP-"+Math.random().toString(16).substring(2),h=f+"days",m=f+"tip",A=u.getDay(),g=u.getTime(),p=364+(7+A-l)%7;var w=function(t){const e=new Date(t)
|
@@ -33,5 +32,3 @@ o.setAttribute("class","svg-day-1"),o.setAttribute("fill",1==a?d+"77":2==a?d+"aa
|
|
33
32
|
o.setAttribute("stroke",""),o.setAttribute("stroke-width",""),B(o,-1)}}else{o.onmouseenter=function(){o.setAttribute("stroke","#000000"),o.setAttribute("stroke-width","1"),B(o,s,u)},o.onclick=o.onmouseenter,o.onmouseleave=function(){
|
34
33
|
o.setAttribute("stroke",""),o.setAttribute("stroke-width",""),B(o,-1)};let t=o.dataset.ymd;if(t){let e=t.substring(5,7),n=Number(e)%2;o.setAttribute("fill",n?"#edebf0":"#edebf0aa")}else o.setAttribute("fill","#efefef")}}}!function(t){let e=t.length
|
35
34
|
;for(;0!=e;){let n=Math.floor(Math.random()*e);e--,[t[e],t[n]]=[t[n],t[e]]}}(s);var l=0;!function t(){if(l<s.length){const n=19;for(var e=0;e++<n;){if(l>=s.length)return;o(s[l++])}requestAnimationFrame(t)}}()}}}
|
36
|
-
|
37
|
-
|
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
(function () {
|
2
|
+
;(function () {
|
3
3
|
var g_id = 100;
|
4
4
|
|
5
5
|
function ymd2Date(ymd) {
|
@@ -11,10 +11,15 @@
|
|
11
11
|
return new Date(year, month - 1, day); // month 从 0 开始
|
12
12
|
};
|
13
13
|
|
14
|
-
function normalizeYmd(ymd){
|
14
|
+
function normalizeYmd(ymd,YearDefault){
|
15
15
|
if (ymd) {
|
16
16
|
const arr = ymd.split('-')
|
17
|
-
|
17
|
+
if(arr.length == 3){
|
18
|
+
return `${arr[0]}-${arr[1].padStart(2,'0')}-${arr[2].padStart(2,'0')}`
|
19
|
+
}else if(arr.length == 2){
|
20
|
+
return `${YearDefault}-${arr[0].padStart(2,'0')}-${arr[1].padStart(2,'0')}`
|
21
|
+
}
|
22
|
+
|
18
23
|
}
|
19
24
|
|
20
25
|
return ymd
|
@@ -45,7 +50,7 @@
|
|
45
50
|
return `${t.getFullYear()}-${m < 10 ? "0" + m : m}-${d < 10 ? "0" + d : d}`;
|
46
51
|
}
|
47
52
|
/// 2025-01-01 描述,日期格式yyyy-mm-dd,空格后跟上 描述
|
48
|
-
function getDataFromSignleLine(str0,gData) {
|
53
|
+
function getDataFromSignleLine(str0,gData,YearDefault) {
|
49
54
|
if(!str0) return null
|
50
55
|
let str = str0.trim()
|
51
56
|
if (!str) return null
|
@@ -60,14 +65,14 @@
|
|
60
65
|
let arrRg = date0.split('~')
|
61
66
|
let beginYmd = arrRg[0]
|
62
67
|
let endYmd = arrRg[1]
|
63
|
-
let dateBegin = ymd2Date(normalizeYmd(beginYmd))
|
68
|
+
let dateBegin = ymd2Date(normalizeYmd(beginYmd,YearDefault))
|
64
69
|
if (!dateBegin || isNaN(dateBegin)) {
|
65
70
|
|
66
71
|
return
|
67
72
|
}
|
68
73
|
let rangCount = 7
|
69
74
|
if(endYmd){
|
70
|
-
let dend = ymd2Date(normalizeYmd(endYmd))
|
75
|
+
let dend = ymd2Date(normalizeYmd(endYmd,YearDefault))
|
71
76
|
if (dend && !isNaN(dend)) {
|
72
77
|
rangCount = Math.floor((dend.getTime() - dateBegin.getTime())/ 86400000) + 1
|
73
78
|
}
|
@@ -84,7 +89,7 @@
|
|
84
89
|
for (let i = 0; i < rangCount; i ++) {
|
85
90
|
const ymd = date2ymd(new Date(timeStampBegin + i * 86400000))
|
86
91
|
const newStr = ymd + ' ' + desc
|
87
|
-
const newEle = getDataFromSignleLine(newStr)
|
92
|
+
const newEle = getDataFromSignleLine(newStr,null,YearDefault)
|
88
93
|
if(newEle){
|
89
94
|
resultArr.push(newEle)
|
90
95
|
}
|
@@ -97,20 +102,31 @@
|
|
97
102
|
|
98
103
|
let date = ''
|
99
104
|
if (date0) {
|
100
|
-
|
101
|
-
|
102
|
-
let
|
103
|
-
let
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
105
|
+
let ymdArr = date0.split("-")
|
106
|
+
let year = 0
|
107
|
+
let month = 0
|
108
|
+
let day = 0
|
109
|
+
if(YearDefault && ymdArr.length == 2){
|
110
|
+
year = YearDefault
|
111
|
+
month = ymdArr[0]
|
112
|
+
day = ymdArr[1]
|
113
|
+
}
|
114
|
+
else if (ymdArr.length == 3) {
|
115
|
+
year = ymdArr[0]
|
116
|
+
month = ymdArr[1]
|
117
|
+
day = ymdArr[2]
|
118
|
+
|
119
|
+
}else{
|
120
|
+
return
|
121
|
+
}
|
122
|
+
|
123
|
+
let nY = Number(year)
|
124
|
+
let nM = Number(month)
|
125
|
+
let nD = Number(month)
|
126
|
+
if (isNaN(nY) || isNaN(nD) || isNaN(nM) || nY < 1900 || nY > 2100 || nM < 1 || nM > 12 || nD < 1 || nD > 31) {
|
127
|
+
return null
|
113
128
|
}
|
129
|
+
date = year + "-" + month.padStart(2, '0') + "-" + day.padStart(2, '0')
|
114
130
|
}
|
115
131
|
else {
|
116
132
|
return null
|
@@ -177,13 +193,15 @@
|
|
177
193
|
let Recent365YMD = `${nowDate.getFullYear() - 1}-${(nowDate.getMonth() + 1).toString().padStart(2, '0')}-${nowDate.getDate().toString().padStart(2, '0')}`
|
178
194
|
|
179
195
|
|
196
|
+
let YearDefault = null
|
180
197
|
strData.split("\n").forEach(function (str,idx) {
|
181
198
|
if(idx == 0) return
|
182
|
-
let item = getDataFromSignleLine(str,dataObj)
|
199
|
+
let item = getDataFromSignleLine(str,dataObj,YearDefault)
|
183
200
|
if (item && Array.isArray(item)) {
|
184
201
|
item.forEach(e=>{
|
185
202
|
fillDataObj(dataObj, e)
|
186
203
|
if (e) {
|
204
|
+
YearDefault = e.date.substring(0,4)
|
187
205
|
if (e.date >= Recent365YMD) {
|
188
206
|
Recent365Count++
|
189
207
|
}
|
@@ -192,6 +210,7 @@
|
|
192
210
|
}else{
|
193
211
|
fillDataObj(dataObj, item)
|
194
212
|
if (item) {
|
213
|
+
YearDefault = item.date.substring(0,4)
|
195
214
|
if (item.date >= Recent365YMD) {
|
196
215
|
Recent365Count++
|
197
216
|
}
|
@@ -61,18 +61,17 @@
|
|
61
61
|
|
62
62
|
|
63
63
|
<script >
|
64
|
+
// ssss {{ included_files }}
|
65
|
+
// {{ included_files }}
|
64
66
|
function create_heatmap_lv(heatmapid,endYear,dataObj,title,count,node){
|
65
67
|
|
68
|
+
{% include getPostData.js %}
|
69
|
+
{% include heatmap_svg.js %}
|
70
|
+
|
66
71
|
|
67
|
-
{%- include getPostData.js -%}
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
{%- include heatmap_svg.js %}
|
72
|
-
/*******************************/
|
73
|
-
/*******************************/
|
74
|
-
/*******************************/
|
75
72
|
|
73
|
+
/*******************************/
|
74
|
+
|
76
75
|
|
77
76
|
let container = document.createElement('div')
|
78
77
|
container.className = 'map-container'
|
@@ -133,5 +132,5 @@
|
|
133
132
|
|
134
133
|
<script>
|
135
134
|
|
136
|
-
{%- include getmapdata.js
|
135
|
+
{%- include getmapdata.js -%}
|
137
136
|
</script>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-zeta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vitock
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-04-
|
11
|
+
date: 2025-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.11.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.11.1
|
55
55
|
description:
|
56
56
|
email:
|
57
57
|
- r
|