1 Jewish Relief Agency Client Survey 2026

This summary compiles information on survey data collected anonymously from JRA recipients in 2026. Surveys included demographics questions, food insecurity questions, and satisfaction questions regarding JRA services. In January, the survey was sent to 1,800 households.

1.1 Demographics

1.2 JRA Services

What is your overall satisfaction with the food box you receive from JRA?
Total (n) Percentage (%)
Very satisfied 416 61.4
Satisfied 248 36.6
Dissatisfied 10 1.5
Very dissatisfied 4 0.6
How important is the delivery aspect of JRA’s services?
Total (n) Percentage (%)
Absolutely Essential 468 69.4
Important 205 30.4
Not Important 1 0.1
Because of the relief I receive from JRA services, I am able to save money to put towards paying my monthly bills
Total (n) Percentage (%)
Strongly Agree 360 53.9
Agree 258 38.6
Disagree 47 7.0
Strongly Disagree 3 0.4
Because of the JRA food box, I am less worried about having enough food each month.
Total (n) Percentage (%)
Strongly Agree 292 43.8
Agree 330 49.5
Disagree 39 5.9
Strongly Disagree 5 0.8

1.3 JRA Services

Because of the JRA food box, I have access to more nutritious food.
Total (n) Percentage (%)
Strongly Agree 291 44.0
Agree 322 48.6
Disagree 48 7.3
Strongly Disagree 1 0.2
Because of a current illness or disability, I am unable to get to a food store and therefore consider JRA’s services critical.
Total (n) Percentage (%)
Strongly Agree 225 34.4
Agree 264 40.3
Disagree 137 20.9
Strongly Disagree 29 4.4
The food and other supplies delivered by JRA improve the health of the individuals in my household
Total (n) Percentage (%)
Strongly Agree 292 44.6
Agree 322 49.2
Disagree 37 5.7
Strongly Disagree 3 0.5
Because of the food and other critical supplies delivered by JRA, I am able to live more independently
Total (n) Percentage (%)
Strongly Agree 249 38.0
Agree 353 53.8
Disagree 52 7.9
Strongly Disagree 2 0.3
Because of JRA’s services, I feel less isolated
Total (n) Percentage (%)
Strongly Agree 243 37.3
Agree 345 52.9
Disagree 61 9.4
Strongly Disagree 3 0.5
I look forward to interacting with the JRA volunteer who delivers my food
Total (n) Percentage (%)
Strongly Agree 248 38.2
Agree 352 54.2
Disagree 47 7.2
Strongly Disagree 3 0.5
Select up to 5 items from the JRA Food Box from the following list that are your favorite or most helpful.
Items Total (n) Percentage (%)
Toilet paper 543 72.2
Dry Beans 130 17.3
Cereal 243 32.3
Canned tuna 340 45.2
Salmon 386 51.3
Oatmeal 342 45.5
Pasta/noodles 401 53.3
Canned soup 126 16.8
Nuts 419 55.7
Peanut butter 204 27.1
Applesauce 306 40.7
Canned Beans 160 21.3
Canned Fruit 347 46.1
Canned Vegetables 169 22.5
Dry Soup Mix 130 17.3
Oil 493 65.6
Mayonaisse 347 46.1

1.4 Challenges you may face

Within the past 12 months, we worried whether our food would run out before we got money to buy more
Total (n) Percentage (%)
Often true 214 37.2
Sometimes true 277 48.2
Never true 84 14.6
Don’t know 0 0.0
Within the past 12 months, the food that we bought just didn’t last and we didn’t have money to get more
Total (n) Percentage (%)
Often true 152 26.9
Sometimes true 255 45.1
Never true 159 28.1
Don’t know 0 0.0
Select up to 5 items from the JRA Food Box from the following list that are your favorite or most helpful.
Items Total (n) Percentage (%)
Housing costs 543 72.2
Utility costs 130 17.3
transportation costs 243 32.3
Medical expenses 340 45.2
Childcare costs 386 51.3
Taxes 342 45.5
How often in the last 12 months did you or someone your household visit a food pantry?
Total (n) Percentage (%)
More than once a month 128 20.6
Once a month 170 27.4
Once every few months 68 11.0
Once or twice a year 57 9.2
Never 198 31.9
How often in the last 12 months did your household have food delivered from a pantry other than JRA?
Total (n) Percentage (%)
More than once a month 45 7.3
Once a month 181 29.3
Once every few months 23 3.7
Once or twice a year 19 3.1
Never 350 56.6

1.5 Culture and the Jewish Community

Do you or anyone in your household identify as Jewish?
Total (n) Percentage (%)
Yes 344 53.7
No 297 46.3
Does receiving a box of kosher food from JRA make you feel cared for by the Jewish community?
Total (n) Percentage (%)
Yes 329 97.3
No 9 2.7
Does receiving special foods for Jewish holidays in the JRA box enable you to have a more meaningful celebration?
Total (n) Percentage (%)
Yes 330 97.3
No 8 2.4
I do not identify as Jewish 1 0.3
Do you keep a kosher home?
Total (n) Percentage (%)
Yes 125 37.8
No 206 62.2
Do you or someone currently living in your household identify as a Holocaust Survivor?
Total (n) Percentage (%)
Yes 147 44.1
No 186 55.9

1.6 Family Friendly Food Program

Do you receive FF food bag?
Total (n) Percentage (%)
Yes 230 38.6
No 366 61.4
What is your overall satisfaction with the food provided in the Family Friendly Food Program/Blue Bag?
Total (n) Percentage (%)
Very satisfied 151 66.2
Satisfied 76 33.3
Dissatisfied 0 0.0
Very dissatisfied 1 0.4
Select from the following list your top 4 favorite/helpful items in the Family Friendly Food Program (Blue Bag).
Items Total (n) Percentage (%)
Peanut butter 74 9.8
Jam/jelly 111 14.8
Crackers 135 18
Pretzels 103 13.7
Granola bars 67 8.9
Instant oatmeal NA NA
Fruit cups 148 19.7
Cookies 49 6.5
Banana chips 74 9.8
What is your overall satisfaction with the food provided in the Family Friendly Food Program/Blue Bag?
Total (n) Percentage (%)
Very satisfied 141 62.9
Satisfied 64 28.6
Dissatisfied 1 0.4
Very dissatisfied 0 0.0
I have not received Summer Fresh Produce Boxes yet. 18 8.0

1.7 Period Packs Program

Do you receive the PP orange bag?
Total (n) Percentage (%)
Yes 180 30.3
No 414 69.7
What is your overall satisfaction with JRA’s Period Packs Program?
Total (n) Percentage (%)
Very satisfied 145 81.5
Satisfied 29 16.3
Dissatisfied 4 2.2
Very dissatisfied 0 0.0
Select the statements below that you agree with regarding period products. Check all that apply.
Items Total (n) Percentage (%)
Worn longer than recommended 97 53.9
Asked a friend or classmate 39 21.7
asked a stranger 16 8.9
Unable to focus 6 3.3
Stressed or embarrassed 35 19.4
Select from the following list your top 2 favorite/helpful items in the Period Products Bag.
Items Total (n) Percentage (%)
Overnight Maxi Pads 85 47.2
Regular Maxi Pads w/wings 128 71.1
Tampons 50 27.8
Pantiliners 54 30
How long do the supplies you receive in the Period Products (Orange) Bag last?
Total (n) Percentage (%)
1 month 84 47.5
2 months 73 41.2
3 months 20 11.3
LS0tDQp0aXRsZTogIjIwMjYgSlJBIEV4ZWN1dGl2ZSBTdW1tYXJ5Ig0KYXV0aG9yOiAiIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0b2NfY29sbGFwc2VkOiB5ZXMNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBzbW9vdGhfc2Nyb2xsOiB5ZXMNCiAgICB0aGVtZTogbHVtZW4NCiAgcGRmX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIGZpZ19jYXB0aW9uOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIGZpZ193aWR0aDogMw0KICAgIGZpZ19oZWlnaHQ6IDMNCiAgd29yZF9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBmaWdfY2FwdGlvbjogeWVzDQogICAga2VlcF9tZDogeWVzDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUNCi0tLQ0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQojVE9DOjpiZWZvcmUgew0KICBjb250ZW50OiAiVGFibGUgb2YgQ29udGVudHMiOw0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1zaXplOiAxLjJlbTsNCiAgZGlzcGxheTogYmxvY2s7DQogIGNvbG9yOiBuYXZ5Ow0KICBtYXJnaW4tYm90dG9tOiAxMHB4Ow0KfQ0KDQoNCmRpdiNUT0MgbGkgeyAgICAgLyogdGFibGUgb2YgY29udGVudCAgKi8NCiAgICBsaXN0LXN0eWxlOnVwcGVyLXJvbWFuOw0KICAgIGJhY2tncm91bmQtaW1hZ2U6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDpub25lOw0KICAgIGJhY2tncm91bmQtcG9zaXRpb246MDsNCn0NCg0KaDEudGl0bGUgeyAgICAvKiBsZXZlbCAxIGhlYWRlciBvZiB0aXRsZSAgKi8NCiAgZm9udC1zaXplOiAyMnB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgY29sb3I6IERhcmtSZWQ7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgZm9udC1mYW1pbHk6ICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOw0KfQ0KDQpoNC5hdXRob3IgeyAvKiBIZWFkZXIgNCAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICBmb250LXNpemU6IDE1cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmb250LWZhbWlseTogc3lzdGVtLXVpOw0KICBjb2xvcjogbmF2eTsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQpoNC5kYXRlIHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1mYW1pbHk6ICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOw0KICBjb2xvcjogRGFya0JsdWU7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KaDEgeyAvKiBIZWFkZXIgMSAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMjBweDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogZGFya3JlZDsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoMiB7IC8qIEhlYWRlciAyIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAxOHB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmgzIHsgLyogSGVhZGVyIDMgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE2cHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IG5hdnk7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KaDQgeyAvKiBIZWFkZXIgNCAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KLyogQWRkIGRvdHMgYWZ0ZXIgbnVtYmVyZWQgaGVhZGVycyAqLw0KLmhlYWRlci1zZWN0aW9uLW51bWJlcjo6YWZ0ZXIgew0KICBjb250ZW50OiAiLiI7DQoNCmJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9DQoNCi5oaWdobGlnaHRtZSB7IGJhY2tncm91bmQtY29sb3I6eWVsbG93OyB9DQoNCnAgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9DQoNCn0NCmBgYA0KDQpgYGB7ciBzZXR1cCwgY29tbWVudD1OQSwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgY29tbWVudD1OQSkNCg0Kc2V0d2QoIkM6L1VzZXJzLzc1TFBZT1RUL09uZURyaXZlIC0gV2VzdCBDaGVzdGVyIFVuaXZlcnNpdHkgb2YgUEEvRGVza3RvcC9KUkEyMDIyIikNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHN1bW1hcnl0b29scykNCmxpYnJhcnkocXVlc3Rpb25yKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHNwbGl0c3RhY2tzaGFwZSkNCg0KDQpkYXRhPXJlYWQuY3N2KCJKUkEgZGF0YSB3aXRoIGxhYmVscyAyMDI2LmNzdiIsIGhlYWRlcj1UKQ0KdG90YWxuPW5yb3coZGF0YSkNCnJlc3BvbnNlcmF0ZT1yb3VuZCgxMDAqKHRvdGFsbi8yMzAwKSwgMSkNCmBgYA0KDQoNCiMgSmV3aXNoIFJlbGllZiBBZ2VuY3kgQ2xpZW50IFN1cnZleSAyMDI2DQoNClRoaXMgc3VtbWFyeSBjb21waWxlcyBpbmZvcm1hdGlvbiBvbiBzdXJ2ZXkgZGF0YSBjb2xsZWN0ZWQgYW5vbnltb3VzbHkgZnJvbSBKUkEgcmVjaXBpZW50cyBpbiAyMDI2LiBTdXJ2ZXlzIGluY2x1ZGVkIGRlbW9ncmFwaGljcyBxdWVzdGlvbnMsIGZvb2QgaW5zZWN1cml0eSBxdWVzdGlvbnMsIGFuZCBzYXRpc2ZhY3Rpb24gcXVlc3Rpb25zIHJlZ2FyZGluZyBKUkEgc2VydmljZXMuIEluIEphbnVhcnksIHRoZSBzdXJ2ZXkgd2FzIHNlbnQgdG8gMSw4MDAgaG91c2Vob2xkcy4gIA0KDQoNCg0KYGBge3Igc3VtbWFyeSwgaW5jbHVkZT1GQUxTRX0NCg0KI0hDIEhvbG9jYXVzdD15ZXMgaXMgcmVzcG9uZGVudHMgd2hvIGlkZW50aWZpZWQgYXMgSEMNCkhDID0gZmlsdGVyKGRhdGEsIFEyMz09IlllcyIpDQp0b3RhbEhDPW5yb3coSEMpDQojRmFtaWx5IGZyaWVuZGx5IHN1cnZleXMNCkJCPWZpbHRlcihkYXRhLCBRMjU9PSJZZXMiKQ0KdG90YWxGRj0gbnJvdyhCQikNCiNQUA0KUFA9ZmlsdGVyKGRhdGEsIFEzMT09IlllcyIpDQp0b3RhbFBQPW5yb3coUFApDQpgYGANCg0KDQoNCiMjIERlbW9ncmFwaGljcw0KDQoNCg0KDQpgYGAge3IgZGVtb2d9DQoNCg0KYGBgDQoNCiMjIEpSQSBTZXJ2aWNlcw0KDQpgYGB7ciBRM30NCg0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTNGID0gZmFjdG9yKA0KICAgIFEzLA0KICAgIGxldmVscyA9IGMoIlZlcnkgc2F0aXNmaWVkIiwgIlNhdGlzZmllZCIsICJEaXNzYXRpc2ZpZWQiLCAiVmVyeSBkaXNzYXRpc2ZpZWQiKSkpDQoNCnFjMz10YWJsZShkYXRhJFEzRikNCnFwMz0xMDAqcHJvcC50YWJsZShxYzMpDQoNCnEzPWNiaW5kKHFjMywgcXAzKQ0KDQpxMyAlPiUNCiAga2JsKGRpZ2l0cz0xLGNhcHRpb249IldoYXQgaXMgeW91ciBvdmVyYWxsIHNhdGlzZmFjdGlvbiB3aXRoIHRoZSBmb29kIGJveCB5b3UgcmVjZWl2ZSBmcm9tIEpSQT8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCiANCg0KYGBge3IgUTR9DQoNCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFE0RiA9IGZhY3RvcigNCiAgICBRNCwNCiAgICBsZXZlbHMgPSBjKCJBYnNvbHV0ZWx5IEVzc2VudGlhbCIsICJJbXBvcnRhbnQiLCAiTm90IEltcG9ydGFudCIpKSkNCg0KcWM0PXRhYmxlKGRhdGEkUTRGKQ0KcXA0PTEwMCpwcm9wLnRhYmxlKHFjNCkNCg0KcTQ9Y2JpbmQocWM0LCBxcDQpDQpxNCAlPiUNCiBrYmwoZGlnaXRzPTEsY2FwdGlvbj0iSG93IGltcG9ydGFudCBpcyB0aGUgZGVsaXZlcnkgYXNwZWN0IG9mIEpSQeKAmXMgc2VydmljZXM/IiwgY29sLm5hbWVzPWMoIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIpKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RiwgaHRtbF9mb250PSJDYW1icmlhIikgJT4lDQogICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KDQpgYGANCg0KDQogDQoNCg0KYGBge3IgUTV9DQojIyNRdWVzdGlvbiA1IEJlY2F1c2Ugb2YgdGhlIHJlbGllZiBJIHJlY2VpdmUgZnJvbSBKUkEgc2VydmljZXMsIEkgYW0gYWJsZSB0byBzYXZlIG1vbmV5IHRvIHB1dCAjIyB0b3dhcmRzIHBheWluZyBteSBtb250aGx5IGJpbGxzIg0KDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRNUYgPSBmYWN0b3IoDQogICAgUTUsDQogICAgbGV2ZWxzID0gYygiU3Ryb25nbHkgQWdyZWUiLCAiQWdyZWUiLCAiRGlzYWdyZWUiLCAiU3Ryb25nbHkgRGlzYWdyZWUiKSkpDQoNCnFjNT10YWJsZShkYXRhJFE1RikNCnFwNT0xMDAqcHJvcC50YWJsZShxYzUpDQoNCnE1PWNiaW5kKHFjNSwgcXA1KQ0KcTUgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iQmVjYXVzZSBvZiB0aGUgcmVsaWVmIEkgcmVjZWl2ZSBmcm9tIEpSQSBzZXJ2aWNlcywgSSBhbSBhYmxlIHRvIHNhdmUgbW9uZXkgdG8gcHV0IHRvd2FyZHMgcGF5aW5nIG15IG1vbnRobHkgYmlsbHMiLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQoNCmBgYA0KDQogDQoNCg0KYGBge3IgUTZ9DQoNCiMjQmVjYXVzZSBvZiB0aGUgSlJBIGZvb2QgYm94LCBJIGFtIGxlc3Mgd29ycmllZCBhYm91dCBoYXZpbmcgZW5vdWdoIGZvb2QgZWFjaCBtb250aC4NCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFE2RiA9IGZhY3RvcigNCiAgICBRNiwNCiAgICBsZXZlbHMgPSBjKCJTdHJvbmdseSBBZ3JlZSIsICJBZ3JlZSIsICJEaXNhZ3JlZSIsICJTdHJvbmdseSBEaXNhZ3JlZSIpKSkNCg0KcWM2PXRhYmxlKGRhdGEkUTZGKQ0KcXA2PTEwMCpwcm9wLnRhYmxlKHFjNikNCg0KcTY9Y2JpbmQocWM2LCBxcDYpDQpxNiAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJCZWNhdXNlIG9mIHRoZSBKUkEgZm9vZCBib3gsIEkgYW0gbGVzcyB3b3JyaWVkIGFib3V0IGhhdmluZyBlbm91Z2ggZm9vZCBlYWNoIG1vbnRoLiIsIA0KICAgICAgY29sLm5hbWVzPWMoIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIpKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RiwgaHRtbF9mb250PSJDYW1icmlhIikgJT4lDQogICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KDQpgYGANCg0KIyMgSlJBIFNlcnZpY2VzDQoNCmBgYHtyIFE3fQ0KDQojI0JlY2F1c2Ugb2YgdGhlIEpSQSBmb29kIGJveCwgSSBoYXZlIGFjY2VzcyB0byBtb3JlIG51dHJpdGlvdXMgZm9vZC4NCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFE3RiA9IGZhY3RvcigNCiAgICBRNywNCiAgICBsZXZlbHMgPSBjKCJTdHJvbmdseSBBZ3JlZSIsICJBZ3JlZSIsICJEaXNhZ3JlZSIsICJTdHJvbmdseSBEaXNhZ3JlZSIpKSkNCg0KcWM3PXRhYmxlKGRhdGEkUTdGKQ0KcXA3PTEwMCpwcm9wLnRhYmxlKHFjNykNCg0KDQpxNz1jYmluZChxYzcsIHFwNykNCnE3ICU+JQ0KICBrYmwoZGlnaXRzPTEsIGNhcHRpb249IkJlY2F1c2Ugb2YgdGhlIEpSQSBmb29kIGJveCwgSSBoYXZlIGFjY2VzcyB0byBtb3JlIG51dHJpdGlvdXMgZm9vZC4iLCANCiAgICAgIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCmBgYA0KDQogDQoNCmBgYHtyIFE4fQ0KDQojIEJlY2F1c2Ugb2YgYSBjdXJyZW50IGlsbG5lc3Mgb3IgZGlzYWJpbGl0eSwgSSBhbSB1bmFibGUgdG8gZ2V0IHRvIGEgZm9vZCBzdG9yZSBhbmQgdGhlcmVmb3JlIGNvbnNpZGVyIEpSQeKAmXMgc2VydmljZXMgY3JpdGljYWwuDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShROEYgPSBmYWN0b3IoDQogICAgUTgsDQogICAgbGV2ZWxzID0gYygiU3Ryb25nbHkgQWdyZWUiLCAiQWdyZWUiLCAiRGlzYWdyZWUiLCAiU3Ryb25nbHkgRGlzYWdyZWUiKSkpDQoNCnFjOD10YWJsZShkYXRhJFE4RikNCnFwOD0xMDAqcHJvcC50YWJsZShxYzgpDQoNCnE4PWNiaW5kKHFjOCwgcXA4KQ0KcTglPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJCZWNhdXNlIG9mIGEgY3VycmVudCBpbGxuZXNzIG9yIGRpc2FiaWxpdHksIEkgYW0gdW5hYmxlIHRvIGdldCB0byBhIGZvb2Qgc3RvcmUgYW5kIHRoZXJlZm9yZSBjb25zaWRlciBKUkHigJlzIHNlcnZpY2VzIGNyaXRpY2FsLiIsDQogICAgICAgIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCg0KIA0KDQpgYGB7ciBROX0NCiMjVGhlIGZvb2QgYW5kIG90aGVyIHN1cHBsaWVzIGRlbGl2ZXJlZCBieSBKUkEgaW1wcm92ZSB0aGUgaGVhbHRoIG9mIHRoZSBpbmRpdmlkdWFscyBpbiBteSBob3VzZWhvbGQuDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShROUYgPSBmYWN0b3IoDQogICAgUTksDQogICAgbGV2ZWxzID0gYygiU3Ryb25nbHkgQWdyZWUiLCAiQWdyZWUiLCAiRGlzYWdyZWUiLCAiU3Ryb25nbHkgRGlzYWdyZWUiKSkpDQpxYzk9dGFibGUoZGF0YSRROUYpDQpxcDk9MTAwKnByb3AudGFibGUocWM5KQ0KDQpxOT1jYmluZChxYzksIHFwOSkNCnE5JT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iVGhlIGZvb2QgYW5kIG90aGVyIHN1cHBsaWVzIGRlbGl2ZXJlZCBieSBKUkEgaW1wcm92ZSB0aGUgaGVhbHRoIG9mIHRoZSBpbmRpdmlkdWFscyBpbiBteSBob3VzZWhvbGQiLA0KICAgICAgICBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KYGBgDQoNCiANCg0KDQpgYGB7ciBRMTB9DQojQmVjYXVzZSBvZiB0aGUgZm9vZCBhbmQgb3RoZXIgY3JpdGljYWwgc3VwcGxpZXMgZGVsaXZlcmVkIGJ5IEpSQSwgSSBhbSBhYmxlIHRvIGxpdmUgbW9yZSBpbmRlcGVuZGVudGx5Lg0KDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRMTBGID0gZmFjdG9yKA0KICAgIFExMCwNCiAgICBsZXZlbHMgPSBjKCJTdHJvbmdseSBBZ3JlZSIsICJBZ3JlZSIsICJEaXNhZ3JlZSIsICJTdHJvbmdseSBEaXNhZ3JlZSIpKSkNCg0KcWMxMD10YWJsZShkYXRhJFExMEYpDQpxcDEwPTEwMCpwcm9wLnRhYmxlKHFjMTApDQoNCnExMD1jYmluZChxYzEwLCBxcDEwKQ0KcTEwICU+JQ0KICBrYmwoZGlnaXRzPTEsY2FwdGlvbj0iQmVjYXVzZSBvZiB0aGUgZm9vZCBhbmQgb3RoZXIgY3JpdGljYWwgc3VwcGxpZXMgZGVsaXZlcmVkIGJ5IEpSQSwgSSBhbSBhYmxlIHRvIGxpdmUgbW9yZSBpbmRlcGVuZGVudGx5IiwgDQogICAgICAgICAgICAgIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCg0KYGBgDQoNCg0KDQpgYGB7ciBRMTF9DQoNCiNCZWNhdXNlIG9mIEpSQeKAmXMgc2VydmljZXMsIEkgZmVlbCBsZXNzIGlzb2xhdGVkLg0KDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRMTFGID0gZmFjdG9yKA0KICAgIFExMSwNCiAgICBsZXZlbHMgPSBjKCJTdHJvbmdseSBBZ3JlZSIsICJBZ3JlZSIsICJEaXNhZ3JlZSIsICJTdHJvbmdseSBEaXNhZ3JlZSIpKSkNCnFjMTE9dGFibGUoZGF0YSRRMTFGKQ0KcXAxMT0xMDAqcHJvcC50YWJsZShxYzExKQ0KDQoNCnExMT1jYmluZChxYzExLCBxcDExKQ0KDQpxMTEgJT4lDQogIGtibChkaWdpdHM9MSxjYXB0aW9uPSJCZWNhdXNlIG9mIEpSQeKAmXMgc2VydmljZXMsIEkgZmVlbCBsZXNzIGlzb2xhdGVkIiwgY29sLm5hbWVzPWMoIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIgKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCg0KYGBgDQoNCg0KDQoNCmBgYHtyIFExMn0NCiNJIGxvb2sgZm9yd2FyZCB0byBpbnRlcmFjdGluZyB3aXRoIHRoZSBKUkEgdm9sdW50ZWVyIHdobyBkZWxpdmVycyBteSBmb29kLg0KDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRMTJGID0gZmFjdG9yKA0KICAgIFExMiwNCiAgICBsZXZlbHMgPSBjKCJTdHJvbmdseSBBZ3JlZSIsICJBZ3JlZSIsICJEaXNhZ3JlZSIsICJTdHJvbmdseSBEaXNhZ3JlZSIpKSkNCg0KcWMxMj10YWJsZShkYXRhJFExMkYpDQpxcDEyPTEwMCpwcm9wLnRhYmxlKHFjMTIpDQoNCnExMj1jYmluZChxYzEyLCBxcDEyKQ0KcTEyICU+JQ0KICBrYmwoZGlnaXRzPTEsIGNhcHRpb249IkkgbG9vayBmb3J3YXJkIHRvIGludGVyYWN0aW5nIHdpdGggdGhlIEpSQSB2b2x1bnRlZXIgd2hvIGRlbGl2ZXJzIG15IGZvb2QiLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQoNCmBgYA0KDQoNCg0KDQoNCg0KDQpgYGB7ciBRMTN9DQoNCnRvdGFsRkY9bnJvdyhkYXRhKQ0KDQpGRml0ZW1zIDwtIGRhdGEgJT4lDQogIG11dGF0ZSh0cD1jYXNlX3doZW4oZ3JlcGwoIlRvaWxldCIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUoZHJ5YmVhbnM9Y2FzZV93aGVuKGdyZXBsKCJEcnkgQmVhbnMiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKGNlcmVhbD1jYXNlX3doZW4oZ3JlcGwoIkNlcmVhbCIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUodHVuYT1jYXNlX3doZW4oZ3JlcGwoIlR1bmEiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKHNhbG1vbj1jYXNlX3doZW4oZ3JlcGwoIlNhbG1vbiIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUob2F0bWVhbD1jYXNlX3doZW4oZ3JlcGwoIk9hdG1lYWwiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKHBhc3RhPWNhc2Vfd2hlbihncmVwbCgiUGFzdGEiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKHNvdXA9Y2FzZV93aGVuKGdyZXBsKCJDYW5uZWQgU291cCIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUobnV0cz1jYXNlX3doZW4oZ3JlcGwoIk51dHMiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKHBiPWNhc2Vfd2hlbihncmVwbCgiUGVhbnV0IiwgUTEzKX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lICANCiAgICBtdXRhdGUoYXNhdWNlPWNhc2Vfd2hlbihncmVwbCgiQXBwbGVzYXVjZSIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JSAgDQogICAgbXV0YXRlKGNhbmJlYW5zPWNhc2Vfd2hlbihncmVwbCgiQ2FubmVkIEJlYW5zIiwgUTEzKX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lICANCiAgICBtdXRhdGUoY2FuZnJ1aXQ9Y2FzZV93aGVuKGdyZXBsKCJDYW5uZWQgRnJ1aXQiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUgIA0KICAgIG11dGF0ZShjYW52ZWc9Y2FzZV93aGVuKGdyZXBsKCJDYW5uZWQgVmVnZXRhYmxlcyIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JSAgDQogICAgbXV0YXRlKGRyeXNvdXA9Y2FzZV93aGVuKGdyZXBsKCJEcnkgU291cCIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JSAgDQogICAgbXV0YXRlKG9pbD1jYXNlX3doZW4oZ3JlcGwoIk9pbCIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JSAgDQogICAgbXV0YXRlKG1heW89Y2FzZV93aGVuKGdyZXBsKCJNYXlvbm5haXNlIiwgUTEzKX4iWWVzIiwgVFJVRX4iTm8iKSkNCg0KdDEzMSA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyR0cCwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzIgPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkZHJ5YmVhbnMsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTMzIDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJGNlcmVhbCwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzQgPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkdHVuYSwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzUgPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkc2FsbW9uLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDEzNjwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJG9hdG1lYWwsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTM3PC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkcGFzdGEsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTM4PC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkc291cCwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzk8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRudXRzLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDEzMTA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRwYiwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzExPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkYXNhdWNlLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDEzMTI8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRjYW5iZWFucywgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzEzPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkY2FuZnJ1aXQsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTMxNDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJGNhbnZlZywgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzE1PC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkZHJ5c291cCwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzE2PC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkb2lsLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDEzMTM8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRtYXlvLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KDQpsYWJlbHMxMz1jKCJUb2lsZXQgcGFwZXIiLCAiRHJ5IEJlYW5zIiwgIkNlcmVhbCIsICJDYW5uZWQgdHVuYSIsICJTYWxtb24iLCAiT2F0bWVhbCIsDQogICAgICAgICAgICJQYXN0YS9ub29kbGVzIiwgIkNhbm5lZCBzb3VwIiwgIk51dHMiLCAiUGVhbnV0IGJ1dHRlciIsICJBcHBsZXNhdWNlIiwNCiAgICAgICAgICAgIkNhbm5lZCBCZWFucyIsICJDYW5uZWQgRnJ1aXQiLCAiQ2FubmVkIFZlZ2V0YWJsZXMiLCAiRHJ5IFNvdXAgTWl4IiwgIk9pbCIsICJNYXlvbmFpc3NlIikNCiAgICAgICAgICAgDQogICAgICAgICAgIA0KY291bnRzMTM9Yyh0MTMxJG4gWzJdLCB0MTMyJG4gWzJdLCB0MTMzJG4gWzJdLCB0MTM0JG4gWzJdLCB0MTM1JG4gWzJdLCB0MTM2JG4gWzJdLCB0MTM3JG5bMl0sIHQxMzgkblsyXSwNCiAgICAgICAgICAgdDEzOSRuIFsyXSwgdDEzMTAkbiBbMl0sIHQxMzExJG4gWzJdLCB0MTMxMiRuIFsyXSwgdDEzMTMkbiBbMl0sIHQxMzE0JG4gWzJdLCB0MTMxNSRuWzJdLCB0MTMxNiRuWzJdLCB0MTMxMyRuWzJdKQ0KcGVyY2VudHMxMz1jKHQxMzEkblsyXS90b3RhbEZGLCB0MTMyJG5bMl0vdG90YWxGRiwgDQogICAgICAgICAgICAgdDEzMyRuWzJdL3RvdGFsRkYsIHQxMzQkblsyXS90b3RhbEZGLCANCiAgICAgICAgICAgICB0MTM1JG5bMl0vdG90YWxGRiwgdDEzNiRuWzJdL3RvdGFsRkYsDQogICAgICAgICAgICAgdDEzNyRuWzJdL3RvdGFsRkYsIHQxMzgkblsyXS90b3RhbEZGLA0KICAgICAgICAgICAgIHQxMzkkblsyXS90b3RhbEZGLCB0MTMxMCRuWzJdL3RvdGFsRkYsIA0KICAgICAgICAgICAgIHQxMzExJG5bMl0vdG90YWxGRiwgdDEzMTIkblsyXS90b3RhbEZGLA0KICAgICAgICAgICAgIHQxMzEzJG5bMl0vdG90YWxGRiwgdDEzMTQkblsyXS90b3RhbEZGLA0KICAgICAgICAgICAgIHQxMzE1JG5bMl0vdG90YWxGRiwgdDEzMTYkblsyXS90b3RhbEZGLA0KICAgICAgICAgICAgIHQxMzEzJG5bMl0vdG90YWxGRikNCg0KcGVyY2VudHMxMz0xMDAqcm91bmQocGVyY2VudHMxMywgMykNCg0KdGFibGUxMz1hcy5kYXRhLmZyYW1lKGNiaW5kKGxhYmVsczEzLCBjb3VudHMxMywgcGVyY2VudHMxMykpDQoNCnRhYmxlMTMgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iU2VsZWN0IHVwIHRvIDUgaXRlbXMgZnJvbSB0aGUgSlJBIEZvb2QgQm94IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0IHRoYXQgYXJlIHlvdXIgZmF2b3JpdGUgb3IgbW9zdCBoZWxwZnVsLiIsIGNvbC5uYW1lcz1jKCJJdGVtcyIsICJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQoNCmBgYA0KDQojIyBDaGFsbGVuZ2VzIHlvdSBtYXkgZmFjZQ0KDQoNCmBgYHtyIFExNH0NCg0KI1dpdGhpbiB0aGUgcGFzdCAxMiBtb250aHMsIHdlIHdvcnJpZWQgd2hldGhlciBvdXIgZm9vZCB3b3VsZCBydW4gb3V0IGJlZm9yZSB3ZSBnb3QgbW9uZXkgdG8gYnV5IG1vcmUuDQoNCg0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTE0RiA9IGZhY3RvcigNCiAgICBRMTQsDQogICAgbGV2ZWxzID0gYygiT2Z0ZW4gdHJ1ZSIsICJTb21ldGltZXMgdHJ1ZSIsICJOZXZlciB0cnVlIiwgIkRvbid0IGtub3ciKSkpDQoNCnFjMTQ9dGFibGUoZGF0YSRRMTRGKQ0KcXAxND0xMDAqcHJvcC50YWJsZShxYzE0KQ0KDQpxMTQ9Y2JpbmQocWMxNCwgcXAxNCkNCnExNCAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJXaXRoaW4gdGhlIHBhc3QgMTIgbW9udGhzLCB3ZSB3b3JyaWVkIHdoZXRoZXIgb3VyIGZvb2Qgd291bGQgcnVuIG91dCBiZWZvcmUgd2UgZ290IG1vbmV5IHRvIGJ1eSBtb3JlIiwgY29sLm5hbWVzPWMoIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIpKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RiwgaHRtbF9mb250PSJDYW1icmlhIikgJT4lDQogICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KDQpgYGANCg0KDQoNCmBgYHtyIFExNX0NCiNXaXRoaW4gdGhlIHBhc3QgMTIgbW9udGhzLCB0aGUgZm9vZCB0aGF0IHdlIGJvdWdodCBqdXN0IGRpZG7igJl0IGxhc3QgYW5kIHdlIGRpZG7igJl0IGhhdmUgbW9uZXkgdG8gZ2V0IG1vcmUuDQoNCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFExNUYgPSBmYWN0b3IoDQogICAgUTE1LA0KICAgIGxldmVscyA9IGMoIk9mdGVuIHRydWUiLCAiU29tZXRpbWVzIHRydWUiLCAiTmV2ZXIgdHJ1ZSIsICJEb24ndCBrbm93IikpKQ0KDQpxYzE1PXRhYmxlKGRhdGEkUTE1RikNCnFwMTU9MTAwKnByb3AudGFibGUocWMxNSkNCg0KDQpxMTU9Y2JpbmQocWMxNSwgcXAxNSkNCnExNSAlPiUNCiAga2JsKGRpZ2l0cz0xLGNhcHRpb249IldpdGhpbiB0aGUgcGFzdCAxMiBtb250aHMsIHRoZSBmb29kIHRoYXQgd2UgYm91Z2h0IGp1c3QgZGlkbuKAmXQgbGFzdCBhbmQgd2UgZGlkbuKAmXQgaGF2ZSBtb25leSB0byBnZXQgbW9yZSIsIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCg0KYGBgDQoNCg0KDQpgYGB7ciBRMTZ9DQojV2hpY2ggb2YgdGhlIGZvbGxvd2luZyBleHBlbnNlcyBoYXMgdGhlIGdyZWF0ZXN0IGltcGFjdCBvbiB5b3VyIGhvdXNlaG9sZOKAmXMgYWJpbGl0eSB0byBidXkgZW5vdWdoIGZvb2Q/DQoNCnRvdGFsRkY9bnJvdyhkYXRhKQ0KDQpGRml0ZW1zIDwtIGRhdGEgJT4lDQogIG11dGF0ZShob3VzaW5nPWNhc2Vfd2hlbihncmVwbCgiVG9pbGV0IiwgUTEzKX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZSh1dGlsaXRpZXM9Y2FzZV93aGVuKGdyZXBsKCJEcnkgQmVhbnMiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKHRyYW5zcG89Y2FzZV93aGVuKGdyZXBsKCJDZXJlYWwiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKG1lZGljYWw9Y2FzZV93aGVuKGdyZXBsKCJUdW5hIiwgUTEzKX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShjaGlsZGNhcmU9Y2FzZV93aGVuKGdyZXBsKCJTYWxtb24iLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKHRheGVzPWNhc2Vfd2hlbihncmVwbCgiT2F0bWVhbCIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpDQoNCg0KdDE2MSA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRob3VzaW5nLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDE2MiA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyR1dGlsaXRpZXMsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTYzIDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJHRyYW5zcG8sIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTY0IDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJG1lZGljYWwsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTY1IDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJGNoaWxkY2FyZSwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxNjYgPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkdGF4ZXMsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQoNCg0KbGFiZWxzMTY9YygiSG91c2luZyBjb3N0cyIsICJVdGlsaXR5IGNvc3RzIiwgInRyYW5zcG9ydGF0aW9uIGNvc3RzIiwgIk1lZGljYWwgZXhwZW5zZXMiLA0KICAgICAgICAgICAiQ2hpbGRjYXJlIGNvc3RzIiwgIlRheGVzIikNCiAgICAgICAgICAgDQogICAgICAgICAgIA0KY291bnRzMTY9Yyh0MTYxJG4gWzJdLCB0MTYyJG4gWzJdLCB0MTYzJG4gWzJdLCB0MTY0JG4gWzJdLCB0MTY1JG4gWzJdLCB0MTY2JG4gWzJdKQ0KcGVyY2VudHMxNj1jKHQxNjEkblsyXS90b3RhbEZGLCB0MTYyJG5bMl0vdG90YWxGRiwgDQogICAgICAgICAgICAgdDE2MyRuWzJdL3RvdGFsRkYsIHQxNjQkblsyXS90b3RhbEZGLCANCiAgICAgICAgICAgICB0MTY1JG5bMl0vdG90YWxGRiwgdDE2NiRuWzJdL3RvdGFsRkYpDQoNCnBlcmNlbnRzMTY9MTAwKnJvdW5kKHBlcmNlbnRzMTYsIDMpDQoNCnRhYmxlMTY9YXMuZGF0YS5mcmFtZShjYmluZChsYWJlbHMxNiwgY291bnRzMTYsIHBlcmNlbnRzMTYpKQ0KDQp0YWJsZTE2ICU+JQ0KICBrYmwoZGlnaXRzPTEsIGNhcHRpb249IlNlbGVjdCB1cCB0byA1IGl0ZW1zIGZyb20gdGhlIEpSQSBGb29kIEJveCBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdCB0aGF0IGFyZSB5b3VyIGZhdm9yaXRlIG9yIG1vc3QgaGVscGZ1bC4iLCBjb2wubmFtZXM9YygiSXRlbXMiLCAiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KDQpgYGANCg0KDQogDQoNCmBgYHtyIFExN30NCiNIb3cgb2Z0ZW4gaW4gdGhlIGxhc3QgMTIgbW9udGhzIGRpZCB5b3Ugb3Igc29tZW9uZSB5b3VyIGhvdXNlaG9sZCB2aXNpdCBhIGZvb2QgcGFudHJ5Pw0KDQoNCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFExN0YgPSBmYWN0b3IoDQogICAgUTE3LA0KICAgIGxldmVscyA9IGMoIk1vcmUgdGhhbiBvbmNlIGEgbW9udGgiLCAiT25jZSBhIG1vbnRoIiwgIk9uY2UgZXZlcnkgZmV3IG1vbnRocyIsIA0KICAgICAgICAgICAgICAgIk9uY2Ugb3IgdHdpY2UgYSB5ZWFyIiwgIk5ldmVyIikpKQ0KDQpxYzE3PXRhYmxlKGRhdGEkUTE3RikNCnFwMTc9MTAwKnByb3AudGFibGUocWMxNykNCg0KDQpxMTc9Y2JpbmQocWMxNywgcXAxNykNCnExNyAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJIb3cgb2Z0ZW4gaW4gdGhlIGxhc3QgMTIgbW9udGhzIGRpZCB5b3Ugb3Igc29tZW9uZSB5b3VyIGhvdXNlaG9sZCB2aXNpdCBhIGZvb2QgcGFudHJ5PyIsIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCg0KYGBgDQoNCg0KDQpgYGB7ciBRMTh9DQojSG93IG9mdGVuIGluIHRoZSBsYXN0IDEyIG1vbnRocyBkaWQgeW91ciBob3VzZWhvbGQgaGF2ZSBmb29kIGRlbGl2ZXJlZCBmcm9tIGEgcGFudHJ5IG90aGVyIHRoYW4gSlJBPw0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTE4RiA9IGZhY3RvcigNCiAgICBRMTgsDQogICAgbGV2ZWxzID0gYygiTW9yZSB0aGFuIG9uY2UgYSBtb250aCIsICJPbmNlIGEgbW9udGgiLCAiT25jZSBldmVyeSBmZXcgbW9udGhzIiwgDQogICAgICAgICAgICAgICAiT25jZSBvciB0d2ljZSBhIHllYXIiLCAiTmV2ZXIiKSkpDQoNCnFjMTg9dGFibGUoZGF0YSRRMThGKQ0KcXAxOD0xMDAqcHJvcC50YWJsZShxYzE4KQ0KDQoNCnExOD1jYmluZChxYzE4LCBxcDE4KQ0KcTE4ICU+JQ0KICBrYmwoZGlnaXRzPTEsIGNhcHRpb249IkhvdyBvZnRlbiBpbiB0aGUgbGFzdCAxMiBtb250aHMgZGlkIHlvdXIgaG91c2Vob2xkIGhhdmUgZm9vZCBkZWxpdmVyZWQgZnJvbSBhIHBhbnRyeSBvdGhlciB0aGFuIEpSQT8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQoNCg0KYGBgDQoNCiMjIEN1bHR1cmUgYW5kIHRoZSBKZXdpc2ggQ29tbXVuaXR5DQoNCmBgYHtyIFExOX0NCiNEb2VzIHJlY2VpdmluZyBhIGJveCBvZiBrb3NoZXIgZm9vZCBmcm9tIEpSQSBtYWtlIHlvdSBmZWVsIGNhcmVkIGZvciBieSB0aGUgSmV3aXNoIGNvbW11bml0eT8NCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFExOUYgPSBmYWN0b3IoDQogICAgUTE5LA0KICAgIGxldmVscyA9IGMoIlllcyIsICJObyIpKSkNCg0KcWMxOT10YWJsZShkYXRhJFExOUYpDQpxcDE5PTEwMCpwcm9wLnRhYmxlKHFjMTkpDQoNCnExOT1jYmluZChxYzE5LCBxcDE5KQ0KcTE5ICU+JQ0KICBrYmwoZGlnaXRzPTEsIGNhcHRpb249IkRvIHlvdSBvciBhbnlvbmUgaW4geW91ciBob3VzZWhvbGQgaWRlbnRpZnkgYXMgSmV3aXNoPyIsIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCg0KYGBgDQoNCg0KDQoNCmBgYHtyIFEyMH0NCg0KI0RvZXMgcmVjZWl2aW5nIGEgYm94IG9mIGtvc2hlciBmb29kIGZyb20gSlJBIG1ha2UgeW91IGZlZWwgY2FyZWQgZm9yIGJ5IHRoZSBKZXdpc2ggY29tbXVuaXR5Pw0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTIwRiA9IGZhY3RvcigNCiAgICBRMjAsDQogICAgbGV2ZWxzID0gYygiWWVzIiwgIk5vIikpKQ0KDQpxYzIwPXRhYmxlKGRhdGEkUTIwRikNCnFwMjA9MTAwKnByb3AudGFibGUocWMyMCkNCg0KDQpxMjA9Y2JpbmQocWMyMCwgcXAyMCkNCnEyMCAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJEb2VzIHJlY2VpdmluZyBhIGJveCBvZiBrb3NoZXIgZm9vZCBmcm9tIEpSQSBtYWtlIHlvdSBmZWVsIGNhcmVkIGZvciBieSB0aGUgSmV3aXNoIGNvbW11bml0eT8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQoNCg0KYGBgDQoNCg0KDQpgYGB7ciBRMjF9DQojRG9lcyByZWNlaXZpbmcgc3BlY2lhbCBmb29kcyBmb3IgSmV3aXNoIGhvbGlkYXlzIGluIHRoZSBKUkEgYm94IGVuYWJsZSB5b3UgdG8gaGF2ZSBhIG1vcmUgbWVhbmluZ2Z1bCBjZWxlYnJhdGlvbj8NCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFEyMUYgPSBmYWN0b3IoDQogICAgUTIxLA0KICAgIGxldmVscyA9IGMoIlllcyIsICJObyIsICJJIGRvIG5vdCBpZGVudGlmeSBhcyBKZXdpc2giKSkpDQoNCnFjMjE9dGFibGUoZGF0YSRRMjFGKQ0KcXAyMT0xMDAqcHJvcC50YWJsZShxYzIxKQ0KDQpxMjE9Y2JpbmQocWMyMSwgcXAyMSkNCnEyMSAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJEb2VzIHJlY2VpdmluZyBzcGVjaWFsIGZvb2RzIGZvciBKZXdpc2ggaG9saWRheXMgaW4gdGhlIEpSQSBib3ggZW5hYmxlIHlvdSB0byBoYXZlIGEgbW9yZSBtZWFuaW5nZnVsIGNlbGVicmF0aW9uPyIsIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCmBgYA0KDQpgYGB7ciBRMjJ9DQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRMjJGID0gZmFjdG9yKA0KICAgIFEyMiwNCiAgICBsZXZlbHMgPSBjKCJZZXMiLCAiTm8iKSkpDQoNCnFjMjI9dGFibGUoZGF0YSRRMjJGKQ0KcXAyMj0xMDAqcHJvcC50YWJsZShxYzIyKQ0KDQpxMjI9Y2JpbmQocWMyMiwgcXAyMikNCnEyMiAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJEbyB5b3Uga2VlcCBhIGtvc2hlciBob21lPyIsIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCmBgYA0KDQoNCiANCmBgYHtyIFEyM30NCiNEbyB5b3Ugb3Igc29tZW9uZSBjdXJyZW50bHkgbGl2aW5nIGluIHlvdXIgaG91c2Vob2xkIGlkZW50aWZ5IGFzIGEgSG9sb2NhdXN0IFN1cnZpdm9yPw0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTIzRiA9IGZhY3RvcigNCiAgICBRMjMsDQogICAgbGV2ZWxzID0gYygiWWVzIiwgIk5vIikpKQ0KDQpxYzIzPXRhYmxlKGRhdGEkUTIzRikNCnFwMjM9MTAwKnByb3AudGFibGUocWMyMykNCg0KcTIzPWNiaW5kKHFjMjMsIHFwMjMpDQpxMjMgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iRG8geW91IG9yIHNvbWVvbmUgY3VycmVudGx5IGxpdmluZyBpbiB5b3VyIGhvdXNlaG9sZCBpZGVudGlmeSBhcyBhIEhvbG9jYXVzdCBTdXJ2aXZvcj8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCg0KDQojIyBGYW1pbHkgRnJpZW5kbHkgRm9vZCBQcm9ncmFtDQoNCmBgYHtyIFEyNX0NCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFEyNUYgPSBmYWN0b3IoDQogICAgUTI1LA0KICAgIGxldmVscyA9IGMoIlllcyIsICJObyIpKSkNCg0KcWMyNT10YWJsZShkYXRhJFEyNUYpDQpxcDI1PTEwMCpwcm9wLnRhYmxlKHFjMjUpDQoNCg0KcTI1PWNiaW5kKHFjMjUsIHFwMjUpDQpxMjUgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iRG8geW91IHJlY2VpdmUgRkYgZm9vZCBiYWc/IiwgY29sLm5hbWVzPWMoIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIpKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RiwgaHRtbF9mb250PSJDYW1icmlhIikgJT4lDQogICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KYGBgDQoNCiAgDQoNCg0KYGBge3IgUTI2fQ0KI1doYXQgaXMgeW91ciBvdmVyYWxsIHNhdGlzZmFjdGlvbiB3aXRoIHRoZSBmb29kIHByb3ZpZGVkIGluIHRoZSBGYW1pbHkgRnJpZW5kbHkgRm9vZCBQcm9ncmFtL0JsdWUgQmFnPw0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTI2RiA9IGZhY3RvcigNCiAgICBRMjYsDQogICAgbGV2ZWxzID0gYygiVmVyeSBzYXRpc2ZpZWQiLCAiU2F0aXNmaWVkIiwgIkRpc3NhdGlzZmllZCIsICJWZXJ5IGRpc3NhdGlzZmllZCIpKSkNCg0KcWMyNj10YWJsZShkYXRhJFEyNkYpDQpxcDI2PTEwMCpwcm9wLnRhYmxlKHFjMjYpDQoNCg0KcTI2PWNiaW5kKHFjMjYsIHFwMjYpDQpxMjYgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iV2hhdCBpcyB5b3VyIG92ZXJhbGwgc2F0aXNmYWN0aW9uIHdpdGggdGhlIGZvb2QgcHJvdmlkZWQgaW4gdGhlIEZhbWlseSBGcmllbmRseSBGb29kIFByb2dyYW0vQmx1ZSBCYWc/IiwgY29sLm5hbWVzPWMoIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIpKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RiwgaHRtbF9mb250PSJDYW1icmlhIikgJT4lDQogICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KYGBgDQoNCg0KDQpgYGB7ciBRMjh9DQpGRml0ZW1zIDwtIGRhdGEgJT4lDQogIG11dGF0ZShwYj1jYXNlX3doZW4oZ3JlcGwoIlBlYW51dCIsIFEyOCl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUoamFtPWNhc2Vfd2hlbihncmVwbCgiSmFtIiwgUTI4KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShjcmFja2Vycz1jYXNlX3doZW4oZ3JlcGwoIkNyYWNrZXJzIiwgUTI4KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShwcmV0emVscz1jYXNlX3doZW4oZ3JlcGwoIlByZXR6ZWxzIiwgUTI4KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShncmFub2xhPWNhc2Vfd2hlbihncmVwbCgiR3Jhbm9sYSIsIFEyOCl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUob2F0bWVhbD1jYXNlX3doZW4oZ3JlcGwoIk9hdG1lYWwiLCBRMjgpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKGZydWl0PWNhc2Vfd2hlbihncmVwbCgiRnJ1aXQiLCBRMjgpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKGNvb2tpZXM9Y2FzZV93aGVuKGdyZXBsKCJDb29raWVzIiwgUTI4KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShiYW5hbmE9Y2FzZV93aGVuKGdyZXBsKCJCYW5hbmEiLCBRMjgpfiJZZXMiLCBUUlVFfiJObyIpKSANCg0KDQp0MjgxIDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJHBiLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDI4MiA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRqYW0sIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MjgzIDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJGNyYWNrZXJzLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDI4NCA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRncmFub2xhLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDI4NTwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJG9hdG1lYWwsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0Mjg2PC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkZnJ1aXQsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0Mjg3PC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkY29va2llcywgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQyODg8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRiYW5hbmEsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQoNCg0KbGFiZWxzMjg9YygiUGVhbnV0IGJ1dHRlciIsICJKYW0vamVsbHkiLCAiQ3JhY2tlcnMiLCANCiAgICAgICAgICAgIlByZXR6ZWxzIiwiR3Jhbm9sYSBiYXJzIiwgIkluc3RhbnQgb2F0bWVhbCIsIA0KICAgICAgICAgICAiRnJ1aXQgY3VwcyIsICJDb29raWVzIiwgIkJhbmFuYSBjaGlwcyIpDQpjb3VudHMyOD1jKHQyODEkblsyXSwgdDI4MiRuWzJdLCB0MjgzJG5bMl0sIHQyODQkblsyXSwgdDI4NSRuWzJdLCB0Mjg2JG4gWzJdLCB0Mjg3JG5bMl0sIHQyODgkblsyXSkNCnBlcmNlbnRzMjg9Yyh0MjgxJG5bMl0vdG90YWxGRiwgdDI4MiRuWzJdL3RvdGFsRkYsIA0KICAgICAgICAgICAgIHQyODMkblsyXS90b3RhbEZGLCB0Mjg0JG5bMl0vdG90YWxGRiwgDQogICAgICAgICAgICAgdDI4NSRuWzJdL3RvdGFsRkYsIHQyODYkblsyXS90b3RhbEZGLA0KICAgICAgICAgICAgIHQyODckblsyXS90b3RhbEZGLCB0Mjg4JG5bMl0vdG90YWxGRikNCg0KcGVyY2VudHMyOD0xMDAqcm91bmQocGVyY2VudHMyOCwgMykNCg0KdGFibGUyOD1hcy5kYXRhLmZyYW1lKGNiaW5kKGxhYmVsczI4LCBjb3VudHMyOCwgcGVyY2VudHMyOCkpDQoNCnRhYmxlMjggJT4lDQogIGtibChjYXB0aW9uPSJTZWxlY3QgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3QgeW91ciB0b3AgNCBmYXZvcml0ZS9oZWxwZnVsIGl0ZW1zIGluIHRoZSBGYW1pbHkgRnJpZW5kbHkgRm9vZCBQcm9ncmFtIChCbHVlIEJhZykuIiwgY29sLm5hbWVzPWMoIkl0ZW1zIiwgIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIpKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RiwgaHRtbF9mb250PSJDYW1icmlhIikgJT4lDQogICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCmBgYA0KDQoNCg0KYGBge3IgUTI5fQ0KI1doYXQgaXMgeW91ciBvdmVyYWxsIHNhdGlzZmFjdGlvbiB3aXRoIHRoZSBmb29kIHByb3ZpZGVkIGluIHRoZSBGYW1pbHkgRnJpZW5kbHkgRm9vZCBQcm9ncmFtL0JsdWUgQmFnPw0KDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRMjlGID0gZmFjdG9yKA0KICAgIFEyOSwNCiAgICBsZXZlbHMgPSBjKCJWZXJ5IHNhdGlzZmllZCIsICJTYXRpc2ZpZWQiLCAiRGlzc2F0aXNmaWVkIiwgIlZlcnkgZGlzc2F0aXNmaWVkIiwNCiAgICAgICAgICAgICAgICJJIGhhdmUgbm90IHJlY2VpdmVkIFN1bW1lciBGcmVzaCBQcm9kdWNlIEJveGVzIHlldC4iKSkpDQpxYzI5PXRhYmxlKGRhdGEkUTI5RikNCnFwMjk9MTAwKnByb3AudGFibGUocWMyOSkNCg0KDQpxMjk9Y2JpbmQocWMyOSwgcXAyOSkNCnEyOSAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJXaGF0IGlzIHlvdXIgb3ZlcmFsbCBzYXRpc2ZhY3Rpb24gd2l0aCB0aGUgZm9vZCBwcm92aWRlZCBpbiB0aGUgRmFtaWx5IEZyaWVuZGx5IEZvb2QgUHJvZ3JhbS9CbHVlIEJhZz8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCg0KDQojIyBQZXJpb2QgUGFja3MgUHJvZ3JhbQ0KDQpgYGB7ciBRMzF9DQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRMzFGID0gZmFjdG9yKA0KICAgIFEzMSwNCiAgICBsZXZlbHMgPSBjKCJZZXMiLCAiTm8iKSkpDQoNCnFjMzE9dGFibGUoZGF0YSRRMzFGKQ0KcXAzMT0xMDAqcHJvcC50YWJsZShxYzMxKQ0KDQoNCnEzMT1jYmluZChxYzMxLCBxcDMxKQ0KcTMxICU+JQ0KICBrYmwoZGlnaXRzPTEsIGNhcHRpb249IkRvIHlvdSByZWNlaXZlIHRoZSBQUCBvcmFuZ2UgYmFnPyIsIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCmBgYA0KDQoNCmBgYHtyIFEzMn0NCiNXaGF0IGlzIHlvdXIgb3ZlcmFsbCBzYXRpc2ZhY3Rpb24gd2l0aCBKUkHigJlzIFBlcmlvZCBQYWNrcyBQcm9ncmFtPw0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTMyRiA9IGZhY3RvcigNCiAgICBRMzIsDQogICAgbGV2ZWxzID0gYygiVmVyeSBzYXRpc2ZpZWQiLCAiU2F0aXNmaWVkIiwgIkRpc3NhdGlzZmllZCIsICJWZXJ5IGRpc3NhdGlzZmllZCIpKSkNCg0KcWMzMj10YWJsZShkYXRhJFEzMkYpDQpxcDMyPTEwMCpwcm9wLnRhYmxlKHFjMzIpDQoNCg0KcTMyPWNiaW5kKHFjMzIsIHFwMzIpDQpxMzIgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iV2hhdCBpcyB5b3VyIG92ZXJhbGwgc2F0aXNmYWN0aW9uIHdpdGggSlJB4oCZcyBQZXJpb2QgUGFja3MgUHJvZ3JhbT8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCg0KDQpgYGB7ciBRMzN9DQojU2VsZWN0IHRoZSBzdGF0ZW1lbnRzIGJlbG93IHRoYXQgeW91IGFncmVlIHdpdGggcmVnYXJkaW5nIHBlcmlvZCBwcm9kdWN0cy4gQ2hlY2sgYWxsIHRoYXQgYXBwbHkuDQpGRml0ZW1zIDwtIGRhdGEgJT4lDQogIG11dGF0ZShsb25nZXI9Y2FzZV93aGVuKGdyZXBsKCJsb25nZXIiLCBRMzMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKGZyaWVuZD1jYXNlX3doZW4oZ3JlcGwoImZyaWVuZCIsIFEzMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUoc3RyYW5nZXI9Y2FzZV93aGVuKGdyZXBsKCJzdHJhbmdlciIsIFEzMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUoZm9jdXM9Y2FzZV93aGVuKGdyZXBsKCJmb2N1cyIsIFEzMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUoc3RyZXNzPWNhc2Vfd2hlbihncmVwbCgic3RyZXNzZWQiLCBRMzMpfiJZZXMiLCBUUlVFfiJObyIpKQ0KDQoNCnQzMzEgPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkbG9uZ2VyLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDMzMiA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRmcmllbmQsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MzMzIDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJHN0cmFuZ2VyLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDMzNCA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRmb2N1cywgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQzMzU8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRzdHJlc3MsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQoNCg0KbGFiZWxzMzM9YygiV29ybiBsb25nZXIgdGhhbiByZWNvbW1lbmRlZCIsDQogICAgICAgICAgICJBc2tlZCBhIGZyaWVuZCBvciBjbGFzc21hdGUiLA0KICAgICAgICAgICAiYXNrZWQgYSBzdHJhbmdlciIsDQogICAgICAgICAgICJVbmFibGUgdG8gZm9jdXMiLA0KICAgICAgICAgICAiU3RyZXNzZWQgb3IgZW1iYXJyYXNzZWQiKQ0KDQp0b3RhbEZGPTE4MA0KICANCmNvdW50czMzPWModDMzMSRuWzJdLCB0MzMyJG5bMl0sIHQzMzMkblsyXSwgdDMzNCRuWzJdLCB0MzM1JG5bMl0pDQpwZXJjZW50czMzPWModDMzMSRuWzJdL3RvdGFsRkYsIHQzMzIkblsyXS90b3RhbEZGLCANCiAgICAgICAgICAgICB0MzMzJG5bMl0vdG90YWxGRiwgdDMzNCRuWzJdL3RvdGFsRkYsIA0KICAgICAgICAgICAgIHQzMzUkblsyXS90b3RhbEZGKQ0KDQpwZXJjZW50czMzPTEwMCpyb3VuZChwZXJjZW50czMzLCAzKQ0KDQp0YWJsZTMzPWFzLmRhdGEuZnJhbWUoY2JpbmQobGFiZWxzMzMsIGNvdW50czMzLCBwZXJjZW50czMzKSkNCg0KdGFibGUzMyAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJTZWxlY3QgdGhlIHN0YXRlbWVudHMgYmVsb3cgdGhhdCB5b3UgYWdyZWUgd2l0aCByZWdhcmRpbmcgcGVyaW9kIHByb2R1Y3RzLiBDaGVjayBhbGwgdGhhdCBhcHBseS4iLCBjb2wubmFtZXM9YygiSXRlbXMiLCAiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCg0KDQoNCg0KYGBge3IgUTM0fQ0KDQpQUGl0ZW1zIDwtIGRhdGEgJT4lDQogIG11dGF0ZShvdmVyPWNhc2Vfd2hlbihncmVwbCgiT3Zlcm5pZ2h0IiwgUTM0KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShyZWc9Y2FzZV93aGVuKGdyZXBsKCJSZWd1bGFyIiwgUTM0KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZSh0YW09Y2FzZV93aGVuKGdyZXBsKCJUYW1wb25zIiwgUTM0KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShsaW5lcj1jYXNlX3doZW4oZ3JlcGwoIlBhbnRpbGluZXJzIiwgUTM0KX4iWWVzIiwgVFJVRX4iTm8iKSkNCg0KdDM0MSA8LSBxdWVzdGlvbnI6OmZyZXEoUFBpdGVtcyRvdmVyLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDM0MiA8LSBxdWVzdGlvbnI6OmZyZXEoUFBpdGVtcyRyZWcsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MzQzIDwtIHF1ZXN0aW9ucjo6ZnJlcShQUGl0ZW1zJHRhbSwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQzNDQgPC0gcXVlc3Rpb25yOjpmcmVxKFBQaXRlbXMkbGluZXIsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQoNCnRvdGFsUFA9MTgwDQoNCmxhYmVsczM0PWMoIk92ZXJuaWdodCBNYXhpIFBhZHMiLCAiUmVndWxhciBNYXhpIFBhZHMgdy93aW5ncyIsICJUYW1wb25zIiwgIlBhbnRpbGluZXJzIikNCmNvdW50czM0PWModDM0MSRuIFsyXSwgdDM0MiRuIFsyXSwgdDM0MyRuIFsyXSwgdDM0NCRuIFsyXSkNCnBlcmNlbnRzMzQ9Yyh0MzQxJG5bMl0vdG90YWxQUCwgdDM0MiRuWzJdL3RvdGFsUFAsIA0KICAgICAgICAgICAgIHQzNDMkblsyXS90b3RhbFBQLCB0MzQ0JG5bMl0vdG90YWxQUCkNCg0KcGVyY2VudHMzND0xMDAqcm91bmQocGVyY2VudHMzNCwgMykNCg0KdGFibGUzND1hcy5kYXRhLmZyYW1lKGNiaW5kKGxhYmVsczM0LCBjb3VudHMzNCwgcGVyY2VudHMzNCkpDQoNCnRhYmxlMzQgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iU2VsZWN0IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0IHlvdXIgdG9wIDIgZmF2b3JpdGUvaGVscGZ1bCBpdGVtcyBpbiB0aGUgUGVyaW9kIFByb2R1Y3RzIEJhZy4iLCBjb2wubmFtZXM9YygiSXRlbXMiLCAiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KYGBgDQoJCQ0KDQoNCg0KDQpgYGB7ciBRMzV9DQojSG93IGxvbmcgZG8gdGhlIHN1cHBsaWVzIHlvdSByZWNlaXZlIGluIHRoZSBQZXJpb2QgUHJvZHVjdHMgKE9yYW5nZSkgQmFnIGxhc3Q/DQoNCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFEzNUYgPSBmYWN0b3IoDQogICAgUTM1LA0KICAgIGxldmVscyA9IGMoIjEgbW9udGgiLCAiMiBtb250aHMiLCAiMyBtb250aHMiKSkpDQoNCnFjMzU9dGFibGUoZGF0YSRRMzVGKQ0KcXAzNT0xMDAqcHJvcC50YWJsZShxYzM1KQ0KDQpxMzU9Y2JpbmQocWMzNSwgcXAzNSkNCnEzNSAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJIb3cgbG9uZyBkbyB0aGUgc3VwcGxpZXMgeW91IHJlY2VpdmUgaW4gdGhlIFBlcmlvZCBQcm9kdWN0cyAoT3JhbmdlKSBCYWcgbGFzdD8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCg0KDQoNCg==