Dear All,
You are cordially invited to the first lecture in the series: Re-reading the Canon. New perspectives on ignored problems!
The first lecture will be delievered by the great Huaping Lu-Adler.
Please find all details below!
I hope to see you there!
All the best,
Bjoern
Lecture 1
Philosophy, Racist Ideology & Liberatory Pedagogy:
a reflection on Kant & the canon problem
Huaping Lu-Adler
Associate Professor of Philosophy, Georgetown
Vice President, North American Kant Society
June 30, 2022, 4-6 pm (BST)
Register in advance for this meeting:
https://soas-ac-uk.zoom.us/meeting/register/tJ0pf-GupzwvH9Umntg1j5enh9985IDZxm8Q
Björn Freter (he/him/his), PhD
Lecturer in World Philosophy
School of History, Religions and Philosophies,
The School of Oriental & African Studies (SOAS),
University of London
EXTERNAL EMAIL: This email originated from outside of the organization. Do not click any links or open any attachments unless you trust the sender and know the content is safe.
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/BL0PR01MB4514DD16CBE9C9D4EB9AAA20DEAF9%40BL0PR01MB4514.prod.exchangelabs.com.
Gloria:
This is not nice.
TF
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/BL0PR01MB45144D9B14EE199E29C3CA95DEAE9%40BL0PR01MB4514.prod.exchangelabs.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/DU0PR03MB84153EBD6A73B4C5EDCA4AA4AEAE9%40DU0PR03MB8415.eurprd03.prod.outlook.com.
kenneth harrow
professor emeritus
dept of english
michigan state university
Ken/Adepoju/Gloria:
My critique of the pioneer of the African academy is that we erected canons too quickly. We treated virtually all pioneers as “canonical” to the extent that subsequent generations may become disappointed.
And concerning Kant and many others, we must read into them the context of the time.
All of us are products of this moment. If Africa were to transform itself in the way we want, generations in the future would pose the question: Why did Falola leave Nigeria? Why did he stop writing about regional histories, which was how I began.
We all will be criticized—some condemned—after we are long gone. Another generation will be products of other contexts.
Today, many of us make situational/locational arguments, which may not be translatable to the concerns of future generations.
You cannot criticize Jesus for recognizing the Emperor!
TF
Error! Filename not specified.
Lecture 1
Error! Filename not specified.
Philosophy, Racist Ideology & Liberatory Pedagogy:
a reflection on Kant & the canon problem
Huaping Lu-Adler
Associate Professor of Philosophy, Georgetown
Vice President, North American Kant Society
June 30, 2022, 4-6 pm (BST)
Register in advance for this meeting:
https://soas-ac-uk.zoom.us/meeting/register/tJ0pf-GupzwvH9Umntg1j5enh9985IDZxm8Q
Error! Filename not specified.
.
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/BL1PR12MB5191933CB9CA802C7DA9A3D2DAB09%40BL1PR12MB5191.namprd12.prod.outlook.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/DM6PR11MB335666B643FF4A5995A9F62FF4B09%40DM6PR11MB3356.namprd11.prod.outlook.com.
kenneth harrow
professor emeritus
dept of english
michigan state university
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/BL1PR12MB51919B073AC498635DFD421ADAB29%40BL1PR12MB5191.namprd12.prod.outlook.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/DU0PR03MB84157173F00F735EF8F81126AEB29%40DU0PR03MB8415.eurprd03.prod.outlook.com.
kenneth harrow
professor emeritus
dept of english
michigan state university
After the philosophers on the USA-Africa Dialogue Series come to terms with Immanuel Kant and race ( if ever) , then what ?
Since it’s real and not metaphysical darkness that, on and off, Kant’s apostle Oluwatoyin Vincent Adepoju has been complaining about, there’s also this compelling on-going series Let there be light - real light, the light that shineth in the darkness and the darkness comprehendeth it not..
From there, the next natural/ super-natural step was
“Nature and Nature's laws lay hid in night:God said, Let Newton be! and all was light.”Time to move from tantrums about can’t expect light always whilst glowing with adoration for his lordship Immanuel Kant of Königsberg and to swiftly change alliance to Newton if you want to stop reading by candlelight in 21century Lagos…
kenneth harrow
professor emeritus
dept of english
michigan state university
Most educated Nigeria do not possess the knowledge required for the offices in which they are employed and heavily remunerated. Education, individually or collectively, is useless if it cannot lead us to produce what we need. The importance of education in Nigeria was first highlighted during the question time in the Federal Parliament in 1961 by Dr Nnamani who asked the government why there were still expatriate officers in the country despite Nigeria being independent. Answering on behalf of the government, Zana Bukar Dipcharima said that Nigerians were all around the world studying to acquire knowledge and, on their return, they would give Nigeria the manpower needed to turn our country into paradise on earth when educated returnees might have bombarded the abundant natural resources in the country with their knowledge. In fact, by 1964, all the ministries, departments and agencies had been taken over from expatriates by educated Nigerians and thereby gave credence to the aphorism that what Europeans could do, Nigerians could do it better. But as we have experienced hitherto, that aphorism is true only in the sense that educated Nigerians are much more ruthless in the exploitation of the uneducated Nigeria's masses than the European colonialists.
Most knowledge, even in the sciences, is not about providing such basic infrastructural amenities as water and electricity, nor about addressing energy needs invaluable as all those are - Oluwatoyin V. Adepoju.
I would have considered Mr. Oluwatoyin Vincent Adepoju a serious Kant Evangelist for dismissing knowledge as a provider of basic infrastructural amenities were it not for his post on this forum on Wednesday, 19 September 2018, titled - Scholarship in a World of Poor Electricity : The Nigerian Example. Our 2022 Kant Evangelist who is now preaching to us that man does not need knowledge to produce basic infrastructural amenity as water and electricity wrote in 2018 : I have been struggling for days in my home in Lagos with trying to meet externally created and self-generated deadlines on a number of essays.
But there has been a blackout of electricity in our neighbourhood for days.I have access to a number of online databases but the scope of my use of these information systems is limited by access to electricity.I have to fall back on prints of essays since access to electronic copies of essays is challenged by poor electricity. How are Nigerian Scholars coping? This situation has not changed for decades. It is horrible. Is it possible to do ones best in such an environment as a Scholar or other creative who requires electricity? May God help Nigeria, Black people and Africa. Most educated Nigerians are fictional academics producing imaginary developments while parasitising on the collectively owned natural resources of Nigeria to the exclusion of the masses of Nigeria without conscience.S. Kadiri
From: usaafric...@googlegroups.com <usaafric...@googlegroups.com> on behalf of Oluwatoyin Adepoju <ovde...@gmail.com>
Sent: 19 June 2022 01:14
From: usaafric...@googlegroups.com <usaafric...@googlegroups.com> on behalf of Oluwatoyin Adepoju <ovde...@gmail.com>
Subject: Re: USA Africa Dialogue Series - Re-reading the Canon. Lecture 1: Philosophy, Racist Ideology & Liberatory Pedagogy. A reflection on Kant & the canon problem
Even better perhaps-
Kantian Professor of the Humanities.
According to one source, "Professor of the Humanities" is awarded for striking achievement in various humanities disciplines.
Perhaps if I'm committed enough in broadening my scope, the award could even read "Kantian Professor of the Humanities, of Philosophy of Science and Social Media Studies"
Can you imagine that?!
One person carrying that load of award.
Toyin
On Sat, Jun 18, 2022, 16:59 Oluwatoyin Adepoju <ovde...@gmail.com> wrote:
Thanks, Gloria.
"Oluwatoyin Vincent Adepoju, Kantian Professor and Chair in Social Media Studies.
A professorship awarded for Adepoju's unusually innovative explorations of Kant, fine grained, multidisciplinary and multicultural studies bringing to a broad readership Kant's fellowship with humanity in pursuit of the most pressing questions of existence, doing this in terms of that most democratic of public platforms, social media, Adepoju's extensive publications in that medium making his work a landmark in new styles of scholarship at the entrance to a new millenium"
On Sat, Jun 18, 2022, 14:42 Emeagwali, Gloria (History) <emea...@ccsu.edu> wrote:
Professor of Kantian Studiesand Social Media,we look forward to your brillianceand “geniusness” at the June 30conference, and beyond.
Professor Gloria Emeagwali
Prof. of History/African Studies, CCSU
africahistory.net; vimeo.com/ gloriaemeagwali
Recipient of the 2014 Distinguished Research
Excellence Award, Univ. of Texas at Austin;
2019 Distinguished Africanist Award
New York African Studies Association
From: usaafric...@googlegroups.com <usaafric...@googlegroups.com> on behalf of Oluwatoyin Adepoju <ovde...@gmail.com>
Sent: Saturday, June 18, 2022 3:34 AM
africahistory.net; vimeo.com/ gloriaemeagwali
Recipient of the 2014 Distinguished Research
Excellence Award, Univ. of Texas at Austin;
2019 Distinguished Africanist Award
New York African Studies Association
From: usaafric...@googlegroups.com <usaafric...@googlegroups.com> on behalf of bfre...@gmail.com <bfre...@gmail.com>
Sent: Wednesday, May 25, 2022 9:11 PM
Subject: USA Africa Dialogue Series - Re-reading the Canon. Lecture 1: Philosophy, Racist Ideology & Liberatory Pedagogy. A reflection on Kant & the canon problem
EXTERNAL EMAIL: This email originated from outside of the organization. Do not click any links or open any attachments unless you trust the sender and know the content is safe.
Dear All,
You are cordially invited to the first lecture in the series: Re-reading the Canon. New perspectives on ignored problems!
The first lecture will be delievered by the great Huaping Lu-Adler.
Please find all details below!
I hope to see you there!
All the best,
Bjoern
Lecture 1
Philosophy, Racist Ideology & Liberatory Pedagogy:
a reflection on Kant & the canon problem
Huaping Lu-Adler
Associate Professor of Philosophy, Georgetown
Vice President, North American Kant Society
June 30, 2022, 4-6 pm (BST)
Register in advance for this meeting:
https://soas-ac-uk.zoom.us/meeting/register/tJ0pf-GupzwvH9Umntg1j5enh9985IDZxm8Q
Björn Freter (he/him/his), PhD
Lecturer in World Philosophy
School of History, Religions and Philosophies,
The School of Oriental & African Studies (SOAS),
University of London
--
Listserv moderated by Toyin Falola, University of Texas at Austin
To post to this group, send an email to USAAfric...@googlegroups.com
To subscribe to this group, send an email to USAAfricaDial...@googlegroups.com
Current archives at http://groups.google.com/group/USAAfricaDialogue
Early archives at http://www.utexas.edu/conferences/africa/ads/index.html
---
You received this message because you are subscribed to the Google Groups "USA Africa Dialogue Series" group.
To unsubscribe from this group and stop receiving emails from it, send an email to usaafricadialo...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/047c01d8709d%2489808fb0%249c81af10%24%40gmail.com.
--
Listserv moderated by Toyin Falola, University of Texas at Austin
To post to this group, send an email to USAAfric...@googlegroups.com
To subscribe to this group, send an email to USAAfricaDial...@googlegroups.com
Current archives at http://groups.google.com/group/USAAfricaDialogue
Early archives at http://www.utexas.edu/conferences/africa/ads/index.html
---
You received this message because you are subscribed to the Google Groups "USA Africa Dialogue Series" group.
To unsubscribe from this group and stop receiving emails from it, send an email to usaafricadialo...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/BL0PR01MB4514DD16CBE9C9D4EB9AAA20DEAF9%40BL0PR01MB4514.prod.exchangelabs.com.
--
Listserv moderated by Toyin Falola, University of Texas at Austin
To post to this group, send an email to USAAfric...@googlegroups.com
To subscribe to this group, send an email to USAAfricaDial...@googlegroups.com
Current archives at http://groups.google.com/group/USAAfricaDialogue
Early archives at http://www.utexas.edu/conferences/africa/ads/index.html
---
You received this message because you are subscribed to the Google Groups "USA Africa Dialogue Series" group.
To unsubscribe from this group and stop receiving emails from it, send an email to usaafricadialo...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/CAGBtzfPBd6W5hhVTV%2B7vXfiOR%3DwTPoy%2BBheNUaDqqdnp7Xp_7A%40mail.gmail.com.
--
Listserv moderated by Toyin Falola, University of Texas at Austin
To post to this group, send an email to USAAfric...@googlegroups.com
To subscribe to this group, send an email to USAAfricaDial...@googlegroups.com
Current archives at http://groups.google.com/group/USAAfricaDialogue
Early archives at http://www.utexas.edu/conferences/africa/ads/index.html
---
You received this message because you are subscribed to the Google Groups "USA Africa Dialogue Series" group.
To unsubscribe from this group and stop receiving emails from it, send an email to usaafricadialo...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/CAGBtzfPm%3DVECnFL8cHNgfWw7O9ggHfCCd9X0JytmF7D6%3DyEB6w%40mail.gmail.com.
--
Listserv moderated by Toyin Falola, University of Texas at Austin
To post to this group, send an email to USAAfric...@googlegroups.com
To subscribe to this group, send an email to USAAfricaDial...@googlegroups.com
Current archives at http://groups.google.com/group/USAAfricaDialogue
Early archives at http://www.utexas.edu/conferences/africa/ads/index.html
---
You received this message because you are subscribed to the Google Groups "USA Africa Dialogue Series" group.
To unsubscribe from this group and stop receiving emails from it, send an email to usaafricadialo...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/DU0PR03MB84153EBD6A73B4C5EDCA4AA4AEAE9%40DU0PR03MB8415.eurprd03.prod.outlook.com.
--
Listserv moderated by Toyin Falola, University of Texas at Austin
To post to this group, send an email to USAAfric...@googlegroups.com
To subscribe to this group, send an email to USAAfricaDial...@googlegroups.com
Current archives at http://groups.google.com/group/USAAfricaDialogue
Early archives at http://www.utexas.edu/conferences/africa/ads/index.html
---
You received this message because you are subscribed to the Google Groups "USA Africa Dialogue Series" group.
To unsubscribe from this group and stop receiving emails from it, send an email to usaafricadialo...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/CAGBtzfP%3DuvpKyy0hjqX7xFLUgUXV83tU2aM%2Bz7eJ3XRcPav-rA%40mail.gmail.com.
--
Listserv moderated by Toyin Falola, University of Texas at Austin
To post to this group, send an email to USAAfric...@googlegroups.com
To subscribe to this group, send an email to USAAfricaDial...@googlegroups.com
Current archives at http://groups.google.com/group/USAAfricaDialogue
Early archives at http://www.utexas.edu/conferences/africa/ads/index.html
---
You received this message because you are subscribed to the Google Groups "USA Africa Dialogue Series" group.
To unsubscribe from this group and stop receiving emails from it, send an email to usaafricadialo...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/DU0PR03MB84157173F00F735EF8F81126AEB29%40DU0PR03MB8415.eurprd03.prod.outlook.com.
It was a night of despair, a cold October night, 1945, in Germany. We were sitting in a dirty railway station, lucky to have found at least one place to spend the night after long and uncomfortable travelling. People around me tried to sleep, or talked about the horrors of the war, of imprisonment, or hunger...I took from my coat's pocket a small book that had survived wartime Berlin, deportation, and internment, and had given me unending consolation during those years [Abdullah-i Ansari's] Munajat which I had found in the Berlin print of 1924 sometime during the war.
Once more I delved into its depths, scribbled some rhyming translations of its pithy sayings and verses between the lines, and was carried away from the ''world'' in its ugliest aspects into the realm of peace [through]the wisdom of a searching and suffering man who poured out his feelings in the presence of his Lord like little sighs...
( From Ibn 'Ata' Illah, The Book of Wisdom; Kwaja Abdullah Ansari, Intimate Conversations. Translated by Victor Danner and Wheeler Thackston. Preface by Annemaire Schimmel. Paulist, Press, 1978, xii-xiii).
And what did you mean when you wrote this : MOST KNOWLEDGE, EVEN IN SCIENCES, IS NOT ABOUT PROVIDING SUCH BASIC INFRASTRUCTURAL AMENITIES AS WATER AND ELECTRICITY, NOR ABOUT ADDRESSING ENERGY NEEDS, INVALUABLE AS ALL THOSE ARE. Feigning Solomon and Sampson in one incredible delusion do not constitute a serious analysis of the different kinds of knowledge required by humanity. Yes, Nigeria requires different kinds of knowledge to develop economically and industrially but that does not under any circumstance include knowledge of who was Kant and what he stood for. The economic and industrial underdevelopment of Nigeria today are caused by educated parasites, beset with irrelevant and useless knowledge, presiding over the nation's Ministries, Departments and Agencies. Disprove me if you think I am wrong.
S. Kadiri
From: usaafric...@googlegroups.com <usaafric...@googlegroups.com> on behalf of Oluwatoyin Adepoju <ovde...@gmail.com>
Sent: 23 June 2022 13:30
To: usaafric...@googlegroups.com <usaafric...@googlegroups.com>
Subject: Re: USA Africa Dialogue Series - Re-reading the Canon. Lecture 1: Philosophy, Racist Ideology & Liberatory Pedagogy. A reflection on Kant & the canon problem
Where did I write this
" dismissing knowledge as a provider of basic infrastructural amenities..."
When a response to a serious analysis of the different kinds of knowledge required by humanity degenerates into fictional claims that such an analysis argues that knowledge is unnecessary for proving electricity, water and the likes, what's the point of trying to engage with such thinking?
I wonder why Kant is inspiring such extremist responses.
Thanks
Toyin
On Wed, Jun 22, 2022, 22:12 Salimonu Kadiri <ogunl...@hotmail.com> wrote:
Most educated Nigeria do not possess the knowledge required for the offices in which they are employed and heavily remunerated. Education, individually or collectively, is useless if it cannot lead us to produce what we need. The importance of education in Nigeria was first highlighted during the question time in the Federal Parliament in 1961 by Dr Nnamani who asked the government why there were still expatriate officers in the country despite Nigeria being independent. Answering on behalf of the government, Zana Bukar Dipcharima said that Nigerians were all around the world studying to acquire knowledge and, on their return, they would give Nigeria the manpower needed to turn our country into paradise on earth when educated returnees might have bombarded the abundant natural resources in the country with their knowledge. In fact, by 1964, all the ministries, departments and agencies had been taken over from expatriates by educated Nigerians and thereby gave credence to the aphorism that what Europeans could do, Nigerians could do it better. But as we have experienced hitherto, that aphorism is true only in the sense that educated Nigerians are much more ruthless in the exploitation of the uneducated Nigeria's masses than the European colonialists.
Most knowledge, even in the sciences, is not about providing such basic infrastructural amenities as water and electricity, nor about addressing energy needs invaluable as all those are - Oluwatoyin V. Adepoju.
I would have considered Mr. Oluwatoyin Vincent Adepoju a serious Kant Evangelist for dismissing knowledge as a provider of basic infrastructural amenities were it not for his post on this forum on Wednesday, 19 September 2018, titled - Scholarship in a World of Poor Electricity : The Nigerian Example. Our 2022 Kant Evangelist who is now preaching to us that man does not need knowledge to produce basic infrastructural amenity as water and electricity wrote in 2018 : I have been struggling for days in my home in Lagos with trying to meet externally created and self-generated deadlines on a number of essays.
But there has been a blackout of electricity in our neighbourhood for days.I have access to a number of online databases but the scope of my use of these information systems is limited by access to electricity.I have to fall back on prints of essays since access to electronic copies of essays is challenged by poor electricity. How are Nigerian Scholars coping? This situation has not changed for decades. It is horrible. Is it possible to do ones best in such an environment as a Scholar or other creative who requires electricity? May God help Nigeria, Black people and Africa. Most educated Nigerians are fictional academics producing imaginary developments while parasitising on the collectively owned natural resources of Nigeria to the exclusion of the masses of Nigeria without conscience.S. Kadiri
From: usaafric...@googlegroups.com <usaafric...@googlegroups.com> on behalf of Oluwatoyin Adepoju <ovde...@gmail.com>
Sent: 19 June 2022 01:14
From: usaafric...@googlegroups.com <usaafric...@googlegroups.com> on behalf of Oluwatoyin Adepoju <ovde...@gmail.com>
Subject: Re: USA Africa Dialogue Series - Re-reading the Canon. Lecture 1: Philosophy, Racist Ideology & Liberatory Pedagogy. A reflection on Kant & the canon problem
Even better perhaps-
Kantian Professor of the Humanities.
According to one source, "Professor of the Humanities" is awarded for striking achievement in various humanities disciplines.
Perhaps if I'm committed enough in broadening my scope, the award could even read "Kantian Professor of the Humanities, of Philosophy of Science and Social Media Studies"
Can you imagine that?!
One person carrying that load of award.
Toyin
On Sat, Jun 18, 2022, 16:59 Oluwatoyin Adepoju <ovde...@gmail.com> wrote:
Thanks, Gloria.
"Oluwatoyin Vincent Adepoju, Kantian Professor and Chair in Social Media Studies.
A professorship awarded for Adepoju's unusually innovative explorations of Kant, fine grained, multidisciplinary and multicultural studies bringing to a broad readership Kant's fellowship with humanity in pursuit of the most pressing questions of existence, doing this in terms of that most democratic of public platforms, social media, Adepoju's extensive publications in that medium making his work a landmark in new styles of scholarship at the entrance to a new millenium"
On Sat, Jun 18, 2022, 14:42 Emeagwali, Gloria (History) <emea...@ccsu.edu> wrote:
Professor of Kantian Studiesand Social Media,we look forward to your brillianceand “geniusness” at the June 30conference, and beyond.
Professor Gloria Emeagwali
Prof. of History/African Studies, CCSU
africahistory.net; vimeo.com/ gloriaemeagwali
Recipient of the 2014 Distinguished Research
Excellence Award, Univ. of Texas at Austin;
2019 Distinguished Africanist Award
New York African Studies Association
From: usaafric...@googlegroups.com <usaafric...@googlegroups.com> on behalf of Oluwatoyin Adepoju <ovde...@gmail.com>
Sent: Saturday, June 18, 2022 3:34 AM
africahistory.net; vimeo.com/ gloriaemeagwali
Recipient of the 2014 Distinguished Research
Excellence Award, Univ. of Texas at Austin;
2019 Distinguished Africanist Award
New York African Studies Association
From: usaafric...@googlegroups.com <usaafric...@googlegroups.com> on behalf of bfre...@gmail.com <bfre...@gmail.com>
Sent: Wednesday, May 25, 2022 9:11 PM
Subject: USA Africa Dialogue Series - Re-reading the Canon. Lecture 1: Philosophy, Racist Ideology & Liberatory Pedagogy. A reflection on Kant & the canon problem
EXTERNAL EMAIL: This email originated from outside of the organization. Do not click any links or open any attachments unless you trust the sender and know the content is safe.
Dear All,
You are cordially invited to the first lecture in the series: Re-reading the Canon. New perspectives on ignored problems!
The first lecture will be delievered by the great Huaping Lu-Adler.
Please find all details below!
I hope to see you there!
All the best,
Bjoern
<img width="602" height="186" id="x_m_1295124716386520030m_-768248975373240994x_m_-1238348801330374044m_-8351911623038055296x_m_-5122998814493599981m_6699276434623731715m_-1657674888192198067x_m_-8151083419568342319m_-3153992873086989215m_5514168160933722739m_2729113258501048553x_Picture_x0020_3" alt="" aria-label="One" style="width:6.2708in; height:auto; max-width:100%" src="data:text/html;base64,PCFkb2N0eXBlIGh0bWw+PGh0bWwgZGlyPSJsdHIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0cmFuc2xhdGU9Im5vIj48aGVhZD48bWV0YSBjaGFyc2V0PSJ1dGYtOCIvPjxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSIvPjxtZXRhIGh0dHAtZXF1aXY9InByYWdtYSIgY29udGVudD0ibm8tY2FjaGUiLz48bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSx1c2VyLXNjYWxhYmxlPTAiLz48bWV0YSBuYW1lPSJnb29nbGUiIHZhbHVlPSJub3RyYW5zbGF0ZSIvPjxtZXRhIG5hbWU9ImZvcm1hdC1kZXRlY3Rpb24iIGNvbnRlbnQ9InRlbGVwaG9uZT1ubyIvPjxtZXRhIG5hbWU9InNjcmlwdFZlciIgY29udGVudD0iMjAyMjA2MTcwMDUuMDYiLz48bWV0YSBuYW1lPSJwaHlzaWNhbFJpbmciIGNvbnRlbnQ9IldXIi8+PG1ldGEgbmFtZT0iZW52aXJvbm1lbnQiIGNvbnRlbnQ9IlByb2QiLz48bWV0YSBuYW1lPSJib290RmxpZ2h0cyIgY29udGVudD0ic291cmNlbGlzdGFwaSxub3ZhYXBwYmFyLHNlbmRDbGFpbXNDaGFsbGVuZ2VJblF1ZXJ5LHBlcmZvcm1hbmNlRGF0YXBvaW50SGVhbHRoLHBhdGNobm9kZSIvPjxtZXRhIG5hbWU9ImNkblVybCIgY29udGVudD0iLy9yZXMuY2RuLm9mZmljZS5uZXQvIi8+PG1ldGEgbmFtZT0iYmFja3VwQ2RuVXJsIiBjb250ZW50PSIvL3Jlcy0yLmNkbi5vZmZpY2UubmV0LyIvPjxtZXRhIG5hbWU9ImNkbkNvbnRhaW5lciIgY29udGVudD0ib3dhbWFpbC8iLz48bWV0YSBuYW1lPSJkZXZDZG5VcmwiIGNvbnRlbnQ9IiIvPjxtZXRhIG5hbWU9ImFyaWFVcmwiIGNvbnRlbnQ9IiIvPjxtZXRhIG5hbWU9ImNvbXBhY3RBcmlhVXJsIiBjb250ZW50PSIiLz48bWV0YSBuYW1lPSJ3Y3NzRnJhbWVVcmwiIGNvbnRlbnQ9Imh0dHBzOi8vd2Vic2hlbGwuc3VpdGUub2ZmaWNlLmNvbSIvPjxtZXRhIG5hbWU9InNjcmlwdFBhdGgiIGNvbnRlbnQ9InNjcmlwdHMvIi8+PG1ldGEgbmFtZT0ib3dhSXNBdXRoZW50aWNhdGVkIiBjb250ZW50PSJPd2FJc0F1dGhlbnRpY2F0ZWQiLz48bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii9tYWlsL2Zhdmljb24uaWNvIiB0eXBlPSJpbWFnZS94LWljb24iLz48bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii8vcmVzLmNkbi5vZmZpY2UubmV0L2Fzc2V0cy9tYWlsL3B3YS92MS9wbmdzL2FwcGxlLXRvdWNoLWljb24ucG5nIi8+PG5vc2NyaXB0PkphdmFTY3JpcHQgbXVzdCBiZSBlbmFibGVkLjwvbm9zY3JpcHQ+PHRpdGxlPk91dGxvb2s8L3RpdGxlPjxzdHlsZT5AZm9udC1mYWNlIHsKICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUkgV2VzdEV1cm9wZWFuJzsKICAgICAgICAgICAgICAgIHNyYzogbG9jYWwoJ1NlZ29lIFVJIExpZ2h0JyksIGxvY2FsKCdTZWdvZSBXUCBMaWdodCcpLAogICAgICAgICAgICAgICAgICAgIHVybCgnLy9yZXMuY2RuLm9mZmljZS5uZXQvYXNzZXRzL21haWwvZm9udHMvdjEvZm9udHMvc2Vnb2V1aS1saWdodC5lb3Q/I2llZml4JykKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLAogICAgICAgICAgICAgICAgICAgIHVybCgnLy9yZXMuY2RuLm9mZmljZS5uZXQvYXNzZXRzL21haWwvZm9udHMvdjEvZm9udHMvc2Vnb2V1aS1saWdodC53b2ZmJykKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KCd3b2ZmJyksCiAgICAgICAgICAgICAgICAgICAgdXJsKCcvL3Jlcy5jZG4ub2ZmaWNlLm5ldC9hc3NldHMvbWFpbC9mb250cy92MS9mb250cy9zZWdvZXVpLWxpZ2h0LnR0ZicpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCgndHJ1ZXR5cGUnKTsKICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDA7CiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQGZvbnQtZmFjZSB7CiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJ1NlZ29lIFVJIFdlc3RFdXJvcGVhbic7CiAgICAgICAgICAgICAgICBzcmM6IGxvY2FsKCdTZWdvZSBVSScpLCBsb2NhbCgnU2Vnb2UgV1AnKSwKICAgICAgICAgICAgICAgICAgICB1cmwoJy8vcmVzLmNkbi5vZmZpY2UubmV0L2Fzc2V0cy9tYWlsL2ZvbnRzL3YxL2ZvbnRzL3NlZ29ldWktcmVndWxhci5lb3Q/I2llZml4JykKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLAogICAgICAgICAgICAgICAgICAgIHVybCgnLy9yZXMuY2RuLm9mZmljZS5uZXQvYXNzZXRzL21haWwvZm9udHMvdjEvZm9udHMvc2Vnb2V1aS1yZWd1bGFyLndvZmYnKQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoJ3dvZmYnKSwKICAgICAgICAgICAgICAgICAgICB1cmwoJy8vcmVzLmNkbi5vZmZpY2UubmV0L2Fzc2V0cy9tYWlsL2ZvbnRzL3YxL2ZvbnRzL3NlZ29ldWktcmVndWxhci50dGYnKQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoJ3RydWV0eXBlJyk7CiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEBmb250LWZhY2UgewogICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdTZWdvZSBVSSBXZXN0RXVyb3BlYW4nOwogICAgICAgICAgICAgICAgc3JjOiBsb2NhbCgnU2Vnb2UgVUkgU2VtaWJvbGQnKSwgbG9jYWwoJ1NlZ29lIFdQIFNlbWlib2xkJyksCiAgICAgICAgICAgICAgICAgICAgdXJsKCcvL3Jlcy5jZG4ub2ZmaWNlLm5ldC9hc3NldHMvbWFpbC9mb250cy92MS9mb250cy9zZWdvZXVpLXNlbWlib2xkLmVvdD8jaWVmaXgnKQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksCiAgICAgICAgICAgICAgICAgICAgdXJsKCcvL3Jlcy5jZG4ub2ZmaWNlLm5ldC9hc3NldHMvbWFpbC9mb250cy92MS9mb250cy9zZWdvZXVpLXNlbWlib2xkLndvZmYnKQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoJ3dvZmYnKSwKICAgICAgICAgICAgICAgICAgICB1cmwoJy8vcmVzLmNkbi5vZmZpY2UubmV0L2Fzc2V0cy9tYWlsL2ZvbnRzL3YxL2ZvbnRzL3NlZ29ldWktc2VtaWJvbGQudHRmJykKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KCd0cnVldHlwZScpOwogICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBAZm9udC1mYWNlIHsKICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUkgV2VzdEV1cm9wZWFuJzsKICAgICAgICAgICAgICAgIHNyYzogbG9jYWwoJ1NlZ29lIFVJIFNlbWlsaWdodCcpLCBsb2NhbCgnU2Vnb2UgV1AgU2VtaWxpZ2h0JyksCiAgICAgICAgICAgICAgICAgICAgdXJsKCcvL3Jlcy5jZG4ub2ZmaWNlLm5ldC9hc3NldHMvbWFpbC9mb250cy92MS9mb250cy9zZWdvZXVpLXNlbWlsaWdodC5lb3Q/I2llZml4JykKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLAogICAgICAgICAgICAgICAgICAgIHVybCgnLy9yZXMuY2RuLm9mZmljZS5uZXQvYXNzZXRzL21haWwvZm9udHMvdjEvZm9udHMvc2Vnb2V1aS1zZW1pbGlnaHQud29mZicpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCgnd29mZicpLAogICAgICAgICAgICAgICAgICAgIHVybCgnLy9yZXMuY2RuLm9mZmljZS5uZXQvYXNzZXRzL21haWwvZm9udHMvdjEvZm9udHMvc2Vnb2V1aS1zZW1pbGlnaHQudHRmJykKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KCd0cnVldHlwZScpOwogICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDIwMDsKICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBAZm9udC1mYWNlIHsKICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnRmFicmljTURMMkljb25zJzsKICAgICAgICAgICAgICAgIHNyYzogdXJsKCcvL3Jlcy5jZG4ub2ZmaWNlLm5ldC9vd2FtYWlsLzIwMjIwNjE3MDA1LjA2L3Jlc291cmNlcy9mb250cy9vMzY1aWNvbnMtbWRsMi53b2ZmJykKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KCd3b2ZmJyksCiAgICAgICAgICAgICAgICAgICAgdXJsKCcvL3Jlcy5jZG4ub2ZmaWNlLm5ldC9vd2FtYWlsLzIwMjIwNjE3MDA1LjA2L3Jlc291cmNlcy9mb250cy9vMzY1aWNvbnMtbWRsMi50dGYnKQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoJ3RydWV0eXBlJyk7CiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEBmb250LWZhY2UgewogICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdvZmZpY2UzNjVpY29ucyc7CiAgICAgICAgICAgICAgICBzcmM6IHVybCgnLy9yZXMuY2RuLm9mZmljZS5uZXQvb3dhbWFpbC8yMDIyMDYxNzAwNS4wNi9yZXNvdXJjZXMvZm9udHMvb2ZmaWNlMzY1aWNvbnMuZW90PycpOwogICAgICAgICAgICAgICAgc3JjOiB1cmwoJy8vcmVzLmNkbi5vZmZpY2UubmV0L293YW1haWwvMjAyMjA2MTcwMDUuMDYvcmVzb3VyY2VzL2ZvbnRzL29mZmljZTM2NWljb25zLmVvdD8jaWVmaXgnKQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksCiAgICAgICAgICAgICAgICAgICAgdXJsKCcvL3Jlcy5jZG4ub2ZmaWNlLm5ldC9vd2FtYWlsLzIwMjIwNjE3MDA1LjA2L3Jlc291cmNlcy9mb250cy9vZmZpY2UzNjVpY29ucy53b2ZmPycpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCgnd29mZicpLAogICAgICAgICAgICAgICAgICAgIHVybCgnLy9yZXMuY2RuLm9mZmljZS5uZXQvb3dhbWFpbC8yMDIyMDYxNzAwNS4wNi9yZXNvdXJjZXMvZm9udHMvb2ZmaWNlMzY1aWNvbnMudHRmPycpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCgndHJ1ZXR5cGUnKSwKICAgICAgICAgICAgICAgICAgICB1cmwoJy8vcmVzLmNkbi5vZmZpY2UubmV0L293YW1haWwvMjAyMjA2MTcwMDUuMDYvcmVzb3VyY2VzL2ZvbnRzL29mZmljZTM2NWljb25zLnN2Zz8jb2ZmaWNlMzY1aWNvbnMnKQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoJ3N2ZycpOwogICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKICAgICAgICAgICAgfQogICAgICAgICAgICAjcHJlbG9hZERpdiB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC0xcHg7CiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgICAgICB9CiAgICAgICAgICAgICNsb2FkaW5nU2NyZWVuIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgICAgIGJvdHRvbTogMDsKICAgICAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgICAgICByaWdodDogMDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgI2xvYWRpbmdMb2dvIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgICAgIHRvcDogY2FsYyg1MHZoIC0gOTBweCk7CiAgICAgICAgICAgICAgICBsZWZ0OiBjYWxjKDUwdncgLSA5MHB4KTsKICAgICAgICAgICAgICAgIHdpZHRoOiAxODBweDsKICAgICAgICAgICAgICAgIGhlaWdodDogMTgwcHg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgI01TTG9nbyB7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgICAgICBib3R0b206IDM2cHg7CiAgICAgICAgICAgICAgICBsZWZ0OiBjYWxjKDUwdncgLSA0NXB4KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAuZGFyayAjbG9hZGluZ1NjcmVlbiB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzOwogICAgICAgICAgICB9CiAgICAgICAgICAgICNsb2FkaW5nTG9nbzJfdHMgewogICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBsb2FkaW5nTG9nbzJfdHNfX3RzIDMwMDBtcyBsaW5lYXIgMSBub3JtYWwgZm9yd2FyZHM7CiAgICAgICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxMDAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgICNsb2FkaW5nTG9nbzIgewogICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBsb2FkaW5nTG9nbzJfY19vIDMwMDBtcyBsaW5lYXIgMSBub3JtYWwgZm9yd2FyZHM7CiAgICAgICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxMDAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgICNsb2FkaW5nTG9nbzNfdG8gewogICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBsb2FkaW5nTG9nbzNfdG9fX3RvIDMwMDBtcyBsaW5lYXIgMSBub3JtYWwgZm9yd2FyZHM7CiAgICAgICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxMDAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgICNsb2FkaW5nTG9nbzZfdHMgewogICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBsb2FkaW5nTG9nbzZfdHNfX3RzIDMwMDBtcyBsaW5lYXIgMSBub3JtYWwgZm9yd2FyZHM7CiAgICAgICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxMDAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgICNsb2FkaW5nTG9nbzhfdHMgewogICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBsb2FkaW5nTG9nbzhfdHNfX3RzIDMwMDBtcyBsaW5lYXIgMSBub3JtYWwgZm9yd2FyZHM7CiAgICAgICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxMDAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgICNsb2FkaW5nTG9nbzlfdG8gewogICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBsb2FkaW5nTG9nbzlfdG9fX3RvIDMwMDBtcyBsaW5lYXIgMSBub3JtYWwgZm9yd2FyZHM7CiAgICAgICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxMDAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgICNsb2FkaW5nTG9nbzI5X3RzIHsKICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogbG9hZGluZ0xvZ28yOV90c19fdHMgMzAwMG1zIGxpbmVhciAxIG5vcm1hbCBmb3J3YXJkczsKICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDEwMDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQGtleWZyYW1lcyBsb2FkaW5nTG9nbzJfdHNfX3RzIHsKICAgICAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDguODk0NDNweCwgMTU1LjcxNTEyN3B4KSBzY2FsZSgwLjY2ODk2MywgMC42Njg5NjMpOwogICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIDI2LjY2NjY2NyUgewogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwOC44OTQ0M3B4LCAxNTUuNzE1MTI3cHgpIHNjYWxlKDEsIDEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTA4Ljg5NDQzcHgsIDE1NS43MTUxMjdweCkgc2NhbGUoMSwgMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQGtleWZyYW1lcyBsb2FkaW5nTG9nbzJfY19vIHsKICAgICAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgMTguMzMzMzMzJSB7CiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQGtleWZyYW1lcyBsb2FkaW5nTG9nbzNfdG9fX3RvIHsKICAgICAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDEuMDAwMTU1cHgsIDE5NS45NzA3MDNweCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAxMy4zMzMzMzMlIHsKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDEuMDAwMTU1cHgsIDE5NS45NzA3MDNweCk7CiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDAuMDI1KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIDMxJSB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAxLjAwMDE1NXB4LCAyMDZweCk7CiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTM1LCAwLjcxLCAwLjAzLCAwLjk4NSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICA1MCUgewogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMS4wMDAxNTVweCwgMTk1Ljk3MDcwM3B4KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMS4wMDAxNTVweCwgMTk1Ljk3MDcwM3B4KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBAa2V5ZnJhbWVzIGxvYWRpbmdMb2dvNl90c19fdHMgewogICAgICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMS4wMDA3MDhweCwgOTcuNDk5NTg4cHgpIHNjYWxlKDEsIC0wLjAwMTcyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIDIzLjMzMzMzMyUgewogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMS4wMDA3MDhweCwgOTcuNDk5NTg4cHgpIHNjYWxlKDEsIC0wLjAwMTcyKTsKICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xMzUsIDAuNzEsIDAuMDMsIDAuOTg1KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIDQwJSB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAxLjAwMDcwOHB4LCA5Ny40OTk1ODhweCkgc2NhbGUoMSwgMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDEuMDAwNzA4cHgsIDk3LjQ5OTU4OHB4KSBzY2FsZSgxLCAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBAa2V5ZnJhbWVzIGxvYWRpbmdMb2dvOF90c19fdHMgewogICAgICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMS4wMDA2OTlweCwgMTU5LjkxNDcyM3B4KSBzY2FsZSgxLCAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIDM5LjY2NjY2NyUgewogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMS4wMDA2OTlweCwgMTU5LjkxNDcyM3B4KSBzY2FsZSgxLCAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAxLjAwMDY5OXB4LCAxNTkuOTE0NzIzcHgpIHNjYWxlKDEsIDEuMDUwMzYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgNTIuMzMzMzMzJSB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAxLjAwMDY5OXB4LCAxNTkuOTE0NzIzcHgpIHNjYWxlKDEsIDAuOTU5MjMzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIDU3LjY2NjY2NyUgewogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMS4wMDA2OTlweCwgMTU5LjkxNDcyM3B4KSBzY2FsZSgxLCAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMS4wMDA2OTlweCwgMTU5LjkxNDcyM3B4KSBzY2FsZSgxLCAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBAa2V5ZnJhbWVzIGxvYWRpbmdMb2dvOV90b19fdG8gewogICAgICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMXB4LCAyMDUuNzUzNzY1cHgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgMjYuNjY2NjY3JSB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAxcHgsIDIwNS43NTM3NjVweCk7CiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMS4yNzUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgNTAlIHsKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDFweCwgODFweCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDFweCwgODFweCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQGtleWZyYW1lcyBsb2FkaW5nTG9nbzI5X3RzX190cyB7CiAgICAgICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAxLjAwMDY5OXB4LCA5Ny40OTk1NzNweCkgc2NhbGUoMSwgMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAxMy4zMzMzMzMlIHsKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDEuMDAwNjk5cHgsIDk3LjQ5OTU3M3B4KSBzY2FsZSgxLCAxKTsKICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMSwgMC4wMjUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgMjMuMzMzMzMzJSB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAxLjAwMDY5OXB4LCA5Ny40OTk1NzNweCkgc2NhbGUoMSwgMC4wMDE3MjMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAxLjAwMDY5OXB4LCA5Ny40OTk1NzNweCkgc2NhbGUoMSwgMC4wMDE3MjMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9PC9zdHlsZT48c2NyaXB0IG5vbmNlPSJVMktVaXB0NVZDK2JEcGR3VlhudVdBPT0iPnRyeSB7CiAgICAgICAgICAgICAgICBpZiAoJ2xvY2FsU3RvcmFnZScgaW4gd2luZG93KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHVzZXJOb3JtYWxpemVkVGhlbWUgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1VzZXJzTm9ybWFsaXplZFRoZW1lJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJOb3JtYWxpemVkVGhlbWUgJiYgL1wuZGFyayQvLnRlc3QodXNlck5vcm1hbGl6ZWRUaGVtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2RhcmsnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHB3YWJhcmNvbG9yID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdQd2FUaGVtZScpOwogICAgICAgICAgICAgICAgICAgIGlmIChwd2FiYXJjb2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGhlbWV0YWcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgndGhlbWUtY29sb3InKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoZW1ldGFnICYmIHRoZW1ldGFnLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWV0YWdbMF0uc2V0QXR0cmlidXRlKCdjb250ZW50JywgcHdhYmFyY29sb3IpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChlKSB7fTwvc2NyaXB0PjxzY3JpcHQgbm9uY2U9IlUyS1VpcHQ1VkMrYkRwZHdWWG51V0E9PSI+d2luZG93LkZhYnJpY0NvbmZpZyA9IHsKICAgICAgICAgICAgICAgIGZvbnRCYXNlVXJsOiBudWxsLAogICAgICAgICAgICB9OwogICAgICAgICAgICB3aW5kb3cub3dhQmFja2ZpbGxlZEVycm9ycyA9IFtdOwogICAgICAgICAgICBmdW5jdGlvbiBsb2dFcnJvcihtLCBmLCBsLCBjLCBlLCBzKSB7CiAgICAgICAgICAgICAgICBpZiAod2luZG93Lm93YUVycm9ySGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vd2FFcnJvckhhbmRsZXIobSwgZiwgbCwgYywgZSwgcyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vd2FCYWNrZmlsbGVkRXJyb3JzLnB1c2goYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB3aW5kb3cub25lcnJvciA9IGxvZ0Vycm9yOwogICAgICAgICAgICBpZiAoJ29udW5oYW5kbGVkcmVqZWN0aW9uJyBpbiB3aW5kb3cpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd1bmhhbmRsZWRyZWplY3Rpb24nLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgIHZhciByID0gKGUgJiYgZS5yZWFzb24pIHx8ICdbbm8gcmVhc29uIGdpdmVuXSc7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIgaW5zdGFuY2VvZiBFcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICBsb2dFcnJvcignVW5oYW5kbGVkIFJlamVjdGlvbjogJyArIHIsICcnLCAwLCAwLCByKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHIucmVzcG9uc2VFcnJvck1lc3NhZ2UgJiYgci5jYWxsc3RhY2tBdFJlcXVlc3QgJiYgciBpbnN0YW5jZW9mIFJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vycm9yKHIucmVzcG9uc2VFcnJvck1lc3NhZ2UsICcnLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCByLmNhbGxzdGFja0F0UmVxdWVzdCkKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBsb2dFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVbmhhbmRsZWQgUmVqZWN0aW9uOiAnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHIgPT09ICdzdHJpbmcnID8gciA6IEpTT04uc3RyaW5naWZ5KHIpKQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgIXNlbGYuT3dhICYmCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9jYXRpb24gJiYKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2NhdGlvbi5zZWFyY2ggJiYKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZignZ3VscCcpID09IC0xCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL293YS9hdXRoL2Zyb3dueS5hc3B4P2JyZXQ9ZmFpbCZlc3JjPUluZGV4UGFnZUluY29tcGxldGUmYXBwPU1haWwnCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgfTs8L3NjcmlwdD48c2NyaXB0IG5vbmNlPSJVMktVaXB0NVZDK2JEcGR3VlhudVdBPT0iPnRyeSB7CiAgICAgICAgICAgICAgICAhKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJ1BlcmZvcm1hbmNlTG9uZ1Rhc2tUaW1pbmcnIGluIHdpbmRvdykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZyA9ICh3aW5kb3cuX190dGkgPSB7IGU6IFtdIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBnLm8gPSBuZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihmdW5jdGlvbiAobCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5lID0gZy5lLmNvbmNhdChsLmdldEVudHJpZXMoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBnLm8ub2JzZXJ2ZSh7IGVudHJ5VHlwZXM6IFsnbG9uZ3Rhc2snXSB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSgpOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7fTwvc2NyaXB0PjxzY3JpcHQgbm9uY2U9IlUyS1VpcHQ1VkMrYkRwZHdWWG51V0E9PSI+LyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgb3dhLm1haWxpbmRleC5qcy5MSUNFTlNFLnR4dCAqLwooKCk9Pnt2YXIgZSx0LG4scixvPXs5MTYxMzc6KGUsdCxuKT0+eyJ1c2Ugc3RyaWN0IjtuLmQodCx7WjooKT0+SH0pO3ZhciByPW4oMzQ1MzYyKSxvPW4oNjYyMzcyKSxpPW4oMzE3MTQwKSxhPW4oOTI5NTQxKSxzPW4oODAzMTQ1KSx1PW4oNDk2NTIyKSxjPW4oNjkxMjU0KSxsPW4oOTIzODA2KTtjb25zdCBIPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgbj1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4ucGx1Z2luVmVyc2lvblN0cmluZ0Fycj1bXSxuLnBsdWdpblZlcnNpb25TdHJpbmc9IiIsKDAsbC5aKSh0LG4sKGZ1bmN0aW9uKGUsdCl7ZS5sb2dnZXImJmUubG9nZ2VyLnF1ZXVlfHwoZS5sb2dnZXI9bmV3IG8uQVEoe2xvZ2dpbmdMZXZlbENvbnNvbGU6MX0pKSxlLmluaXRpYWxpemU9ZnVuY3Rpb24obixyLG8sdSl7KDAsaS5MbSkoZSwoZnVuY3Rpb24oKXtyZXR1cm4iQXBwSW5zaWdodHNDb3JlLmluaXRpYWxpemUifSksKGZ1bmN0aW9uKCl7aWYobil7bi5lbmRwb2ludFVybHx8KG4uZW5kcG9pbnRVcmw9Imh0dHBzOi8vYnJvd3Nlci5ldmVudHMuZGF0YS5taWNyb3NvZnQuY29tL09uZUNvbGxlY3Rvci8xLjAvIik7dmFyIGk9bi5wcm9wZXJ0eVN0b3JhZ2VPdmVycmlkZTtpZihpJiYoIWkuZ2V0UHJvcGVydHl8fCFpLnNldFByb3BlcnR5KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcHJvcGVydHkgc3RvcmFnZSBvdmVycmlkZSBwYXNzZWQuIik7bi5jaGFubmVscyYmKDAsYS50Tykobi5jaGFubmVscywoZnVuY3Rpb24odCl7dCYmKDAsYS50TykodCwoZnVuY3Rpb24odCl7aWYodC5pZGVudGlmaWVyJiZ0LnZlcnNpb24pe3ZhciBuPXQuaWRlbnRpZmllcisiPSIrdC52ZXJzaW9uO2UucGx1Z2luVmVyc2lvblN0cmluZ0Fyci5wdXNoKG4pfX0pKX0pKX1lLmdldFdQYXJhbT1mdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/MDotMX0sciYmKDAsYS50TykociwoZnVuY3Rpb24odCl7aWYodCYmdC5pZGVudGlmaWVyJiZ0LnZlcnNpb24pe3ZhciBuPXQuaWRlbnRpZmllcisiPSIrdC52ZXJzaW9uO2UucGx1Z2luVmVyc2lvblN0cmluZ0Fyci5wdXNoKG4pfX0pKSxlLnBsdWdpblZlcnNpb25TdHJpbmc9ZS5wbHVnaW5WZXJzaW9uU3RyaW5nQXJyLmpvaW4oIjsiKTt0cnl7dC5pbml0aWFsaXplKG4scixvLHUpLGUucG9sbEludGVybmFsTG9ncygiSW50ZXJuYWxMb2ciKX1jYXRjaCh0KXt2YXIgYz1lLmxvZ2dlcixsPSgwLHMuZVUpKHQpOy0xIT09bC5pbmRleE9mKCJjaGFubmVscyIpJiYobCs9IlxuIC0gQ2hhbm5lbHMgbXVzdCBiZSBwcm92aWRlZCB0aHJvdWdoIGNvbmZpZy5jaGFubmVscyBvbmx5ISIpLGMudGhyb3dJbnRlcm5hbCgxLDUxNCwiU0RLIEluaXRpYWxpemF0aW9uIEZhaWxlZCAtIG5vIHRlbGVtZXRyeSB3aWxsIGJlIHNlbnQ6ICIrbCl9fSksKGZ1bmN0aW9uKCl7cmV0dXJue2NvbmZpZzpuLGV4dGVuc2lvbnM6cixsb2dnZXI6byxub3RpZmljYXRpb25NYW5hZ2VyOnV9fSkpfSxlLnRyYWNrPWZ1bmN0aW9uKG4peygwLGkuTG0pKGUsKGZ1bmN0aW9uKCl7cmV0dXJuIkFwcEluc2lnaHRzQ29yZS50cmFjayJ9KSwoZnVuY3Rpb24oKXt2YXIgcj1uO2lmKHIpe3IudGltaW5ncz1yLnRpbWluZ3N8fHt9LHIudGltaW5ncy50cmFja1N0YXJ0PSgwLGMuaEspKCksKDAsYy5yNykoci5sYXRlbmN5KXx8KHIubGF0ZW5jeT0xKTt2YXIgbz1yLmV4dD1yLmV4dHx8e307by5zZGs9by5zZGt8fHt9LG8uc2RrLnZlcj1jLnZzO3ZhciBpPXIuYmFzZURhdGE9ci5iYXNlRGF0YXx8e307aS5wcm9wZXJ0aWVzfHwoaS5wcm9wZXJ0aWVzPXt9KTt2YXIgYT1pLnByb3BlcnRpZXM7YS52ZXJzaW9ufHwoYS52ZXJzaW9uPSIiKSwiIiE9PWUucGx1Z2luVmVyc2lvblN0cmluZyYmKGEudmVyc2lvbj1lLnBsdWdpblZlcnNpb25TdHJpbmcpfXQudHJhY2socil9KSwoZnVuY3Rpb24oKXtyZXR1cm57aXRlbTpufX0pLCFuLnN5bmMpfX0pKSxufXJldHVybigwLHIubmUpKHQsZSksdH0odS5GKX0sNjkxMjU0OihlLHQsbik9PnsidXNlIHN0cmljdCI7bi5kKHQse3ZzOigpPT5kLFNuOigpPT5wLGpNOigpPT5DLHI3OigpPT5oLHlqOigpPT5BLFZ2OigpPT52LERvOigpPT5JLGNtOigpPT5VLGw3OigpPT5nLGhLOigpPT5tLGlmOigpPT5LLG1KOigpPT53LG90OigpPT5ifSk7dmFyIHIsbz1uKDIyMTkwOCksaT1uKDgyNjQ1NCksYT1uKDgwMzE0NSkscz1uKDkyOTU0MSksdT1uKDczMTc0MCksYz1uKDY4NTU4MyksbD1uKDcwNjAzOCksSD1uKDc1NTk5MiksZD0iMURTLVdlYi1KUy0zLjIuMyIsZj0id2l0aENyZWRlbnRpYWxzIixTPSgocj17fSlbMF09MCxyWzJdPTYsclsxXT0xLHJbM109NyxyWzQwOThdPTYscls0MDk3XT0xLHJbNDA5OV09NyxyKTtCb29sZWFuKCgwLGEuTWUpKCkpLEJvb2xlYW4oKDAsYS5KaikoKSk7ZnVuY3Rpb24gcChlKXtyZXR1cm4hKCIiPT09ZXx8KDAscy5sZSkoZSkpfWZ1bmN0aW9uIEMoZSl7aWYoZSl7dmFyIHQ9ZS5pbmRleE9mKCItIik7aWYodD4tMSlyZXR1cm4gZS5zdWJzdHJpbmcoMCx0KX1yZXR1cm4iIn1mdW5jdGlvbiBoKGUpe3JldHVybiEhKGUmJigwLHMuaGopKGUpJiZlPj0xJiZlPD00KX1mdW5jdGlvbiBBKGUsdCxuKXtpZighdCYmIXAodCl8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt2YXIgcj10eXBlb2YgdDtpZigic3RyaW5nIj09PXJ8fCJudW1iZXIiPT09cnx8ImJvb2xlYW4iPT09cnx8KDAscy5rSikodCkpdD17dmFsdWU6dH07ZWxzZSBpZigib2JqZWN0IiE9PXJ8fHQuaGFzT3duUHJvcGVydHkoInZhbHVlIikpe2lmKCgwLHMubGUpKHQudmFsdWUpfHwiIj09PXQudmFsdWV8fCEoMCxzLkhEKSh0LnZhbHVlKSYmISgwLHMuaGopKHQudmFsdWUpJiYhKDAscy5qbikodC52YWx1ZSkmJiEoMCxzLmtKKSh0LnZhbHVlKSlyZXR1cm4gbnVsbH1lbHNlIHQ9e3ZhbHVlOm4/SlNPTi5zdHJpbmdpZnkodCk6dH07aWYoKDAscy5rSikodC52YWx1ZSkmJiFOKHQudmFsdWUpKXJldHVybiBudWxsO2lmKCEoMCxzLmxlKSh0LmtpbmQpKXtpZigoMCxzLmtKKSh0LnZhbHVlKXx8IVIodC5raW5kKSlyZXR1cm4gbnVsbDt0LnZhbHVlPXQudmFsdWUudG9TdHJpbmcoKX1yZXR1cm4gdH1mdW5jdGlvbiB2KGUsdCxuKXt2YXIgcj0tMTtpZighKDAscy5vOCkoZSkpaWYodD4wJiYoMzI9PT10P3I9ODE5Mjp0PD0xMyYmKHI9dDw8NSkpLGZ1bmN0aW9uKGUpe2lmKGU+PTAmJmU8PTkpcmV0dXJuITA7cmV0dXJuITF9KG4pKS0xPT09ciYmKHI9MCkscnw9bjtlbHNle3ZhciBvPVNbeShlKV18fC0xOy0xIT09ciYmLTEhPT1vP3J8PW86Nj09PW8mJihyPW8pfXJldHVybiByfWZ1bmN0aW9uIEkoZSx0LG4pe3ZhciByO3JldHVybiB2b2lkIDA9PT1uJiYobj0hMCksZSYmKHI9ZS5nZXQodCksbiYmciYmZGVjb2RlVVJJQ29tcG9uZW50JiYocj1kZWNvZGVVUklDb21wb25lbnQocikpKSxyfHwiIn1mdW5jdGlvbiBVKGUpe3ZvaWQgMD09PWUmJihlPSJEIik7dmFyIHQ9KDAsYy5HVykoKTtyZXR1cm4iQiI9PT1lP3Q9InsiK3QrIn0iOiJQIj09PWU/dD0iKCIrdCsiKSI6Ik4iPT09ZSYmKHQ9dC5yZXBsYWNlKC8tL2csIiIpKSx0fWZ1bmN0aW9uIGcoZSx0LG4scixpKXt2YXIgYT17fSx1PSExLGM9MCxsPWFyZ3VtZW50cy5sZW5ndGgsSD1PYmplY3Rbby5oQl0sZD1hcmd1bWVudHM7Zm9yKCJbb2JqZWN0IEJvb2xlYW5dIj09PUgudG9TdHJpbmcuY2FsbChkWzBdKSYmKHU9ZFswXSxjKyspO2M8bDtjKyspe2U9ZFtjXTsoMCxzLnJXKShlLChmdW5jdGlvbihlLHQpe3UmJnQmJigwLHMuS24pKHQpPygwLHMua0opKHQpPyhhW2VdPWFbZV18fFtdLCgwLHMudE8pKHQsKGZ1bmN0aW9uKHQsbil7dCYmKDAscy5LbikodCk/YVtlXVtuXT1nKCEwLGFbZV1bbl0sdCk6YVtlXVtuXT10fSkpKTphW2VdPWcoITAsYVtlXSx0KTphW2VdPXR9KSl9cmV0dXJuIGF9dmFyIG09Yy5KajtmdW5jdGlvbiBSKGUpe3JldHVybiAwPT09ZXx8ZT4wJiZlPD0xM3x8MzI9PT1lfWZ1bmN0aW9uIE4oZSl7cmV0dXJuIGUubGVuZ3RoPjB9ZnVuY3Rpb24gSyhlLHQpe3ZhciBuPWU7bi50aW1pbmdzPW4udGltaW5nc3x8e30sbi50aW1pbmdzLnByb2Nlc3NUZWxlbWV0cnlTdGFydD1uLnRpbWluZ3MucHJvY2Vzc1RlbGVtZXRyeVN0YXJ0fHx7fSxuLnRpbWluZ3MucHJvY2Vzc1RlbGVtZXRyeVN0YXJ0W3RdPW0oKX1mdW5jdGlvbiB5KGUpe3ZhciB0PTA7aWYobnVsbCE9ZSl7dmFyIG49dHlwZW9mIGU7InN0cmluZyI9PT1uP3Q9MToibnVtYmVyIj09PW4/dD0yOiJib29sZWFuIj09PW4/dD0zOm49PT1vLmZLJiYodD00LCgwLHMua0opKGUpPyh0PTQwOTYsZS5sZW5ndGg+MCYmKHR8PXkoZVswXSkpKTooMCxzLm5yKShlLCJ2YWx1ZSIpJiYodD04MTkyfHkoZS52YWx1ZSkpKX1yZXR1cm4gdH1vLmpBLG8uZkssby5qQSxzLnRPLHMuVUEscy5NcixzLlh6LHMuRlkscy5ZNixhLmIkLHMuSEQscy5oaixzLmpuLHMubWYscy5rSixzLktuLHMubmQsYS5NRixzLlk2LGEuY3AsdS5wNyx1LlVZLHMubF8sbC5jOSxsLkliLHMuSWQscy5yVyxzLlltLHMubzgscy5sZSxzLm5yLHMubWYscy5LbixzLkpfLHMua0oscy5WWixzLkhELHMuaGoscy5qbixzLlk2LHMudE8scy5VQSxzLk1yLHMuWHoscy5uZCxpLnB1LHMuRlkscy5sXyxsLkliLHMubTYsYS53MSxjLkdXLGMuSmosSC5wWixILmF6LEguX2wsSC5DTixILkY2LGMuRE87ZnVuY3Rpb24gdygpe3JldHVybiEhKDAsYS5hOCkoImNocm9tZSIpfWZ1bmN0aW9uIGIoZSx0LG4scixvLGkpe2Z1bmN0aW9uIGEoZSx0LG4pe3RyeXtlW3RdPW59Y2F0Y2goZSl7fX12b2lkIDA9PT1yJiYocj0hMSksdm9pZCAwPT09byYmKG89ITEpO3ZhciBzPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gciYmYShzLCJNaWNyb3NvZnRfQXBwbGljYXRpb25JbnNpZ2h0c19CeXBhc3NBamF4SW5zdHJ1bWVudGF0aW9uIixyKSxuJiZhKHMsZixuKSxzLm9wZW4oZSx0LCFvKSxuJiZhKHMsZixuKSwhbyYmaSYmYShzLCJ0aW1lb3V0IixpKSxzfX0sNDg3MzY5OihlLHQsbik9PnsidXNlIHN0cmljdCI7bi5kKHQse1o6KCk9Pm99KTt2YXIgcj1uKDkyMzgwNik7Y29uc3Qgbz1mdW5jdGlvbiBlKCl7dmFyIHQ9ITAsbj0hMCxvPSEwLGk9InVzZS1jb2xsZWN0b3ItZGVsdGEiLGE9ITE7KDAsci5aKShlLHRoaXMsKGZ1bmN0aW9uKGUpe2UuYWxsb3dSZXF1ZXN0U2VuZGluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlLmZpcnN0UmVxdWVzdFNlbnQ9ZnVuY3Rpb24oKXtvJiYobz0hMSxhfHwodD0hMSkpfSxlLnNob3VsZEFkZENsb2NrU2tld0hlYWRlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sZS5nZXRDbG9ja1NrZXdIZWFkZXJWYWx1ZT1mdW5jdGlvbigpe3JldHVybiBpfSxlLnNldENsb2NrU2tldz1mdW5jdGlvbihlKXthfHwoZT8oaT1lLG49ITAsYT0hMCk6bj0hMSx0PSEwKX19KSl9fSw5NjA2NjY6KGUsdCxuKT0+eyJ1c2Ugc3RyaWN0IjtuLmQodCx7biQ6KCk9PnIsdFA6KCk9Pm8sdUY6KCk9PmksWDQ6KCk9PmEsemY6KCk9PnMsWWI6KCk9PnUsVVg6KCk9PmMscXc6KCk9PmwsRWQ6KCk9PkgsQVc6KCk9PmQsRE86KCk9PmYsZ2I6KCk9PlMsR3Q6KCk9PnAsTko6KCk9PkMsJF86KCk9PmgsQmU6KCk9PkEseWg6KCk9PnYsUTk6KCk9PkksQ2s6KCk9PlUsdDI6KCk9PmcsUWo6KCk9Pm0sUW46KCk9PlIsWWg6KCk9Pk4sYUI6KCk9Pkt9KTt2YXIgcj0iUE9TVCIsbz0iTWljcm9zb2Z0X0FwcGxpY2F0aW9uSW5zaWdodHNfQnlwYXNzQWpheEluc3RydW1lbnRhdGlvbiIsaT0iZHJvcCIsYT0ic2VuZCIscz0icmVxdWV1ZSIsdT0icnNwRmFpbCIsYz0ib3RoIixsPSJuby1jYWNoZSwgbm8tc3RvcmUiLEg9ImFwcGxpY2F0aW9uL3gtanNvbi1zdHJlYW0iLGQ9ImNhY2hlLWNvbnRyb2wiLGY9ImNvbnRlbnQtdHlwZSIsUz0ia2lsbC10b2tlbnMiLHA9ImtpbGwtZHVyYXRpb24iLEM9ImtpbGwtZHVyYXRpb24tc2Vjb25kcyIsaD0idGltZS1kZWx0YS1taWxsaXMiLEE9ImNsaWVudC12ZXJzaW9uIix2PSJjbGllbnQtaWQiLEk9InRpbWUtZGVsdGEtdG8tYXBwbHktbWlsbGlzIixVPSJ1cGxvYWQtdGltZSIsZz0iYXBpa2V5IixtPSJBdXRoTXNhRGV2aWNlVGlja2V0IixSPSJBdXRoWFRva2VuIixOPSJOb1Jlc3BvbnNlQm9keSIsSz0ibXNmcGMifSw5ODAzNzooZSx0LG4pPT57InVzZSBzdHJpY3QiO24uZCh0LHtvdzooKT0+cixqZTooKT0+byxlMjooKT0+aX0pO3ZhciByPSJSRUFMX1RJTUUiLG89Ik5FQVJfUkVBTF9USU1FIixpPSJCRVNUX0VGRk9SVCJ9LDU0NzQxMDooZSx0LG4pPT57InVzZSBzdHJpY3QiO24uZCh0LHtsOigpPT51fSk7dmFyIHI9big2OTEyNTQpLG89big5Mjk1NDEpLGk9big5NjA2NjYpO2Z1bmN0aW9uIGEoZSl7dmFyIHQ9KGUuZXh0fHx7fSkuaW50d2ViO3JldHVybiB0JiYoMCxyLlNuKSh0W2kuYUJdKT90W2kuYUJdOm51bGx9ZnVuY3Rpb24gcyhlKXtmb3IodmFyIHQ9bnVsbCxuPTA7bnVsbD09PXQmJm48ZS5sZW5ndGg7bisrKXQ9YShlW25dKTtyZXR1cm4gdH12YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuKXt2YXIgcj1uP1tdLmNvbmNhdChuKTpbXSxpPXRoaXMsdT1zKHIpO2kuaUtleT1mdW5jdGlvbigpe3JldHVybiB0fSxpLk1zZnBjPWZ1bmN0aW9uKCl7cmV0dXJuIHV8fCIifSxpLmNvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHIubGVuZ3RofSxpLmV2ZW50cz1mdW5jdGlvbigpe3JldHVybiByfSxpLmFkZEV2ZW50PWZ1bmN0aW9uKGUpe3JldHVybiEhZSYmKHIucHVzaChlKSx1fHwodT1hKGUpKSwhMCl9LGkuc3BsaXQ9ZnVuY3Rpb24obixpKXt2YXIgYTtpZihuPHIubGVuZ3RoKXt2YXIgYz1yLmxlbmd0aC1uOygwLG8ubGUpKGkpfHwoYz1pPGM/aTpjKSxhPXIuc3BsaWNlKG4sYyksdT1zKHIpfXJldHVybiBuZXcgZSh0LGEpfX1yZXR1cm4gZS5jcmVhdGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3IGUodCxuKX0sZX0oKX0sNTYwNDgxOihlLHQsbik9PnsidXNlIHN0cmljdCI7bi5kKHQse3g6KCk9PlJ9KTt2YXIgcixvPW4oOTI5NTQxKSxpPW4oODAzMTQ1KSxhPW4oNjkxMjU0KSxzPW4oNjYyMzcyKSx1PW4oMzE3MTQwKSxjPW4oMjIxOTA4KSxsPW4oNDYwMTQ5KSxIPW4oNDUyODQ4KSxkPW4oODYzNDMzKSxmPW4oNDg3MzY5KSxTPW4oOTIzODA2KSxwPW4oOTYwNjY2KSxDPSImIitwLlloKyI9dHJ1ZSIsaD0oKHI9e30pWzFdPXAuemYsclsxMDBdPXAuemYsclsyMDBdPSJzZW50IixyWzgwMDRdPXAudUYscls4MDAzXT1wLnVGLHIpLEE9e30sdj17fTtmdW5jdGlvbiBJKGUsdCxuKXtBW2VdPXQsITEhPT1uJiYodlt0XT1lKX1mdW5jdGlvbiBVKGUpe3RyeXtyZXR1cm4gZS5yZXNwb25zZVRleHR9Y2F0Y2goZSl7fXJldHVybiIifWZ1bmN0aW9uIGcoZSx0KXt2YXIgbj0hMTtpZihlJiZ0KXt2YXIgcj0oMCxvLkZZKShlKTtpZihyJiZyLmxlbmd0aD4wKWZvcih2YXIgaT10LnRvTG93ZXJDYXNlKCksYT0wO2E8ci5sZW5ndGg7YSsrKXt2YXIgcz1yW2FdO2lmKHMmJigwLG8ubnIpKHQscykmJnMudG9Mb3dlckNhc2UoKT09PWkpe249ITA7YnJlYWt9fX1yZXR1cm4gbn1mdW5jdGlvbiBtKGUsdCxuLHIpe3QmJm4mJm4ubGVuZ3RoPjAmJihyJiZBW3RdPyhlLmhkcnNbQVt0XV09bixlLnVzZUhkcnM9ITApOmUudXJsKz0iJiIrdCsiPSIrbil9SShwLlFqLHAuUWosITEpLEkocC5CZSxwLkJlKSxJKHAueWgsIkNsaWVudC1JZCIpLEkocC50MixwLnQyKSxJKHAuUTkscC5ROSksSShwLkNrLHAuQ2spLEkocC5RbixwLlFuKTt2YXIgUj1mdW5jdGlvbiBlKHQsbixyLEEsSSl7dGhpcy5fcmVzcG9uc2VIYW5kbGVycz1bXTt2YXIgUixOLEsseSx3LGIseD0iP2NvcnM9dHJ1ZSYiK3AuRE8udG9Mb3dlckNhc2UoKSsiPSIrcC5FZCxPPW5ldyBkLlosUD0hMSxFPW5ldyBmLlosaz0hMSxNPTAsVD0hMCxMPVtdLEY9e30sQj1bXSxEPW51bGwsaj0hMSxXPSExLFg9ITE7KDAsUy5aKShlLHRoaXMsKGZ1bmN0aW9uKGUpe3ZhciBkPSEwO2Z1bmN0aW9uIGYoZSx0KXtmb3IodmFyIG49MCxyPW51bGwsbz0wO251bGw9PXImJm88ZS5sZW5ndGg7KTE9PT0obj1lW29dKT8oMCxpLmNwKSgpP3I9UzooMCxpLlozKSgpJiYocj1xKToyPT09biYmKDAsaS5KTykodCk/cj16OmsmJjM9PT1uJiYoMCxpLk1GKSgpJiYocj1WKSxvKys7cmV0dXJuIHI/e190cmFuc3BvcnQ6bixfaXNTeW5jOnQsc2VuZFBPU1Q6cn06bnVsbH1mdW5jdGlvbiBTKGUsdCxuKXt2YXIgcj1uZXcgWERvbWFpblJlcXVlc3Q7ci5vcGVuKHAubiQsZS51cmxTdHJpbmcpLGUudGltZW91dCYmKHIudGltZW91dD1lLnRpbWVvdXQpLHIub25sb2FkPWZ1bmN0aW9uKCl7dmFyIGU9VShyKTtaKHQsMjAwLHt9LGUpLGllKGUpfSxyLm9uZXJyb3I9ZnVuY3Rpb24oKXtaKHQsNDAwLHt9KX0sci5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXtaKHQsNTAwLHt9KX0sci5vbnByb2dyZXNzPWZ1bmN0aW9uKCl7fSxuP3Iuc2VuZChlLmRhdGEpOkkuc2V0KChmdW5jdGlvbigpe3Iuc2VuZChlLmRhdGEpfSksMCl9ZnVuY3Rpb24geihlLHQsbil7dmFyIHIsaT1lLnVybFN0cmluZyxhPSExLHM9ITEsdT0oKHI9e2JvZHk6ZS5kYXRhLG1ldGhvZDpwLm4kfSlbcC50UF09ITAscik7biYmKHUua2VlcGFsaXZlPSEwLDI9PT1lLl9zZW5kUmVhc29uJiYoYT0hMCxpKz1DKSksZCYmKHUuY3JlZGVudGlhbHM9ImluY2x1ZGUiKSxlLmhlYWRlcnMmJigwLG8uRlkpKGUuaGVhZGVycykubGVuZ3RoPjAmJih1LmhlYWRlcnM9ZS5oZWFkZXJzKSxmZXRjaChpLHUpLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciBuPXt9LHI9IiI7ZS5oZWFkZXJzJiZlLmhlYWRlcnMuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtuW3RdPWV9KSksZS5ib2R5JiZlLnRleHQoKS50aGVuKChmdW5jdGlvbihlKXtyPWV9KSksc3x8KHM9ITAsWih0LGUuc3RhdHVzLG4sciksaWUocikpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzfHwocz0hMCxaKHQsMCx7fSkpfSkpLGEmJiFzJiYocz0hMCxaKHQsMjAwLHt9KSksIXMmJmUudGltZW91dD4wJiZJLnNldCgoZnVuY3Rpb24oKXtzfHwocz0hMCxaKHQsNTAwLHt9KSl9KSxlLnRpbWVvdXQpfWZ1bmN0aW9uIHEoZSx0LG4pe3ZhciByPWUudXJsU3RyaW5nO2Z1bmN0aW9uIGkoZSx0LG4pe2lmKCFlW25dJiZ0JiZ0LmdldFJlc3BvbnNlSGVhZGVyKXt2YXIgcj10LmdldFJlc3BvbnNlSGVhZGVyKG4pO3ImJihlW25dPSgwLG8ubmQpKHIpKX1yZXR1cm4gZX1mdW5jdGlvbiBzKGUpe3ZhciB0PXt9O3JldHVybiBlLmdldEFsbFJlc3BvbnNlSGVhZGVycz90PWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2lmKCgwLG8uSEQpKGUpKXt2YXIgbj0oMCxvLm5kKShlKS5zcGxpdCgvW1xyXG5dKy8pOygwLG8udE8pKG4sKGZ1bmN0aW9uKGUpe2lmKGUpe3ZhciBuPWUuaW5kZXhPZigiOiAiKTtpZigtMSE9PW4pe3ZhciByPSgwLG8ubmQpKGUuc3Vic3RyaW5nKDAsbikpLnRvTG93ZXJDYXNlKCksaT0oMCxvLm5kKShlLnN1YnN0cmluZyhuKzEpKTt0W3JdPWl9ZWxzZSB0WygwLG8ubmQpKGUpXT0xfX0pKX1yZXR1cm4gdH0oZS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6KHQ9aSh0LGUscC4kXyksdD1pKHQsZSxwLkd0KSx0PWkodCxlLHAuTkopKSx0fWZ1bmN0aW9uIHUoZSxuKXtaKHQsZS5zdGF0dXMscyhlKSxuKX1uJiZlLmRpc2FibGVYaHJTeW5jJiYobj0hMSk7dmFyIGM9KDAsYS5vdCkocC5uJCxyLGQsITAsbixlLnRpbWVvdXQpOygwLG8uclcpKGUuaGVhZGVycywoZnVuY3Rpb24oZSx0KXtjLnNldFJlcXVlc3RIZWFkZXIoZSx0KX0pKSxjLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBlPVUoYyk7dShjLGUpLGllKGUpfSxjLm9uZXJyb3I9ZnVuY3Rpb24oKXt1KGMpfSxjLm9udGltZW91dD1mdW5jdGlvbigpe3UoYyl9LGMuc2VuZChlLmRhdGEpfWZ1bmN0aW9uIFooZSx0LG4scil7dHJ5e2UodCxuLHIpfWNhdGNoKGUpeygwLHMua1ApKFIuZGlhZ0xvZygpLDIsNTE4LCgwLGkuZVUpKGUpKX19ZnVuY3Rpb24gVihlLHQsbil7dmFyIHI9MjAwLGE9ZS5fdGhlUGF5bG9hZCxzPWUudXJsU3RyaW5nK0M7dHJ5e3ZhciB1PSgwLGkualcpKCk7aWYoIXUuc2VuZEJlYWNvbihzLGUuZGF0YSkpaWYoYSl7dmFyIGM9W107KDAsby50TykoYS5iYXRjaGVzLChmdW5jdGlvbihlKXtpZihjJiZlJiZlLmNvdW50KCk+MCl7Zm9yKHZhciB0PWUuZXZlbnRzKCksbj0wO248dC5sZW5ndGg7bisrKWlmKCF1LnNlbmRCZWFjb24ocyxELmdldEV2ZW50QmxvYih0W25dKSkpe2MucHVzaChlLnNwbGl0KG4pKTticmVha319ZWxzZSBjLnB1c2goZS5zcGxpdCgwKSl9KSksYWUoYyw4MDAzLGEuc2VuZFR5cGUsITApfWVsc2Ugcj0wfWNhdGNoKGUpe1IuZGlhZ0xvZygpLndhcm5Ub0NvbnNvbGUoIkZhaWxlZCB0byBzZW5kIHRlbGVtZXRyeSB1c2luZyBzZW5kQmVhY29uIEFQSS4gRXg6IisoMCxpLmVVKShlKSkscj0wfWZpbmFsbHl7Wih0LHIse30sIiIpfX1mdW5jdGlvbiBZKGUpe3JldHVybiAyPT09ZXx8Mz09PWV9ZnVuY3Rpb24gUShlKXtyZXR1cm4gVyYmWShlKSYmKGU9MiksZX1mdW5jdGlvbiBKKCl7cmV0dXJuIVAmJk08bn1mdW5jdGlvbiBHKCl7dmFyIGU9QjtyZXR1cm4gQj1bXSxlfWZ1bmN0aW9uIF8oZSx0LG4pe3ZhciByPSExO3JldHVybiBlJiZlLmxlbmd0aD4wJiYhUCYmTlt0XSYmRCYmKHI9MCE9PXR8fEooKSYmKG4+MHx8RS5hbGxvd1JlcXVlc3RTZW5kaW5nKCkpKSxyfWZ1bmN0aW9uICQoZSl7dmFyIHQ9e307cmV0dXJuIGUmJigwLG8udE8pKGUsKGZ1bmN0aW9uKGUsbil7dFtuXT17aUtleTplLmlLZXkoKSxldnRzOmUuZXZlbnRzKCl9fSkpLHR9ZnVuY3Rpb24gZWUoZSxuLHIsbyxjKXtpZihlJiYwIT09ZS5sZW5ndGgpaWYoUClhZShlLDEsbyk7ZWxzZXtvPVEobyk7dHJ5e3ZhciBsPWUsSD0wIT09bzsoMCx1LkxtKShLLChmdW5jdGlvbigpe3JldHVybiJIdHRwTWFuYWdlcjpfc2VuZEJhdGNoZXMifSksKGZ1bmN0aW9uKHMpe3MmJihlPWUuc2xpY2UoMCkpO2Zvcih2YXIgdT1bXSxsPW51bGwsZD0oMCxhLmhLKSgpLGY9TltvXXx8KEg/TlsxXTpOWzBdKSxTPShXfHxZKG8pfHxmJiYzPT09Zi5fdHJhbnNwb3J0KSYmIVQmJmsmJigwLGkuTUYpKCk7XyhlLG8sbik7KXt2YXIgcD1lLnNoaWZ0KCk7cCYmcC5jb3VudCgpPjAmJihPLmlzVGVuYW50S2lsbGVkKHAuaUtleSgpKT91LnB1c2gocCk6KGw9bHx8RC5jcmVhdGVQYXlsb2FkKG4scixILFMsYyxvKSxELmFwcGVuZFBheWxvYWQobCxwLHQpP251bGwhPT1sLm92ZXJmbG93JiYoZT1bbC5vdmVyZmxvd10uY29uY2F0KGUpLGwub3ZlcmZsb3c9bnVsbCxyZShsLGQsKDAsYS5oSykoKSxjKSxkPSgwLGEuaEspKCksbD1udWxsKToocmUobCxkLCgwLGEuaEspKCksYyksZD0oMCxhLmhLKSgpLGU9W3BdLmNvbmNhdChlKSxsPW51bGwpKSl9bCYmcmUobCxkLCgwLGEuaEspKCksYyksZS5sZW5ndGg+MCYmKEI9ZS5jb25jYXQoQikpLGFlKHUsODAwNCxvKX0pLChmdW5jdGlvbigpe3JldHVybntiYXRjaGVzOiQobCkscmV0cnlDb3VudDpuLGlzVGVhcmRvd246cixpc1N5bmNocm9ub3VzOkgsc2VuZFJlYXNvbjpjLHVzZVNlbmRCZWFjb246WShvKSxzZW5kVHlwZTpvfX0pLCFIKX1jYXRjaChlKXsoMCxzLmtQKShSLmRpYWdMb2coKSwyLDQ4LCJVbmV4cGVjdGVkIEV4Y2VwdGlvbiBzZW5kaW5nIGJhdGNoOiAiKygwLGkuZVUpKGUpKX19fWZ1bmN0aW9uIHRlKGUsdCl7dmFyIG49e3VybDp4LGhkcnM6e30sdXNlSGRyczohMX07dD8obi5oZHJzPSgwLGEubDcpKG4uaGRycyxGKSxuLnVzZUhkcnM9KDAsby5GWSkobi5oZHJzKS5sZW5ndGg+MCk6KDAsby5yVykoRiwoZnVuY3Rpb24oZSx0KXt2W2VdP20obix2W2VdLHQsITEpOihuLmhkcnNbZV09dCxuLnVzZUhkcnM9ITApfSkpLG0obixwLnloLCJOT19BVVRIIix0KSxtKG4scC5CZSxhLnZzLHQpO3ZhciByPSIiOygwLG8udE8pKGUuYXBpS2V5cywoZnVuY3Rpb24oZSl7ci5sZW5ndGg+MCYmKHIrPSIsIikscis9ZX0pKSxtKG4scC50MixyLHQpLG0obixwLkNrLCgwLG8ubTYpKCkudG9TdHJpbmcoKSx0KTt2YXIgaT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUuYmF0Y2hlcy5sZW5ndGg7dCsrKXt2YXIgbj1lLmJhdGNoZXNbdF0uTXNmcGMoKTtpZihuKXJldHVybiBlbmNvZGVVUklDb21wb25lbnQobil9cmV0dXJuIiJ9KGUpO2lmKCgwLGEuU24pKGkpJiYobi51cmwrPSImZXh0LmludHdlYi5tc2ZwYz0iK2kpLEUuc2hvdWxkQWRkQ2xvY2tTa2V3SGVhZGVycygpJiZtKG4scC5ROSxFLmdldENsb2NrU2tld0hlYWRlclZhbHVlKCksdCksSy5nZXRXUGFyYW0pe3ZhciBzPUsuZ2V0V1BhcmFtKCk7cz49MCYmKG4udXJsKz0iJnc9IitzKX1mb3IodmFyIHU9MDt1PEwubGVuZ3RoO3UrKyluLnVybCs9IiYiK0xbdV0ubmFtZSsiPSIrTFt1XS52YWx1ZTtyZXR1cm4gbn1mdW5jdGlvbiBuZShlLHQsbil7ZVt0XT1lW3RdfHx7fSxlW3RdW1IuaWRlbnRpZmllcl09bn1mdW5jdGlvbiByZSh0LG4scyxsKXtpZih0JiZ0LnBheWxvYWRCbG9iJiZ0LnBheWxvYWRCbG9iLmxlbmd0aD4wKXt2YXIgZD0hIWUuc2VuZEhvb2ssZj1OW3Quc2VuZFR5cGVdOyFZKHQuc2VuZFR5cGUpJiZ0LmlzQmVhY29uJiYyPT09dC5zZW5kUmVhc29uJiYoZj1OWzJdfHxOWzNdfHxmKTt2YXIgUz1YOyh0LmlzQmVhY29ufHwzPT09Zi5fdHJhbnNwb3J0KSYmKFM9ITEpO3ZhciBDPXRlKHQsUyk7Uz1TfHxDLnVzZUhkcnM7dmFyIGg9KDAsYS5oSykoKTsoMCx1LkxtKShLLChmdW5jdGlvbigpe3JldHVybiJIdHRwTWFuYWdlcjpfZG9QYXlsb2FkU2VuZCJ9KSwoZnVuY3Rpb24oKXtmb3IodmFyIEE9MDtBPHQuYmF0Y2hlcy5sZW5ndGg7QSsrKWZvcih2YXIgdj10LmJhdGNoZXNbQV0uZXZlbnRzKCksST0wO0k8di5sZW5ndGg7SSsrKXt2YXIgVT12W0ldO2lmKGope3ZhciBtPVUudGltaW5ncz1VLnRpbWluZ3N8fHt9O25lKG0sInNlbmRFdmVudFN0YXJ0IixoKSxuZShtLCJzZXJpYWxpemF0aW9uU3RhcnQiLG4pLG5lKG0sInNlcmlhbGl6YXRpb25Db21wbGV0ZWQiLHMpfVUuc2VuZEF0dGVtcHQ+MD9VLnNlbmRBdHRlbXB0Kys6VS5zZW5kQXR0ZW1wdD0xfWFlKHQuYmF0Y2hlcywxZTMrKGx8fDApLHQuc2VuZFR5cGUsITApO3ZhciBOPXtkYXRhOnQucGF5bG9hZEJsb2IsdXJsU3RyaW5nOkMudXJsLGhlYWRlcnM6Qy5oZHJzLF90aGVQYXlsb2FkOnQsX3NlbmRSZWFzb246bCx0aW1lb3V0Ond9OygwLG8ubzgpKGIpfHwoTi5kaXNhYmxlWGhyU3luYz0hIWIpLFMmJihnKE4uaGVhZGVycyxwLkFXKXx8KE4uaGVhZGVyc1twLkFXXT1wLnF3KSxnKE4uaGVhZGVycyxwLkRPKXx8KE4uaGVhZGVyc1twLkRPXT1wLkVkKSk7dmFyIHk9bnVsbDtmJiYoeT1mdW5jdGlvbihuKXtFLmZpcnN0UmVxdWVzdFNlbnQoKTt2YXIgcz1mdW5jdGlvbihuLGkpeyFmdW5jdGlvbih0LG4saSxzKXt2YXIgdT05ZTMsbD1udWxsLGQ9ITEsZj0hMTt0cnl7dmFyIFM9ITA7aWYodHlwZW9mIHQhPT1jLmpBKXtpZihuKXtFLnNldENsb2NrU2tldyhuW3AuJF9dKTt2YXIgQz1uW3AuR3RdfHxuWyJraWxsLWR1cmF0aW9uLXNlY29uZHMiXTsoMCxvLnRPKShPLnNldEtpbGxTd2l0Y2hUZW5hbnRzKG5bcC5nYl0sQyksKGZ1bmN0aW9uKGUpeygwLG8udE8pKGkuYmF0Y2hlcywoZnVuY3Rpb24odCl7aWYodC5pS2V5KCk9PT1lKXtsPWx8fFtdO3ZhciBuPXQuc3BsaXQoMCk7aS5udW1FdmVudHMtPW4uY291bnQoKSxsLnB1c2gobil9fSkpfSkpfWlmKDIwMD09dHx8MjA0PT10KXJldHVybiB2b2lkKHU9MjAwKTsoISgwLEguRCkodCl8fGkubnVtRXZlbnRzPD0wKSYmKFM9ITEpLHU9OWUzK3QlMWUzfWlmKFMpe3U9MTAwO3ZhciBoPWkucmV0cnlDbnQ7MD09PWkuc2VuZFR5cGUmJihoPHI/KGQ9ITAsb2UoKGZ1bmN0aW9uKCl7MD09PWkuc2VuZFR5cGUmJk0tLSxlZShpLmJhdGNoZXMsaCsxLGkuaXNUZWFyZG93bixXPzI6aS5zZW5kVHlwZSw1KX0pLFcsKDAsSC5lKShoKSkpOihmPSEwLFcmJih1PTgwMDEpKSl9fWZpbmFsbHl7ZHx8KEUuc2V0Q2xvY2tTa2V3KCksZnVuY3Rpb24odCxuLHIsaSl7dHJ5e2kmJlIuX2JhY2tPZmZUcmFuc21pc3Npb24oKSwyMDA9PT1uJiYoaXx8dC5pc1N5bmN8fFIuX2NsZWFyQmFja09mZigpLGZ1bmN0aW9uKGUpe2lmKGope3ZhciB0PSgwLGEuaEspKCk7KDAsby50TykoZSwoZnVuY3Rpb24oZSl7ZSYmZS5jb3VudCgpPjAmJmZ1bmN0aW9uKGUsdCl7aiYmKDAsby50TykoZSwoZnVuY3Rpb24oZSl7bmUoZS50aW1pbmdzPWUudGltaW5nc3x8e30sInNlbmRFdmVudENvbXBsZXRlZCIsdCl9KSl9KGUuZXZlbnRzKCksdCl9KSl9fSh0LmJhdGNoZXMpKSxhZSh0LmJhdGNoZXMsbix0LnNlbmRUeXBlLCEwKX1maW5hbGx5ezA9PT10LnNlbmRUeXBlJiYoTS0tLDUhPT1yJiZlLnNlbmRRdWV1ZWRSZXF1ZXN0cyh0LnNlbmRUeXBlLHIpKX19KGksdSxzLGYpKSxhZShsLDgwMDQsaS5zZW5kVHlwZSl9fShuLGksdCxsKX0sdT10LmlzVGVhcmRvd258fHQuaXNTeW5jO3RyeXtmLnNlbmRQT1NUKG4scyx1KSxlLnNlbmRMaXN0ZW5lciYmZS5zZW5kTGlzdGVuZXIoTixuLHUsdC5pc0JlYWNvbil9Y2F0Y2goZSl7Ui5kaWFnTG9nKCkud2FyblRvQ29uc29sZSgiVW5leHBlY3RlZCBleGNlcHRpb24gc2VuZGluZyBwYXlsb2FkLiBFeDoiKygwLGkuZVUpKGUpKSxaKHMsMCx7fSl9fSksKDAsdS5MbSkoSywoZnVuY3Rpb24oKXtyZXR1cm4iSHR0cE1hbmFnZXI6X2RvUGF5bG9hZFNlbmQuc2VuZGVyIn0pLChmdW5jdGlvbigpe2lmKHkpaWYoMD09PXQuc2VuZFR5cGUmJk0rKyxkJiYhdC5pc0JlYWNvbiYmMyE9PWYuX3RyYW5zcG9ydCl7dmFyIG49e2RhdGE6Ti5kYXRhLHVybFN0cmluZzpOLnVybFN0cmluZyxoZWFkZXJzOigwLGEubDcpKHt9LE4uaGVhZGVycyksdGltZW91dDpOLnRpbWVvdXQsZGlzYWJsZVhoclN5bmM6Ti5kaXNhYmxlWGhyU3luY30scj0hMTsoMCx1LkxtKShLLChmdW5jdGlvbigpe3JldHVybiJIdHRwTWFuYWdlcjpfZG9QYXlsb2FkU2VuZC5zZW5kSG9vayJ9KSwoZnVuY3Rpb24oKXt0cnl7ZS5zZW5kSG9vayhuLChmdW5jdGlvbihlKXtyPSEwLFR8fGUuX3RoZVBheWxvYWR8fChlLl90aGVQYXlsb2FkPWUuX3RoZVBheWxvYWR8fE4uX3RoZVBheWxvYWQsZS5fc2VuZFJlYXNvbj1lLl9zZW5kUmVhc29ufHxOLl9zZW5kUmVhc29uKSx5KGUpfSksdC5pc1N5bmN8fHQuaXNUZWFyZG93bil9Y2F0Y2goZSl7cnx8eShOKX19KSl9ZWxzZSB5KE4pfSkpfSksKGZ1bmN0aW9uKCl7cmV0dXJue3RoZVBheWxvYWQ6dCxzZXJpYWxpemF0aW9uU3RhcnQ6bixzZXJpYWxpemF0aW9uQ29tcGxldGVkOnMsc2VuZFJlYXNvbjpsfX0pLHQuaXNTeW5jKX10LnNpemVFeGNlZWQmJnQuc2l6ZUV4Y2VlZC5sZW5ndGg+MCYmYWUodC5zaXplRXhjZWVkLDgwMDMsdC5zZW5kVHlwZSksdC5mYWlsZWRFdnRzJiZ0LmZhaWxlZEV2dHMubGVuZ3RoPjAmJmFlKHQuZmFpbGVkRXZ0cyw4MDAyLHQuc2VuZFR5cGUpfWZ1bmN0aW9uIG9lKGUsdCxuKXt0P2UoKTpJLnNldChlLG4pfWZ1bmN0aW9uIGllKHQpe3ZhciBuPWUuX3Jlc3BvbnNlSGFuZGxlcnM7dHJ5e2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXRyeXtuW3JdKHQpfWNhdGNoKGUpeygwLHMua1ApKFIuZGlhZ0xvZygpLDEsNTE5LCJSZXNwb25zZSBoYW5kbGVyIGZhaWxlZDogIitlKX1pZih0KXt2YXIgbz1KU09OLnBhcnNlKHQpOygwLGEuU24pKG8ud2ViUmVzdWx0KSYmKDAsYS5Tbikoby53ZWJSZXN1bHRbcC5hQl0pJiZ5LnNldCgiTVNGUEMiLG8ud2ViUmVzdWx0W3AuYUJdLDMxNTM2ZTMpfX1jYXRjaChlKXt9fWZ1bmN0aW9uIGFlKGUsdCxuLHIpe2lmKGUmJmUubGVuZ3RoPjAmJkEpe3ZhciBvPUFbKGM9dCxsPWhbY10sKDAsYS5TbikobCl8fChsPXAuVVgsYz49OWUzJiZjPD05OTk5P2w9cC5ZYjpjPj04ZTMmJmM8PTg5OTk/bD1wLnVGOmM+PTFlMyYmYzw9MTk5OSYmKGw9cC5YNCkpLGwpXTtpZihvKXt2YXIgaT0wIT09bjsoMCx1LkxtKShLLChmdW5jdGlvbigpe3JldHVybiJIdHRwTWFuYWdlcjpfc2VuZEJhdGNoZXNOb3RpZmljYXRpb24ifSksKGZ1bmN0aW9uKCl7b2UoKGZ1bmN0aW9uKCl7dHJ5e28uY2FsbChBLGUsdCxpLG4pfWNhdGNoKGUpeygwLHMua1ApKFIuZGlhZ0xvZygpLDEsNzQsInNlbmQgcmVxdWVzdCBub3RpZmljYXRpb24gZmFpbGVkOiAiK2UpfX0pLHJ8fGksMCl9KSwoZnVuY3Rpb24oKXtyZXR1cm57YmF0Y2hlczokKGUpLHJlYXNvbjp0LGlzU3luYzppLHNlbmRTeW5jOnIsc2VuZFR5cGU6bn19KSwhaSl9fXZhciBjLGx9ZS5pbml0aWFsaXplPWZ1bmN0aW9uKGUsdCxuLHIsYSl7dmFyIHM7YXx8KGE9e30pLHg9ZSt4LFg9ISEoMCxvLm84KShhLmF2b2lkT3B0aW9ucyl8fCFhLmF2b2lkT3B0aW9ucyxLPXQseT10LmdldENvb2tpZU1ncigpLGo9IUsuY29uZmlnLmRpc2FibGVFdmVudFRpbWluZ3M7dmFyIHU9ISFLLmNvbmZpZy5lbmFibGVDb21wb3VuZEtleTtSPW47dmFyIGM9YS52YWx1ZVNhbml0aXplcixIPWEuc3RyaW5naWZ5T2JqZWN0czsoMCxvLm84KShhLmVuYWJsZUNvbXBvdW5kS2V5KXx8KHU9ISFhLmVuYWJsZUNvbXBvdW5kS2V5KSx3PWEueGhyVGltZW91dCxiPWEuZGlzYWJsZVhoclN5bmMsaz0hKDAsaS5iJCkoKSxEPW5ldyBsLmUoSyxjLEgsdSk7dmFyIFM9cixwPWEuYWx3YXlzVXNlWGhyT3ZlcnJpZGU/cjpudWxsLEM9YS5hbHdheXNVc2VYaHJPdmVycmlkZT9yOm51bGw7aWYoIXIpe1Q9ITE7dmFyIGg9KDAsaS5rJCkoKTtoJiZoLnByb3RvY29sJiYiZmlsZToiPT09aC5wcm90b2NvbC50b0xvd2VyQ2FzZSgpJiYoZD0hMSk7dmFyIEE9W107QT0oMCxpLmIkKSgpP1syLDFdOlsxLDIsM107dmFyIHY9YS50cmFuc3BvcnRzO3YmJigoMCxvLmhqKSh2KT9BPVt2XS5jb25jYXQoQSk6KDAsby5rSikodikmJihBPXYuY29uY2F0KEEpKSkscj1mKEEsITEpLFM9ZihBLCEwKSxyfHxSLmRpYWdMb2coKS53YXJuVG9Db25zb2xlKCJObyBhdmFpbGFibGUgdHJhbnNwb3J0IHRvIHNlbmQgZXZlbnRzIil9KHM9e30pWzBdPXIsc1sxXT1TfHxmKFsxLDIsM10sITApLHNbMl09cHx8ZihbMywyXSwhMCl8fFN8fGYoWzFdLCEwKSxzWzNdPUN8fGYoWzIsM10sITApfHxTfHxmKFsxXSwhMCksTj1zfSxlLl9nZXREYmdQbGdUYXJnZXRzPWZ1bmN0aW9uKCl7cmV0dXJuW05bMF0sTyxELE5dfSxlLmFkZFF1ZXJ5U3RyaW5nUGFyYW1ldGVyPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjxMLmxlbmd0aDtuKyspaWYoTFtuXS5uYW1lPT09ZSlyZXR1cm4gdm9pZChMW25dLnZhbHVlPXQpO0wucHVzaCh7bmFtZTplLHZhbHVlOnR9KX0sZS5hZGRIZWFkZXI9ZnVuY3Rpb24oZSx0KXtGW2VdPXR9LGUuY2FuU2VuZFJlcXVlc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gSigpJiZFLmFsbG93UmVxdWVzdFNlbmRpbmcoKX0sZS5zZW5kUXVldWVkUmVxdWVzdHM9ZnVuY3Rpb24oZSx0KXsoMCxvLm84KShlKSYmKGU9MCksVyYmKGU9UShlKSx0PTIpLF8oQixlLDApJiZlZShHKCksMCwhMSxlLHR8fDApfSxlLmlzQ29tcGxldGVseUlkbGU9ZnVuY3Rpb24oKXtyZXR1cm4hUCYmMD09PU0mJjA9PT1CLmxlbmd0aH0sZS5zZXRVbmxvYWRpbmc9ZnVuY3Rpb24oZSl7Vz1lfSxlLmFkZEJhdGNoPWZ1bmN0aW9uKGUpe2lmKGUmJmUuY291bnQoKT4wKXtpZihPLmlzVGVuYW50S2lsbGVkKGUuaUtleSgpKSlyZXR1cm4hMTtCLnB1c2goZSl9cmV0dXJuITB9LGUudGVhcmRvd249ZnVuY3Rpb24oKXtCLmxlbmd0aD4wJiZlZShHKCksMCwhMCwyLDIpfSxlLnBhdXNlPWZ1bmN0aW9uKCl7UD0hMH0sZS5yZXN1bWU9ZnVuY3Rpb24oKXtQPSExLGUuc2VuZFF1ZXVlZFJlcXVlc3RzKDAsNCl9LGUuc2VuZFN5bmNocm9ub3VzQmF0Y2g9ZnVuY3Rpb24oZSx0LG4pe2UmJmUuY291bnQoKT4wJiYoKDAsby5sZSkodCkmJih0PTEpLFcmJih0PVEodCksbj0yKSxlZShbZV0sMCwhMSx0LG58fDApKX19KSl9fSw4NjM0MzM6KGUsdCxuKT0+eyJ1c2Ugc3RyaWN0IjtuLmQodCx7WjooKT0+aX0pO3ZhciByPW4oOTIzODA2KSxvPW4oOTI5NTQxKTtjb25zdCBpPWZ1bmN0aW9uIGUoKXt2YXIgdD17fTsoMCxyLlopKGUsdGhpcywoZnVuY3Rpb24oZSl7ZS5zZXRLaWxsU3dpdGNoVGVuYW50cz1mdW5jdGlvbihlLG4pe2lmKGUmJm4pdHJ5e3ZhciByPShzPWUuc3BsaXQoIiwiKSx1PVtdLHMmJigwLG8udE8pKHMsKGZ1bmN0aW9uKGUpe3UucHVzaCgoMCxvLm5kKShlKSl9KSksdSk7aWYoInRoaXMtcmVxdWVzdC1vbmx5Ij09PW4pcmV0dXJuIHI7Zm9yKHZhciBpPTFlMypwYXJzZUludChuLDEwKSxhPTA7YTxyLmxlbmd0aDsrK2EpdFtyW2FdXT0oMCxvLm02KSgpK2l9Y2F0Y2goZSl7cmV0dXJuW119dmFyIHMsdTtyZXR1cm5bXX0sZS5pc1RlbmFudEtpbGxlZD1mdW5jdGlvbihlKXt2YXIgbj10LHI9KDAsby5uZCkoZSk7cmV0dXJuIHZvaWQgMCE9PW5bcl0mJm5bcl0+KDAsby5tNikoKXx8KGRlbGV0ZSBuW3JdLCExKX19KSl9fSw4ODQ4MzooZSx0LG4pPT57InVzZSBzdHJpY3QiO24uZCh0LHtaOigpPT5VfSk7dmFyIHI9bigzNDUzNjIpLG89big5MjM4MDYpLGk9bigzMTcxNDApLGE9big3MDYwMzgpLHM9bigyMzU2MiksdT1uKDY5MTI1NCksYz1uKDkyOTU0MSksbD1uKDgwMzE0NSksSD1uKDcxODgxNCksZD1uKDY2MjM3MiksZj1uKDc2Njg2NCksUz1uKDk4MDM3KSxwPW4oNTQ3NDEwKSxDPW4oNTYwNDgxKSxoPW4oNDUyODQ4KSxBPW4oOTYwNjY2KSx2PW4oODA1ODgyKSxJPSJldmVudHNEaXNjYXJkZWQiO2NvbnN0IFU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBuLHI9ZS5jYWxsKHRoaXMpfHx0aGlzO3IuaWRlbnRpZmllcj0iUG9zdENoYW5uZWwiLHIucHJpb3JpdHk9MTAxMSxyLnZlcnNpb249IjMuMi4zIjt2YXIgZixVLGcsbSxSLE4sSyx5PSExLHc9W10sYj1udWxsLHg9ITEsTz0wLFA9NTAwLEU9MCxrPTFlNCxNPXt9LFQ9Uy5vdyxMPW51bGwsRj1udWxsLEI9MCxEPTAsaj17fSxXPS0xLFg9ITAsej0hMSxxPTYsWj0yO3JldHVybigwLG8uWikodCxyLChmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHIoZSl7ImJlZm9yZXVubG9hZCIhPT0oZXx8KDAsbC5KaikoKS5ldmVudCkudHlwZSYmKHo9ITAsVS5zZXRVbmxvYWRpbmcoeikpLGVlKDIsMil9ZnVuY3Rpb24gbyhlKXt6PSExLFUuc2V0VW5sb2FkaW5nKHopfWZ1bmN0aW9uIFYoZSx0KXtpZihlLnNlbmRBdHRlbXB0fHwoZS5zZW5kQXR0ZW1wdD0wKSxlLmxhdGVuY3l8fChlLmxhdGVuY3k9MSksZS5leHQmJmUuZXh0LnRyYWNlJiZkZWxldGUgZS5leHQudHJhY2UsZS5leHQmJmUuZXh0LnVzZXImJmUuZXh0LnVzZXIuaWQmJmRlbGV0ZSBlLmV4dC51c2VyLmlkLFgmJihlLmV4dD0oMCxjLkF4KShlLmV4dCksZS5iYXNlRGF0YSYmKGUuYmFzZURhdGE9KDAsYy5BeCkoZS5iYXNlRGF0YSkpLGUuZGF0YSYmKGUuZGF0YT0oMCxjLkF4KShlLmRhdGEpKSksZS5zeW5jKWlmKEJ8fHgpZS5sYXRlbmN5PTMsZS5zeW5jPSExO2Vsc2UgaWYoVSlyZXR1cm4gWCYmKGU9KDAsYy5BeCkoZSkpLHZvaWQgVS5zZW5kU3luY2hyb25vdXNCYXRjaChwLmwuY3JlYXRlKGUuaUtleSxbZV0pLCEwPT09ZS5zeW5jPzE6ZS5zeW5jLDMpO3ZhciBuPWUubGF0ZW5jeSxyPUUsbz1rOzQ9PT1uJiYocj1PLG89UCk7dmFyIGk9ITE7aWYocjxvKWk9IXJlKGUsdCk7ZWxzZXt2YXIgYT0xLHM9MjA7ND09PW4mJihhPTQscz0xKSxpPSEwLGZ1bmN0aW9uKGUsdCxuLHIpe2Zvcig7bjw9dDspe3ZhciBvPXRlKGUsdCwhMCk7aWYobyYmby5jb3VudCgpPjApe3ZhciBpPW8uc3BsaXQoMCxyKSxhPWkuY291bnQoKTtpZihhPjApcmV0dXJuIDQ9PT1uP08tPWE6RS09YSxkZShJLFtpXSxILmguUXVldWVGdWxsKSwhMH1uKyt9cmV0dXJuIG9lKCksITF9KGUuaUtleSxlLmxhdGVuY3ksYSxzKSYmKGk9IXJlKGUsdCkpfWkmJkhlKEksW2VdLEguaC5RdWV1ZUZ1bGwpfWZ1bmN0aW9uIFkoZSx0LG4pe3ZhciByPWllKGUsdCxuKTtyZXR1cm4gVS5zZW5kUXVldWVkUmVxdWVzdHModCxuKSxyfWZ1bmN0aW9uIFEoKXtyZXR1cm4gRT4wfWZ1bmN0aW9uIEooKXtpZihXPj0wJiZpZShXLDAsUikmJlUuc2VuZFF1ZXVlZFJlcXVlc3RzKDAsUiksTz4wJiYhRiYmIXgpe3ZhciBlPU1bVF1bMl07ZT49MCYmKEY9XygoZnVuY3Rpb24oKXtGPW51bGwsWSg0LDAsMSksSigpfSksZSkpfXZhciB0PU1bVF1bMV07IUwmJiFiJiZ0Pj0wJiYheCYmKFEoKT9MPV8oKGZ1bmN0aW9uKCl7TD1udWxsLFkoMD09PUQ/MzoxLDAsMSksRCsrLEQlPTIsSigpfSksdCk6RD0wKX1mdW5jdGlvbiBHKCl7bj1udWxsLHk9ITEsdz1bXSxiPW51bGwseD0hMSxPPTAsUD01MDAsRT0wLGs9MWU0LE09e30sVD1TLm93LEw9bnVsbCxGPW51bGwsQj0wLEQ9MCxmPW51bGwsaj17fSxnPXZvaWQgMCxtPTAsVz0tMSxSPW51bGwsWD0hMCx6PSExLHE9NixaPTIsTj1udWxsLEs9KDAsdi56RykoKSxVPW5ldyBDLngoNTAwLDIsMSx7cmVxdWV1ZTpjZSxzZW5kOmZlLHNlbnQ6U2UsZHJvcDpwZSxyc3BGYWlsOkNlLG90aDpoZX0sSyksdWUoKSxqWzRdPXtiYXRjaGVzOltdLGlLZXlNYXA6e319LGpbM109e2JhdGNoZXM6W10saUtleU1hcDp7fX0salsyXT17YmF0Y2hlczpbXSxpS2V5TWFwOnt9fSxqWzFdPXtiYXRjaGVzOltdLGlLZXlNYXA6e319LEFlKCl9ZnVuY3Rpb24gXyhlLHQpezA9PT10JiZCJiYodD0xKTt2YXIgbj0xZTM7cmV0dXJuIEImJihuPSgwLGguZSkoQi0xKSksSy5zZXQoZSx0Km4pfWZ1bmN0aW9uICQoKXtyZXR1cm4gbnVsbCE9PUwmJihLLmNsZWFyKEwpLEw9bnVsbCxEPTAsITApfWZ1bmN0aW9uIGVlKGUsdCl7JCgpLGImJihLLmNsZWFyKGIpLGI9bnVsbCkseHx8WSgxLGUsdCl9ZnVuY3Rpb24gdGUoZSx0LG4pe3ZhciByPWpbdF07cnx8KHI9alt0PTFdKTt2YXIgbz1yLmlLZXlNYXBbZV07cmV0dXJuIW8mJm4mJihvPXAubC5jcmVhdGUoZSksci5iYXRjaGVzLnB1c2gobyksci5pS2V5TWFwW2VdPW8pLG99ZnVuY3Rpb24gbmUodCxuKXtVLmNhblNlbmRSZXF1ZXN0KCkmJiFCJiYoZz4wJiZFPmcmJihuPSEwKSxuJiZudWxsPT1iJiZlLmZsdXNoKHQsbnVsbCwyMCkpfWZ1bmN0aW9uIHJlKGUsdCl7WCYmKGU9KDAsYy5BeCkoZSkpO3ZhciBuPWUubGF0ZW5jeSxyPXRlKGUuaUtleSxuLCEwKTtyZXR1cm4hIXIuYWRkRXZlbnQoZSkmJig0IT09bj8oRSsrLHQmJjA9PT1lLnNlbmRBdHRlbXB0JiZuZSghZS5zeW5jLG0+MCYmci5jb3VudCgpPj1tKSk6TysrLCEwKX1mdW5jdGlvbiBvZSgpe2Zvcih2YXIgZT0wLHQ9MCxuPWZ1bmN0aW9uKG4pe3ZhciByPWpbbl07ciYmci5iYXRjaGVzJiYoMCxjLnRPKShyLmJhdGNoZXMsKGZ1bmN0aW9uKHIpezQ9PT1uP2UrPXIuY291bnQoKTp0Kz1yLmNvdW50KCl9KSl9LHI9MTtyPD00O3IrKyluKHIpO0U9dCxPPWV9ZnVuY3Rpb24gaWUodCxuLHIpe3ZhciBvPSExLGE9MD09PW47cmV0dXJuIWF8fFUuY2FuU2VuZFJlcXVlc3QoKT8oMCxpLkxtKShlLmNvcmUsKGZ1bmN0aW9uKCl7cmV0dXJuIlBvc3RDaGFubmVsLl9xdWV1ZUJhdGNoZXMifSksKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49NDtuPj10Oyl7dmFyIHI9altuXTtyJiZyLmJhdGNoZXMmJnIuYmF0Y2hlcy5sZW5ndGg+MCYmKCgwLGMudE8pKHIuYmF0Y2hlcywoZnVuY3Rpb24odCl7VS5hZGRCYXRjaCh0KT9vPW98fHQmJnQuY291bnQoKT4wOmU9ZS5jb25jYXQodC5ldmVudHMoKSksND09PW4/Ty09dC5jb3VudCgpOkUtPXQuY291bnQoKX0pKSxyLmJhdGNoZXM9W10sci5pS2V5TWFwPXt9KSxuLS19ZS5sZW5ndGg+MCYmSGUoSSxlLEguaC5LaWxsU3dpdGNoKSxvJiZXPj10JiYoVz0tMSxSPTApfSksKGZ1bmN0aW9uKCl7cmV0dXJue2xhdGVuY3k6dCxzZW5kVHlwZTpuLHNlbmRSZWFzb246cn19KSwhYSk6KFc9Vz49MD9NYXRoLm1pbihXLHQpOnQsUj1NYXRoLm1heChSLHIpKSxvfWZ1bmN0aW9uIGFlKGUsdCl7WSgxLDAsdCksb2UoKSxzZSgoZnVuY3Rpb24oKXtlJiZlKCksdy5sZW5ndGg+MD9iPV8oKGZ1bmN0aW9uKCl7Yj1udWxsLGFlKHcuc2hpZnQoKSx0KX0pLDApOihiPW51bGwsSigpKX0pKX1mdW5jdGlvbiBzZShlKXtVLmlzQ29tcGxldGVseUlkbGUoKT9lKCk6Yj1fKChmdW5jdGlvbigpe2I9bnVsbCxzZShlKX0pLC4yNSl9ZnVuY3Rpb24gdWUoKXsoTT17fSlbUy5vd109WzIsMSwwXSxNW1MuamVdPVs2LDMsMF0sTVtTLmUyXT1bMTgsOSwwXX1mdW5jdGlvbiBjZSh0LG4pe3ZhciByPVtdLG89cTt6JiYobz1aKSwoMCxjLnRPKSh0LChmdW5jdGlvbih0KXt0JiZ0LmNvdW50KCk+MCYmKDAsYy50TykodC5ldmVudHMoKSwoZnVuY3Rpb24odCl7dCYmKHQuc3luYyYmKHQubGF0ZW5jeT00LHQuc3luYz0hMSksdC5zZW5kQXR0ZW1wdDxvPygoMCx1LmlmKSh0LGUuaWRlbnRpZmllciksVih0LCExKSk6ci5wdXNoKHQpKX0pKX0pKSxyLmxlbmd0aD4wJiZIZShJLHIsSC5oLk5vblJldHJ5YWJsZVN0YXR1cykseiYmZWUoMiwyKX1mdW5jdGlvbiBsZSh0LG4pe3ZhciByPWUuX25vdGlmaWNhdGlvbk1hbmFnZXJ8fHt9LG89clt0XTtpZihvKXRyeXtvLmFwcGx5KHIsbil9Y2F0Y2gobil7KDAsZC5rUCkoZS5kaWFnTG9nKCksMSw3NCx0KyIgbm90aWZpY2F0aW9uIGZhaWxlZDogIituKX19ZnVuY3Rpb24gSGUoZSx0KXtmb3IodmFyIG49W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspbltyLTJdPWFyZ3VtZW50c1tyXTt0JiZ0Lmxlbmd0aD4wJiZsZShlLFt0XS5jb25jYXQobikpfWZ1bmN0aW9uIGRlKGUsdCl7Zm9yKHZhciBuPVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bci0yXT1hcmd1bWVudHNbcl07dCYmdC5sZW5ndGg+MCYmKDAsYy50TykodCwoZnVuY3Rpb24odCl7dCYmdC5jb3VudCgpPjAmJmxlKGUsW3QuZXZlbnRzKCldLmNvbmNhdChuKSl9KSl9ZnVuY3Rpb24gZmUoZSx0LG4pe2UmJmUubGVuZ3RoPjAmJmxlKCJldmVudHNTZW5kUmVxdWVzdCIsW3Q+PTFlMyYmdDw9MTk5OT90LTFlMzowLCEwIT09bl0pfWZ1bmN0aW9uIFNlKGUsdCl7ZGUoImV2ZW50c1NlbnQiLGUsdCksSigpfWZ1bmN0aW9uIHBlKGUsdCl7ZGUoSSxlLHQ+PThlMyYmdDw9ODk5OT90LThlMzpILmguVW5rbm93bil9ZnVuY3Rpb24gQ2UoZSl7ZGUoSSxlLEguaC5Ob25SZXRyeWFibGVTdGF0dXMpLEooKX1mdW5jdGlvbiBoZShlLHQpe2RlKEksZSxILmguVW5rbm93biksSigpfWZ1bmN0aW9uIEFlKCl7bT1uJiZuLmRpc2FibGVBdXRvQmF0Y2hGbHVzaExpbWl0PzA6TWF0aC5tYXgoMTUwMCxrLzYpfUcoKSxlLl9nZXREYmdQbGdUYXJnZXRzPWZ1bmN0aW9uKCl7cmV0dXJuW1VdfSxlLmluaXRpYWxpemU9ZnVuY3Rpb24obCxILGQpeygwLGkuTG0pKEgsKGZ1bmN0aW9uKCl7cmV0dXJuIlBvc3RDaGFubmVsOmluaXRpYWxpemUifSksKGZ1bmN0aW9uKCl7dmFyIGk9SDt0LmluaXRpYWxpemUobCxILGQpO3RyeXtILmFkZFVubG9hZENiO049KDAsYS5qVSkoKDAscy5KKShlLmlkZW50aWZpZXIpLEguZXZ0TmFtZXNwYWNlJiZILmV2dE5hbWVzcGFjZSgpKTt2YXIgUz1lLl9nZXRUZWxDdHgoKTtsLmV4dGVuc2lvbkNvbmZpZ1tlLmlkZW50aWZpZXJdPWwuZXh0ZW5zaW9uQ29uZmlnW2UuaWRlbnRpZmllcl18fHt9LG49Uy5nZXRFeHRDZmcoZS5pZGVudGlmaWVyKSxLPSgwLHYuekcpKG4uc2V0VGltZW91dE92ZXJyaWRlLG4uY2xlYXJUaW1lb3V0T3ZlcnJpZGUpLFg9IW4uZGlzYWJsZU9wdGltaXplT2JqJiYoMCx1Lm1KKSgpLGZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0V1BhcmFtO2UuZ2V0V1BhcmFtPWZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gbi5pZ25vcmVNYzFNczBDb29raWVQcm9jZXNzaW5nJiYoZXw9MiksZXx0KCl9fShpKSxuLmV2ZW50c0xpbWl0SW5NZW0+MCYmKGs9bi5ldmVudHNMaW1pdEluTWVtKSxuLmltbWVkaWF0ZUV2ZW50TGltaXQ+MCYmKFA9bi5pbW1lZGlhdGVFdmVudExpbWl0KSxuLmF1dG9GbHVzaEV2ZW50c0xpbWl0PjAmJihnPW4uYXV0b0ZsdXNoRXZlbnRzTGltaXQpLCgwLGMuaGopKG4ubWF4RXZlbnRSZXRyeUF0dGVtcHRzKSYmKHE9bi5tYXhFdmVudFJldHJ5QXR0ZW1wdHMpLCgwLGMuaGopKG4ubWF4VW5sb2FkRXZlbnRSZXRyeUF0dGVtcHRzKSYmKFo9bi5tYXhVbmxvYWRFdmVudFJldHJ5QXR0ZW1wdHMpLEFlKCksbi5odHRwWEhST3ZlcnJpZGUmJm4uaHR0cFhIUk92ZXJyaWRlLnNlbmRQT1NUJiYoZj1uLmh0dHBYSFJPdmVycmlkZSksKDAsdS5TbikobC5hbm9uQ29va2llTmFtZSkmJlUuYWRkUXVlcnlTdHJpbmdQYXJhbWV0ZXIoImFub25ja25tIixsLmFub25Db29raWVOYW1lKSxVLnNlbmRIb29rPW4ucGF5bG9hZFByZXByb2Nlc3NvcixVLnNlbmRMaXN0ZW5lcj1uLnBheWxvYWRMaXN0ZW5lcjt2YXIgcD1uLm92ZXJyaWRlRW5kcG9pbnRVcmw/bi5vdmVycmlkZUVuZHBvaW50VXJsOmwuZW5kcG9pbnRVcmw7ZS5fbm90aWZpY2F0aW9uTWFuYWdlcj1sLmV4dGVuc2lvbkNvbmZpZy5Ob3RpZmljYXRpb25NYW5hZ2VyLFUuaW5pdGlhbGl6ZShwLGUuY29yZSxlLGYsbik7dmFyIEM9bC5kaXNhYmxlUGFnZVVubG9hZEV2ZW50c3x8W107KDAsYS5jOSkocixDLE4pLCgwLGEuVEopKHIsQyxOKSwoMCxhLm5EKShvLGwuZGlzYWJsZVBhZ2VTaG93RXZlbnRzLE4pfWNhdGNoKHQpe3Rocm93IGUuc2V0SW5pdGlhbGl6ZWQoITEpLHR9fSksKGZ1bmN0aW9uKCl7cmV0dXJue2NvcmVDb25maWc6bCxjb3JlOkgsZXh0ZW5zaW9uczpkfX0pKX0sZS5wcm9jZXNzVGVsZW1ldHJ5PWZ1bmN0aW9uKHQscil7KDAsdS5pZikodCxlLmlkZW50aWZpZXIpO3ZhciBvPShyPWUuX2dldFRlbEN0eChyKSkuZ2V0RXh0Q2ZnKGUuaWRlbnRpZmllciksaT0hIW4uZGlzYWJsZVRlbGVtZXRyeTtvJiYoaT1pfHwhIW8uZGlzYWJsZVRlbGVtZXRyeSk7dmFyIGE9dDtpfHx5fHwobi5vdmVycmlkZUluc3RydW1lbnRhdGlvbktleSYmKGEuaUtleT1uLm92ZXJyaWRlSW5zdHJ1bWVudGF0aW9uS2V5KSxvJiZvLm92ZXJyaWRlSW5zdHJ1bWVudGF0aW9uS2V5JiYoYS5pS2V5PW8ub3ZlcnJpZGVJbnN0cnVtZW50YXRpb25LZXkpLFYoYSwhMCksej9lZSgyLDIpOkooKSksZS5wcm9jZXNzTmV4dChhLHIpfSxlLl9kb1RlYXJkb3duPWZ1bmN0aW9uKGUsdCl7ZWUoMiwyKSx5PSEwLFUudGVhcmRvd24oKSwoMCxhLkpBKShudWxsLE4pLCgwLGEuQzkpKG51bGwsTiksKDAsYS5ZbCkobnVsbCxOKSxHKCl9LGUuc2V0RXZlbnRRdWV1ZUxpbWl0cz1mdW5jdGlvbihlLHQpe2s9ZT4wP2U6MWU0LGc9dD4wP3Q6MCxBZSgpO3ZhciBuPUU+ZTtpZighbiYmbT4wKWZvcih2YXIgcj0xOyFuJiZyPD0zO3IrKyl7dmFyIG89altyXTtvJiZvLmJhdGNoZXMmJigwLGMudE8pKG8uYmF0Y2hlcywoZnVuY3Rpb24oZSl7ZSYmZS5jb3VudCgpPj1tJiYobj0hMCl9KSl9bmUoITAsbil9LGUucGF1c2U9ZnVuY3Rpb24oKXskKCkseD0hMCxVLnBhdXNlKCl9LGUucmVzdW1lPWZ1bmN0aW9uKCl7eD0hMSxVLnJlc3VtZSgpLEooKX0sZS5hZGRSZXNwb25zZUhhbmRsZXI9ZnVuY3Rpb24oZSl7VS5fcmVzcG9uc2VIYW5kbGVycy5wdXNoKGUpfSxlLl9sb2FkVHJhbnNtaXRQcm9maWxlcz1mdW5jdGlvbihlKXskKCksdWUoKSxUPVMub3csSigpLCgwLGMuclcpKGUsKGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5sZW5ndGg7aWYobj49Mil7dmFyIHI9bj4yP3RbMl06MDtpZih0LnNwbGljZSgwLG4tMiksdFsxXTwwJiYodFswXT0tMSksdFsxXT4wJiZ0WzBdPjApe3ZhciBvPXRbMF0vdFsxXTt0WzBdPU1hdGguY2VpbChvKSp0WzFdfXI+PTAmJnRbMV0+PTAmJnI+dFsxXSYmKHI9dFsxXSksdC5wdXNoKHIpLE1bZV09dH19KSl9LGUuZmx1c2g9ZnVuY3Rpb24oZSx0LG4pe2lmKHZvaWQgMD09PWUmJihlPSEwKSwheClpZihuPW58fDEsZSludWxsPT1iPygkKCksaWUoMSwwLG4pLGI9XygoZnVuY3Rpb24oKXtiPW51bGwsYWUodCxuKX0pLDApKTp3LnB1c2godCk7ZWxzZXt2YXIgcj0kKCk7WSgxLDEsbiksbnVsbCE9dCYmdCgpLHImJkooKX19LGUuc2V0TXNhQXV0aFRpY2tldD1mdW5jdGlvbihlKXtVLmFkZEhlYWRlcihBLlFqLGUpfSxlLmhhc0V2ZW50cz1RLGUuX3NldFRyYW5zbWl0UHJvZmlsZT1mdW5jdGlvbihlKXtUIT09ZSYmdm9pZCAwIT09TVtlXSYmKCQoKSxUPWUsSigpKX0sZS5fYmFja09mZlRyYW5zbWlzc2lvbj1mdW5jdGlvbigpe0I8NCYmKEIrKywkKCksSigpKX0sZS5fY2xlYXJCYWNrT2ZmPWZ1bmN0aW9uKCl7QiYmKEI9MCwkKCksSigpKX0sKDAsYy5sXykoZSwiX3NldFRpbWVvdXRPdmVycmlkZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEsuc2V0fSksKGZ1bmN0aW9uKGUpe0s9KDAsdi56RykoZSxLLmNsZWFyKX0pKSwoMCxjLmxfKShlLCJfY2xlYXJUaW1lb3V0T3ZlcnJpZGUiLChmdW5jdGlvbigpe3JldHVybiBLLmNsZWFyfSksKGZ1bmN0aW9uKGUpe0s9KDAsdi56RykoSy5zZXQsZSl9KSl9KSkscn1yZXR1cm4oMCxyLm5lKSh0LGUpLHR9KGYuaSl9LDQ1Mjg0ODooZSx0LG4pPT57InVzZSBzdHJpY3QiO24uZCh0LHtEOigpPT5yLGU6KCk9Pm99KTtmdW5jdGlvbiByKGUpe3JldHVybiEoZT49MzAwJiZlPDUwMCYmNDA4IT1lJiY0MjkhPWV8fDUwMT09ZXx8NTA1PT1lKX1mdW5jdGlvbiBvKGUpe3ZhciB0LG49TWF0aC5mbG9vcigxMjAwKk1hdGgucmFuZG9tKCkpKzI0MDA7cmV0dXJuIHQ9TWF0aC5wb3coMixlKSpuLE1hdGgubWluKHQsNmU1KX19LDQ2MDE0OTooZSx0LG4pPT57InVzZSBzdHJpY3QiO24uZCh0LHtlOigpPT5IfSk7dmFyIHI9bigzMTcxNDApLG89big5Mjk1NDEpLGk9big2OTEyNTQpLGE9big1NDc0MTApLHM9big5MjM4MDYpLHU9MmU2LGM9TWF0aC5taW4odSw2NWUzKSxsPS9cLi8sSD1mdW5jdGlvbiBlKHQsbixILGYpe3ZhciBTPSJkYXRhIixwPSJiYXNlRGF0YSIsQz0hIWYsaD1uLEE9e307KDAscy5aKShlLHRoaXMsKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oZSx0LHIsYSxzLHUsYyl7KDAsby5yVykoZSwoZnVuY3Rpb24oZSxkKXt2YXIgZj1udWxs
From: usaafric...@googlegroups.com <usaafric...@googlegroups.com> on behalf of Oluwatoyin Adepoju <ovde...@gmail.com>
What Kant is saying was said, in a different way, by our ancestral cave men when we learned to think at the beginning of our human existence.
Circling the globe and penetrating the cosmos in thought, from anywhere, more a matter of who you are than where you are, enabling you to see Kant in the metropolis and the forest, including Lagos in it's struggle between order and disorder, evoking the title of an essay of mine in which I celebrated a woman's glorious form, the magnificent bottom and it's over all body symmetry which the Black woman has been especially endowed with by nature, as this endowment was again revealed to me on a day in Lagos, symmetries I confront daily, from Ikeja to Ketu, Sodipo to Ojota, Onigbongbo to Balogun, while I wonder "how do I reveal to the world these glories of the earth?"
Pics and collage by myself showing Nigerian women in action at Professor Okeke-Ezigbo's memorial in Lagos on 25th June 2022
Carrying out conversations among the stars, dialogues with masters of thought across space and time.
thanks
toyin
kenneth harrow
professor emeritus
dept of english
michigan state university
On a more pleasant note O Adepoju, fellow human being , fellow connoisseur of dance music and the feminine mystique - this is all realised in the department of the sublime, known as aesthetics. Apparently all talk about the perennial fascination ( preoccupation?) namely big booty would have been lost on Mr. Kant , who is reported to have spent the whole of his life as a virgin - had no practical experience , was probably confined to cerebral & ethical speculation about the live and direct….
kenneth harrow
professor emeritus
dept of english
michigan state university
To view this discussion on the web visit https://groups.google.com/d/msgid/usaafricadialogue/DU0PR03MB8415CCFC5328C00F488ECC8DAEB69%40DU0PR03MB8415.eurprd03.prod.outlook.com.
kenneth harrow
professor emeritus
dept of english
michigan state university
kenneth harrow
professor emeritus
dept of english
michigan state university
kenneth harrow
professor emeritus
dept of english
michigan state university
kenneth harrow
professor emeritus
dept of english
michigan state university