Skip to content

Commit 3cc3d2d

Browse files
committed
Merge branch '0.4'
2 parents b76f3e2 + c9b3f91 commit 3cc3d2d

5 files changed

Lines changed: 273 additions & 25 deletions

File tree

tom_image_grid.php

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
// 1 = Plugin help is in raw HTML. Not recommended.
1818
# $plugin['allow_html_help'] = 1;
1919

20-
$plugin['version'] = '0.3';
20+
$plugin['version'] = '0.4';
2121
$plugin['author'] = 'Thomas Jund';
2222
$plugin['author_uri'] = 'http://sacripant.fr';
2323
$plugin['description'] = 'An optionnal grid display for images tab';
@@ -72,27 +72,27 @@
7272

7373
# --- BEGIN PLUGIN CODE ---
7474
if (@txpinterface == 'admin') {
75-
register_callback( 'tom_image_grid_markup', 'image_ui', 'extend_controls');
76-
register_callback( 'tom_image_grid_css', "image");
77-
register_callback( 'tom_image_grid_js', "image");
75+
register_callback( 'tom_image_grid_markup', 'image_ui', 'extend_controls');
76+
register_callback( 'tom_image_grid_css', "image");
77+
register_callback( 'tom_image_grid_js', "image");
7878
}
7979

8080
function tom_image_grid_markup()
8181
{
82-
$out = <<<HTML
82+
$out = <<<HTML
8383
8484
<form id="tom_ig_options">
8585
<label><input type="radio" name="tom_ig_option" id="tom_ig_option--grid" /><span class="tom_ig_icon-grid">Grid</span></label>
8686
<label><input type="radio" name="tom_ig_option" id="tom_ig_option--line" /><span class="tom_ig_icon-line">Line</span></label>
8787
</form>
8888
HTML;
89-
echo $out;
89+
echo $out;
9090
}
9191

9292
function tom_image_grid_css()
9393
{
94-
$sortby = gTxt('sort_by');
95-
$out = <<<CSS
94+
$sortby = gTxt('sort_by');
95+
$out = <<<CSS
9696
9797
<style type="text/css">
9898
/*
@@ -119,17 +119,18 @@ function tom_image_grid_css()
119119
.tom_ig#page-image .txp-list thead th.images_detail {
120120
display: none !important;
121121
}
122-
.tom_ig#page-image .txp-list thead th.multi-edit {
122+
.tom_ig#page-image .txp-list thead th.txp-list-col-multi-edit {
123123
margin-right: 1em;
124124
}
125-
.tom_ig#page-image .txp-list thead th.multi-edit:after {
125+
.tom_ig#page-image .txp-list thead th.txp-list-col-multi-edit:after {
126126
content: attr(title);
127+
padding-left: .33em;
127128
}
128129
129-
.tom_ig#page-image .txp-list thead th.id {
130+
.tom_ig#page-image .txp-list thead th.txp-list-col-id {
130131
margin-left: 3.6em;
131132
}
132-
.tom_ig#page-image .txp-list thead th.id:before {
133+
.tom_ig#page-image .txp-list thead th.txp-list-col-id:before {
133134
content: "Sort by";
134135
display: block;
135136
padding: inherit;
@@ -153,35 +154,36 @@ function tom_image_grid_css()
153154
margin: .66em 1em 0 0
154155
}
155156
156-
.tom_ig#page-image .txp-list td {
157+
.tom_ig#page-image .txp-list tbody td,
158+
.tom_ig#page-image .txp-list tbody th {
157159
display: block;
158160
padding: 0.16em 0.33em;
159161
text-overflow: ellipsis;
160162
overflow: hidden;
161163
white-space: nowrap;
162164
}
163165
164-
.tom_ig#page-image .txp-list td.multi-edit {
166+
.tom_ig#page-image .txp-list td.txp-list-col-multi-edit {
165167
float: right;
166168
width: auto;
167169
}
168-
.tom_ig#page-image .txp-list td.multi-edit input {
170+
.tom_ig#page-image .txp-list td.txp-list-col-multi-edit input {
169171
margin-bottom: 0;
170172
}
171173
172-
.tom_ig#page-image .txp-list td.thumbnail {
174+
.tom_ig#page-image .txp-list td.txp-list-col-thumbnail {
173175
height: 12em;
174176
}
175177
176-
.tom_ig#page-image .txp-list td.thumbnail img {
178+
.tom_ig#page-image .txp-list td.txp-list-col-thumbnail img {
177179
max-width: 100%;
178180
max-height: 100%;
179181
height: auto;
180182
width: auto;
181183
}
182184
183185
/* No thumbnail display */
184-
.tom_ig .tom_ig--noThumb {
186+
.tom_ig#page-image .txp-list td.txp-list-col-thumbnail:not(.has-thumbnail) {
185187
display: block;
186188
background-color: #eee;
187189
text-align: center;
@@ -242,7 +244,7 @@ function tom_image_grid_css()
242244
243245
</style>
244246
CSS;
245-
echo $out;
247+
echo $out;
246248
}
247249

248250
function tom_image_grid_js()
@@ -263,13 +265,9 @@ function tom_image_grid_js()
263265
/*, imagesTr = $('tr', listtables)*/
264266
, cookie = 'tom_image_grid'
265267
, cookieValue = getCookie(cookie)
266-
, noThumb = $('td.thumbnail a:not(:has(img))', listtables)
267268
;
268269
269270
270-
// Add .no-thumb class
271-
noThumb.addClass('tom_ig--noThumb')
272-
273271
// Add radios in tab
274272
imageDisplayOption.prependTo(listtables);
275273
@@ -315,9 +313,9 @@ function tom_image_grid_js()
315313
?>
316314
<!--
317315
# --- BEGIN PLUGIN HELP ---
318-
h1. tom_image_grid 0.3
316+
h1. tom_image_grid 0.4
319317

320-
p. _tom_image_grid_ is a plugin for "Textpattern 4.5.* CMS":textpattern. It allows a more compact display (as a grid) of the images list.
318+
p. _tom_image_grid_ is a plugin for Textpattern 4.6.* CMS. It allows a more compact display (as a grid) of the images list.
321319

322320
p. The plugin adds two buttons
323321
!data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKCSBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjAgMjAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8ZyBpZD0iZ3JpZCI+Cgk8Zz4KCQk8cmVjdCB4PSIzIiB5PSIzIiB3aWR0aD0iNS42MDEiIGhlaWdodD0iNS42Ii8+CgkJPHJlY3QgeD0iMyIgeT0iMTEuMzk5IiB3aWR0aD0iNS42MDEiIGhlaWdodD0iNS42MDEiLz4KCQk8cmVjdCB4PSIxMS4zOTkiIHk9IjExLjM5OSIgd2lkdGg9IjUuNjAxIiBoZWlnaHQ9IjUuNjAxIi8+CgkJPHJlY3QgeD0iMTEuMzk5IiB5PSIzIiB3aWR0aD0iNS42MDEiIGhlaWdodD0iNS42Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==! !data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKCSBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjAgMjAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8ZyBpZD0ibGluZSI+Cgk8cGF0aCBkPSJNMy44MTEsMTQuMTA3djIuODg5SDAuODQ0di0yLjg4OUgzLjgxMXogTTAuODQ0LDguNTU1djIuODg2aDIuOTY3VjguNTU1SDAuODQ0eiBNMTkuMTU1LDExLjQ0MVY4LjU1NUg2LjE2OXYyLjg4NkgxOS4xNTV6CgkJIE0xOS4xNTUsMTYuOTk2di0yLjg4OUg2LjE2OXYyLjg4OUgxOS4xNTV6IE0wLjg0NCwzdjIuODg5aDIuOTY3VjNIMC44NDR6IE0xOS4xNTUsNS44ODlWM0g2LjE2OXYyLjg4OUgxOS4xNTV6Ii8+CjwvZz4KPC9zdmc+Cg==!

tom_image_grid_v0.4.txt

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
# Name: tom_image_grid v0.4
2+
# Type: Admin plugin
3+
# An optionnal grid display for images tab
4+
# Author: Thomas Jund
5+
# URL: http://sacripant.fr
6+
# Recommended load order: 5
7+
8+
# .....................................................................
9+
# This is a plugin for Textpattern CMS - http://textpattern.com/
10+
# To install: textpattern > admin > plugins
11+
# Paste the following text into the 'Install plugin' box:
12+
# .....................................................................
13+
14+
YToxNTp7czo0OiJuYW1lIjtzOjE0OiJ0b21faW1hZ2VfZ3JpZCI7czo3OiJ2ZXJzaW9uIjtz
15+
OjM6IjAuNCI7czo4OiJyZXZpc2lvbiI7czowOiIiO3M6NjoiYXV0aG9yIjtzOjExOiJUaG9t
16+
YXMgSnVuZCI7czoxMDoiYXV0aG9yX3VyaSI7czoxOToiaHR0cDovL3NhY3JpcGFudC5mciI7
17+
czoxMToiZGVzY3JpcHRpb24iO3M6NDA6IkFuIG9wdGlvbm5hbCBncmlkIGRpc3BsYXkgZm9y
18+
IGltYWdlcyB0YWIiO3M6NToib3JkZXIiO3M6MToiNSI7czo0OiJ0eXBlIjtzOjE6IjMiO3M6
19+
NToiZmxhZ3MiO3M6MDoiIjtzOjg6InRleHRwYWNrIjtzOjA6IiI7czoxMDoibG9hZF9vcmRl
20+
ciI7czoxOiI1IjtzOjQ6ImhlbHAiO3M6MjEwNzoiPGgxPnRvbV9pbWFnZV9ncmlkIDAuNDwv
21+
aDE+Cgo8cD48ZW0+dG9tX2ltYWdlX2dyaWQ8L2VtPiBpcyBhIHBsdWdpbiBmb3IgVGV4dHBh
22+
dHRlcm4gNC42LiogPHNwYW4gY2xhc3M9ImNhcHMiPkNNUzwvc3Bhbj4uIEl0IGFsbG93cyBh
23+
IG1vcmUgY29tcGFjdCBkaXNwbGF5IChhcyBhIGdyaWQpIG9mIHRoZSBpbWFnZXMgbGlzdC48
24+
L3A+Cgo8cD5UaGUgcGx1Z2luIGFkZHMgdHdvIGJ1dHRvbnM8YnIgLz4KPGltZyBhbHQ9IiIg
25+
c3JjPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0
26+
d0lpQmxibU52WkdsdVp6MGlkWFJtTFRnaVB6NEtQQ0ZFVDBOVVdWQkZJSE4yWnlCUVZVSk1T
27+
VU1nSWkwdkwxY3pReTh2UkZSRUlGTldSeUF4TGpFdkwwVk9JaUFpYUhSMGNEb3ZMM2QzZHk1
28+
M015NXZjbWN2UjNKaGNHaHBZM012VTFaSEx6RXVNUzlFVkVRdmMzWm5NVEV1WkhSa0lqNEtQ
29+
SE4yWnlCMlpYSnphVzl1UFNJeExqRWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05
30+
eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmVHeHBibXM5SW1oMGRIQTZMeTkzZDNjdWR6TXVi
31+
M0puTHpFNU9Ua3ZlR3hwYm1zaUlIZzlJakJ3ZUNJZ2VUMGlNSEI0SWlCM2FXUjBhRDBpTWpC
32+
d2VDSUtDU0JvWldsbmFIUTlJakl3Y0hnaUlIWnBaWGRDYjNnOUlqQWdNQ0F5TUNBeU1DSWda
33+
VzVoWW14bExXSmhZMnRuY205MWJtUTlJbTVsZHlBd0lEQWdNakFnTWpBaUlIaHRiRHB6Y0dG
34+
alpUMGljSEpsYzJWeWRtVWlQZ284WnlCcFpEMGlaM0pwWkNJK0NnazhaejRLQ1FrOGNtVmpk
35+
Q0I0UFNJeklpQjVQU0l6SWlCM2FXUjBhRDBpTlM0Mk1ERWlJR2hsYVdkb2REMGlOUzQySWk4
36+
K0Nna0pQSEpsWTNRZ2VEMGlNeUlnZVQwaU1URXVNems1SWlCM2FXUjBhRDBpTlM0Mk1ERWlJ
37+
R2hsYVdkb2REMGlOUzQyTURFaUx6NEtDUWs4Y21WamRDQjRQU0l4TVM0ek9Ua2lJSGs5SWpF
38+
eExqTTVPU0lnZDJsa2RHZzlJalV1TmpBeElpQm9aV2xuYUhROUlqVXVOakF4SWk4K0Nna0pQ
39+
SEpsWTNRZ2VEMGlNVEV1TXprNUlpQjVQU0l6SWlCM2FXUjBhRDBpTlM0Mk1ERWlJR2hsYVdk
40+
b2REMGlOUzQySWk4K0NnazhMMmMrQ2p3dlp6NEtQQzl6ZG1jK0NnPT0iIC8+IDxpbWcgYWx0
41+
PSIiIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2Ymow
42+
aU1TNHdJaUJsYm1OdlpHbHVaejBpZFhSbUxUZ2lQejRLUENGRVQwTlVXVkJGSUhOMlp5QlFW
43+
VUpNU1VNZ0lpMHZMMWN6UXk4dlJGUkVJRk5XUnlBeExqRXZMMFZPSWlBaWFIUjBjRG92TDNk
44+
M2R5NTNNeTV2Y21jdlIzSmhjR2hwWTNNdlUxWkhMekV1TVM5RVZFUXZjM1puTVRFdVpIUmtJ
45+
ajRLUEhOMlp5QjJaWEp6YVc5dVBTSXhMakVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5j
46+
ekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vk
47+
ek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lJSGc5SWpCd2VDSWdlVDBpTUhCNElpQjNhV1IwYUQw
48+
aU1qQndlQ0lLQ1NCb1pXbG5hSFE5SWpJd2NIZ2lJSFpwWlhkQ2IzZzlJakFnTUNBeU1DQXlN
49+
Q0lnWlc1aFlteGxMV0poWTJ0bmNtOTFibVE5SW01bGR5QXdJREFnTWpBZ01qQWlJSGh0YkRw
50+
emNHRmpaVDBpY0hKbGMyVnlkbVVpUGdvOFp5QnBaRDBpYkdsdVpTSStDZ2s4Y0dGMGFDQmtQ
51+
U0pOTXk0NE1URXNNVFF1TVRBM2RqSXVPRGc1U0RBdU9EUTBkaTB5TGpnNE9VZ3pMamd4TVhv
52+
Z1RUQXVPRFEwTERndU5UVTFkakl1T0RnMmFESXVPVFkzVmpndU5UVTFTREF1T0RRMGVpQk5N
53+
VGt1TVRVMUxERXhMalEwTVZZNExqVTFOVWcyTGpFMk9YWXlMamc0TmtneE9TNHhOVFY2Q2dr
54+
SklFMHhPUzR4TlRVc01UWXVPVGsyZGkweUxqZzRPVWcyTGpFMk9YWXlMamc0T1VneE9TNHhO
55+
VFY2SUUwd0xqZzBOQ3d6ZGpJdU9EZzVhREl1T1RZM1ZqTklNQzQ0TkRSNklFMHhPUzR4TlRV
56+
c05TNDRPRGxXTTBnMkxqRTJPWFl5TGpnNE9VZ3hPUzR4TlRWNklpOCtDand2Wno0S1BDOXpk
57+
bWMrQ2c9PSIgLz48YnIgLz4KaW4gdGhlIEltYWdlIFRhYiBvZiB5b3VyIGJhY2stb2ZmaWNl
58+
IGFsbG93aW5nIHlvdSB0byBzd2l0Y2ggZnJvbSB0aGUgc3RhbmRhcmQgZGlzcGxheSB0byBh
59+
IG1vcmUgY29tcGFjdCBncmlkIGRpc3BsYXkuPC9wPiI7czozOiJjc3MiO3M6MDoiIjtzOjQ6
60+
ImNvZGUiO3M6NjcxMToiaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykgewogICAgcmVn
61+
aXN0ZXJfY2FsbGJhY2soICd0b21faW1hZ2VfZ3JpZF9tYXJrdXAnLCAnaW1hZ2VfdWknLCAn
62+
ZXh0ZW5kX2NvbnRyb2xzJyk7CiAgICByZWdpc3Rlcl9jYWxsYmFjayggJ3RvbV9pbWFnZV9n
63+
cmlkX2NzcycsICJpbWFnZSIpOwogICAgcmVnaXN0ZXJfY2FsbGJhY2soICd0b21faW1hZ2Vf
64+
Z3JpZF9qcycsICJpbWFnZSIpOwp9CgpmdW5jdGlvbiB0b21faW1hZ2VfZ3JpZF9tYXJrdXAo
65+
KQp7CiAgICAkb3V0ID0gPDw8SFRNTAoKPGZvcm0gaWQ9InRvbV9pZ19vcHRpb25zIj4KICAg
66+
IDxsYWJlbD48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InRvbV9pZ19vcHRpb24iIGlkPSJ0
67+
b21faWdfb3B0aW9uLS1ncmlkIiAvPjxzcGFuIGNsYXNzPSJ0b21faWdfaWNvbi1ncmlkIj5H
68+
cmlkPC9zcGFuPjwvbGFiZWw+CiAgICA8bGFiZWw+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1l
69+
PSJ0b21faWdfb3B0aW9uIiBpZD0idG9tX2lnX29wdGlvbi0tbGluZSIgLz48c3BhbiBjbGFz
70+
cz0idG9tX2lnX2ljb24tbGluZSI+TGluZTwvc3Bhbj48L2xhYmVsPgo8L2Zvcm0+CkhUTUw7
71+
CiAgICBlY2hvICRvdXQ7Cn0KCmZ1bmN0aW9uIHRvbV9pbWFnZV9ncmlkX2NzcygpCnsKICAg
72+
ICRzb3J0YnkgPSBnVHh0KCdzb3J0X2J5Jyk7CiAgICAkb3V0ID0gPDw8Q1NTCgo8c3R5bGUg
73+
dHlwZT0idGV4dC9jc3MiPgovKgoqKiBDU1MgZm9yIHRvbV9pbWFnZV9ncmlkIHBsdWdpbgoq
74+
KiBCeSBTYWNyaXBhbnQg4oCUIFRob21hcyBKdW5kCioqIGh0dHA6Ly9zYWNyaXBhbnQuZnIK
75+
Ki8KCi50b21faWcgLnR4cC1saXN0ICogewogICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXIt
76+
Ym94OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoudG9tX2lnIC50eHAtbGlzdHRh
77+
YmxlcyB7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLnRvbV9pZyNwYWdlLWltYWdlIC50eHAt
78+
bGlzdCB0aGVhZCB0aCB7CiAgICAvKmRpc3BsYXk6IG5vbmU7Ki8KICAgIGRpc3BsYXk6IGlu
79+
bGluZS1ibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiBhdXRvOwoK
80+
fQoudG9tX2lnI3BhZ2UtaW1hZ2UgLnR4cC1saXN0IHRoZWFkIHRoLmltYWdlc19kZXRhaWwg
81+
ewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Ci50b21faWcjcGFnZS1pbWFnZSAu
82+
dHhwLWxpc3QgdGhlYWQgdGgudHhwLWxpc3QtY29sLW11bHRpLWVkaXQgewogICAgbWFyZ2lu
83+
LXJpZ2h0OiAxZW07Cn0KLnRvbV9pZyNwYWdlLWltYWdlIC50eHAtbGlzdCB0aGVhZCB0aC50
84+
eHAtbGlzdC1jb2wtbXVsdGktZWRpdDphZnRlciB7CiAgICBjb250ZW50OiBhdHRyKHRpdGxl
85+
KTsKICAgIHBhZGRpbmctbGVmdDogLjMzZW07Cn0KCi50b21faWcjcGFnZS1pbWFnZSAudHhw
86+
LWxpc3QgdGhlYWQgdGgudHhwLWxpc3QtY29sLWlkIHsKICAgIG1hcmdpbi1sZWZ0OiAzLjZl
87+
bTsKfQoudG9tX2lnI3BhZ2UtaW1hZ2UgLnR4cC1saXN0IHRoZWFkIHRoLnR4cC1saXN0LWNv
88+
bC1pZDpiZWZvcmUgewogICAgY29udGVudDogIlNvcnQgYnkiOwogICAgZGlzcGxheTogYmxv
89+
Y2s7CiAgICBwYWRkaW5nOiBpbmhlcml0OwogICAgcGFkZGluZy1sZWZ0OiAwOwogICAgcGFk
90+
ZGluZy1yaWdodDogLjMzZW07CgogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6
91+
IDMuNmVtOwogICAgcmlnaHQ6IDEwMCU7CiAgICB0b3A6IDA7CgogICAgdGV4dC1hbGlnbjog
92+
cmlnaHQ7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwp9CgoKLnRvbV9pZyNwYWdlLWltYWdl
93+
IC50eHAtbGlzdCB0Ym9keSB0ciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAv
94+
KnZlcnRpY2FsLWFsaWduOiBtaWQ7Ki8KICAgIHdpZHRoOiAxNWVtOwogICAgbWFyZ2luOiAu
95+
NjZlbSAxZW0gMCAwCn0KCi50b21faWcjcGFnZS1pbWFnZSAudHhwLWxpc3QgdGJvZHkgdGQs
96+
Ci50b21faWcjcGFnZS1pbWFnZSAudHhwLWxpc3QgdGJvZHkgdGggewogICAgZGlzcGxheTog
97+
YmxvY2s7CiAgICBwYWRkaW5nOiAwLjE2ZW0gMC4zM2VtOwogICAgdGV4dC1vdmVyZmxvdzog
98+
ZWxsaXBzaXM7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgd2hpdGUtc3BhY2U6IG5vd3Jh
99+
cDsKfQoKLnRvbV9pZyNwYWdlLWltYWdlIC50eHAtbGlzdCB0ZC50eHAtbGlzdC1jb2wtbXVs
100+
dGktZWRpdCB7CiAgICBmbG9hdDogcmlnaHQ7CiAgICB3aWR0aDogYXV0bzsKfQoudG9tX2ln
101+
I3BhZ2UtaW1hZ2UgLnR4cC1saXN0IHRkLnR4cC1saXN0LWNvbC1tdWx0aS1lZGl0IGlucHV0
102+
IHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi50b21faWcjcGFnZS1pbWFnZSAudHhwLWxp
103+
c3QgdGQudHhwLWxpc3QtY29sLXRodW1ibmFpbCB7CiAgICBoZWlnaHQ6IDEyZW07Cn0KCi50
104+
b21faWcjcGFnZS1pbWFnZSAudHhwLWxpc3QgdGQudHhwLWxpc3QtY29sLXRodW1ibmFpbCBp
105+
bWcgewogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWF4LWhlaWdodDogMTAwJTsKICAgIGhl
106+
aWdodDogYXV0bzsKICAgIHdpZHRoOiBhdXRvOwp9CgovKiBObyB0aHVtYm5haWwgZGlzcGxh
107+
eSAqLwoudG9tX2lnI3BhZ2UtaW1hZ2UgLnR4cC1saXN0IHRkLnR4cC1saXN0LWNvbC10aHVt
108+
Ym5haWw6bm90KC5oYXMtdGh1bWJuYWlsKSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGJh
109+
Y2tncm91bmQtY29sb3I6ICNlZWU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CgogICAgaGVp
110+
Z2h0OiAxMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXItd2lkdGg6IDUuMjVlbSA1
111+
LjVlbTsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItdG9wLWNvbG9yOiAj
112+
ZWVlOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2VlZTsKICAgIGJvcmRlci1sZWZ0LWNv
113+
bG9yOiAjZGRkOwogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZGRkOwp9CgoKCkBtZWRpYSBv
114+
bmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDgwcHgpIHsKICAgIC50b21faWcjcGFnZS1p
115+
bWFnZSAudHhwLWxpc3QgdGJvZHkgdHIgewogICAgICAgIHdpZHRoOiAxNDBweDsKICAgICAg
116+
ICBtYXJnaW46IC42NmVtIC4zM2VtIDAgMDsKICAgIH0KCiAgICAudG9tX2lnI3BhZ2UtaW1h
117+
Z2UgLnR4cC1saXN0IHRkLnRodW1ibmFpbCB7CiAgICAgICAgaGVpZ2h0OiAxMTJweDsKICAg
118+
IH0KCiAgICAudG9tX2lnIC50b21faWctLW5vVGh1bWIgewogICAgICAgIGJvcmRlci13aWR0
119+
aDogNDVweCA0MHB4OwogICAgfQoKCn0KCi8qYnV0dG9ucwotLS0tLS0tLS0tKi8KCiN0b21f
120+
aWdfb3B0aW9ucyBpbnB1dCB7CiAgICBkaXNwbGF5OiBub25lOwp9CgojdG9tX2lnX29wdGlv
121+
bnMgbGFiZWwgewogICAgcGFkZGluZzogLjE2ZW07CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
122+
Y2s7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIHdpZHRoOiAyMHB4
123+
OwogICAgaGVpZ2h0OiAyMHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQojdG9tX2lnX29w
124+
dGlvbnMgbGFiZWwuc2VsZWN0ZWQgewogICAgYm9yZGVyLWNvbG9yOiAjYWFhOwp9Ci50b21f
125+
aWdfaWNvbi1ncmlkOmJlZm9yZSB7CiAgICBjb250ZW50OiB1cmwoImRhdGE6aW1hZ2Uvc3Zn
126+
K3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaWRY
127+
Um1MVGdpUHo0S1BDRkVUME5VV1ZCRklITjJaeUJRVlVKTVNVTWdJaTB2TDFjelF5OHZSRlJF
128+
SUZOV1J5QXhMakV2TDBWT0lpQWlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZSM0poY0docFkz
129+
TXZVMVpITHpFdU1TOUVWRVF2YzNabk1URXVaSFJrSWo0S1BITjJaeUIyWlhKemFXOXVQU0l4
130+
TGpFaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VH
131+
MXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNp
132+
SUhnOUlqQndlQ0lnZVQwaU1IQjRJaUIzYVdSMGFEMGlNakJ3ZUNJS0NTQm9aV2xuYUhROUlq
133+
SXdjSGdpSUhacFpYZENiM2c5SWpBZ01DQXlNQ0F5TUNJZ1pXNWhZbXhsTFdKaFkydG5jbTkx
134+
Ym1ROUltNWxkeUF3SURBZ01qQWdNakFpSUhodGJEcHpjR0ZqWlQwaWNISmxjMlZ5ZG1VaVBn
135+
bzhaeUJwWkQwaVozSnBaQ0krQ2drOFp6NEtDUWs4Y21WamRDQjRQU0l6SWlCNVBTSXpJaUIz
136+
YVdSMGFEMGlOUzQyTURFaUlHaGxhV2RvZEQwaU5TNDJJaTgrQ2drSlBISmxZM1FnZUQwaU15
137+
SWdlVDBpTVRFdU16azVJaUIzYVdSMGFEMGlOUzQyTURFaUlHaGxhV2RvZEQwaU5TNDJNREVp
138+
THo0S0NRazhjbVZqZENCNFBTSXhNUzR6T1RraUlIazlJakV4TGpNNU9TSWdkMmxrZEdnOUlq
139+
VXVOakF4SWlCb1pXbG5hSFE5SWpVdU5qQXhJaTgrQ2drSlBISmxZM1FnZUQwaU1URXVNems1
140+
SWlCNVBTSXpJaUIzYVdSMGFEMGlOUzQyTURFaUlHaGxhV2RvZEQwaU5TNDJJaTgrQ2drOEwy
141+
YytDand2Wno0S1BDOXpkbWMrQ2c9PSIpOwp9Ci50b21faWdfaWNvbi1saW5lOmJlZm9yZSB7
142+
CiAgICBjb250ZW50OiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dk
143+
bVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaWRYUm1MVGdpUHo0S1BDRkVUME5VV1ZC
144+
RklITjJaeUJRVlVKTVNVTWdJaTB2TDFjelF5OHZSRlJFSUZOV1J5QXhMakV2TDBWT0lpQWlh
145+
SFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZSM0poY0docFkzTXZVMVpITHpFdU1TOUVWRVF2YzNa
146+
bk1URXVaSFJrSWo0S1BITjJaeUIyWlhKemFXOXVQU0l4TGpFaUlIaHRiRzV6UFNKb2RIUndP
147+
aTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhB
148+
Nkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpSUhnOUlqQndlQ0lnZVQwaU1IQjRJ
149+
aUIzYVdSMGFEMGlNakJ3ZUNJS0NTQm9aV2xuYUhROUlqSXdjSGdpSUhacFpYZENiM2c5SWpB
150+
Z01DQXlNQ0F5TUNJZ1pXNWhZbXhsTFdKaFkydG5jbTkxYm1ROUltNWxkeUF3SURBZ01qQWdN
151+
akFpSUhodGJEcHpjR0ZqWlQwaWNISmxjMlZ5ZG1VaVBnbzhaeUJwWkQwaWJHbHVaU0krQ2dr
152+
OGNHRjBhQ0JrUFNKTk15NDRNVEVzTVRRdU1UQTNkakl1T0RnNVNEQXVPRFEwZGkweUxqZzRP
153+
VWd6TGpneE1Yb2dUVEF1T0RRMExEZ3VOVFUxZGpJdU9EZzJhREl1T1RZM1ZqZ3VOVFUxU0RB
154+
dU9EUTBlaUJOTVRrdU1UVTFMREV4TGpRME1WWTRMalUxTlVnMkxqRTJPWFl5TGpnNE5rZ3hP
155+
UzR4TlRWNkNna0pJRTB4T1M0eE5UVXNNVFl1T1RrMmRpMHlMamc0T1VnMkxqRTJPWFl5TGpn
156+
NE9VZ3hPUzR4TlRWNklFMHdMamcwTkN3emRqSXVPRGc1YURJdU9UWTNWak5JTUM0NE5EUjZJ
157+
RTB4T1M0eE5UVXNOUzQ0T0RsV00wZzJMakUyT1hZeUxqZzRPVWd4T1M0eE5UVjZJaTgrQ2p3
158+
dlp6NEtQQzl6ZG1jK0NnPT0iKTsKfQoKPC9zdHlsZT4KQ1NTOwogICAgZWNobyAkb3V0Owp9
159+
CgpmdW5jdGlvbiB0b21faW1hZ2VfZ3JpZF9qcygpCnsKICAgICRvdXQgPSA8PDxKUwoKPHNj
160+
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovKgoqKiBKUyBmb3IgdG9tX2ltYWdlX2dy
161+
aWQgcGx1Z2luCioqIEJ5IFNhY3JpcGFudCDigJQgVGhvbWFzIEp1bmQKKiogaHR0cDovL3Nh
162+
Y3JpcGFudC5mcgoqLwoKJChmdW5jdGlvbigpIHsKICAgIHZhciBpbWFnZURpc3BsYXlPcHRp
163+
b24gPSAkKCIjdG9tX2lnX29wdGlvbnMiKQogICAgLCAgIHJhZGlvcyA9ICQoJ2lucHV0Jywg
164+
aW1hZ2VEaXNwbGF5T3B0aW9uKQogICAgLCAgIGxpc3R0YWJsZXMgPSAkKCcudHhwLWxpc3R0
165+
YWJsZXMnKQogICAgLyosICAgaW1hZ2VzVHIgPSAkKCd0cicsIGxpc3R0YWJsZXMpKi8KICAg
166+
ICwgICBjb29raWUgPSAndG9tX2ltYWdlX2dyaWQnCiAgICAsICAgY29va2llVmFsdWUgPSBn
167+
ZXRDb29raWUoY29va2llKQogICAgOwoKCiAgICAvLyBBZGQgcmFkaW9zIGluIHRhYgogICAg
168+
aW1hZ2VEaXNwbGF5T3B0aW9uLnByZXBlbmRUbyhsaXN0dGFibGVzKTsKCgogICAgLy8gQ2hh
169+
bmdlIExheW91dCB3aGVuIHJhZGlvIGNoZWNrZWQKICAgIHJhZGlvcy5jaGFuZ2UoZnVuY3Rp
170+
b24oZXZlbnQpCiAgICB7CiAgICAgICAgaWYgKCB0aGlzLmlkID09PSAidG9tX2lnX29wdGlv
171+
bi0tZ3JpZCIpCiAgICAgICAgewogICAgICAgICAgICAkKCdib2R5JykuYWRkQ2xhc3MoJ3Rv
172+
bV9pZycpOwogICAgICAgICAgICBzZXRDb29raWUoY29va2llLCAndG9tX2lnX29wdGlvbi0t
173+
Z3JpZCcpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICAk
174+
KCdib2R5JykucmVtb3ZlQ2xhc3MoJ3RvbV9pZycpOwogICAgICAgICAgICBzZXRDb29raWUo
175+
Y29va2llLCAndG9tX2lnX29wdGlvbi0tbGluZScpCiAgICAgICAgfQoKICAgICAgICByYWRp
176+
b3MucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ3NlbGVjdGVkJyk7CiAgICAgICAgJCh0aGlzKS5w
177+
YXJlbnQoKS5hZGRDbGFzcygnc2VsZWN0ZWQnKTsKICAgIH0pOwoKICAgIC8vIENoZWNrICYg
178+
Y3JlYXRlIGNvb2tpZQogICAgaWYgKCBjb29raWVWYWx1ZSApCiAgICB7CiAgICAgICAgdmFy
179+
IHRhcmdldFJhZGlvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29va2llVmFsdWUpOwog
180+
ICAgfQogICAgZWxzZQogICAgewogICAgICAgIHZhciB0YXJnZXRSYWRpbyA9IGRvY3VtZW50
181+
LmdldEVsZW1lbnRCeUlkKCd0b21faWdfb3B0aW9uLS1saW5lJyk7CiAgICAgICAgc2V0Q29v
182+
a2llKGNvb2tpZSwgJ3RvbV9pZ19vcHRpb24tLWxpbmUnKQogICAgfTsKCiAgICAkKHRhcmdl
183+
dFJhZGlvKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSkudHJpZ2dlcigiY2hhbmdlIik7Cn0pOwo8
184+
L3NjcmlwdD4KCkpTOwogICAgZWNobyAkb3V0Owp9IjtzOjM6Im1kNSI7czozMjoiNTIxZjNi
185+
YzNjZmQ3OTkyNGQ3NmZmZjVkMDRmNGZkNjIiO30=

0 commit comments

Comments
 (0)