<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>33710</bug_id>
          
          <creation_ts>2010-01-15 03:04:14 -0800</creation_ts>
          <short_desc>WebCore/bridge/jni/jsc should be renamed WebCore/bridge/jni/js</short_desc>
          <delta_ts>2010-01-18 02:41:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>33672</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Steve Block">steveblock</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>mrowe</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>181179</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-15 03:04:14 -0800</bug_when>
    <thetext>WebCore/bridge/jni/jsc should be renamed WebCore/bridge/jni/js. When referring to WebKit’s built-in JavaScript engine, the precedent is to use js, rather than jsc for the directory name. See Bug 33672.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181180</commentid>
    <comment_count>1</comment_count>
      <attachid>46664</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-15 03:10:46 -0800</bug_when>
    <thetext>Created attachment 46664
Patch 1 for Bug 33710

Renames WebCore/bridge/jni/jsc to WebCore/bridge/jni/js. Also renames jni_utility_private.[cpp|h] to JniUtilityPrivate.[cpp|h].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181182</commentid>
    <comment_count>2</comment_count>
      <attachid>46664</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-01-15 03:23:42 -0800</bug_when>
    <thetext>Comment on attachment 46664
Patch 1 for Bug 33710

JNI is an acronym and therefore should be expressed in all caps rather than in title case.

Is there some reason that you’re renaming only two of the 13 files that are named in this manner?  It would be more logical to me if you did the directory rename in one step, and then renamed all of the misnamed files at once in a follow-up change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181190</commentid>
    <comment_count>3</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-15 03:52:13 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 46664 [details])
&gt; JNI is an acronym and therefore should be expressed in all caps rather than in
&gt; title case.
&gt; 
&gt; Is there some reason that you’re renaming only two of the 13 files that are
&gt; named in this manner?  It would be more logical to me if you did the directory
&gt; rename in one step, and then renamed all of the misnamed files at once in a
&gt; follow-up change.

OK, I&apos;ve opened Bug 33712 to rename all of these files and will update the patch to just rename the directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181192</commentid>
    <comment_count>4</comment_count>
      <attachid>46670</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-15 03:53:40 -0800</bug_when>
    <thetext>Created attachment 46670
Patch 2 for Bug 33710

Renames WebCore/bridge/jni/jsc to WebCore/bridge/jni/js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181233</commentid>
    <comment_count>5</comment_count>
      <attachid>46682</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-15 08:12:44 -0800</bug_when>
    <thetext>Created attachment 46682
Patch 3 for Bug 33710

Now with ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181410</commentid>
    <comment_count>6</comment_count>
      <attachid>46682</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-01-15 14:54:51 -0800</bug_when>
    <thetext>Comment on attachment 46682
Patch 3 for Bug 33710

r=me, cq-, I assume you want to manually land this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181806</commentid>
    <comment_count>7</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-18 02:41:41 -0800</bug_when>
    <thetext>jsc is the correct name for this directory
See https://bugs.webkit.org/show_bug.cgi?id=33672#c7

Marking as won&apos;t fix</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46664</attachid>
            <date>2010-01-15 03:10:46 -0800</date>
            <delta_ts>2010-01-15 03:53:40 -0800</delta_ts>
            <desc>Patch 1 for Bug 33710</desc>
            <filename>jscToJs.txt</filename>
            <type>text/plain</type>
            <size>38662</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzMyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDEtMTUgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbmFtZSBXZWJDb3JlL2JyaWRnZS9qbmkvanNjIHRvIFdlYkNvcmUvYnJpZGdlL2puaS9qcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM3MTAKKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgdGhlIG5hbWVzIG9mIHRoZSB0d28gZmlsZXMg
aW4gdGhhdCBkaXJlY3RvcnkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3RvcmluZyBv
bmx5LgorCisgICAgICAgICogQW5kcm9pZC5qc2NiaW5kaW5ncy5tazogTW9kaWZpZWQuIFVwZGF0
ZWQgdG8gcmVmbGVjdCBtb3ZlZCBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IE1vZGlmaWVkLiBVcGRhdGVkIHRvIHJlZmxlY3QgbW92ZWQgZmlsZXMu
CisgICAgICAgICogYnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuY3BwOiBNb2RpZmllZC4gSW5jbHVk
ZSBKbmlVdGlsaXR5UHJpdmF0ZS5oIGZvciBKU0MKKyAgICAgICAgKiBicmlkZ2Uvam5pL2puaV9q
c29iamVjdC5tbTogTW9kaWZpZWQuIEluY2x1ZGUgSm5pVXRpbGl0eVByaXZhdGUuaCBmb3IgSlND
CisgICAgICAgICogYnJpZGdlL2puaS9qbmlfb2JqYy5tbTogTW9kaWZpZWQuIEluY2x1ZGUgSm5p
VXRpbGl0eVByaXZhdGUuaCBmb3IgSlNDCisgICAgICAgICogYnJpZGdlL2puaS9qbmlfcnVudGlt
ZS5jcHA6IE1vZGlmaWVkLiAgSW5jbHVkZSBKbmlVdGlsaXR5UHJpdmF0ZS5oIGZvciBKU0MKKyAg
ICAgICAgKiBicmlkZ2Uvam5pL2pzOiBBZGRlZC4KKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzL0pu
aVV0aWxpdHlQcml2YXRlLmNwcDogQ29waWVkIGZyb20gV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9q
bmlfdXRpbGl0eV9wcml2YXRlLmNwcC4KKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzL0puaVV0aWxp
dHlQcml2YXRlLmg6IENvcGllZCBmcm9tIFdlYkNvcmUvYnJpZGdlL2puaS9qc2Mvam5pX3V0aWxp
dHlfcHJpdmF0ZS5oLgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjOiBSZW1vdmVkLgorICAgICAg
ICAqIGJyaWRnZS9qbmkvanNjL2puaV91dGlsaXR5X3ByaXZhdGUuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIGJyaWRnZS9qbmkvanNjL2puaV91dGlsaXR5X3ByaXZhdGUuaDogUmVtb3ZlZC4KKwog
MjAxMC0wMS0xMyAgR2lyaXNoIFJhbWFrcmlzaG5hbiAgPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUvQW5k
cm9pZC5qc2NiaW5kaW5ncy5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQuanNjYmlu
ZGluZ3MubWsJKHJldmlzaW9uIDUzMjY5KQorKysgV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdz
Lm1rCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIEJJTkRJTkdfQ19JTkNMVURFUyA6
PSBcCiAJJChMT0NBTF9QQVRIKS9icmlkZ2UgXAogCSQoTE9DQUxfUEFUSCkvYnJpZGdlL2MgXAog
CSQoTE9DQUxfUEFUSCkvYnJpZGdlL2puaSBcCi0JJChMT0NBTF9QQVRIKS9icmlkZ2Uvam5pL2pz
YyBcCisJJChMT0NBTF9QQVRIKS9icmlkZ2Uvam5pL2pzIFwKIAlcCiAJJChKQVZBU0NSSVBUQ09S
RV9QQVRIKS9BUEkgXAogCSQoSkFWQVNDUklQVENPUkVfUEFUSCkvYXNzZW1ibGVyIFwKQEAgLTE4
Nyw3ICsxODcsNyBAQCBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJyaWRnZS9qbmkvam5pX2luc3Rh
bmNlLmNwcCBcCiAJYnJpZGdlL2puaS9qbmlfcnVudGltZS5jcHAgXAogCWJyaWRnZS9qbmkvam5p
X3V0aWxpdHkuY3BwIFwKLQlicmlkZ2Uvam5pL2pzYy9qbmlfdXRpbGl0eV9wcml2YXRlLmNwcCBc
CisJYnJpZGdlL2puaS9qcy9KbmlVdGlsaXR5UHJpdmF0ZS5jcHAgXAogCWJyaWRnZS9ucHJ1bnRp
bWUuY3BwIFwKIAlicmlkZ2UvcnVudGltZS5jcHAgXAogCWJyaWRnZS9ydW50aW1lX2FycmF5LmNw
cCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gNTMyNjkpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTExMyw4ICsxMTEzLDggQEAKIAkJNTRDNTBGN0IwRTgwMURG
MzAwOTgzMkEwIC8qIFhNTFRva2VuaXplckxpYnhtbDIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhN
TFRva2VuaXplckxpYnhtbDIuY3BwICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYg
LyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAg
Ki87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2
MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU5OUQxRTMyMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlf
dXRpbGl0eV9wcml2YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU5OUQxRTMwMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRl
LmNwcCAqLzsgfTsKLQkJNTk5RDFFMzMxMEM5N0Q2RTAwRTBFRjEyIC8qIGpuaV91dGlsaXR5X3By
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5
OUQxRTMxMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmggKi87IH07CisJ
CTU5MTZCQjA3MTEwMDgxMjYwMEI3MDBEQiAvKiBKbmlVdGlsaXR5UHJpdmF0ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTE2QkIwNjExMDA4MTI2
MDBCNzAwREIgLyogSm5pVXRpbGl0eVByaXZhdGUuY3BwICovOyB9OworCQk1OTE2QkIwOTExMDA4
MTM4MDBCNzAwREIgLyogSm5pVXRpbGl0eVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MTZCQjA4MTEwMDgxMzgwMEI3MDBEQiAvKiBKbmlV
dGlsaXR5UHJpdmF0ZS5oICovOyB9OwogCQk1OUM3N0YyQTEwNTQ1QjNCMDA1MDYxMDQgLyogR2Vv
bG9jYXRpb25TZXJ2aWNlTW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OUM3N0YyODEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2
aWNlTW9jay5jcHAgKi87IH07CiAJCTU5Qzc3RjJCMTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1OUM3N0YyOTEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9j
ay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVE
MTVFM0FCMEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxUb2tlbml6ZXJTY29wZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDE1RTNBOTBGOUU2QUMxMDA5
RTBFM0YgLyogWE1MVG9rZW5pemVyU2NvcGUuY3BwICovOyB9OwpAQCAtNjQ2Myw4ICs2NDYzLDgg
QEAKIAkJNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhNTFRva2VuaXplckxpYnhtbDIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MVG9rZW5pemVyTGlieG1s
Mi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkwMDcz
NTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgwODVG
NjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJNTk5RDFFMzAxMEM5
N0Q2RTAwRTBFRjEyIC8qIGpuaV91dGlsaXR5X3ByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHA7IHBhdGggPSBqc2Mv
am5pX3V0aWxpdHlfcHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU5
OUQxRTMxMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGpuaV91dGlsaXR5X3ByaXZhdGUuaDsgcGF0aCA9IGpz
Yy9qbmlfdXRpbGl0eV9wcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5
MTZCQjA2MTEwMDgxMjYwMEI3MDBEQiAvKiBKbmlVdGlsaXR5UHJpdmF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKbmlVdGlsaXR5UHJpdmF0ZS5jcHA7IHBhdGgg
PSBqcy9KbmlVdGlsaXR5UHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU5MTZCQjA4MTEwMDgxMzgwMEI3MDBEQiAvKiBKbmlVdGlsaXR5UHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKbmlVdGlsaXR5UHJpdmF0ZS5oOyBwYXRoID0ganMv
Sm5pVXRpbGl0eVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlDNzdG
MjgxMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHA7
IHBhdGggPSBtb2NrL0dlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1OUM3N0YyOTEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2
aWNlTW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHZW9sb2NhdGlvblNl
cnZpY2VNb2NrLmg7IHBhdGggPSBtb2NrL0dlb2xvY2F0aW9uU2VydmljZU1vY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQxNUUzQTkwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTFRv
a2VuaXplclNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhN
TFRva2VuaXplclNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzQw
LDcgKzEwMzQwLDcgQEAKIAkJMUE1NjlDQ0UwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTk5RDFFMkYxMEM5N0Q0
QzAwRTBFRjEyIC8qIGpzYyAqLywKKwkJCQk1OTE2QkIwNTExMDA4MTEyMDBCNzAwREIgLyoganMg
Ki8sCiAJCQkJMUE1NjlDQ0YwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9jbGFzcy5jcHAgKi8sCiAJ
CQkJMUE1NjlDRDAwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9jbGFzcy5oICovLAogCQkJCTFBNTY5
Q0QxMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfaW5zdGFuY2UuY3BwICovLApAQCAtMTEwNTQsMTMg
KzExMDU0LDEzIEBACiAJCQlwYXRoID0gd2Vic29ja2V0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07Ci0JCTU5OUQxRTJGMTBDOTdENEMwMEUwRUYxMiAvKiBqc2MgKi8gPSB7CisJ
CTU5MTZCQjA1MTEwMDgxMTIwMEI3MDBEQiAvKiBqcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTk5RDFFMzAxMEM5N0Q2RTAwRTBFRjEyIC8qIGpuaV91
dGlsaXR5X3ByaXZhdGUuY3BwICovLAotCQkJCTU5OUQxRTMxMTBDOTdENkUwMEUwRUYxMiAvKiBq
bmlfdXRpbGl0eV9wcml2YXRlLmggKi8sCisJCQkJNTkxNkJCMDgxMTAwODEzODAwQjcwMERCIC8q
IEpuaVV0aWxpdHlQcml2YXRlLmggKi8sCisJCQkJNTkxNkJCMDYxMTAwODEyNjAwQjcwMERCIC8q
IEpuaVV0aWxpdHlQcml2YXRlLmNwcCAqLywKIAkJCSk7Ci0JCQluYW1lID0ganNjOworCQkJbmFt
ZSA9IGpzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJNTlDNzdGMTAxMDU0
NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8gPSB7CkBAIC0xODMyOCw3ICsxODMyOCw2IEBACiAJCQkJ
N0EwRTc3MEYxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0EwRTc3MUYxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEVBRjRBRjEwQzc0MkIxMDA5MTAwRDMg
LyogT3BlblR5cGVTYW5pdGl6ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTU5OUQxRTMzMTBDOTdE
NkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEMzRjFGNUIxMEM4ODcxMjAwRDcyQ0UxIC8qIFdlYkdMVW5pZm9ybUxvY2F0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzQ1MzQyODEwQ0RCQkZBMDA4NjkxNTcgLyogSlNX
ZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODM0OSw2ICsxODM0OCw3
IEBACiAJCQkJNkU0RTkxQUQxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1
dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVFOEE3NzMxMEY4MDNG
MzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTkxNkJCMDkxMTAwODEzODAwQjcwMERCIC8qIEpuaVV0aWxpdHlQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTIwNTAwLDcgKzIwNTAwLDYgQEAKIAkJCQk3QTBFNzcxRTEwQzAwREIxMDBB
MDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RjRFQUY0QUUxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUQwMUEyN0FEMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5n
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTU5OUQxRTMyMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlf
dXRpbGl0eV9wcml2YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBDM0YxRjVBMTBDODg3MTIw
MEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
QzQ1MzQyNzEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzU2Q0IyMTEwRDVBQzgwMDBBNzdDNjQgLyogR2VvbG9jYXRpb25D
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjA1MTMsNiArMjA1MTIsNyBAQAogCQkJ
CTZFNEU5MUFDMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2RTRFOTFBRTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250
ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RUU4QTc3MjEwRjgwM0YzMDA1
QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTU5MTZCQjA3MTEwMDgxMjYwMEI3MDBEQiAvKiBKbmlVdGlsaXR5UHJpdmF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiA1
MzI2OSkKKysrIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMCArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShNQUNfSkFWQV9CUklER0UpCiAK
KyNpbmNsdWRlICJKbmlVdGlsaXR5UHJpdmF0ZS5oIgogI2luY2x1ZGUgImpuaV9jbGFzcy5oIgog
I2luY2x1ZGUgImpuaV9ydW50aW1lLmgiCiAjaW5jbHVkZSAiam5pX3V0aWxpdHkuaCIKLSNpbmNs
dWRlICJqbmlfdXRpbGl0eV9wcml2YXRlLmgiCiAjaW5jbHVkZSAicnVudGltZV9vYmplY3QuaCIK
ICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKICNpbmNsdWRlIDxydW50aW1lL0FyZ0xpc3QuaD4K
SW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbQkocmV2aXNpb24gNTMyNjkpCisrKyBX
ZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwx
MyArMjksMTMgQEAKICNpZiBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQogCiAjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJKbmlVdGlsaXR5UHJpdmF0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTdHJpbmdT
b3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYkNvcmVGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJqbmlfcnVudGltZS5oIgogI2luY2x1ZGUgImpuaV91dGlsaXR5LmgiCi0jaW5jbHVkZSAiam5p
X3V0aWxpdHlfcHJpdmF0ZS5oIgogI2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAjaW5jbHVk
ZSAicnVudGltZV9yb290LmgiCiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+Cklu
ZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX29iamMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9icmlkZ2Uvam5pL2puaV9vYmpjLm1tCShyZXZpc2lvbiA1MzI2OSkKKysrIFdlYkNvcmUvYnJp
ZGdlL2puaS9qbmlfb2JqYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogI2lm
IEVOQUJMRShNQUNfSkFWQV9CUklER0UpCiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgorI2ltcG9ydCAiSm5pVXRpbGl0eVByaXZhdGUuaCIKICNpbXBvcnQgImpuaV91dGlsaXR5
LmgiCi0jaW1wb3J0ICJqbmlfdXRpbGl0eV9wcml2YXRlLmgiCiAjaW1wb3J0ICJvYmpjX3V0aWxp
dHkuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogCkluZGV4OiBXZWJDb3JlL2JyaWRn
ZS9qbmkvam5pX3J1bnRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9q
bmlfcnVudGltZS5jcHAJKHJldmlzaW9uIDUzMjY5KQorKysgV2ViQ29yZS9icmlkZ2Uvam5pL2pu
aV9ydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQAogI2lmIEVOQUJM
RShNQUNfSkFWQV9CUklER0UpCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiSm5p
VXRpbGl0eVByaXZhdGUuaCIKICNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAi
am5pX3V0aWxpdHkuaCIKLSNpbmNsdWRlICJqbmlfdXRpbGl0eV9wcml2YXRlLmgiCiAjaW5jbHVk
ZSAicnVudGltZV9hcnJheS5oIgogI2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAjaW5jbHVk
ZSAicnVudGltZV9yb290LmgiCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvanMvSm5pVXRpbGl0
eVByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qcy9KbmlVdGls
aXR5UHJpdmF0ZS5jcHAJKHJldmlzaW9uIDUzMjY5KQkoZnJvbSBXZWJDb3JlL2JyaWRnZS9qbmkv
anNjL2puaV91dGlsaXR5X3ByaXZhdGUuY3BwOjUzMjY5KQorKysgV2ViQ29yZS9icmlkZ2Uvam5p
L2pzL0puaVV0aWxpdHlQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJj
ZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImpuaV91dGls
aXR5X3ByaXZhdGUuaCIKKworI2lmIEVOQUJMRShNQUNfSkFWQV9CUklER0UpCisKKyNpbmNsdWRl
ICJqbmlfcnVudGltZS5oIgorI2luY2x1ZGUgInJ1bnRpbWVfYXJyYXkuaCIKKyNpbmNsdWRlICJy
dW50aW1lX29iamVjdC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSlNMb2NrLmg+CisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQmluZGlu
Z3MgeworCitzdGF0aWMgam9iamVjdCBjb252ZXJ0QXJyYXlJbnN0YW5jZVRvSmF2YUFycmF5KEV4
ZWNTdGF0ZSogZXhlYywgSlNBcnJheSoganNBcnJheSwgY29uc3QgY2hhciogamF2YUNsYXNzTmFt
ZSkKK3sKKyAgICBKTklFbnYqIGVudiA9IGdldEpOSUVudigpOworICAgIC8vIEFzIEpTIEFycmF5
cyBjYW4gY29udGFpbiBhIG1peHR1cmUgb2Ygb2JqZWN0cywgYXNzdW1lIHdlIGNhbiBjb252ZXJ0
IHRvCisgICAgLy8gdGhlIHJlcXVlc3RlZCBKYXZhIEFycmF5IHR5cGUgcmVxdWVzdGVkLCB1bmxl
c3MgdGhlIGFycmF5IHR5cGUgaXMgc29tZSBvYmplY3QgYXJyYXkKKyAgICAvLyBvdGhlciB0aGFu
IGEgc3RyaW5nLgorICAgIHVuc2lnbmVkIGxlbmd0aCA9IGpzQXJyYXktPmxlbmd0aCgpOworICAg
IGpvYmplY3RBcnJheSBqYXJyYXkgPSAwOworCisgICAgLy8gQnVpbGQgdGhlIGNvcnJlY3QgYXJy
YXkgdHlwZQorICAgIHN3aXRjaCAoSk5JVHlwZUZyb21QcmltaXRpdmVUeXBlKGphdmFDbGFzc05h
bWVbMV0pKSB7CisgICAgY2FzZSBvYmplY3RfdHlwZToKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIE9ubHkgc3VwcG9ydCBzdHJpbmcgb2JqZWN0IHR5cGVzCisgICAgICAgICAgICBpZiAo
IXN0cmNtcCgiW0xqYXZhLmxhbmcuU3RyaW5nOyIsIGphdmFDbGFzc05hbWUpKSB7CisgICAgICAg
ICAgICAgICAgamFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld09iamVjdEFycmF5KGxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgZW52LT5GaW5kQ2xhc3MoImphdmEvbGFuZy9TdHJpbmci
KSwKKyAgICAgICAgICAgICAgICAgICAgZW52LT5OZXdTdHJpbmdVVEYoIiIpKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMsIGkpOworICAgICAg
ICAgICAgICAgICAgICBVU3RyaW5nIHN0cmluZ1ZhbHVlID0gaXRlbS50b1N0cmluZyhleGVjKTsK
KyAgICAgICAgICAgICAgICAgICAgZW52LT5TZXRPYmplY3RBcnJheUVsZW1lbnQoamFycmF5LCBp
LAorICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5mdW5jdGlvbnMtPk5ld1N0cmluZyhlbnYs
IChjb25zdCBqY2hhciAqKXN0cmluZ1ZhbHVlLmRhdGEoKSwgc3RyaW5nVmFsdWUuc2l6ZSgpKSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgIGNhc2UgYm9vbGVhbl90eXBlOgorICAgICAgICB7CisgICAgICAgICAg
ICBqYXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3Qm9vbGVhbkFycmF5KGxlbmd0aCk7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7CisgICAgICAg
ICAgICAgICAgamJvb2xlYW4gdmFsdWUgPSAoamJvb2xlYW4paXRlbS50b051bWJlcihleGVjKTsK
KyAgICAgICAgICAgICAgICBlbnYtPlNldEJvb2xlYW5BcnJheVJlZ2lvbigoamJvb2xlYW5BcnJh
eSlqYXJyYXksIChqc2l6ZSlpLCAoanNpemUpMSwgJnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICBjYXNlIGJ5dGVfdHlwZToKKyAgICAg
ICAgeworICAgICAgICAgICAgamFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld0J5dGVBcnJh
eShsZW5ndGgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMs
IGkpOworICAgICAgICAgICAgICAgIGpieXRlIHZhbHVlID0gKGpieXRlKWl0ZW0udG9OdW1iZXIo
ZXhlYyk7CisgICAgICAgICAgICAgICAgZW52LT5TZXRCeXRlQXJyYXlSZWdpb24oKGpieXRlQXJy
YXkpamFycmF5LCAoanNpemUpaSwgKGpzaXplKTEsICZ2YWx1ZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgY2FzZSBjaGFyX3R5cGU6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdDaGFyQXJy
YXkobGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgeworICAgICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVj
LCBpKTsKKyAgICAgICAgICAgICAgICBVU3RyaW5nIHN0cmluZ1ZhbHVlID0gaXRlbS50b1N0cmlu
ZyhleGVjKTsKKyAgICAgICAgICAgICAgICBqY2hhciB2YWx1ZSA9IDA7CisgICAgICAgICAgICAg
ICAgaWYgKHN0cmluZ1ZhbHVlLnNpemUoKSA+IDApCisgICAgICAgICAgICAgICAgICAgIHZhbHVl
ID0gKChjb25zdCBqY2hhciopc3RyaW5nVmFsdWUuZGF0YSgpKVswXTsKKyAgICAgICAgICAgICAg
ICBlbnYtPlNldENoYXJBcnJheVJlZ2lvbigoamNoYXJBcnJheSlqYXJyYXksIChqc2l6ZSlpLCAo
anNpemUpMSwgJnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICBjYXNlIHNob3J0X3R5cGU6CisgICAgICAgIHsKKyAgICAgICAgICAgIGph
cnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdTaG9ydEFycmF5KGxlbmd0aCk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAg
ICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7CisgICAgICAgICAgICAg
ICAganNob3J0IHZhbHVlID0gKGpzaG9ydClpdGVtLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICAg
ICAgICAgIGVudi0+U2V0U2hvcnRBcnJheVJlZ2lvbigoanNob3J0QXJyYXkpamFycmF5LCAoanNp
emUpaSwgKGpzaXplKTEsICZ2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgY2FzZSBpbnRfdHlwZToKKyAgICAgICAgeworICAgICAgICAg
ICAgamFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld0ludEFycmF5KGxlbmd0aCk7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7CisgICAgICAgICAg
ICAgICAgamludCB2YWx1ZSA9IChqaW50KWl0ZW0udG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAg
ICAgICAgZW52LT5TZXRJbnRBcnJheVJlZ2lvbigoamludEFycmF5KWphcnJheSwgKGpzaXplKWks
IChqc2l6ZSkxLCAmdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgIGNhc2UgbG9uZ190eXBlOgorICAgICAgICB7CisgICAgICAgICAgICBq
YXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3TG9uZ0FycmF5KGxlbmd0aCk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAg
ICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7CisgICAgICAgICAgICAg
ICAgamxvbmcgdmFsdWUgPSAoamxvbmcpaXRlbS50b051bWJlcihleGVjKTsKKyAgICAgICAgICAg
ICAgICBlbnYtPlNldExvbmdBcnJheVJlZ2lvbigoamxvbmdBcnJheSlqYXJyYXksIChqc2l6ZSlp
LCAoanNpemUpMSwgJnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICBjYXNlIGZsb2F0X3R5cGU6CisgICAgICAgIHsKKyAgICAgICAgICAg
IGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdGbG9hdEFycmF5KGxlbmd0aCk7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7CisgICAgICAgICAg
ICAgICAgamZsb2F0IHZhbHVlID0gKGpmbG9hdClpdGVtLnRvTnVtYmVyKGV4ZWMpOworICAgICAg
ICAgICAgICAgIGVudi0+U2V0RmxvYXRBcnJheVJlZ2lvbigoamZsb2F0QXJyYXkpamFycmF5LCAo
anNpemUpaSwgKGpzaXplKTEsICZ2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgY2FzZSBkb3VibGVfdHlwZToKKyAgICAgICAgeworICAg
ICAgICAgICAgamFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld0RvdWJsZUFycmF5KGxlbmd0
aCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7Cisg
ICAgICAgICAgICAgICAgamRvdWJsZSB2YWx1ZSA9IChqZG91YmxlKWl0ZW0udG9OdW1iZXIoZXhl
Yyk7CisgICAgICAgICAgICAgICAgZW52LT5TZXREb3VibGVBcnJheVJlZ2lvbigoamRvdWJsZUFy
cmF5KWphcnJheSwgKGpzaXplKWksIChqc2l6ZSkxLCAmdmFsdWUpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgIGNhc2UgYXJyYXlfdHlwZTogLy8g
ZG9uJ3QgaGFuZGxlIGVtYmVkZGVkIGFycmF5cworICAgIGNhc2Ugdm9pZF90eXBlOiAvLyBEb24n
dCBleHBlY3QgYXJyYXlzIG9mIHZvaWQgb2JqZWN0cworICAgIGNhc2UgaW52YWxpZF90eXBlOiAv
LyBBcnJheSBvZiB1bmtub3duIG9iamVjdHMKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Ly8gaWYgaXQgd2FzIG5vdCBvbmUgb2YgdGhlIGNhc2VzIGhhbmRsZWQsIHRoZW4gbnVsbCBpcyBy
ZXR1cm5lZAorICAgIHJldHVybiBqYXJyYXk7Cit9CisKK2p2YWx1ZSBjb252ZXJ0VmFsdWVUb0pW
YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpOSVR5cGUgam5pVHlwZSwgY29u
c3QgY2hhciogamF2YUNsYXNzTmFtZSkKK3sKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOworCisgICAganZhbHVlIHJlc3VsdDsKKworICAgIHN3aXRjaCAoam5pVHlwZSkg
eworICAgIGNhc2UgYXJyYXlfdHlwZToKKyAgICBjYXNlIG9iamVjdF90eXBlOgorICAgICAgICB7
CisgICAgICAgICAgICByZXN1bHQubCA9IChqb2JqZWN0KTA7CisKKyAgICAgICAgICAgIC8vIEZp
cnN0IHNlZSBpZiB3ZSBoYXZlIGEgSmF2YSBpbnN0YW5jZS4KKyAgICAgICAgICAgIGlmICh2YWx1
ZS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdEltcCA9IGFz
T2JqZWN0KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAob2JqZWN0SW1wLT5jbGFzc0luZm8o
KSA9PSAmUnVudGltZU9iamVjdEltcDo6c19pbmZvKSB7CisgICAgICAgICAgICAgICAgICAgIFJ1
bnRpbWVPYmplY3RJbXAqIGltcCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3RJbXAqPihvYmpl
Y3RJbXApOworICAgICAgICAgICAgICAgICAgICBKYXZhSW5zdGFuY2UqIGluc3RhbmNlID0gc3Rh
dGljX2Nhc3Q8SmF2YUluc3RhbmNlKj4oaW1wLT5nZXRJbnRlcm5hbEluc3RhbmNlKCkpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQubCA9IGluc3RhbmNlLT5qYXZhSW5zdGFuY2UoKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKG9iamVjdEltcC0+Y2xhc3NJbmZvKCkgPT0gJlJ1bnRpbWVBcnJheTo6c19pbmZvKSB7
CisgICAgICAgICAgICAgICAgLy8gSW5wdXQgaXMgYSBKYXZhU2NyaXB0IEFycmF5IHRoYXQgd2Fz
IG9yaWdpbmFsbHkgY3JlYXRlZCBmcm9tIGEgSmF2YSBBcnJheQorICAgICAgICAgICAgICAgICAg
ICBSdW50aW1lQXJyYXkqIGltcCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVBcnJheSo+KG9iamVjdElt
cCk7CisgICAgICAgICAgICAgICAgICAgIEphdmFBcnJheSogYXJyYXkgPSBzdGF0aWNfY2FzdDxK
YXZhQXJyYXkqPihpbXAtPmdldENvbmNyZXRlQXJyYXkoKSk7CisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5sID0gYXJyYXktPmphdmFBcnJheSgpOworICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAob2JqZWN0SW1wLT5jbGFzc0luZm8oKSA9PSAmSlNBcnJheTo6aW5mbykgeworICAgICAgICAg
ICAgICAgICAgICAvLyBJbnB1dCBpcyBhIEphdmFzY3JpcHQgQXJyYXkuIFdlIG5lZWQgdG8gY3Jl
YXRlIGl0IHRvIGEgSmF2YSBBcnJheS4KKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmwgPSBj
b252ZXJ0QXJyYXlJbnN0YW5jZVRvSmF2YUFycmF5KGV4ZWMsIGFzQXJyYXkodmFsdWUpLCBqYXZh
Q2xhc3NOYW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIE5vdyBjb252ZXJ0IHZhbHVlIHRvIGEgc3RyaW5nIGlmIHRoZSB0YXJnZXQgdHlwZSBp
cyBhIGphdmEubGFuZy5zdHJpbmcsIGFuZCB3ZSdyZSBub3QKKyAgICAgICAgICAgIC8vIGNvbnZl
cnRpbmcgZnJvbSBhIE51bGwuCisgICAgICAgICAgICBpZiAoIXJlc3VsdC5sICYmICFzdHJjbXAo
amF2YUNsYXNzTmFtZSwgImphdmEubGFuZy5TdHJpbmciKSkgeworI2lmZGVmIENPTlZFUlRfTlVM
TF9UT19FTVBUWV9TVFJJTkcKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUtPmlzTnVsbCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIEpOSUVudiogZW52ID0gZ2V0Sk5JRW52KCk7CisgICAgICAg
ICAgICAgICAgICAgIGpjaGFyIGJ1ZlsyXTsKKyAgICAgICAgICAgICAgICAgICAgam9iamVjdCBq
YXZhU3RyaW5nID0gZW52LT5mdW5jdGlvbnMtPk5ld1N0cmluZyhlbnYsIGJ1ZiwgMCk7CisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5sID0gamF2YVN0cmluZzsKKyAgICAgICAgICAgICAgICB9
IGVsc2UKKyNlbHNlCisgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKKyNlbmRp
ZgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgVVN0cmluZyBzdHJpbmdW
YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpOworICAgICAgICAgICAgICAgICAgICBKTklFbnYq
IGVudiA9IGdldEpOSUVudigpOworICAgICAgICAgICAgICAgICAgICBqb2JqZWN0IGphdmFTdHJp
bmcgPSBlbnYtPmZ1bmN0aW9ucy0+TmV3U3RyaW5nKGVudiwgKGNvbnN0IGpjaGFyICopc3RyaW5n
VmFsdWUuZGF0YSgpLCBzdHJpbmdWYWx1ZS5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQubCA9IGphdmFTdHJpbmc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBl
bHNlIGlmICghcmVzdWx0LmwpCisgICAgICAgICAgICAgICAgYnplcm8oJnJlc3VsdCwgc2l6ZW9m
KGp2YWx1ZSkpOyAvLyBIYW5kbGUgaXQgdGhlIHNhbWUgYXMgYSB2b2lkIGNhc2UKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgYm9vbGVhbl90eXBlOgorICAgICAgICB7Cisg
ICAgICAgICAgICByZXN1bHQueiA9IChqYm9vbGVhbil2YWx1ZS50b051bWJlcihleGVjKTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgYnl0ZV90eXBlOgorICAgICAgICB7
CisgICAgICAgICAgICByZXN1bHQuYiA9IChqYnl0ZSl2YWx1ZS50b051bWJlcihleGVjKTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgY2hhcl90eXBlOgorICAgICAgICB7
CisgICAgICAgICAgICByZXN1bHQuYyA9IChqY2hhcil2YWx1ZS50b051bWJlcihleGVjKTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2Ugc2hvcnRfdHlwZToKKyAgICAgICAg
eworICAgICAgICAgICAgcmVzdWx0LnMgPSAoanNob3J0KXZhbHVlLnRvTnVtYmVyKGV4ZWMpOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBpbnRfdHlwZToKKyAgICAgICAg
eworICAgICAgICAgICAgcmVzdWx0LmkgPSAoamludCl2YWx1ZS50b051bWJlcihleGVjKTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgbG9uZ190eXBlOgorICAgICAgICB7
CisgICAgICAgICAgICByZXN1bHQuaiA9IChqbG9uZyl2YWx1ZS50b051bWJlcihleGVjKTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgZmxvYXRfdHlwZToKKyAgICAgICAg
eworICAgICAgICAgICAgcmVzdWx0LmYgPSAoamZsb2F0KXZhbHVlLnRvTnVtYmVyKGV4ZWMpOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBkb3VibGVfdHlwZToKKyAgICAg
ICAgeworICAgICAgICAgICAgcmVzdWx0LmQgPSAoamRvdWJsZSl2YWx1ZS50b051bWJlcihleGVj
KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgaW52YWxpZF90eXBlOgorICAgIGRlZmF1bHQ6CisgICAgY2FzZSB2b2lkX3R5cGU6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIGJ6ZXJvKCZyZXN1bHQsIHNpemVvZihqdmFsdWUpKTsKKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAg
Ly8gZW5kIG9mIG5hbWVzcGFjZSBCaW5kaW5ncworCit9IC8vIGVuZCBvZiBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQpJbmRleDogV2ViQ29yZS9icmlk
Z2Uvam5pL2pzL0puaVV0aWxpdHlQcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jy
aWRnZS9qbmkvanMvSm5pVXRpbGl0eVByaXZhdGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9icmlkZ2Uvam5pL2pzL0puaVV0aWxpdHlQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJqbmlf
dXRpbGl0eV9wcml2YXRlLmgiCisjaW5jbHVkZSAiSm5pVXRpbGl0eVByaXZhdGUuaCIKIAogI2lm
IEVOQUJMRShNQUNfSkFWQV9CUklER0UpCiAKQEAgLTI4NCw3ICsyODQsNyBAQCBqdmFsdWUgY29u
dmVydFZhbHVlVG9KVmFsdWUoRXhlY1N0YXRlKiBlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
fSAgLy8gZW5kIG9mIG5hbWVzcGFjZSBCaW5kaW5ncworfSAvLyBlbmQgb2YgbmFtZXNwYWNlIEJp
bmRpbmdzCiAKIH0gLy8gZW5kIG9mIG5hbWVzcGFjZSBKU0MKIApJbmRleDogV2ViQ29yZS9icmlk
Z2Uvam5pL2pzL0puaVV0aWxpdHlQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlk
Z2Uvam5pL2pzL0puaVV0aWxpdHlQcml2YXRlLmgJKHJldmlzaW9uIDUzMjY5KQkoZnJvbSBXZWJD
b3JlL2JyaWRnZS9qbmkvanNjL2puaV91dGlsaXR5X3ByaXZhdGUuaDo1MzI2OSkKKysrIFdlYkNv
cmUvYnJpZGdlL2puaS9qcy9KbmlVdGlsaXR5UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQg
T3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgX0pOSV9VVElMSVRZX1BSSVZBVEVf
SF8KKyNkZWZpbmUgX0pOSV9VVElMSVRZX1BSSVZBVEVfSF8KKworI2lmIEVOQUJMRShNQUNfSkFW
QV9CUklER0UpCisKKyNpbmNsdWRlICJqbmlfdXRpbGl0eS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUv
SlNWYWx1ZS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworY2xhc3Mg
SlNPYmplY3Q7CisKK25hbWVzcGFjZSBCaW5kaW5ncyB7CisKK2p2YWx1ZSBjb252ZXJ0VmFsdWVU
b0pWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKTklUeXBlLCBjb25zdCBjaGFyKiBqYXZhQ2xh
c3NOYW1lKTsKK2Jvb2wgZGlzcGF0Y2hKTklDYWxsKEV4ZWNTdGF0ZSosIGNvbnN0IHZvaWQqIHRh
cmdldEFwcGxldFZpZXcsIGpvYmplY3Qgb2JqLCBib29sIGlzU3RhdGljLCBKTklUeXBlIHJldHVy
blR5cGUsIGptZXRob2RJRCBtZXRob2RJRCwganZhbHVlKiBhcmdzLCBqdmFsdWUmIHJlc3VsdCwg
Y29uc3QgY2hhciogY2FsbGluZ1VSTCwgSlNWYWx1ZSYgZXhjZXB0aW9uRGVzY3JpcHRpb24pOwor
Cit9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShNQUNfSkFWQV9CUklER0UpCisKKyNlbmRpZiAvLyBfSk5JX1VUSUxJVFlfSF8K
SW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qcy9KbmlVdGlsaXR5UHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qcy9KbmlVdGlsaXR5UHJpdmF0ZS5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9icmlkZ2Uvam5pL2pzL0puaVV0aWxpdHlQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBfSk5JX1VUSUxJVFlfUFJJVkFURV9IXwotI2RlZmluZSBfSk5JX1VUSUxJVFlfUFJJVkFURV9I
XworI2lmbmRlZiBKbmlVdGlsaXR5UHJpdmF0ZV9oCisjZGVmaW5lIEpuaVV0aWxpdHlQcml2YXRl
X2gKIAogI2lmIEVOQUJMRShNQUNfSkFWQV9CUklER0UpCiAKQEAgLTQ4LDQgKzQ4LDQgQEAgYm9v
bCBkaXNwYXRjaEpOSUNhbGwoRXhlY1N0YXRlKiwgY29uc3QgdgogCiAjZW5kaWYgLy8gRU5BQkxF
KE1BQ19KQVZBX0JSSURHRSkKIAotI2VuZGlmIC8vIF9KTklfVVRJTElUWV9IXworI2VuZGlmIC8v
IEpuaVV0aWxpdHlQcml2YXRlX2gKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qc2Mvam5pX3V0
aWxpdHlfcHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9q
bmlfdXRpbGl0eV9wcml2YXRlLmNwcAkocmV2aXNpb24gNTMyNjkpCisrKyBXZWJDb3JlL2JyaWRn
ZS9qbmkvanNjL2puaV91dGlsaXR5X3ByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI5
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9w
ZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
am5pX3V0aWxpdHlfcHJpdmF0ZS5oIgotCi0jaWYgRU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKLQot
I2luY2x1ZGUgImpuaV9ydW50aW1lLmgiCi0jaW5jbHVkZSAicnVudGltZV9hcnJheS5oIgotI2lu
Y2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+Ci0j
aW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLW5hbWVzcGFj
ZSBCaW5kaW5ncyB7Ci0KLXN0YXRpYyBqb2JqZWN0IGNvbnZlcnRBcnJheUluc3RhbmNlVG9KYXZh
QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBqc0FycmF5LCBjb25zdCBjaGFyKiBqYXZh
Q2xhc3NOYW1lKQotewotICAgIEpOSUVudiogZW52ID0gZ2V0Sk5JRW52KCk7Ci0gICAgLy8gQXMg
SlMgQXJyYXlzIGNhbiBjb250YWluIGEgbWl4dHVyZSBvZiBvYmplY3RzLCBhc3N1bWUgd2UgY2Fu
IGNvbnZlcnQgdG8KLSAgICAvLyB0aGUgcmVxdWVzdGVkIEphdmEgQXJyYXkgdHlwZSByZXF1ZXN0
ZWQsIHVubGVzcyB0aGUgYXJyYXkgdHlwZSBpcyBzb21lIG9iamVjdCBhcnJheQotICAgIC8vIG90
aGVyIHRoYW4gYSBzdHJpbmcuCi0gICAgdW5zaWduZWQgbGVuZ3RoID0ganNBcnJheS0+bGVuZ3Ro
KCk7Ci0gICAgam9iamVjdEFycmF5IGphcnJheSA9IDA7Ci0KLSAgICAvLyBCdWlsZCB0aGUgY29y
cmVjdCBhcnJheSB0eXBlCi0gICAgc3dpdGNoIChKTklUeXBlRnJvbVByaW1pdGl2ZVR5cGUoamF2
YUNsYXNzTmFtZVsxXSkpIHsKLSAgICBjYXNlIG9iamVjdF90eXBlOgotICAgICAgICAgICAgewot
ICAgICAgICAgICAgLy8gT25seSBzdXBwb3J0IHN0cmluZyBvYmplY3QgdHlwZXMKLSAgICAgICAg
ICAgIGlmICghc3RyY21wKCJbTGphdmEubGFuZy5TdHJpbmc7IiwgamF2YUNsYXNzTmFtZSkpIHsK
LSAgICAgICAgICAgICAgICBqYXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3T2JqZWN0QXJy
YXkobGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICBlbnYtPkZpbmRDbGFzcygiamF2YS9sYW5n
L1N0cmluZyIpLAotICAgICAgICAgICAgICAgICAgICBlbnYtPk5ld1N0cmluZ1VURigiIikpOwot
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewot
ICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7
Ci0gICAgICAgICAgICAgICAgICAgIFVTdHJpbmcgc3RyaW5nVmFsdWUgPSBpdGVtLnRvU3RyaW5n
KGV4ZWMpOwotICAgICAgICAgICAgICAgICAgICBlbnYtPlNldE9iamVjdEFycmF5RWxlbWVudChq
YXJyYXksIGksCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnYtPmZ1bmN0aW9ucy0+TmV3U3Ry
aW5nKGVudiwgKGNvbnN0IGpjaGFyICopc3RyaW5nVmFsdWUuZGF0YSgpLCBzdHJpbmdWYWx1ZS5z
aXplKCkpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotCi0gICAgY2FzZSBib29sZWFuX3R5cGU6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdCb29sZWFuQXJyYXkobGVu
Z3RoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
ewotICAgICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsK
LSAgICAgICAgICAgICAgICBqYm9vbGVhbiB2YWx1ZSA9IChqYm9vbGVhbilpdGVtLnRvTnVtYmVy
KGV4ZWMpOwotICAgICAgICAgICAgICAgIGVudi0+U2V0Qm9vbGVhbkFycmF5UmVnaW9uKChqYm9v
bGVhbkFycmF5KWphcnJheSwgKGpzaXplKWksIChqc2l6ZSkxLCAmdmFsdWUpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgYnl0ZV90eXBl
OgotICAgICAgICB7Ci0gICAgICAgICAgICBqYXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3
Qnl0ZUFycmF5KGxlbmd0aCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5n
ZXQoZXhlYywgaSk7Ci0gICAgICAgICAgICAgICAgamJ5dGUgdmFsdWUgPSAoamJ5dGUpaXRlbS50
b051bWJlcihleGVjKTsKLSAgICAgICAgICAgICAgICBlbnYtPlNldEJ5dGVBcnJheVJlZ2lvbigo
amJ5dGVBcnJheSlqYXJyYXksIChqc2l6ZSlpLCAoanNpemUpMSwgJnZhbHVlKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICBjYXNlIGNoYXJfdHlw
ZToKLSAgICAgICAgewotICAgICAgICAgICAgamFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5l
d0NoYXJBcnJheShsZW5ndGgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+
Z2V0KGV4ZWMsIGkpOwotICAgICAgICAgICAgICAgIFVTdHJpbmcgc3RyaW5nVmFsdWUgPSBpdGVt
LnRvU3RyaW5nKGV4ZWMpOwotICAgICAgICAgICAgICAgIGpjaGFyIHZhbHVlID0gMDsKLSAgICAg
ICAgICAgICAgICBpZiAoc3RyaW5nVmFsdWUuc2l6ZSgpID4gMCkKLSAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSAoKGNvbnN0IGpjaGFyKilzdHJpbmdWYWx1ZS5kYXRhKCkpWzBdOwotICAgICAg
ICAgICAgICAgIGVudi0+U2V0Q2hhckFycmF5UmVnaW9uKChqY2hhckFycmF5KWphcnJheSwgKGpz
aXplKWksIChqc2l6ZSkxLCAmdmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLQotICAgIGNhc2Ugc2hvcnRfdHlwZToKLSAgICAgICAgewotICAgICAg
ICAgICAgamFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld1Nob3J0QXJyYXkobGVuZ3RoKTsK
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKLSAgICAg
ICAgICAgICAgICBqc2hvcnQgdmFsdWUgPSAoanNob3J0KWl0ZW0udG9OdW1iZXIoZXhlYyk7Ci0g
ICAgICAgICAgICAgICAgZW52LT5TZXRTaG9ydEFycmF5UmVnaW9uKChqc2hvcnRBcnJheSlqYXJy
YXksIChqc2l6ZSlpLCAoanNpemUpMSwgJnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICBjYXNlIGludF90eXBlOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBqYXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3SW50QXJyYXkobGVuZ3Ro
KTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewot
ICAgICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKLSAg
ICAgICAgICAgICAgICBqaW50IHZhbHVlID0gKGppbnQpaXRlbS50b051bWJlcihleGVjKTsKLSAg
ICAgICAgICAgICAgICBlbnYtPlNldEludEFycmF5UmVnaW9uKChqaW50QXJyYXkpamFycmF5LCAo
anNpemUpaSwgKGpzaXplKTEsICZ2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotCi0gICAgY2FzZSBsb25nX3R5cGU6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdMb25nQXJyYXkobGVuZ3RoKTsK
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKLSAgICAg
ICAgICAgICAgICBqbG9uZyB2YWx1ZSA9IChqbG9uZylpdGVtLnRvTnVtYmVyKGV4ZWMpOwotICAg
ICAgICAgICAgICAgIGVudi0+U2V0TG9uZ0FycmF5UmVnaW9uKChqbG9uZ0FycmF5KWphcnJheSwg
KGpzaXplKWksIChqc2l6ZSkxLCAmdmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgZmxvYXRfdHlwZToKLSAgICAgICAgewotICAg
ICAgICAgICAgamFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld0Zsb2F0QXJyYXkobGVuZ3Ro
KTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewot
ICAgICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKLSAg
ICAgICAgICAgICAgICBqZmxvYXQgdmFsdWUgPSAoamZsb2F0KWl0ZW0udG9OdW1iZXIoZXhlYyk7
Ci0gICAgICAgICAgICAgICAgZW52LT5TZXRGbG9hdEFycmF5UmVnaW9uKChqZmxvYXRBcnJheSlq
YXJyYXksIChqc2l6ZSlpLCAoanNpemUpMSwgJnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICBjYXNlIGRvdWJsZV90eXBlOgotICAgICAg
ICB7Ci0gICAgICAgICAgICBqYXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3RG91YmxlQXJy
YXkobGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgewotICAgICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVj
LCBpKTsKLSAgICAgICAgICAgICAgICBqZG91YmxlIHZhbHVlID0gKGpkb3VibGUpaXRlbS50b051
bWJlcihleGVjKTsKLSAgICAgICAgICAgICAgICBlbnYtPlNldERvdWJsZUFycmF5UmVnaW9uKChq
ZG91YmxlQXJyYXkpamFycmF5LCAoanNpemUpaSwgKGpzaXplKTEsICZ2YWx1ZSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgY2FzZSBhcnJheV90
eXBlOiAvLyBkb24ndCBoYW5kbGUgZW1iZWRkZWQgYXJyYXlzCi0gICAgY2FzZSB2b2lkX3R5cGU6
IC8vIERvbid0IGV4cGVjdCBhcnJheXMgb2Ygdm9pZCBvYmplY3RzCi0gICAgY2FzZSBpbnZhbGlk
X3R5cGU6IC8vIEFycmF5IG9mIHVua25vd24gb2JqZWN0cwotICAgICAgICBicmVhazsKLSAgICB9
Ci0KLSAgICAvLyBpZiBpdCB3YXMgbm90IG9uZSBvZiB0aGUgY2FzZXMgaGFuZGxlZCwgdGhlbiBu
dWxsIGlzIHJldHVybmVkCi0gICAgcmV0dXJuIGphcnJheTsKLX0KLQotanZhbHVlIGNvbnZlcnRW
YWx1ZVRvSlZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSk5JVHlwZSBqbmlU
eXBlLCBjb25zdCBjaGFyKiBqYXZhQ2xhc3NOYW1lKQotewotICAgIEpTTG9jayBsb2NrKFNpbGVu
Y2VBc3NlcnRpb25zT25seSk7Ci0KLSAgICBqdmFsdWUgcmVzdWx0OwotCi0gICAgc3dpdGNoIChq
bmlUeXBlKSB7Ci0gICAgY2FzZSBhcnJheV90eXBlOgotICAgIGNhc2Ugb2JqZWN0X3R5cGU6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5sID0gKGpvYmplY3QpMDsKLQotICAgICAgICAg
ICAgLy8gRmlyc3Qgc2VlIGlmIHdlIGhhdmUgYSBKYXZhIGluc3RhbmNlLgotICAgICAgICAgICAg
aWYgKHZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0
SW1wID0gYXNPYmplY3QodmFsdWUpOwotICAgICAgICAgICAgICAgIGlmIChvYmplY3RJbXAtPmNs
YXNzSW5mbygpID09ICZSdW50aW1lT2JqZWN0SW1wOjpzX2luZm8pIHsKLSAgICAgICAgICAgICAg
ICAgICAgUnVudGltZU9iamVjdEltcCogaW1wID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdElt
cCo+KG9iamVjdEltcCk7Ci0gICAgICAgICAgICAgICAgICAgIEphdmFJbnN0YW5jZSogaW5zdGFu
Y2UgPSBzdGF0aWNfY2FzdDxKYXZhSW5zdGFuY2UqPihpbXAtPmdldEludGVybmFsSW5zdGFuY2Uo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5sID0gaW5zdGFuY2UtPmphdmFJbnN0YW5jZSgpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAob2JqZWN0SW1wLT5jbGFzc0luZm8oKSA9PSAmUnVudGltZUFycmF5Ojpz
X2luZm8pIHsKLSAgICAgICAgICAgICAgICAvLyBJbnB1dCBpcyBhIEphdmFTY3JpcHQgQXJyYXkg
dGhhdCB3YXMgb3JpZ2luYWxseSBjcmVhdGVkIGZyb20gYSBKYXZhIEFycmF5Ci0gICAgICAgICAg
ICAgICAgICAgIFJ1bnRpbWVBcnJheSogaW1wID0gc3RhdGljX2Nhc3Q8UnVudGltZUFycmF5Kj4o
b2JqZWN0SW1wKTsKLSAgICAgICAgICAgICAgICAgICAgSmF2YUFycmF5KiBhcnJheSA9IHN0YXRp
Y19jYXN0PEphdmFBcnJheSo+KGltcC0+Z2V0Q29uY3JldGVBcnJheSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmwgPSBhcnJheS0+amF2YUFycmF5KCk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChvYmplY3RJbXAtPmNsYXNzSW5mbygpID09ICZKU0FycmF5OjppbmZvKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIElucHV0IGlzIGEgSmF2YXNjcmlwdCBBcnJheS4gV2UgbmVl
ZCB0byBjcmVhdGUgaXQgdG8gYSBKYXZhIEFycmF5LgotICAgICAgICAgICAgICAgICAgICByZXN1
bHQubCA9IGNvbnZlcnRBcnJheUluc3RhbmNlVG9KYXZhQXJyYXkoZXhlYywgYXNBcnJheSh2YWx1
ZSksIGphdmFDbGFzc05hbWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgLy8gTm93IGNvbnZlcnQgdmFsdWUgdG8gYSBzdHJpbmcgaWYgdGhlIHRhcmdl
dCB0eXBlIGlzIGEgamF2YS5sYW5nLnN0cmluZywgYW5kIHdlJ3JlIG5vdAotICAgICAgICAgICAg
Ly8gY29udmVydGluZyBmcm9tIGEgTnVsbC4KLSAgICAgICAgICAgIGlmICghcmVzdWx0LmwgJiYg
IXN0cmNtcChqYXZhQ2xhc3NOYW1lLCAiamF2YS5sYW5nLlN0cmluZyIpKSB7Ci0jaWZkZWYgQ09O
VkVSVF9OVUxMX1RPX0VNUFRZX1NUUklORwotICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+aXNO
dWxsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgSk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsK
LSAgICAgICAgICAgICAgICAgICAgamNoYXIgYnVmWzJdOwotICAgICAgICAgICAgICAgICAgICBq
b2JqZWN0IGphdmFTdHJpbmcgPSBlbnYtPmZ1bmN0aW9ucy0+TmV3U3RyaW5nKGVudiwgYnVmLCAw
KTsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmwgPSBqYXZhU3RyaW5nOwotICAgICAgICAg
ICAgICAgIH0gZWxzZQotI2Vsc2UKLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgp
KQotI2VuZGlmCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBVU3RyaW5n
IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9TdHJpbmcoZXhlYyk7Ci0gICAgICAgICAgICAgICAgICAg
IEpOSUVudiogZW52ID0gZ2V0Sk5JRW52KCk7Ci0gICAgICAgICAgICAgICAgICAgIGpvYmplY3Qg
amF2YVN0cmluZyA9IGVudi0+ZnVuY3Rpb25zLT5OZXdTdHJpbmcoZW52LCAoY29uc3QgamNoYXIg
KilzdHJpbmdWYWx1ZS5kYXRhKCksIHN0cmluZ1ZhbHVlLnNpemUoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5sID0gamF2YVN0cmluZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKCFyZXN1bHQubCkKLSAgICAgICAgICAgICAgICBiemVybygmcmVzdWx0
LCBzaXplb2YoanZhbHVlKSk7IC8vIEhhbmRsZSBpdCB0aGUgc2FtZSBhcyBhIHZvaWQgY2FzZQot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBib29sZWFuX3R5cGU6Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC56ID0gKGpib29sZWFuKXZhbHVlLnRvTnVtYmVyKGV4
ZWMpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBieXRlX3R5cGU6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5iID0gKGpieXRlKXZhbHVlLnRvTnVtYmVyKGV4
ZWMpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBjaGFyX3R5cGU6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5jID0gKGpjaGFyKXZhbHVlLnRvTnVtYmVyKGV4
ZWMpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBzaG9ydF90eXBlOgot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQucyA9IChqc2hvcnQpdmFsdWUudG9OdW1iZXIo
ZXhlYyk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIGludF90eXBlOgot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuaSA9IChqaW50KXZhbHVlLnRvTnVtYmVyKGV4
ZWMpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBsb25nX3R5cGU6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5qID0gKGpsb25nKXZhbHVlLnRvTnVtYmVyKGV4
ZWMpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBmbG9hdF90eXBlOgot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuZiA9IChqZmxvYXQpdmFsdWUudG9OdW1iZXIo
ZXhlYyk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIGRvdWJsZV90eXBl
OgotICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuZCA9IChqZG91YmxlKXZhbHVlLnRvTnVt
YmVyKGV4ZWMpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICAgIGJyZWFrOwot
Ci0gICAgY2FzZSBpbnZhbGlkX3R5cGU6Ci0gICAgZGVmYXVsdDoKLSAgICBjYXNlIHZvaWRfdHlw
ZToKLSAgICAgICAgewotICAgICAgICAgICAgYnplcm8oJnJlc3VsdCwgc2l6ZW9mKGp2YWx1ZSkp
OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi19ICAvLyBlbmQgb2YgbmFtZXNwYWNlIEJpbmRpbmdzCi0KLX0gLy8gZW5kIG9mIG5hbWVz
cGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShNQUNfSkFWQV9CUklER0UpCkluZGV4OiBXZWJD
b3JlL2JyaWRnZS9qbmkvanNjL2puaV91dGlsaXR5X3ByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JyaWRnZS9qbmkvanNjL2puaV91dGlsaXR5X3ByaXZhdGUuaAkocmV2aXNpb24gNTMy
NjkpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL2puaV91dGlsaXR5X3ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzIEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IDIw
MDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIF9KTklf
VVRJTElUWV9QUklWQVRFX0hfCi0jZGVmaW5lIF9KTklfVVRJTElUWV9QUklWQVRFX0hfCi0KLSNp
ZiBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQotCi0jaW5jbHVkZSAiam5pX3V0aWxpdHkuaCIKLSNp
bmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEV4
ZWNTdGF0ZTsKLWNsYXNzIEpTT2JqZWN0OwotCi1uYW1lc3BhY2UgQmluZGluZ3MgewotCi1qdmFs
dWUgY29udmVydFZhbHVlVG9KVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSk5JVHlwZSwgY29u
c3QgY2hhciogamF2YUNsYXNzTmFtZSk7Ci1ib29sIGRpc3BhdGNoSk5JQ2FsbChFeGVjU3RhdGUq
LCBjb25zdCB2b2lkKiB0YXJnZXRBcHBsZXRWaWV3LCBqb2JqZWN0IG9iaiwgYm9vbCBpc1N0YXRp
YywgSk5JVHlwZSByZXR1cm5UeXBlLCBqbWV0aG9kSUQgbWV0aG9kSUQsIGp2YWx1ZSogYXJncywg
anZhbHVlJiByZXN1bHQsIGNvbnN0IGNoYXIqIGNhbGxpbmdVUkwsIEpTVmFsdWUmIGV4Y2VwdGlv
bkRlc2NyaXB0aW9uKTsKLQotfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKLQotfSAvLyBuYW1lc3Bh
Y2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQotCi0jZW5kaWYgLy8g
X0pOSV9VVElMSVRZX0hfCg==
</data>
<flag name="review"
          id="28963"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46670</attachid>
            <date>2010-01-15 03:53:40 -0800</date>
            <delta_ts>2010-01-15 08:12:44 -0800</delta_ts>
            <desc>Patch 2 for Bug 33710</desc>
            <filename>jscToJs2.txt</filename>
            <type>text/plain</type>
            <size>34994</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tawo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsJKHJldmlzaW9uIDUzMjY5KQorKysgV2ViQ29yZS9B
bmRyb2lkLmpzY2JpbmRpbmdzLm1rCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIEJJ
TkRJTkdfQ19JTkNMVURFUyA6PSBcCiAJJChMT0NBTF9QQVRIKS9icmlkZ2UgXAogCSQoTE9DQUxf
UEFUSCkvYnJpZGdlL2MgXAogCSQoTE9DQUxfUEFUSCkvYnJpZGdlL2puaSBcCi0JJChMT0NBTF9Q
QVRIKS9icmlkZ2Uvam5pL2pzYyBcCisJJChMT0NBTF9QQVRIKS9icmlkZ2Uvam5pL2pzIFwKIAlc
CiAJJChKQVZBU0NSSVBUQ09SRV9QQVRIKS9BUEkgXAogCSQoSkFWQVNDUklQVENPUkVfUEFUSCkv
YXNzZW1ibGVyIFwKQEAgLTE4Nyw3ICsxODcsNyBAQCBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJy
aWRnZS9qbmkvam5pX2luc3RhbmNlLmNwcCBcCiAJYnJpZGdlL2puaS9qbmlfcnVudGltZS5jcHAg
XAogCWJyaWRnZS9qbmkvam5pX3V0aWxpdHkuY3BwIFwKLQlicmlkZ2Uvam5pL2pzYy9qbmlfdXRp
bGl0eV9wcml2YXRlLmNwcCBcCisJYnJpZGdlL2puaS9qcy9qbmlfdXRpbGl0eV9wcml2YXRlLmNw
cCBcCiAJYnJpZGdlL25wcnVudGltZS5jcHAgXAogCWJyaWRnZS9ydW50aW1lLmNwcCBcCiAJYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1MzI2OSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEzLDggKzExMTMsOCBA
QAogCQk1NEM1MEY3QjBFODAxREYzMDA5ODMyQTAgLyogWE1MVG9rZW5pemVyTGlieG1sMi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NEM1MEY3QTBF
ODAxREYzMDA5ODMyQTAgLyogWE1MVG9rZW5pemVyTGlieG1sMi5jcHAgKi87IH07CiAJCTU1MEEw
QkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAv
KiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8q
IFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTk5RDFFMzIxMEM5
N0Q2RTAwRTBFRjEyIC8qIGpuaV91dGlsaXR5X3ByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk5RDFFMzAxMEM5N0Q2RTAwRTBFRjEyIC8q
IGpuaV91dGlsaXR5X3ByaXZhdGUuY3BwICovOyB9OwotCQk1OTlEMUUzMzEwQzk3RDZFMDBFMEVG
MTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTk5RDFFMzExMEM5N0Q2RTAwRTBFRjEyIC8qIGpuaV91dGlsaXR5
X3ByaXZhdGUuaCAqLzsgfTsKKwkJNTlCQjQ2RjMxMTAwOEFEMTAwRjNBMDAxIC8qIGpuaV91dGls
aXR5X3ByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTlCQjQ2RjIxMTAwOEFEMTAwRjNBMDAxIC8qIGpuaV91dGlsaXR5X3ByaXZhdGUuY3Bw
ICovOyB9OworCQk1OUJCNDZGNTExMDA4QURDMDBGM0EwMDEgLyogam5pX3V0aWxpdHlfcHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlCQjQ2
RjQxMTAwOEFEQzAwRjNBMDAxIC8qIGpuaV91dGlsaXR5X3ByaXZhdGUuaCAqLzsgfTsKIAkJNTlD
NzdGMkExMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlDNzdGMjgxMDU0NUIz
QjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwICovOyB9OwogCQk1OUM3N0Yy
QjEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlDNzdGMjkxMDU0NUIzQjAwNTA2
MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1RDE1RTNBQjBGOUU2QUMxMDA5RTBFM0YgLyogWE1M
VG9rZW5pemVyU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUQxNUUzQTkwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTFRva2VuaXplclNjb3BlLmNw
cCAqLzsgfTsKQEAgLTY0NjMsOCArNjQ2Myw4IEBACiAJCTU0QzUwRjdBMEU4MDFERjMwMDk4MzJB
MCAvKiBYTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFhNTFRva2VuaXplckxpYnhtbDIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFs
aWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1
YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07Ci0JCTU5OUQxRTMwMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9w
cml2YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGpuaV91dGls
aXR5X3ByaXZhdGUuY3BwOyBwYXRoID0ganNjL2puaV91dGlsaXR5X3ByaXZhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1OTlEMUUzMTEwQzk3RDZFMDBFMEVGMTIgLyogam5p
X3V0aWxpdHlfcHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBqbmlf
dXRpbGl0eV9wcml2YXRlLmg7IHBhdGggPSBqc2Mvam5pX3V0aWxpdHlfcHJpdmF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OUJCNDZGMjExMDA4QUQxMDBGM0EwMDEgLyogam5p
X3V0aWxpdHlfcHJpdmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBqbmlfdXRpbGl0eV9wcml2YXRlLmNwcDsgcGF0aCA9IGpzL2puaV91dGlsaXR5X3ByaXZhdGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OUJCNDZGNDExMDA4QURDMDBGM0Ew
MDEgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBqbmlfdXRpbGl0eV9wcml2YXRlLmg7IHBhdGggPSBqcy9qbmlfdXRpbGl0eV9wcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5Qzc3RjI4MTA1NDVCM0IwMDUwNjEw
NCAvKiBHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwOyBwYXRoID0gbW9jay9HZW9s
b2NhdGlvblNlcnZpY2VNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlD
NzdGMjkxMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oOyBwYXRo
ID0gbW9jay9HZW9sb2NhdGlvblNlcnZpY2VNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVEMTVFM0E5MEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxUb2tlbml6ZXJTY29wZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUb2tlbml6ZXJTY29wZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDM0MCw3ICsxMDM0MCw3IEBACiAJ
CTFBNTY5Q0NFMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTU5OUQxRTJGMTBDOTdENEMwMEUwRUYxMiAvKiBqc2Mg
Ki8sCisJCQkJNTlCQjQ2RjExMTAwOEFCNTAwRjNBMDAxIC8qIGpzICovLAogCQkJCTFBNTY5Q0NG
MEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfY2xhc3MuY3BwICovLAogCQkJCTFBNTY5Q0QwMEQ3RTJC
ODIwMDdDMzk4MyAvKiBqbmlfY2xhc3MuaCAqLywKIAkJCQkxQTU2OUNEMTBEN0UyQjgyMDA3QzM5
ODMgLyogam5pX2luc3RhbmNlLmNwcCAqLywKQEAgLTExMDU0LDEzICsxMTA1NCwxMyBAQAogCQkJ
cGF0aCA9IHdlYnNvY2tldHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk1
OTlEMUUyRjEwQzk3RDRDMDBFMEVGMTIgLyoganNjICovID0geworCQk1OUJCNDZGMTExMDA4QUI1
MDBGM0EwMDEgLyoganMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCTU5OUQxRTMwMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmNw
cCAqLywKLQkJCQk1OTlEMUUzMTEwQzk3RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0
ZS5oICovLAorCQkJCTU5QkI0NkY0MTEwMDhBREMwMEYzQTAwMSAvKiBqbmlfdXRpbGl0eV9wcml2
YXRlLmggKi8sCisJCQkJNTlCQjQ2RjIxMTAwOEFEMTAwRjNBMDAxIC8qIGpuaV91dGlsaXR5X3By
aXZhdGUuY3BwICovLAogCQkJKTsKLQkJCW5hbWUgPSBqc2M7CisJCQluYW1lID0ganM7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYxMDQg
LyogbW9jayAqLyA9IHsKQEAgLTE4MzI4LDcgKzE4MzI4LDYgQEAKIAkJCQk3QTBFNzcwRjEwQzAw
QTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QTBFNzcxRjEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUY0RUFGNEFGMTBDNzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNh
bml0aXplci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTk5RDFFMzMxMEM5N0Q2RTAwRTBFRjEyIC8q
IGpuaV91dGlsaXR5X3ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBREU3MjI2MTBDQkJC
OUIwMDZCM0IzQSAvKiBDb250ZXh0TWVudVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
QzNGMUY1QjEwQzg4NzEyMDBENzJDRTEgLyogV2ViR0xVbmlmb3JtTG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBDNDUzNDI4MTBDREJCRkEwMDg2OTE1NyAvKiBKU1dlYkdMVW5pZm9ybUxv
Y2F0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTE4MzQ5LDYgKzE4MzQ4LDcgQEAKIAkJCQk2RTRF
OTFBRDEwRjdGQjMxMDBBMjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTZFNEU5MUFGMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQgLyog
SlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OUJCNDZGNTEx
MDA4QURDMDBGM0EwMDEgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yMDUwMCw3ICsyMDUwMCw2IEBACiAJCQkJN0EwRTc3MUUxMEMwMERCMTAwQTAyNzZFIC8qIEpT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY0RUFGNEFFMTBD
NzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlEMDFBMjdBRDEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk1OTlEMUUzMjEwQzk3RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJp
dmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQzNGMUY1QTEwQzg4NzEyMDBENzJDRTEgLyog
V2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEM0NTM0MjcxMENE
QkJGQTAwODY5MTU3IC8qIEpTV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM1NkNCMjExMEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9uQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTIwNTEzLDYgKzIwNTEyLDcgQEAKIAkJCQk2RTRFOTFBQzEw
RjdGQjMxMDBBMjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNkU0RTkxQUUxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkVFOEE3NzIxMEY4MDNGMzAwNUE0QTI0IC8qIEpT
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1OUJCNDZGMzEx
MDA4QUQxMDBGM0EwMDEgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
SW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qcy9qbmlfdXRpbGl0eV9wcml2YXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9qbmkvanMvam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAJ
KHJldmlzaW9uIDUzMjY5KQkoZnJvbSBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL2puaV91dGlsaXR5
X3ByaXZhdGUuY3BwOjUzMjY5KQorKysgV2ViQ29yZS9icmlkZ2Uvam5pL2pzL2puaV91dGlsaXR5
X3ByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
T1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiam5pX3V0aWxpdHlfcHJpdmF0ZS5o
IgorCisjaWYgRU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKKworI2luY2x1ZGUgImpuaV9ydW50aW1l
LmgiCisjaW5jbHVkZSAicnVudGltZV9hcnJheS5oIgorI2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0
LmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0xv
Y2suaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBCaW5kaW5ncyB7CisKK3N0YXRp
YyBqb2JqZWN0IGNvbnZlcnRBcnJheUluc3RhbmNlVG9KYXZhQXJyYXkoRXhlY1N0YXRlKiBleGVj
LCBKU0FycmF5KiBqc0FycmF5LCBjb25zdCBjaGFyKiBqYXZhQ2xhc3NOYW1lKQoreworICAgIEpO
SUVudiogZW52ID0gZ2V0Sk5JRW52KCk7CisgICAgLy8gQXMgSlMgQXJyYXlzIGNhbiBjb250YWlu
IGEgbWl4dHVyZSBvZiBvYmplY3RzLCBhc3N1bWUgd2UgY2FuIGNvbnZlcnQgdG8KKyAgICAvLyB0
aGUgcmVxdWVzdGVkIEphdmEgQXJyYXkgdHlwZSByZXF1ZXN0ZWQsIHVubGVzcyB0aGUgYXJyYXkg
dHlwZSBpcyBzb21lIG9iamVjdCBhcnJheQorICAgIC8vIG90aGVyIHRoYW4gYSBzdHJpbmcuCisg
ICAgdW5zaWduZWQgbGVuZ3RoID0ganNBcnJheS0+bGVuZ3RoKCk7CisgICAgam9iamVjdEFycmF5
IGphcnJheSA9IDA7CisKKyAgICAvLyBCdWlsZCB0aGUgY29ycmVjdCBhcnJheSB0eXBlCisgICAg
c3dpdGNoIChKTklUeXBlRnJvbVByaW1pdGl2ZVR5cGUoamF2YUNsYXNzTmFtZVsxXSkpIHsKKyAg
ICBjYXNlIG9iamVjdF90eXBlOgorICAgICAgICAgICAgeworICAgICAgICAgICAgLy8gT25seSBz
dXBwb3J0IHN0cmluZyBvYmplY3QgdHlwZXMKKyAgICAgICAgICAgIGlmICghc3RyY21wKCJbTGph
dmEubGFuZy5TdHJpbmc7IiwgamF2YUNsYXNzTmFtZSkpIHsKKyAgICAgICAgICAgICAgICBqYXJy
YXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3T2JqZWN0QXJyYXkobGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICBlbnYtPkZpbmRDbGFzcygiamF2YS9sYW5nL1N0cmluZyIpLAorICAgICAgICAg
ICAgICAgICAgICBlbnYtPk5ld1N0cmluZ1VURigiIikpOworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7CisgICAgICAgICAgICAgICAgICAg
IFVTdHJpbmcgc3RyaW5nVmFsdWUgPSBpdGVtLnRvU3RyaW5nKGV4ZWMpOworICAgICAgICAgICAg
ICAgICAgICBlbnYtPlNldE9iamVjdEFycmF5RWxlbWVudChqYXJyYXksIGksCisgICAgICAgICAg
ICAgICAgICAgICAgICBlbnYtPmZ1bmN0aW9ucy0+TmV3U3RyaW5nKGVudiwgKGNvbnN0IGpjaGFy
ICopc3RyaW5nVmFsdWUuZGF0YSgpLCBzdHJpbmdWYWx1ZS5zaXplKCkpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgY2FzZSBib29sZWFuX3R5cGU6CisgICAgICAgIHsKKyAgICAgICAgICAgIGphcnJheSA9IChq
b2JqZWN0QXJyYXkpZW52LT5OZXdCb29sZWFuQXJyYXkobGVuZ3RoKTsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIEpT
VmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKKyAgICAgICAgICAgICAgICBqYm9v
bGVhbiB2YWx1ZSA9IChqYm9vbGVhbilpdGVtLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICAgICAg
ICAgIGVudi0+U2V0Qm9vbGVhbkFycmF5UmVnaW9uKChqYm9vbGVhbkFycmF5KWphcnJheSwgKGpz
aXplKWksIChqc2l6ZSkxLCAmdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgIGNhc2UgYnl0ZV90eXBlOgorICAgICAgICB7CisgICAgICAg
ICAgICBqYXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3Qnl0ZUFycmF5KGxlbmd0aCk7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7CisgICAgICAg
ICAgICAgICAgamJ5dGUgdmFsdWUgPSAoamJ5dGUpaXRlbS50b051bWJlcihleGVjKTsKKyAgICAg
ICAgICAgICAgICBlbnYtPlNldEJ5dGVBcnJheVJlZ2lvbigoamJ5dGVBcnJheSlqYXJyYXksIChq
c2l6ZSlpLCAoanNpemUpMSwgJnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICBjYXNlIGNoYXJfdHlwZToKKyAgICAgICAgeworICAgICAg
ICAgICAgamFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld0NoYXJBcnJheShsZW5ndGgpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
ICAgICAgICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMsIGkpOworICAgICAg
ICAgICAgICAgIFVTdHJpbmcgc3RyaW5nVmFsdWUgPSBpdGVtLnRvU3RyaW5nKGV4ZWMpOworICAg
ICAgICAgICAgICAgIGpjaGFyIHZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICBpZiAoc3RyaW5n
VmFsdWUuc2l6ZSgpID4gMCkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAoKGNvbnN0IGpj
aGFyKilzdHJpbmdWYWx1ZS5kYXRhKCkpWzBdOworICAgICAgICAgICAgICAgIGVudi0+U2V0Q2hh
ckFycmF5UmVnaW9uKChqY2hhckFycmF5KWphcnJheSwgKGpzaXplKWksIChqc2l6ZSkxLCAmdmFs
dWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
IGNhc2Ugc2hvcnRfdHlwZToKKyAgICAgICAgeworICAgICAgICAgICAgamFycmF5ID0gKGpvYmpl
Y3RBcnJheSllbnYtPk5ld1Nob3J0QXJyYXkobGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIEpTVmFsdWUg
aXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKKyAgICAgICAgICAgICAgICBqc2hvcnQgdmFs
dWUgPSAoanNob3J0KWl0ZW0udG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAgICAgICAgZW52LT5T
ZXRTaG9ydEFycmF5UmVnaW9uKChqc2hvcnRBcnJheSlqYXJyYXksIChqc2l6ZSlpLCAoanNpemUp
MSwgJnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICBjYXNlIGludF90eXBlOgorICAgICAgICB7CisgICAgICAgICAgICBqYXJyYXkgPSAo
am9iamVjdEFycmF5KWVudi0+TmV3SW50QXJyYXkobGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIEpTVmFs
dWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKKyAgICAgICAgICAgICAgICBqaW50IHZh
bHVlID0gKGppbnQpaXRlbS50b051bWJlcihleGVjKTsKKyAgICAgICAgICAgICAgICBlbnYtPlNl
dEludEFycmF5UmVnaW9uKChqaW50QXJyYXkpamFycmF5LCAoanNpemUpaSwgKGpzaXplKTEsICZ2
YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgY2FzZSBsb25nX3R5cGU6CisgICAgICAgIHsKKyAgICAgICAgICAgIGphcnJheSA9IChqb2Jq
ZWN0QXJyYXkpZW52LT5OZXdMb25nQXJyYXkobGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIEpTVmFsdWUg
aXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKKyAgICAgICAgICAgICAgICBqbG9uZyB2YWx1
ZSA9IChqbG9uZylpdGVtLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICAgICAgICAgIGVudi0+U2V0
TG9uZ0FycmF5UmVnaW9uKChqbG9uZ0FycmF5KWphcnJheSwgKGpzaXplKWksIChqc2l6ZSkxLCAm
dmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgIGNhc2UgZmxvYXRfdHlwZToKKyAgICAgICAgeworICAgICAgICAgICAgamFycmF5ID0gKGpv
YmplY3RBcnJheSllbnYtPk5ld0Zsb2F0QXJyYXkobGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIEpTVmFs
dWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKKyAgICAgICAgICAgICAgICBqZmxvYXQg
dmFsdWUgPSAoamZsb2F0KWl0ZW0udG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAgICAgICAgZW52
LT5TZXRGbG9hdEFycmF5UmVnaW9uKChqZmxvYXRBcnJheSlqYXJyYXksIChqc2l6ZSlpLCAoanNp
emUpMSwgJnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKKyAgICBjYXNlIGRvdWJsZV90eXBlOgorICAgICAgICB7CisgICAgICAgICAgICBqYXJy
YXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3RG91YmxlQXJyYXkobGVuZ3RoKTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAg
ICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKKyAgICAgICAgICAgICAg
ICBqZG91YmxlIHZhbHVlID0gKGpkb3VibGUpaXRlbS50b051bWJlcihleGVjKTsKKyAgICAgICAg
ICAgICAgICBlbnYtPlNldERvdWJsZUFycmF5UmVnaW9uKChqZG91YmxlQXJyYXkpamFycmF5LCAo
anNpemUpaSwgKGpzaXplKTEsICZ2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgY2FzZSBhcnJheV90eXBlOiAvLyBkb24ndCBoYW5kbGUg
ZW1iZWRkZWQgYXJyYXlzCisgICAgY2FzZSB2b2lkX3R5cGU6IC8vIERvbid0IGV4cGVjdCBhcnJh
eXMgb2Ygdm9pZCBvYmplY3RzCisgICAgY2FzZSBpbnZhbGlkX3R5cGU6IC8vIEFycmF5IG9mIHVu
a25vd24gb2JqZWN0cworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBpZiBpdCB3YXMg
bm90IG9uZSBvZiB0aGUgY2FzZXMgaGFuZGxlZCwgdGhlbiBudWxsIGlzIHJldHVybmVkCisgICAg
cmV0dXJuIGphcnJheTsKK30KKworanZhbHVlIGNvbnZlcnRWYWx1ZVRvSlZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSk5JVHlwZSBqbmlUeXBlLCBjb25zdCBjaGFyKiBqYXZh
Q2xhc3NOYW1lKQoreworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisK
KyAgICBqdmFsdWUgcmVzdWx0OworCisgICAgc3dpdGNoIChqbmlUeXBlKSB7CisgICAgY2FzZSBh
cnJheV90eXBlOgorICAgIGNhc2Ugb2JqZWN0X3R5cGU6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJlc3VsdC5sID0gKGpvYmplY3QpMDsKKworICAgICAgICAgICAgLy8gRmlyc3Qgc2VlIGlmIHdl
IGhhdmUgYSBKYXZhIGluc3RhbmNlLgorICAgICAgICAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkp
IHsKKyAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0SW1wID0gYXNPYmplY3QodmFsdWUp
OworICAgICAgICAgICAgICAgIGlmIChvYmplY3RJbXAtPmNsYXNzSW5mbygpID09ICZSdW50aW1l
T2JqZWN0SW1wOjpzX2luZm8pIHsKKyAgICAgICAgICAgICAgICAgICAgUnVudGltZU9iamVjdElt
cCogaW1wID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdEltcCo+KG9iamVjdEltcCk7CisgICAg
ICAgICAgICAgICAgICAgIEphdmFJbnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxKYXZh
SW5zdGFuY2UqPihpbXAtPmdldEludGVybmFsSW5zdGFuY2UoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChpbnN0YW5jZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sID0gaW5z
dGFuY2UtPmphdmFJbnN0YW5jZSgpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0
SW1wLT5jbGFzc0luZm8oKSA9PSAmUnVudGltZUFycmF5OjpzX2luZm8pIHsKKyAgICAgICAgICAg
ICAgICAvLyBJbnB1dCBpcyBhIEphdmFTY3JpcHQgQXJyYXkgdGhhdCB3YXMgb3JpZ2luYWxseSBj
cmVhdGVkIGZyb20gYSBKYXZhIEFycmF5CisgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVBcnJh
eSogaW1wID0gc3RhdGljX2Nhc3Q8UnVudGltZUFycmF5Kj4ob2JqZWN0SW1wKTsKKyAgICAgICAg
ICAgICAgICAgICAgSmF2YUFycmF5KiBhcnJheSA9IHN0YXRpY19jYXN0PEphdmFBcnJheSo+KGlt
cC0+Z2V0Q29uY3JldGVBcnJheSgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmwgPSBh
cnJheS0+amF2YUFycmF5KCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvYmplY3RJbXAt
PmNsYXNzSW5mbygpID09ICZKU0FycmF5OjppbmZvKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IElucHV0IGlzIGEgSmF2YXNjcmlwdCBBcnJheS4gV2UgbmVlZCB0byBjcmVhdGUgaXQgdG8gYSBK
YXZhIEFycmF5LgorICAgICAgICAgICAgICAgICAgICByZXN1bHQubCA9IGNvbnZlcnRBcnJheUlu
c3RhbmNlVG9KYXZhQXJyYXkoZXhlYywgYXNBcnJheSh2YWx1ZSksIGphdmFDbGFzc05hbWUpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTm93IGNv
bnZlcnQgdmFsdWUgdG8gYSBzdHJpbmcgaWYgdGhlIHRhcmdldCB0eXBlIGlzIGEgamF2YS5sYW5n
LnN0cmluZywgYW5kIHdlJ3JlIG5vdAorICAgICAgICAgICAgLy8gY29udmVydGluZyBmcm9tIGEg
TnVsbC4KKyAgICAgICAgICAgIGlmICghcmVzdWx0LmwgJiYgIXN0cmNtcChqYXZhQ2xhc3NOYW1l
LCAiamF2YS5sYW5nLlN0cmluZyIpKSB7CisjaWZkZWYgQ09OVkVSVF9OVUxMX1RPX0VNUFRZX1NU
UklORworICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+aXNOdWxsKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgSk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKKyAgICAgICAgICAgICAgICAgICAg
amNoYXIgYnVmWzJdOworICAgICAgICAgICAgICAgICAgICBqb2JqZWN0IGphdmFTdHJpbmcgPSBl
bnYtPmZ1bmN0aW9ucy0+TmV3U3RyaW5nKGVudiwgYnVmLCAwKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmwgPSBqYXZhU3RyaW5nOworICAgICAgICAgICAgICAgIH0gZWxzZQorI2Vsc2UK
KyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQorI2VuZGlmCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBVU3RyaW5nIHN0cmluZ1ZhbHVlID0gdmFsdWUu
dG9TdHJpbmcoZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIEpOSUVudiogZW52ID0gZ2V0Sk5J
RW52KCk7CisgICAgICAgICAgICAgICAgICAgIGpvYmplY3QgamF2YVN0cmluZyA9IGVudi0+ZnVu
Y3Rpb25zLT5OZXdTdHJpbmcoZW52LCAoY29uc3QgamNoYXIgKilzdHJpbmdWYWx1ZS5kYXRhKCks
IHN0cmluZ1ZhbHVlLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sID0gamF2
YVN0cmluZzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFyZXN1
bHQubCkKKyAgICAgICAgICAgICAgICBiemVybygmcmVzdWx0LCBzaXplb2YoanZhbHVlKSk7IC8v
IEhhbmRsZSBpdCB0aGUgc2FtZSBhcyBhIHZvaWQgY2FzZQorICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBib29sZWFuX3R5cGU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
c3VsdC56ID0gKGpib29sZWFuKXZhbHVlLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBieXRlX3R5cGU6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJlc3VsdC5iID0gKGpieXRlKXZhbHVlLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBjaGFyX3R5cGU6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJlc3VsdC5jID0gKGpjaGFyKXZhbHVlLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBzaG9ydF90eXBlOgorICAgICAgICB7CisgICAgICAgICAg
ICByZXN1bHQucyA9IChqc2hvcnQpdmFsdWUudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGludF90eXBlOgorICAgICAgICB7CisgICAgICAgICAg
ICByZXN1bHQuaSA9IChqaW50KXZhbHVlLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBsb25nX3R5cGU6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJlc3VsdC5qID0gKGpsb25nKXZhbHVlLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBmbG9hdF90eXBlOgorICAgICAgICB7CisgICAgICAgICAg
ICByZXN1bHQuZiA9IChqZmxvYXQpdmFsdWUudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGRvdWJsZV90eXBlOgorICAgICAgICB7CisgICAgICAg
ICAgICByZXN1bHQuZCA9IChqZG91YmxlKXZhbHVlLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBpbnZhbGlkX3R5
cGU6CisgICAgZGVmYXVsdDoKKyAgICBjYXNlIHZvaWRfdHlwZToKKyAgICAgICAgeworICAgICAg
ICAgICAgYnplcm8oJnJlc3VsdCwgc2l6ZW9mKGp2YWx1ZSkpOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9ICAvLyBlbmQgb2YgbmFt
ZXNwYWNlIEJpbmRpbmdzCisKK30gLy8gZW5kIG9mIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShNQUNfSkFWQV9CUklER0UpCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvanMvam5p
X3V0aWxpdHlfcHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2pz
L2puaV91dGlsaXR5X3ByaXZhdGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9icmlkZ2Uv
am5pL2pzL2puaV91dGlsaXR5X3ByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsNyAr
Mjg0LDcgQEAganZhbHVlIGNvbnZlcnRWYWx1ZVRvSlZhbHVlKEV4ZWNTdGF0ZSogZQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLX0gIC8vIGVuZCBvZiBuYW1lc3BhY2UgQmluZGluZ3MKK30gLy8g
ZW5kIG9mIG5hbWVzcGFjZSBCaW5kaW5ncwogCiB9IC8vIGVuZCBvZiBuYW1lc3BhY2UgSlNDCiAK
SW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qcy9qbmlfdXRpbGl0eV9wcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2pzL2puaV91dGlsaXR5X3ByaXZhdGUuaAkocmV2
aXNpb24gNTMyNjkpCShmcm9tIFdlYkNvcmUvYnJpZGdlL2puaS9qc2Mvam5pX3V0aWxpdHlfcHJp
dmF0ZS5oOjUzMjY5KQorKysgV2ViQ29yZS9icmlkZ2Uvam5pL2pzL2puaV91dGlsaXR5X3ByaXZh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIF9KTklfVVRJTElUWV9QUklWQVRFX0hfCisjZGVmaW5lIF9KTklfVVRJTElUWV9QUklWQVRF
X0hfCisKKyNpZiBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQorCisjaW5jbHVkZSAiam5pX3V0aWxp
dHkuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworCituYW1lc3BhY2UgQmluZGluZ3Mg
eworCitqdmFsdWUgY29udmVydFZhbHVlVG9KVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSk5J
VHlwZSwgY29uc3QgY2hhciogamF2YUNsYXNzTmFtZSk7Citib29sIGRpc3BhdGNoSk5JQ2FsbChF
eGVjU3RhdGUqLCBjb25zdCB2b2lkKiB0YXJnZXRBcHBsZXRWaWV3LCBqb2JqZWN0IG9iaiwgYm9v
bCBpc1N0YXRpYywgSk5JVHlwZSByZXR1cm5UeXBlLCBqbWV0aG9kSUQgbWV0aG9kSUQsIGp2YWx1
ZSogYXJncywganZhbHVlJiByZXN1bHQsIGNvbnN0IGNoYXIqIGNhbGxpbmdVUkwsIEpTVmFsdWUm
IGV4Y2VwdGlvbkRlc2NyaXB0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQorCisj
ZW5kaWYgLy8gX0pOSV9VVElMSVRZX0hfCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvanMvam5p
X3V0aWxpdHlfcHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qcy9q
bmlfdXRpbGl0eV9wcml2YXRlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkv
anMvam5pX3V0aWxpdHlfcHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw4IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgX0pOSV9VVElMSVRZX1BSSVZBVEVfSF8K
LSNkZWZpbmUgX0pOSV9VVElMSVRZX1BSSVZBVEVfSF8KKyNpZm5kZWYgam5pX3V0aWxpdHlfcHJp
dmF0ZV9oCisjZGVmaW5lIGpuaV91dGlsaXR5X3ByaXZhdGVfaAogCiAjaWYgRU5BQkxFKE1BQ19K
QVZBX0JSSURHRSkKIApAQCAtNDgsNCArNDgsNCBAQCBib29sIGRpc3BhdGNoSk5JQ2FsbChFeGVj
U3RhdGUqLCBjb25zdCB2CiAKICNlbmRpZiAvLyBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQogCi0j
ZW5kaWYgLy8gX0pOSV9VVElMSVRZX0hfCisjZW5kaWYgLy8gam5pX3V0aWxpdHlfcHJpdmF0ZV9o
CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL2puaV91dGlsaXR5X3ByaXZhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qc2Mvam5pX3V0aWxpdHlfcHJpdmF0ZS5j
cHAJKHJldmlzaW9uIDUzMjY5KQorKysgV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9qbmlfdXRpbGl0
eV9wcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyOTEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImpuaV91dGlsaXR5X3ByaXZhdGUu
aCIKLQotI2lmIEVOQUJMRShNQUNfSkFWQV9CUklER0UpCi0KLSNpbmNsdWRlICJqbmlfcnVudGlt
ZS5oIgotI2luY2x1ZGUgInJ1bnRpbWVfYXJyYXkuaCIKLSNpbmNsdWRlICJydW50aW1lX29iamVj
dC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNM
b2NrLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1uYW1lc3BhY2UgQmluZGluZ3MgewotCi1zdGF0
aWMgam9iamVjdCBjb252ZXJ0QXJyYXlJbnN0YW5jZVRvSmF2YUFycmF5KEV4ZWNTdGF0ZSogZXhl
YywgSlNBcnJheSoganNBcnJheSwgY29uc3QgY2hhciogamF2YUNsYXNzTmFtZSkKLXsKLSAgICBK
TklFbnYqIGVudiA9IGdldEpOSUVudigpOwotICAgIC8vIEFzIEpTIEFycmF5cyBjYW4gY29udGFp
biBhIG1peHR1cmUgb2Ygb2JqZWN0cywgYXNzdW1lIHdlIGNhbiBjb252ZXJ0IHRvCi0gICAgLy8g
dGhlIHJlcXVlc3RlZCBKYXZhIEFycmF5IHR5cGUgcmVxdWVzdGVkLCB1bmxlc3MgdGhlIGFycmF5
IHR5cGUgaXMgc29tZSBvYmplY3QgYXJyYXkKLSAgICAvLyBvdGhlciB0aGFuIGEgc3RyaW5nLgot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGpzQXJyYXktPmxlbmd0aCgpOwotICAgIGpvYmplY3RBcnJh
eSBqYXJyYXkgPSAwOwotCi0gICAgLy8gQnVpbGQgdGhlIGNvcnJlY3QgYXJyYXkgdHlwZQotICAg
IHN3aXRjaCAoSk5JVHlwZUZyb21QcmltaXRpdmVUeXBlKGphdmFDbGFzc05hbWVbMV0pKSB7Ci0g
ICAgY2FzZSBvYmplY3RfdHlwZToKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIE9ubHkg
c3VwcG9ydCBzdHJpbmcgb2JqZWN0IHR5cGVzCi0gICAgICAgICAgICBpZiAoIXN0cmNtcCgiW0xq
YXZhLmxhbmcuU3RyaW5nOyIsIGphdmFDbGFzc05hbWUpKSB7Ci0gICAgICAgICAgICAgICAgamFy
cmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld09iamVjdEFycmF5KGxlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgICAgZW52LT5GaW5kQ2xhc3MoImphdmEvbGFuZy9TdHJpbmciKSwKLSAgICAgICAg
ICAgICAgICAgICAgZW52LT5OZXdTdHJpbmdVVEYoIiIpKTsKLSAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAg
SlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMsIGkpOwotICAgICAgICAgICAgICAgICAg
ICBVU3RyaW5nIHN0cmluZ1ZhbHVlID0gaXRlbS50b1N0cmluZyhleGVjKTsKLSAgICAgICAgICAg
ICAgICAgICAgZW52LT5TZXRPYmplY3RBcnJheUVsZW1lbnQoamFycmF5LCBpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgZW52LT5mdW5jdGlvbnMtPk5ld1N0cmluZyhlbnYsIChjb25zdCBqY2hh
ciAqKXN0cmluZ1ZhbHVlLmRhdGEoKSwgc3RyaW5nVmFsdWUuc2l6ZSgpKSk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQot
ICAgIGNhc2UgYm9vbGVhbl90eXBlOgotICAgICAgICB7Ci0gICAgICAgICAgICBqYXJyYXkgPSAo
am9iamVjdEFycmF5KWVudi0+TmV3Qm9vbGVhbkFycmF5KGxlbmd0aCk7Ci0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBK
U1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7Ci0gICAgICAgICAgICAgICAgamJv
b2xlYW4gdmFsdWUgPSAoamJvb2xlYW4paXRlbS50b051bWJlcihleGVjKTsKLSAgICAgICAgICAg
ICAgICBlbnYtPlNldEJvb2xlYW5BcnJheVJlZ2lvbigoamJvb2xlYW5BcnJheSlqYXJyYXksIChq
c2l6ZSlpLCAoanNpemUpMSwgJnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0KLSAgICBjYXNlIGJ5dGVfdHlwZToKLSAgICAgICAgewotICAgICAg
ICAgICAgamFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld0J5dGVBcnJheShsZW5ndGgpOwot
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAg
ICAgICAgICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMsIGkpOwotICAgICAg
ICAgICAgICAgIGpieXRlIHZhbHVlID0gKGpieXRlKWl0ZW0udG9OdW1iZXIoZXhlYyk7Ci0gICAg
ICAgICAgICAgICAgZW52LT5TZXRCeXRlQXJyYXlSZWdpb24oKGpieXRlQXJyYXkpamFycmF5LCAo
anNpemUpaSwgKGpzaXplKTEsICZ2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotCi0gICAgY2FzZSBjaGFyX3R5cGU6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdDaGFyQXJyYXkobGVuZ3RoKTsK
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKLSAgICAg
ICAgICAgICAgICBVU3RyaW5nIHN0cmluZ1ZhbHVlID0gaXRlbS50b1N0cmluZyhleGVjKTsKLSAg
ICAgICAgICAgICAgICBqY2hhciB2YWx1ZSA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmlu
Z1ZhbHVlLnNpemUoKSA+IDApCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gKChjb25zdCBq
Y2hhciopc3RyaW5nVmFsdWUuZGF0YSgpKVswXTsKLSAgICAgICAgICAgICAgICBlbnYtPlNldENo
YXJBcnJheVJlZ2lvbigoamNoYXJBcnJheSlqYXJyYXksIChqc2l6ZSlpLCAoanNpemUpMSwgJnZh
bHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAg
ICBjYXNlIHNob3J0X3R5cGU6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGphcnJheSA9IChqb2Jq
ZWN0QXJyYXkpZW52LT5OZXdTaG9ydEFycmF5KGxlbmd0aCk7Ci0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBKU1ZhbHVl
IGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7Ci0gICAgICAgICAgICAgICAganNob3J0IHZh
bHVlID0gKGpzaG9ydClpdGVtLnRvTnVtYmVyKGV4ZWMpOwotICAgICAgICAgICAgICAgIGVudi0+
U2V0U2hvcnRBcnJheVJlZ2lvbigoanNob3J0QXJyYXkpamFycmF5LCAoanNpemUpaSwgKGpzaXpl
KTEsICZ2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotCi0gICAgY2FzZSBpbnRfdHlwZToKLSAgICAgICAgewotICAgICAgICAgICAgamFycmF5ID0g
KGpvYmplY3RBcnJheSllbnYtPk5ld0ludEFycmF5KGxlbmd0aCk7Ci0gICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBKU1Zh
bHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7Ci0gICAgICAgICAgICAgICAgamludCB2
YWx1ZSA9IChqaW50KWl0ZW0udG9OdW1iZXIoZXhlYyk7Ci0gICAgICAgICAgICAgICAgZW52LT5T
ZXRJbnRBcnJheVJlZ2lvbigoamludEFycmF5KWphcnJheSwgKGpzaXplKWksIChqc2l6ZSkxLCAm
dmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQot
ICAgIGNhc2UgbG9uZ190eXBlOgotICAgICAgICB7Ci0gICAgICAgICAgICBqYXJyYXkgPSAoam9i
amVjdEFycmF5KWVudi0+TmV3TG9uZ0FycmF5KGxlbmd0aCk7Ci0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBKU1ZhbHVl
IGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7Ci0gICAgICAgICAgICAgICAgamxvbmcgdmFs
dWUgPSAoamxvbmcpaXRlbS50b051bWJlcihleGVjKTsKLSAgICAgICAgICAgICAgICBlbnYtPlNl
dExvbmdBcnJheVJlZ2lvbigoamxvbmdBcnJheSlqYXJyYXksIChqc2l6ZSlpLCAoanNpemUpMSwg
JnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0K
LSAgICBjYXNlIGZsb2F0X3R5cGU6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGphcnJheSA9IChq
b2JqZWN0QXJyYXkpZW52LT5OZXdGbG9hdEFycmF5KGxlbmd0aCk7Ci0gICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBKU1Zh
bHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7Ci0gICAgICAgICAgICAgICAgamZsb2F0
IHZhbHVlID0gKGpmbG9hdClpdGVtLnRvTnVtYmVyKGV4ZWMpOwotICAgICAgICAgICAgICAgIGVu
di0+U2V0RmxvYXRBcnJheVJlZ2lvbigoamZsb2F0QXJyYXkpamFycmF5LCAoanNpemUpaSwgKGpz
aXplKTEsICZ2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotCi0gICAgY2FzZSBkb3VibGVfdHlwZToKLSAgICAgICAgewotICAgICAgICAgICAgamFy
cmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld0RvdWJsZUFycmF5KGxlbmd0aCk7Ci0gICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAg
ICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7Ci0gICAgICAgICAgICAg
ICAgamRvdWJsZSB2YWx1ZSA9IChqZG91YmxlKWl0ZW0udG9OdW1iZXIoZXhlYyk7Ci0gICAgICAg
ICAgICAgICAgZW52LT5TZXREb3VibGVBcnJheVJlZ2lvbigoamRvdWJsZUFycmF5KWphcnJheSwg
KGpzaXplKWksIChqc2l6ZSkxLCAmdmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgYXJyYXlfdHlwZTogLy8gZG9uJ3QgaGFuZGxl
IGVtYmVkZGVkIGFycmF5cwotICAgIGNhc2Ugdm9pZF90eXBlOiAvLyBEb24ndCBleHBlY3QgYXJy
YXlzIG9mIHZvaWQgb2JqZWN0cwotICAgIGNhc2UgaW52YWxpZF90eXBlOiAvLyBBcnJheSBvZiB1
bmtub3duIG9iamVjdHMKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgLy8gaWYgaXQgd2Fz
IG5vdCBvbmUgb2YgdGhlIGNhc2VzIGhhbmRsZWQsIHRoZW4gbnVsbCBpcyByZXR1cm5lZAotICAg
IHJldHVybiBqYXJyYXk7Ci19Ci0KLWp2YWx1ZSBjb252ZXJ0VmFsdWVUb0pWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpOSVR5cGUgam5pVHlwZSwgY29uc3QgY2hhciogamF2
YUNsYXNzTmFtZSkKLXsKLSAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwot
Ci0gICAganZhbHVlIHJlc3VsdDsKLQotICAgIHN3aXRjaCAoam5pVHlwZSkgewotICAgIGNhc2Ug
YXJyYXlfdHlwZToKLSAgICBjYXNlIG9iamVjdF90eXBlOgotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXN1bHQubCA9IChqb2JqZWN0KTA7Ci0KLSAgICAgICAgICAgIC8vIEZpcnN0IHNlZSBpZiB3
ZSBoYXZlIGEgSmF2YSBpbnN0YW5jZS4KLSAgICAgICAgICAgIGlmICh2YWx1ZS5pc09iamVjdCgp
KSB7Ci0gICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdEltcCA9IGFzT2JqZWN0KHZhbHVl
KTsKLSAgICAgICAgICAgICAgICBpZiAob2JqZWN0SW1wLT5jbGFzc0luZm8oKSA9PSAmUnVudGlt
ZU9iamVjdEltcDo6c19pbmZvKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVPYmplY3RJ
bXAqIGltcCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3RJbXAqPihvYmplY3RJbXApOwotICAg
ICAgICAgICAgICAgICAgICBKYXZhSW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8SmF2
YUluc3RhbmNlKj4oaW1wLT5nZXRJbnRlcm5hbEluc3RhbmNlKCkpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoaW5zdGFuY2UpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubCA9IGlu
c3RhbmNlLT5qYXZhSW5zdGFuY2UoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9iamVj
dEltcC0+Y2xhc3NJbmZvKCkgPT0gJlJ1bnRpbWVBcnJheTo6c19pbmZvKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gSW5wdXQgaXMgYSBKYXZhU2NyaXB0IEFycmF5IHRoYXQgd2FzIG9yaWdpbmFsbHkg
Y3JlYXRlZCBmcm9tIGEgSmF2YSBBcnJheQotICAgICAgICAgICAgICAgICAgICBSdW50aW1lQXJy
YXkqIGltcCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVBcnJheSo+KG9iamVjdEltcCk7Ci0gICAgICAg
ICAgICAgICAgICAgIEphdmFBcnJheSogYXJyYXkgPSBzdGF0aWNfY2FzdDxKYXZhQXJyYXkqPihp
bXAtPmdldENvbmNyZXRlQXJyYXkoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sID0g
YXJyYXktPmphdmFBcnJheSgpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0SW1w
LT5jbGFzc0luZm8oKSA9PSAmSlNBcnJheTo6aW5mbykgewotICAgICAgICAgICAgICAgICAgICAv
LyBJbnB1dCBpcyBhIEphdmFzY3JpcHQgQXJyYXkuIFdlIG5lZWQgdG8gY3JlYXRlIGl0IHRvIGEg
SmF2YSBBcnJheS4KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmwgPSBjb252ZXJ0QXJyYXlJ
bnN0YW5jZVRvSmF2YUFycmF5KGV4ZWMsIGFzQXJyYXkodmFsdWUpLCBqYXZhQ2xhc3NOYW1lKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE5vdyBj
b252ZXJ0IHZhbHVlIHRvIGEgc3RyaW5nIGlmIHRoZSB0YXJnZXQgdHlwZSBpcyBhIGphdmEubGFu
Zy5zdHJpbmcsIGFuZCB3ZSdyZSBub3QKLSAgICAgICAgICAgIC8vIGNvbnZlcnRpbmcgZnJvbSBh
IE51bGwuCi0gICAgICAgICAgICBpZiAoIXJlc3VsdC5sICYmICFzdHJjbXAoamF2YUNsYXNzTmFt
ZSwgImphdmEubGFuZy5TdHJpbmciKSkgewotI2lmZGVmIENPTlZFUlRfTlVMTF9UT19FTVBUWV9T
VFJJTkcKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUtPmlzTnVsbCgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIEpOSUVudiogZW52ID0gZ2V0Sk5JRW52KCk7Ci0gICAgICAgICAgICAgICAgICAg
IGpjaGFyIGJ1ZlsyXTsKLSAgICAgICAgICAgICAgICAgICAgam9iamVjdCBqYXZhU3RyaW5nID0g
ZW52LT5mdW5jdGlvbnMtPk5ld1N0cmluZyhlbnYsIGJ1ZiwgMCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5sID0gamF2YVN0cmluZzsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSNlbHNl
Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKLSNlbmRpZgotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgVVN0cmluZyBzdHJpbmdWYWx1ZSA9IHZhbHVl
LnRvU3RyaW5nKGV4ZWMpOwotICAgICAgICAgICAgICAgICAgICBKTklFbnYqIGVudiA9IGdldEpO
SUVudigpOwotICAgICAgICAgICAgICAgICAgICBqb2JqZWN0IGphdmFTdHJpbmcgPSBlbnYtPmZ1
bmN0aW9ucy0+TmV3U3RyaW5nKGVudiwgKGNvbnN0IGpjaGFyICopc3RyaW5nVmFsdWUuZGF0YSgp
LCBzdHJpbmdWYWx1ZS5zaXplKCkpOwotICAgICAgICAgICAgICAgICAgICByZXN1bHQubCA9IGph
dmFTdHJpbmc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmICghcmVz
dWx0LmwpCi0gICAgICAgICAgICAgICAgYnplcm8oJnJlc3VsdCwgc2l6ZW9mKGp2YWx1ZSkpOyAv
LyBIYW5kbGUgaXQgdGhlIHNhbWUgYXMgYSB2b2lkIGNhc2UKLSAgICAgICAgfQotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgYm9vbGVhbl90eXBlOgotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXN1bHQueiA9IChqYm9vbGVhbil2YWx1ZS50b051bWJlcihleGVjKTsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgYnl0ZV90eXBlOgotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXN1bHQuYiA9IChqYnl0ZSl2YWx1ZS50b051bWJlcihleGVjKTsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgY2hhcl90eXBlOgotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXN1bHQuYyA9IChqY2hhcil2YWx1ZS50b051bWJlcihleGVjKTsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2Ugc2hvcnRfdHlwZToKLSAgICAgICAgewotICAgICAgICAg
ICAgcmVzdWx0LnMgPSAoanNob3J0KXZhbHVlLnRvTnVtYmVyKGV4ZWMpOwotICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBpbnRfdHlwZToKLSAgICAgICAgewotICAgICAgICAg
ICAgcmVzdWx0LmkgPSAoamludCl2YWx1ZS50b051bWJlcihleGVjKTsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgbG9uZ190eXBlOgotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXN1bHQuaiA9IChqbG9uZyl2YWx1ZS50b051bWJlcihleGVjKTsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgZmxvYXRfdHlwZToKLSAgICAgICAgewotICAgICAgICAg
ICAgcmVzdWx0LmYgPSAoamZsb2F0KXZhbHVlLnRvTnVtYmVyKGV4ZWMpOwotICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBkb3VibGVfdHlwZToKLSAgICAgICAgewotICAgICAg
ICAgICAgcmVzdWx0LmQgPSAoamRvdWJsZSl2YWx1ZS50b051bWJlcihleGVjKTsKLSAgICAgICAg
fQotICAgICAgICBicmVhazsKLQotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgaW52YWxpZF90
eXBlOgotICAgIGRlZmF1bHQ6Ci0gICAgY2FzZSB2b2lkX3R5cGU6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIGJ6ZXJvKCZyZXN1bHQsIHNpemVvZihqdmFsdWUpKTsKLSAgICAgICAgfQotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAgLy8gZW5kIG9mIG5h
bWVzcGFjZSBCaW5kaW5ncwotCi19IC8vIGVuZCBvZiBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAv
LyBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQpJbmRleDogV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9q
bmlfdXRpbGl0eV9wcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2pz
Yy9qbmlfdXRpbGl0eV9wcml2YXRlLmgJKHJldmlzaW9uIDUzMjY5KQorKysgV2ViQ29yZS9icmlk
Z2Uvam5pL2pzYy9qbmlfdXRpbGl0eV9wcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVu
IFNvdXJjZSBQcm9qZWN0Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBfSk5JX1VUSUxJVFlfUFJJVkFURV9IXwot
I2RlZmluZSBfSk5JX1VUSUxJVFlfUFJJVkFURV9IXwotCi0jaWYgRU5BQkxFKE1BQ19KQVZBX0JS
SURHRSkKLQotI2luY2x1ZGUgImpuaV91dGlsaXR5LmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU1Zh
bHVlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBFeGVjU3RhdGU7Ci1jbGFzcyBKU09i
amVjdDsKLQotbmFtZXNwYWNlIEJpbmRpbmdzIHsKLQotanZhbHVlIGNvbnZlcnRWYWx1ZVRvSlZh
bHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpOSVR5cGUsIGNvbnN0IGNoYXIqIGphdmFDbGFzc05h
bWUpOwotYm9vbCBkaXNwYXRjaEpOSUNhbGwoRXhlY1N0YXRlKiwgY29uc3Qgdm9pZCogdGFyZ2V0
QXBwbGV0Vmlldywgam9iamVjdCBvYmosIGJvb2wgaXNTdGF0aWMsIEpOSVR5cGUgcmV0dXJuVHlw
ZSwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUqIGFyZ3MsIGp2YWx1ZSYgcmVzdWx0LCBjb25z
dCBjaGFyKiBjYWxsaW5nVVJMLCBKU1ZhbHVlJiBleGNlcHRpb25EZXNjcmlwdGlvbik7Ci0KLX0g
Ly8gbmFtZXNwYWNlIEJpbmRpbmdzCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8g
RU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKLQotI2VuZGlmIC8vIF9KTklfVVRJTElUWV9IXwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46682</attachid>
            <date>2010-01-15 08:12:44 -0800</date>
            <delta_ts>2010-01-15 14:54:50 -0800</delta_ts>
            <desc>Patch 3 for Bug 33710</desc>
            <filename>jscToJs3.txt</filename>
            <type>text/plain</type>
            <size>36091</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzMzMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDEtMTUgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbmFtZSBXZWJDb3JlL2JyaWRnZS9qbmkvanNjIHRvIFdlYkNvcmUvYnJpZGdlL2puaS9qcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM3MTAKKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIG1vdmluZyBjb2RlIG9ubHkuCisKKyAgICAgICAgKiBBbmRy
b2lkLmpzY2JpbmRpbmdzLm1rOiBNb2RpZmllZC4gVXBkYXRlZCB0byByZWZsZWN0IG1vdmVkIGZp
bGVzCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBNb2RpZmll
ZC4gVXBkYXRlZCB0byByZWZsZWN0IG1vdmVkIGZpbGVzCisgICAgICAgICogYnJpZGdlL2puaS9q
czogQWRkZWQuCisgICAgICAgICogYnJpZGdlL2puaS9qcy9qbmlfdXRpbGl0eV9wcml2YXRlLmNw
cDogQ29waWVkIGZyb20gV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9qbmlfdXRpbGl0eV9wcml2YXRl
LmNwcC4KKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzL2puaV91dGlsaXR5X3ByaXZhdGUuaDogQ29w
aWVkIGZyb20gV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9qbmlfdXRpbGl0eV9wcml2YXRlLmguCisg
ICAgICAgICogYnJpZGdlL2puaS9qc2M6IFJlbW92ZWQuCisgICAgICAgICogYnJpZGdlL2puaS9q
c2Mvam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnJpZGdlL2pu
aS9qc2Mvam5pX3V0aWxpdHlfcHJpdmF0ZS5oOiBSZW1vdmVkLgorCiAyMDEwLTAxLTE1ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xh
cyBaaW1tZXJtYW5uLgpJbmRleDogV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdzLm1rCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tawkocmV2aXNpb24gNTMzMzEp
CisrKyBXZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDcgKzI4LDcgQEAgQklORElOR19DX0lOQ0xVREVTIDo9IFwKIAkkKExPQ0FMX1BBVEgpL2JyaWRn
ZSBcCiAJJChMT0NBTF9QQVRIKS9icmlkZ2UvYyBcCiAJJChMT0NBTF9QQVRIKS9icmlkZ2Uvam5p
IFwKLQkkKExPQ0FMX1BBVEgpL2JyaWRnZS9qbmkvanNjIFwKKwkkKExPQ0FMX1BBVEgpL2JyaWRn
ZS9qbmkvanMgXAogCVwKIAkkKEpBVkFTQ1JJUFRDT1JFX1BBVEgpL0FQSSBcCiAJJChKQVZBU0NS
SVBUQ09SRV9QQVRIKS9hc3NlbWJsZXIgXApAQCAtMTg3LDcgKzE4Nyw3IEBAIExPQ0FMX1NSQ19G
SUxFUyArPSBcCiAJYnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuY3BwIFwKIAlicmlkZ2Uvam5pL2pu
aV9ydW50aW1lLmNwcCBcCiAJYnJpZGdlL2puaS9qbmlfdXRpbGl0eS5jcHAgXAotCWJyaWRnZS9q
bmkvanNjL2puaV91dGlsaXR5X3ByaXZhdGUuY3BwIFwKKwlicmlkZ2Uvam5pL2pzL2puaV91dGls
aXR5X3ByaXZhdGUuY3BwIFwKIAlicmlkZ2UvbnBydW50aW1lLmNwcCBcCiAJYnJpZGdlL3J1bnRp
bWUuY3BwIFwKIAlicmlkZ2UvcnVudGltZV9hcnJheS5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDUzMzMxKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEx
MTMsOCArMTExMyw4IEBACiAJCTU0QzUwRjdCMEU4MDFERjMwMDk4MzJBMCAvKiBYTUxUb2tlbml6
ZXJMaWJ4bWwyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU0QzUwRjdBMEU4MDFERjMwMDk4MzJBMCAvKiBYTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcCAq
LzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVG
NjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2
MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmll
ZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk1OTlEMUUzMjEwQzk3RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTlEMUUzMDEwQzk3
RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAgKi87IH07Ci0JCTU5OUQxRTMz
MTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTlEMUUzMTEwQzk3RDZFMDBFMEVGMTIg
Lyogam5pX3V0aWxpdHlfcHJpdmF0ZS5oICovOyB9OworCQk1OUJCNDZGMzExMDA4QUQxMDBGM0Ew
MDEgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OUJCNDZGMjExMDA4QUQxMDBGM0EwMDEgLyogam5pX3V0aWxp
dHlfcHJpdmF0ZS5jcHAgKi87IH07CisJCTU5QkI0NkY1MTEwMDhBREMwMEYzQTAwMSAvKiBqbmlf
dXRpbGl0eV9wcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1OUJCNDZGNDExMDA4QURDMDBGM0EwMDEgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5o
ICovOyB9OwogCQk1OUM3N0YyQTEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNl
TW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
OUM3N0YyODEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAgKi87
IH07CiAJCTU5Qzc3RjJCMTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlvblNlcnZpY2VNb2Nr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUM3N0Yy
OTEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVEMTVFM0FCMEY5RTZBQzEw
MDlFMEUzRiAvKiBYTUxUb2tlbml6ZXJTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDE1RTNBOTBGOUU2QUMxMDA5RTBFM0YgLyogWE1MVG9r
ZW5pemVyU2NvcGUuY3BwICovOyB9OwpAQCAtNjQ2Myw4ICs2NDYzLDggQEAKIAkJNTRDNTBGN0Ew
RTgwMURGMzAwOTgzMkEwIC8qIFhNTFRva2VuaXplckxpYnhtbDIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MVG9rZW5pemVyTGlieG1sMi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8q
IFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJNTk5RDFFMzAxMEM5N0Q2RTAwRTBFRjEyIC8q
IGpuaV91dGlsaXR5X3ByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHA7IHBhdGggPSBqc2Mvam5pX3V0aWxpdHlfcHJp
dmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU5OUQxRTMxMTBDOTdENkUw
MEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IGpuaV91dGlsaXR5X3ByaXZhdGUuaDsgcGF0aCA9IGpzYy9qbmlfdXRpbGl0eV9w
cml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5QkI0NkYyMTEwMDhBRDEw
MEYzQTAwMSAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IGpuaV91dGlsaXR5X3ByaXZhdGUuY3BwOyBwYXRoID0ganMvam5pX3V0
aWxpdHlfcHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5QkI0NkY0
MTEwMDhBREMwMEYzQTAwMSAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IGpuaV91dGlsaXR5X3ByaXZhdGUuaDsgcGF0aCA9IGpzL2puaV91
dGlsaXR5X3ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlDNzdGMjgx
MDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHA7IHBh
dGggPSBtb2NrL0dlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1OUM3N0YyOTEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNl
TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHZW9sb2NhdGlvblNlcnZp
Y2VNb2NrLmg7IHBhdGggPSBtb2NrL0dlb2xvY2F0aW9uU2VydmljZU1vY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQxNUUzQTkwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTFRva2Vu
aXplclNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTFRv
a2VuaXplclNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzQwLDcg
KzEwMzQwLDcgQEAKIAkJMUE1NjlDQ0UwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTk5RDFFMkYxMEM5N0Q0QzAw
RTBFRjEyIC8qIGpzYyAqLywKKwkJCQk1OUJCNDZGMTExMDA4QUI1MDBGM0EwMDEgLyoganMgKi8s
CiAJCQkJMUE1NjlDQ0YwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9jbGFzcy5jcHAgKi8sCiAJCQkJ
MUE1NjlDRDAwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9jbGFzcy5oICovLAogCQkJCTFBNTY5Q0Qx
MEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfaW5zdGFuY2UuY3BwICovLApAQCAtMTEwNTQsMTMgKzEx
MDU0LDEzIEBACiAJCQlwYXRoID0gd2Vic29ja2V0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07Ci0JCTU5OUQxRTJGMTBDOTdENEMwMEUwRUYxMiAvKiBqc2MgKi8gPSB7CisJCTU5
QkI0NkYxMTEwMDhBQjUwMEYzQTAwMSAvKiBqcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJNTk5RDFFMzAxMEM5N0Q2RTAwRTBFRjEyIC8qIGpuaV91dGls
aXR5X3ByaXZhdGUuY3BwICovLAotCQkJCTU5OUQxRTMxMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlf
dXRpbGl0eV9wcml2YXRlLmggKi8sCisJCQkJNTlCQjQ2RjQxMTAwOEFEQzAwRjNBMDAxIC8qIGpu
aV91dGlsaXR5X3ByaXZhdGUuaCAqLywKKwkJCQk1OUJCNDZGMjExMDA4QUQxMDBGM0EwMDEgLyog
am5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAgKi8sCiAJCQkpOwotCQkJbmFtZSA9IGpzYzsKKwkJCW5h
bWUgPSBqczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCTU5Qzc3RjEwMTA1
NDU5MUMwMDUwNjEwNCAvKiBtb2NrICovID0gewpAQCAtMTgzMjgsNyArMTgzMjgsNiBAQAogCQkJ
CTdBMEU3NzBGMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdBMEU3NzFGMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZy
b250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRFQUY0QUYxMEM3NDJCMTAwOTEwMEQz
IC8qIE9wZW5UeXBlU2FuaXRpemVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1OTlEMUUzMzEwQzk3
RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0FERTcyMjYxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBDM0YxRjVCMTBDODg3MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM0NTM0MjgxMENEQkJGQTAwODY5MTU3IC8qIEpT
V2ViR0xVbmlmb3JtTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTgzNDksNiArMTgzNDgs
NyBAQAogCQkJCTZFNEU5MUFEMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmli
dXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0RTkxQUYxMEY3RkIzMTAwQTI3NzlDIC8qIFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFRThBNzczMTBGODAz
RjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU5QkI0NkY1MTEwMDhBREMwMEYzQTAwMSAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTIwNTAwLDcgKzIwNTAwLDYgQEAKIAkJCQk3QTBFNzcxRTEwQzAwREIx
MDBBMDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjRFQUY0QUUxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUQwMUEyN0FEMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3Ry
aW5nLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTU5OUQxRTMyMTBDOTdENkUwMEUwRUYxMiAvKiBq
bmlfdXRpbGl0eV9wcml2YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBDM0YxRjVBMTBDODg3
MTIwMEQ3MkNFMSAvKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwQzQ1MzQyNzEwQ0RCQkZBMDA4NjkxNTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzU2Q0IyMTEwRDVBQzgwMDBBNzdDNjQgLyogR2VvbG9jYXRp
b25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjA1MTMsNiArMjA1MTIsNyBAQAog
CQkJCTZFNEU5MUFDMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk2RTRFOTFBRTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xD
b250ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RUU4QTc3MjEwRjgwM0Yz
MDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTU5QkI0NkYzMTEwMDhBRDEwMEYzQTAwMSAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9icmlkZ2Uvam5pL2pzL2puaV91dGlsaXR5X3By
aXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qcy9qbmlfdXRpbGl0
eV9wcml2YXRlLmNwcAkocmV2aXNpb24gNTMzMzEpCShmcm9tIFdlYkNvcmUvYnJpZGdlL2puaS9q
c2Mvam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHA6NTMzMzEpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkv
anMvam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQgT3BlbiBTb3Vy
Y2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJqbmlfdXRp
bGl0eV9wcml2YXRlLmgiCisKKyNpZiBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQorCisjaW5jbHVk
ZSAiam5pX3J1bnRpbWUuaCIKKyNpbmNsdWRlICJydW50aW1lX2FycmF5LmgiCisjaW5jbHVkZSAi
cnVudGltZV9vYmplY3QuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTQXJyYXkuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0pTTG9jay5oPgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIEJpbmRp
bmdzIHsKKworc3RhdGljIGpvYmplY3QgY29udmVydEFycmF5SW5zdGFuY2VUb0phdmFBcnJheShF
eGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGpzQXJyYXksIGNvbnN0IGNoYXIqIGphdmFDbGFzc05h
bWUpCit7CisgICAgSk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKKyAgICAvLyBBcyBKUyBBcnJh
eXMgY2FuIGNvbnRhaW4gYSBtaXh0dXJlIG9mIG9iamVjdHMsIGFzc3VtZSB3ZSBjYW4gY29udmVy
dCB0bworICAgIC8vIHRoZSByZXF1ZXN0ZWQgSmF2YSBBcnJheSB0eXBlIHJlcXVlc3RlZCwgdW5s
ZXNzIHRoZSBhcnJheSB0eXBlIGlzIHNvbWUgb2JqZWN0IGFycmF5CisgICAgLy8gb3RoZXIgdGhh
biBhIHN0cmluZy4KKyAgICB1bnNpZ25lZCBsZW5ndGggPSBqc0FycmF5LT5sZW5ndGgoKTsKKyAg
ICBqb2JqZWN0QXJyYXkgamFycmF5ID0gMDsKKworICAgIC8vIEJ1aWxkIHRoZSBjb3JyZWN0IGFy
cmF5IHR5cGUKKyAgICBzd2l0Y2ggKEpOSVR5cGVGcm9tUHJpbWl0aXZlVHlwZShqYXZhQ2xhc3NO
YW1lWzFdKSkgeworICAgIGNhc2Ugb2JqZWN0X3R5cGU6CisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAvLyBPbmx5IHN1cHBvcnQgc3RyaW5nIG9iamVjdCB0eXBlcworICAgICAgICAgICAgaWYg
KCFzdHJjbXAoIltMamF2YS5sYW5nLlN0cmluZzsiLCBqYXZhQ2xhc3NOYW1lKSkgeworICAgICAg
ICAgICAgICAgIGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdPYmplY3RBcnJheShsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgIGVudi0+RmluZENsYXNzKCJqYXZhL2xhbmcvU3RyaW5n
IiksCisgICAgICAgICAgICAgICAgICAgIGVudi0+TmV3U3RyaW5nVVRGKCIiKSk7CisgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKKyAgICAg
ICAgICAgICAgICAgICAgVVN0cmluZyBzdHJpbmdWYWx1ZSA9IGl0ZW0udG9TdHJpbmcoZXhlYyk7
CisgICAgICAgICAgICAgICAgICAgIGVudi0+U2V0T2JqZWN0QXJyYXlFbGVtZW50KGphcnJheSwg
aSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+ZnVuY3Rpb25zLT5OZXdTdHJpbmcoZW52
LCAoY29uc3QgamNoYXIgKilzdHJpbmdWYWx1ZS5kYXRhKCksIHN0cmluZ1ZhbHVlLnNpemUoKSkp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICBjYXNlIGJvb2xlYW5fdHlwZToKKyAgICAgICAgeworICAgICAgICAg
ICAgamFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld0Jvb2xlYW5BcnJheShsZW5ndGgpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
ICAgICAgICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMsIGkpOworICAgICAg
ICAgICAgICAgIGpib29sZWFuIHZhbHVlID0gKGpib29sZWFuKWl0ZW0udG9OdW1iZXIoZXhlYyk7
CisgICAgICAgICAgICAgICAgZW52LT5TZXRCb29sZWFuQXJyYXlSZWdpb24oKGpib29sZWFuQXJy
YXkpamFycmF5LCAoanNpemUpaSwgKGpzaXplKTEsICZ2YWx1ZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgY2FzZSBieXRlX3R5cGU6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdCeXRlQXJy
YXkobGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgeworICAgICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVj
LCBpKTsKKyAgICAgICAgICAgICAgICBqYnl0ZSB2YWx1ZSA9IChqYnl0ZSlpdGVtLnRvTnVtYmVy
KGV4ZWMpOworICAgICAgICAgICAgICAgIGVudi0+U2V0Qnl0ZUFycmF5UmVnaW9uKChqYnl0ZUFy
cmF5KWphcnJheSwgKGpzaXplKWksIChqc2l6ZSkxLCAmdmFsdWUpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgIGNhc2UgY2hhcl90eXBlOgorICAg
ICAgICB7CisgICAgICAgICAgICBqYXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3Q2hhckFy
cmF5KGxlbmd0aCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhl
YywgaSk7CisgICAgICAgICAgICAgICAgVVN0cmluZyBzdHJpbmdWYWx1ZSA9IGl0ZW0udG9TdHJp
bmcoZXhlYyk7CisgICAgICAgICAgICAgICAgamNoYXIgdmFsdWUgPSAwOworICAgICAgICAgICAg
ICAgIGlmIChzdHJpbmdWYWx1ZS5zaXplKCkgPiAwKQorICAgICAgICAgICAgICAgICAgICB2YWx1
ZSA9ICgoY29uc3QgamNoYXIqKXN0cmluZ1ZhbHVlLmRhdGEoKSlbMF07CisgICAgICAgICAgICAg
ICAgZW52LT5TZXRDaGFyQXJyYXlSZWdpb24oKGpjaGFyQXJyYXkpamFycmF5LCAoanNpemUpaSwg
KGpzaXplKTEsICZ2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgY2FzZSBzaG9ydF90eXBlOgorICAgICAgICB7CisgICAgICAgICAgICBq
YXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3U2hvcnRBcnJheShsZW5ndGgpOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAg
ICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMsIGkpOworICAgICAgICAgICAg
ICAgIGpzaG9ydCB2YWx1ZSA9IChqc2hvcnQpaXRlbS50b051bWJlcihleGVjKTsKKyAgICAgICAg
ICAgICAgICBlbnYtPlNldFNob3J0QXJyYXlSZWdpb24oKGpzaG9ydEFycmF5KWphcnJheSwgKGpz
aXplKWksIChqc2l6ZSkxLCAmdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgIGNhc2UgaW50X3R5cGU6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdJbnRBcnJheShsZW5ndGgpOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMsIGkpOworICAgICAgICAg
ICAgICAgIGppbnQgdmFsdWUgPSAoamludClpdGVtLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICAg
ICAgICAgIGVudi0+U2V0SW50QXJyYXlSZWdpb24oKGppbnRBcnJheSlqYXJyYXksIChqc2l6ZSlp
LCAoanNpemUpMSwgJnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICBjYXNlIGxvbmdfdHlwZToKKyAgICAgICAgeworICAgICAgICAgICAg
amFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld0xvbmdBcnJheShsZW5ndGgpOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAg
ICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMsIGkpOworICAgICAgICAgICAg
ICAgIGpsb25nIHZhbHVlID0gKGpsb25nKWl0ZW0udG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAg
ICAgICAgZW52LT5TZXRMb25nQXJyYXlSZWdpb24oKGpsb25nQXJyYXkpamFycmF5LCAoanNpemUp
aSwgKGpzaXplKTEsICZ2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgY2FzZSBmbG9hdF90eXBlOgorICAgICAgICB7CisgICAgICAgICAg
ICBqYXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3RmxvYXRBcnJheShsZW5ndGgpOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMsIGkpOworICAgICAgICAg
ICAgICAgIGpmbG9hdCB2YWx1ZSA9IChqZmxvYXQpaXRlbS50b051bWJlcihleGVjKTsKKyAgICAg
ICAgICAgICAgICBlbnYtPlNldEZsb2F0QXJyYXlSZWdpb24oKGpmbG9hdEFycmF5KWphcnJheSwg
KGpzaXplKWksIChqc2l6ZSkxLCAmdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgIGNhc2UgZG91YmxlX3R5cGU6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdEb3VibGVBcnJheShsZW5n
dGgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMsIGkpOwor
ICAgICAgICAgICAgICAgIGpkb3VibGUgdmFsdWUgPSAoamRvdWJsZSlpdGVtLnRvTnVtYmVyKGV4
ZWMpOworICAgICAgICAgICAgICAgIGVudi0+U2V0RG91YmxlQXJyYXlSZWdpb24oKGpkb3VibGVB
cnJheSlqYXJyYXksIChqc2l6ZSlpLCAoanNpemUpMSwgJnZhbHVlKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICBjYXNlIGFycmF5X3R5cGU6IC8v
IGRvbid0IGhhbmRsZSBlbWJlZGRlZCBhcnJheXMKKyAgICBjYXNlIHZvaWRfdHlwZTogLy8gRG9u
J3QgZXhwZWN0IGFycmF5cyBvZiB2b2lkIG9iamVjdHMKKyAgICBjYXNlIGludmFsaWRfdHlwZTog
Ly8gQXJyYXkgb2YgdW5rbm93biBvYmplY3RzCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IC8vIGlmIGl0IHdhcyBub3Qgb25lIG9mIHRoZSBjYXNlcyBoYW5kbGVkLCB0aGVuIG51bGwgaXMg
cmV0dXJuZWQKKyAgICByZXR1cm4gamFycmF5OworfQorCitqdmFsdWUgY29udmVydFZhbHVlVG9K
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKTklUeXBlIGpuaVR5cGUsIGNv
bnN0IGNoYXIqIGphdmFDbGFzc05hbWUpCit7CisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKKworICAgIGp2YWx1ZSByZXN1bHQ7CisKKyAgICBzd2l0Y2ggKGpuaVR5cGUp
IHsKKyAgICBjYXNlIGFycmF5X3R5cGU6CisgICAgY2FzZSBvYmplY3RfdHlwZToKKyAgICAgICAg
eworICAgICAgICAgICAgcmVzdWx0LmwgPSAoam9iamVjdCkwOworCisgICAgICAgICAgICAvLyBG
aXJzdCBzZWUgaWYgd2UgaGF2ZSBhIEphdmEgaW5zdGFuY2UuCisgICAgICAgICAgICBpZiAodmFs
dWUuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3RJbXAgPSBh
c09iamVjdCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKG9iamVjdEltcC0+Y2xhc3NJbmZv
KCkgPT0gJlJ1bnRpbWVPYmplY3RJbXA6OnNfaW5mbykgeworICAgICAgICAgICAgICAgICAgICBS
dW50aW1lT2JqZWN0SW1wKiBpbXAgPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0SW1wKj4ob2Jq
ZWN0SW1wKTsKKyAgICAgICAgICAgICAgICAgICAgSmF2YUluc3RhbmNlKiBpbnN0YW5jZSA9IHN0
YXRpY19jYXN0PEphdmFJbnN0YW5jZSo+KGltcC0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmwgPSBpbnN0YW5jZS0+amF2YUluc3RhbmNlKCk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChvYmplY3RJbXAtPmNsYXNzSW5mbygpID09ICZSdW50aW1lQXJyYXk6OnNfaW5mbykg
eworICAgICAgICAgICAgICAgIC8vIElucHV0IGlzIGEgSmF2YVNjcmlwdCBBcnJheSB0aGF0IHdh
cyBvcmlnaW5hbGx5IGNyZWF0ZWQgZnJvbSBhIEphdmEgQXJyYXkKKyAgICAgICAgICAgICAgICAg
ICAgUnVudGltZUFycmF5KiBpbXAgPSBzdGF0aWNfY2FzdDxSdW50aW1lQXJyYXkqPihvYmplY3RJ
bXApOworICAgICAgICAgICAgICAgICAgICBKYXZhQXJyYXkqIGFycmF5ID0gc3RhdGljX2Nhc3Q8
SmF2YUFycmF5Kj4oaW1wLT5nZXRDb25jcmV0ZUFycmF5KCkpOworICAgICAgICAgICAgICAgICAg
ICByZXN1bHQubCA9IGFycmF5LT5qYXZhQXJyYXkoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKG9iamVjdEltcC0+Y2xhc3NJbmZvKCkgPT0gJkpTQXJyYXk6OmluZm8pIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gSW5wdXQgaXMgYSBKYXZhc2NyaXB0IEFycmF5LiBXZSBuZWVkIHRvIGNy
ZWF0ZSBpdCB0byBhIEphdmEgQXJyYXkuCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sID0g
Y29udmVydEFycmF5SW5zdGFuY2VUb0phdmFBcnJheShleGVjLCBhc0FycmF5KHZhbHVlKSwgamF2
YUNsYXNzTmFtZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBOb3cgY29udmVydCB2YWx1ZSB0byBhIHN0cmluZyBpZiB0aGUgdGFyZ2V0IHR5cGUg
aXMgYSBqYXZhLmxhbmcuc3RyaW5nLCBhbmQgd2UncmUgbm90CisgICAgICAgICAgICAvLyBjb252
ZXJ0aW5nIGZyb20gYSBOdWxsLgorICAgICAgICAgICAgaWYgKCFyZXN1bHQubCAmJiAhc3RyY21w
KGphdmFDbGFzc05hbWUsICJqYXZhLmxhbmcuU3RyaW5nIikpIHsKKyNpZmRlZiBDT05WRVJUX05V
TExfVE9fRU1QVFlfU1RSSU5HCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5pc051bGwoKSkg
eworICAgICAgICAgICAgICAgICAgICBKTklFbnYqIGVudiA9IGdldEpOSUVudigpOworICAgICAg
ICAgICAgICAgICAgICBqY2hhciBidWZbMl07CisgICAgICAgICAgICAgICAgICAgIGpvYmplY3Qg
amF2YVN0cmluZyA9IGVudi0+ZnVuY3Rpb25zLT5OZXdTdHJpbmcoZW52LCBidWYsIDApOworICAg
ICAgICAgICAgICAgICAgICByZXN1bHQubCA9IGphdmFTdHJpbmc7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisjZWxzZQorICAgICAgICAgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCisjZW5k
aWYKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFVTdHJpbmcgc3RyaW5n
VmFsdWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgSk5JRW52
KiBlbnYgPSBnZXRKTklFbnYoKTsKKyAgICAgICAgICAgICAgICAgICAgam9iamVjdCBqYXZhU3Ry
aW5nID0gZW52LT5mdW5jdGlvbnMtPk5ld1N0cmluZyhlbnYsIChjb25zdCBqY2hhciAqKXN0cmlu
Z1ZhbHVlLmRhdGEoKSwgc3RyaW5nVmFsdWUuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmwgPSBqYXZhU3RyaW5nOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIXJlc3VsdC5sKQorICAgICAgICAgICAgICAgIGJ6ZXJvKCZyZXN1bHQsIHNpemVv
ZihqdmFsdWUpKTsgLy8gSGFuZGxlIGl0IHRoZSBzYW1lIGFzIGEgdm9pZCBjYXNlCisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGJvb2xlYW5fdHlwZToKKyAgICAgICAgewor
ICAgICAgICAgICAgcmVzdWx0LnogPSAoamJvb2xlYW4pdmFsdWUudG9OdW1iZXIoZXhlYyk7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGJ5dGVfdHlwZToKKyAgICAgICAg
eworICAgICAgICAgICAgcmVzdWx0LmIgPSAoamJ5dGUpdmFsdWUudG9OdW1iZXIoZXhlYyk7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGNoYXJfdHlwZToKKyAgICAgICAg
eworICAgICAgICAgICAgcmVzdWx0LmMgPSAoamNoYXIpdmFsdWUudG9OdW1iZXIoZXhlYyk7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIHNob3J0X3R5cGU6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJlc3VsdC5zID0gKGpzaG9ydCl2YWx1ZS50b051bWJlcihleGVjKTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgaW50X3R5cGU6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJlc3VsdC5pID0gKGppbnQpdmFsdWUudG9OdW1iZXIoZXhlYyk7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGxvbmdfdHlwZToKKyAgICAgICAg
eworICAgICAgICAgICAgcmVzdWx0LmogPSAoamxvbmcpdmFsdWUudG9OdW1iZXIoZXhlYyk7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGZsb2F0X3R5cGU6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJlc3VsdC5mID0gKGpmbG9hdCl2YWx1ZS50b051bWJlcihleGVjKTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgZG91YmxlX3R5cGU6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJlc3VsdC5kID0gKGpkb3VibGUpdmFsdWUudG9OdW1iZXIoZXhl
Yyk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIGludmFsaWRfdHlwZToKKyAgICBkZWZhdWx0OgorICAgIGNhc2Ugdm9pZF90eXBlOgorICAg
ICAgICB7CisgICAgICAgICAgICBiemVybygmcmVzdWx0LCBzaXplb2YoanZhbHVlKSk7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30g
IC8vIGVuZCBvZiBuYW1lc3BhY2UgQmluZGluZ3MKKworfSAvLyBlbmQgb2YgbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gRU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKSW5kZXg6IFdlYkNvcmUvYnJp
ZGdlL2puaS9qcy9qbmlfdXRpbGl0eV9wcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JyaWRnZS9qbmkvanMvam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL2JyaWRnZS9qbmkvanMvam5pX3V0aWxpdHlfcHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4NCw3ICsyODQsNyBAQCBqdmFsdWUgY29udmVydFZhbHVlVG9KVmFsdWUoRXhlY1N0
YXRlKiBlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotfSAgLy8gZW5kIG9mIG5hbWVzcGFjZSBC
aW5kaW5ncworfSAvLyBlbmQgb2YgbmFtZXNwYWNlIEJpbmRpbmdzCiAKIH0gLy8gZW5kIG9mIG5h
bWVzcGFjZSBKU0MKIApJbmRleDogV2ViQ29yZS9icmlkZ2Uvam5pL2pzL2puaV91dGlsaXR5X3By
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9qbmkvanMvam5pX3V0aWxpdHlf
cHJpdmF0ZS5oCShyZXZpc2lvbiA1MzMzMSkJKGZyb20gV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9q
bmlfdXRpbGl0eV9wcml2YXRlLmg6NTMzMzEpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvanMvam5p
X3V0aWxpdHlfcHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVj
dAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgX0pOSV9VVElMSVRZX1BSSVZBVEVfSF8KKyNkZWZpbmUgX0pOSV9V
VElMSVRZX1BSSVZBVEVfSF8KKworI2lmIEVOQUJMRShNQUNfSkFWQV9CUklER0UpCisKKyNpbmNs
dWRlICJqbmlfdXRpbGl0eS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7CisKK25hbWVz
cGFjZSBCaW5kaW5ncyB7CisKK2p2YWx1ZSBjb252ZXJ0VmFsdWVUb0pWYWx1ZShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBKTklUeXBlLCBjb25zdCBjaGFyKiBqYXZhQ2xhc3NOYW1lKTsKK2Jvb2wgZGlz
cGF0Y2hKTklDYWxsKEV4ZWNTdGF0ZSosIGNvbnN0IHZvaWQqIHRhcmdldEFwcGxldFZpZXcsIGpv
YmplY3Qgb2JqLCBib29sIGlzU3RhdGljLCBKTklUeXBlIHJldHVyblR5cGUsIGptZXRob2RJRCBt
ZXRob2RJRCwganZhbHVlKiBhcmdzLCBqdmFsdWUmIHJlc3VsdCwgY29uc3QgY2hhciogY2FsbGlu
Z1VSTCwgSlNWYWx1ZSYgZXhjZXB0aW9uRGVzY3JpcHRpb24pOworCit9IC8vIG5hbWVzcGFjZSBC
aW5kaW5ncworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShNQUNfSkFW
QV9CUklER0UpCisKKyNlbmRpZiAvLyBfSk5JX1VUSUxJVFlfSF8KSW5kZXg6IFdlYkNvcmUvYnJp
ZGdlL2puaS9qcy9qbmlfdXRpbGl0eV9wcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
cmlkZ2Uvam5pL2pzL2puaV91dGlsaXR5X3ByaXZhdGUuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvYnJpZGdlL2puaS9qcy9qbmlfdXRpbGl0eV9wcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDggKzI0LDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBfSk5JX1VUSUxJ
VFlfUFJJVkFURV9IXwotI2RlZmluZSBfSk5JX1VUSUxJVFlfUFJJVkFURV9IXworI2lmbmRlZiBq
bmlfdXRpbGl0eV9wcml2YXRlX2gKKyNkZWZpbmUgam5pX3V0aWxpdHlfcHJpdmF0ZV9oCiAKICNp
ZiBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQogCkBAIC00OCw0ICs0OCw0IEBAIGJvb2wgZGlzcGF0
Y2hKTklDYWxsKEV4ZWNTdGF0ZSosIGNvbnN0IHYKIAogI2VuZGlmIC8vIEVOQUJMRShNQUNfSkFW
QV9CUklER0UpCiAKLSNlbmRpZiAvLyBfSk5JX1VUSUxJVFlfSF8KKyNlbmRpZiAvLyBqbmlfdXRp
bGl0eV9wcml2YXRlX2gKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qc2Mvam5pX3V0aWxpdHlf
cHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9qbmlfdXRp
bGl0eV9wcml2YXRlLmNwcAkocmV2aXNpb24gNTMzMzEpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkv
anNjL2puaV91dGlsaXR5X3ByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI5MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291
cmNlIFByb2plY3QKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiam5pX3V0
aWxpdHlfcHJpdmF0ZS5oIgotCi0jaWYgRU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKLQotI2luY2x1
ZGUgImpuaV9ydW50aW1lLmgiCi0jaW5jbHVkZSAicnVudGltZV9hcnJheS5oIgotI2luY2x1ZGUg
InJ1bnRpbWVfb2JqZWN0LmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9KU0xvY2suaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLW5hbWVzcGFjZSBCaW5k
aW5ncyB7Ci0KLXN0YXRpYyBqb2JqZWN0IGNvbnZlcnRBcnJheUluc3RhbmNlVG9KYXZhQXJyYXko
RXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBqc0FycmF5LCBjb25zdCBjaGFyKiBqYXZhQ2xhc3NO
YW1lKQotewotICAgIEpOSUVudiogZW52ID0gZ2V0Sk5JRW52KCk7Ci0gICAgLy8gQXMgSlMgQXJy
YXlzIGNhbiBjb250YWluIGEgbWl4dHVyZSBvZiBvYmplY3RzLCBhc3N1bWUgd2UgY2FuIGNvbnZl
cnQgdG8KLSAgICAvLyB0aGUgcmVxdWVzdGVkIEphdmEgQXJyYXkgdHlwZSByZXF1ZXN0ZWQsIHVu
bGVzcyB0aGUgYXJyYXkgdHlwZSBpcyBzb21lIG9iamVjdCBhcnJheQotICAgIC8vIG90aGVyIHRo
YW4gYSBzdHJpbmcuCi0gICAgdW5zaWduZWQgbGVuZ3RoID0ganNBcnJheS0+bGVuZ3RoKCk7Ci0g
ICAgam9iamVjdEFycmF5IGphcnJheSA9IDA7Ci0KLSAgICAvLyBCdWlsZCB0aGUgY29ycmVjdCBh
cnJheSB0eXBlCi0gICAgc3dpdGNoIChKTklUeXBlRnJvbVByaW1pdGl2ZVR5cGUoamF2YUNsYXNz
TmFtZVsxXSkpIHsKLSAgICBjYXNlIG9iamVjdF90eXBlOgotICAgICAgICAgICAgewotICAgICAg
ICAgICAgLy8gT25seSBzdXBwb3J0IHN0cmluZyBvYmplY3QgdHlwZXMKLSAgICAgICAgICAgIGlm
ICghc3RyY21wKCJbTGphdmEubGFuZy5TdHJpbmc7IiwgamF2YUNsYXNzTmFtZSkpIHsKLSAgICAg
ICAgICAgICAgICBqYXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3T2JqZWN0QXJyYXkobGVu
Z3RoLAotICAgICAgICAgICAgICAgICAgICBlbnYtPkZpbmRDbGFzcygiamF2YS9sYW5nL1N0cmlu
ZyIpLAotICAgICAgICAgICAgICAgICAgICBlbnYtPk5ld1N0cmluZ1VURigiIikpOwotICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7Ci0gICAg
ICAgICAgICAgICAgICAgIFVTdHJpbmcgc3RyaW5nVmFsdWUgPSBpdGVtLnRvU3RyaW5nKGV4ZWMp
OwotICAgICAgICAgICAgICAgICAgICBlbnYtPlNldE9iamVjdEFycmF5RWxlbWVudChqYXJyYXks
IGksCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnYtPmZ1bmN0aW9ucy0+TmV3U3RyaW5nKGVu
diwgKGNvbnN0IGpjaGFyICopc3RyaW5nVmFsdWUuZGF0YSgpLCBzdHJpbmdWYWx1ZS5zaXplKCkp
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotCi0gICAgY2FzZSBib29sZWFuX3R5cGU6Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdCb29sZWFuQXJyYXkobGVuZ3RoKTsK
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKLSAgICAg
ICAgICAgICAgICBqYm9vbGVhbiB2YWx1ZSA9IChqYm9vbGVhbilpdGVtLnRvTnVtYmVyKGV4ZWMp
OwotICAgICAgICAgICAgICAgIGVudi0+U2V0Qm9vbGVhbkFycmF5UmVnaW9uKChqYm9vbGVhbkFy
cmF5KWphcnJheSwgKGpzaXplKWksIChqc2l6ZSkxLCAmdmFsdWUpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgIGNhc2UgYnl0ZV90eXBlOgotICAg
ICAgICB7Ci0gICAgICAgICAgICBqYXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3Qnl0ZUFy
cmF5KGxlbmd0aCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhl
YywgaSk7Ci0gICAgICAgICAgICAgICAgamJ5dGUgdmFsdWUgPSAoamJ5dGUpaXRlbS50b051bWJl
cihleGVjKTsKLSAgICAgICAgICAgICAgICBlbnYtPlNldEJ5dGVBcnJheVJlZ2lvbigoamJ5dGVB
cnJheSlqYXJyYXksIChqc2l6ZSlpLCAoanNpemUpMSwgJnZhbHVlKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICBjYXNlIGNoYXJfdHlwZToKLSAg
ICAgICAgewotICAgICAgICAgICAgamFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld0NoYXJB
cnJheShsZW5ndGgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4
ZWMsIGkpOwotICAgICAgICAgICAgICAgIFVTdHJpbmcgc3RyaW5nVmFsdWUgPSBpdGVtLnRvU3Ry
aW5nKGV4ZWMpOwotICAgICAgICAgICAgICAgIGpjaGFyIHZhbHVlID0gMDsKLSAgICAgICAgICAg
ICAgICBpZiAoc3RyaW5nVmFsdWUuc2l6ZSgpID4gMCkKLSAgICAgICAgICAgICAgICAgICAgdmFs
dWUgPSAoKGNvbnN0IGpjaGFyKilzdHJpbmdWYWx1ZS5kYXRhKCkpWzBdOwotICAgICAgICAgICAg
ICAgIGVudi0+U2V0Q2hhckFycmF5UmVnaW9uKChqY2hhckFycmF5KWphcnJheSwgKGpzaXplKWks
IChqc2l6ZSkxLCAmdmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLQotICAgIGNhc2Ugc2hvcnRfdHlwZToKLSAgICAgICAgewotICAgICAgICAgICAg
amFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld1Nob3J0QXJyYXkobGVuZ3RoKTsKLSAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICAg
ICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKLSAgICAgICAgICAg
ICAgICBqc2hvcnQgdmFsdWUgPSAoanNob3J0KWl0ZW0udG9OdW1iZXIoZXhlYyk7Ci0gICAgICAg
ICAgICAgICAgZW52LT5TZXRTaG9ydEFycmF5UmVnaW9uKChqc2hvcnRBcnJheSlqYXJyYXksIChq
c2l6ZSlpLCAoanNpemUpMSwgJnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0KLSAgICBjYXNlIGludF90eXBlOgotICAgICAgICB7Ci0gICAgICAg
ICAgICBqYXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3SW50QXJyYXkobGVuZ3RoKTsKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAg
ICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKLSAgICAgICAg
ICAgICAgICBqaW50IHZhbHVlID0gKGppbnQpaXRlbS50b051bWJlcihleGVjKTsKLSAgICAgICAg
ICAgICAgICBlbnYtPlNldEludEFycmF5UmVnaW9uKChqaW50QXJyYXkpamFycmF5LCAoanNpemUp
aSwgKGpzaXplKTEsICZ2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotCi0gICAgY2FzZSBsb25nX3R5cGU6Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdMb25nQXJyYXkobGVuZ3RoKTsKLSAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICAg
ICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKLSAgICAgICAgICAg
ICAgICBqbG9uZyB2YWx1ZSA9IChqbG9uZylpdGVtLnRvTnVtYmVyKGV4ZWMpOwotICAgICAgICAg
ICAgICAgIGVudi0+U2V0TG9uZ0FycmF5UmVnaW9uKChqbG9uZ0FycmF5KWphcnJheSwgKGpzaXpl
KWksIChqc2l6ZSkxLCAmdmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLQotICAgIGNhc2UgZmxvYXRfdHlwZToKLSAgICAgICAgewotICAgICAgICAg
ICAgamFycmF5ID0gKGpvYmplY3RBcnJheSllbnYtPk5ld0Zsb2F0QXJyYXkobGVuZ3RoKTsKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAg
ICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKLSAgICAgICAg
ICAgICAgICBqZmxvYXQgdmFsdWUgPSAoamZsb2F0KWl0ZW0udG9OdW1iZXIoZXhlYyk7Ci0gICAg
ICAgICAgICAgICAgZW52LT5TZXRGbG9hdEFycmF5UmVnaW9uKChqZmxvYXRBcnJheSlqYXJyYXks
IChqc2l6ZSlpLCAoanNpemUpMSwgJnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0KLSAgICBjYXNlIGRvdWJsZV90eXBlOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBqYXJyYXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3RG91YmxlQXJyYXkobGVu
Z3RoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
ewotICAgICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsK
LSAgICAgICAgICAgICAgICBqZG91YmxlIHZhbHVlID0gKGpkb3VibGUpaXRlbS50b051bWJlcihl
eGVjKTsKLSAgICAgICAgICAgICAgICBlbnYtPlNldERvdWJsZUFycmF5UmVnaW9uKChqZG91Ymxl
QXJyYXkpamFycmF5LCAoanNpemUpaSwgKGpzaXplKTEsICZ2YWx1ZSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgY2FzZSBhcnJheV90eXBlOiAv
LyBkb24ndCBoYW5kbGUgZW1iZWRkZWQgYXJyYXlzCi0gICAgY2FzZSB2b2lkX3R5cGU6IC8vIERv
bid0IGV4cGVjdCBhcnJheXMgb2Ygdm9pZCBvYmplY3RzCi0gICAgY2FzZSBpbnZhbGlkX3R5cGU6
IC8vIEFycmF5IG9mIHVua25vd24gb2JqZWN0cwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAg
ICAvLyBpZiBpdCB3YXMgbm90IG9uZSBvZiB0aGUgY2FzZXMgaGFuZGxlZCwgdGhlbiBudWxsIGlz
IHJldHVybmVkCi0gICAgcmV0dXJuIGphcnJheTsKLX0KLQotanZhbHVlIGNvbnZlcnRWYWx1ZVRv
SlZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSk5JVHlwZSBqbmlUeXBlLCBj
b25zdCBjaGFyKiBqYXZhQ2xhc3NOYW1lKQotewotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7Ci0KLSAgICBqdmFsdWUgcmVzdWx0OwotCi0gICAgc3dpdGNoIChqbmlUeXBl
KSB7Ci0gICAgY2FzZSBhcnJheV90eXBlOgotICAgIGNhc2Ugb2JqZWN0X3R5cGU6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHJlc3VsdC5sID0gKGpvYmplY3QpMDsKLQotICAgICAgICAgICAgLy8g
Rmlyc3Qgc2VlIGlmIHdlIGhhdmUgYSBKYXZhIGluc3RhbmNlLgotICAgICAgICAgICAgaWYgKHZh
bHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0SW1wID0g
YXNPYmplY3QodmFsdWUpOwotICAgICAgICAgICAgICAgIGlmIChvYmplY3RJbXAtPmNsYXNzSW5m
bygpID09ICZSdW50aW1lT2JqZWN0SW1wOjpzX2luZm8pIHsKLSAgICAgICAgICAgICAgICAgICAg
UnVudGltZU9iamVjdEltcCogaW1wID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdEltcCo+KG9i
amVjdEltcCk7Ci0gICAgICAgICAgICAgICAgICAgIEphdmFJbnN0YW5jZSogaW5zdGFuY2UgPSBz
dGF0aWNfY2FzdDxKYXZhSW5zdGFuY2UqPihpbXAtPmdldEludGVybmFsSW5zdGFuY2UoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5sID0gaW5zdGFuY2UtPmphdmFJbnN0YW5jZSgpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAob2JqZWN0SW1wLT5jbGFzc0luZm8oKSA9PSAmUnVudGltZUFycmF5OjpzX2luZm8p
IHsKLSAgICAgICAgICAgICAgICAvLyBJbnB1dCBpcyBhIEphdmFTY3JpcHQgQXJyYXkgdGhhdCB3
YXMgb3JpZ2luYWxseSBjcmVhdGVkIGZyb20gYSBKYXZhIEFycmF5Ci0gICAgICAgICAgICAgICAg
ICAgIFJ1bnRpbWVBcnJheSogaW1wID0gc3RhdGljX2Nhc3Q8UnVudGltZUFycmF5Kj4ob2JqZWN0
SW1wKTsKLSAgICAgICAgICAgICAgICAgICAgSmF2YUFycmF5KiBhcnJheSA9IHN0YXRpY19jYXN0
PEphdmFBcnJheSo+KGltcC0+Z2V0Q29uY3JldGVBcnJheSgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmwgPSBhcnJheS0+amF2YUFycmF5KCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChvYmplY3RJbXAtPmNsYXNzSW5mbygpID09ICZKU0FycmF5OjppbmZvKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIElucHV0IGlzIGEgSmF2YXNjcmlwdCBBcnJheS4gV2UgbmVlZCB0byBj
cmVhdGUgaXQgdG8gYSBKYXZhIEFycmF5LgotICAgICAgICAgICAgICAgICAgICByZXN1bHQubCA9
IGNvbnZlcnRBcnJheUluc3RhbmNlVG9KYXZhQXJyYXkoZXhlYywgYXNBcnJheSh2YWx1ZSksIGph
dmFDbGFzc05hbWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gTm93IGNvbnZlcnQgdmFsdWUgdG8gYSBzdHJpbmcgaWYgdGhlIHRhcmdldCB0eXBl
IGlzIGEgamF2YS5sYW5nLnN0cmluZywgYW5kIHdlJ3JlIG5vdAotICAgICAgICAgICAgLy8gY29u
dmVydGluZyBmcm9tIGEgTnVsbC4KLSAgICAgICAgICAgIGlmICghcmVzdWx0LmwgJiYgIXN0cmNt
cChqYXZhQ2xhc3NOYW1lLCAiamF2YS5sYW5nLlN0cmluZyIpKSB7Ci0jaWZkZWYgQ09OVkVSVF9O
VUxMX1RPX0VNUFRZX1NUUklORwotICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+aXNOdWxsKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgSk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKLSAgICAg
ICAgICAgICAgICAgICAgamNoYXIgYnVmWzJdOwotICAgICAgICAgICAgICAgICAgICBqb2JqZWN0
IGphdmFTdHJpbmcgPSBlbnYtPmZ1bmN0aW9ucy0+TmV3U3RyaW5nKGVudiwgYnVmLCAwKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LmwgPSBqYXZhU3RyaW5nOwotICAgICAgICAgICAgICAg
IH0gZWxzZQotI2Vsc2UKLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotI2Vu
ZGlmCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBVU3RyaW5nIHN0cmlu
Z1ZhbHVlID0gdmFsdWUudG9TdHJpbmcoZXhlYyk7Ci0gICAgICAgICAgICAgICAgICAgIEpOSUVu
diogZW52ID0gZ2V0Sk5JRW52KCk7Ci0gICAgICAgICAgICAgICAgICAgIGpvYmplY3QgamF2YVN0
cmluZyA9IGVudi0+ZnVuY3Rpb25zLT5OZXdTdHJpbmcoZW52LCAoY29uc3QgamNoYXIgKilzdHJp
bmdWYWx1ZS5kYXRhKCksIHN0cmluZ1ZhbHVlLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5sID0gamF2YVN0cmluZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKCFyZXN1bHQubCkKLSAgICAgICAgICAgICAgICBiemVybygmcmVzdWx0LCBzaXpl
b2YoanZhbHVlKSk7IC8vIEhhbmRsZSBpdCB0aGUgc2FtZSBhcyBhIHZvaWQgY2FzZQotICAgICAg
ICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBib29sZWFuX3R5cGU6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHJlc3VsdC56ID0gKGpib29sZWFuKXZhbHVlLnRvTnVtYmVyKGV4ZWMpOwot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBieXRlX3R5cGU6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHJlc3VsdC5iID0gKGpieXRlKXZhbHVlLnRvTnVtYmVyKGV4ZWMpOwot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBjaGFyX3R5cGU6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHJlc3VsdC5jID0gKGpjaGFyKXZhbHVlLnRvTnVtYmVyKGV4ZWMpOwot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBzaG9ydF90eXBlOgotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXN1bHQucyA9IChqc2hvcnQpdmFsdWUudG9OdW1iZXIoZXhlYyk7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIGludF90eXBlOgotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXN1bHQuaSA9IChqaW50KXZhbHVlLnRvTnVtYmVyKGV4ZWMpOwot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBsb25nX3R5cGU6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHJlc3VsdC5qID0gKGpsb25nKXZhbHVlLnRvTnVtYmVyKGV4ZWMpOwot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBmbG9hdF90eXBlOgotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXN1bHQuZiA9IChqZmxvYXQpdmFsdWUudG9OdW1iZXIoZXhlYyk7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIGRvdWJsZV90eXBlOgotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuZCA9IChqZG91YmxlKXZhbHVlLnRvTnVtYmVyKGV4
ZWMpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBpbnZhbGlkX3R5cGU6Ci0gICAgZGVmYXVsdDoKLSAgICBjYXNlIHZvaWRfdHlwZToKLSAg
ICAgICAgewotICAgICAgICAgICAgYnplcm8oJnJlc3VsdCwgc2l6ZW9mKGp2YWx1ZSkpOwotICAg
ICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19
ICAvLyBlbmQgb2YgbmFtZXNwYWNlIEJpbmRpbmdzCi0KLX0gLy8gZW5kIG9mIG5hbWVzcGFjZSBK
U0MKLQotI2VuZGlmIC8vIEVOQUJMRShNQUNfSkFWQV9CUklER0UpCkluZGV4OiBXZWJDb3JlL2Jy
aWRnZS9qbmkvanNjL2puaV91dGlsaXR5X3ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JyaWRnZS9qbmkvanNjL2puaV91dGlsaXR5X3ByaXZhdGUuaAkocmV2aXNpb24gNTMzMzEpCisr
KyBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL2puaV91dGlsaXR5X3ByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IDIwMDksIFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIF9KTklfVVRJTElU
WV9QUklWQVRFX0hfCi0jZGVmaW5lIF9KTklfVVRJTElUWV9QUklWQVRFX0hfCi0KLSNpZiBFTkFC
TEUoTUFDX0pBVkFfQlJJREdFKQotCi0jaW5jbHVkZSAiam5pX3V0aWxpdHkuaCIKLSNpbmNsdWRl
IDxydW50aW1lL0pTVmFsdWUuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEV4ZWNTdGF0
ZTsKLWNsYXNzIEpTT2JqZWN0OwotCi1uYW1lc3BhY2UgQmluZGluZ3MgewotCi1qdmFsdWUgY29u
dmVydFZhbHVlVG9KVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSk5JVHlwZSwgY29uc3QgY2hh
ciogamF2YUNsYXNzTmFtZSk7Ci1ib29sIGRpc3BhdGNoSk5JQ2FsbChFeGVjU3RhdGUqLCBjb25z
dCB2b2lkKiB0YXJnZXRBcHBsZXRWaWV3LCBqb2JqZWN0IG9iaiwgYm9vbCBpc1N0YXRpYywgSk5J
VHlwZSByZXR1cm5UeXBlLCBqbWV0aG9kSUQgbWV0aG9kSUQsIGp2YWx1ZSogYXJncywganZhbHVl
JiByZXN1bHQsIGNvbnN0IGNoYXIqIGNhbGxpbmdVUkwsIEpTVmFsdWUmIGV4Y2VwdGlvbkRlc2Ny
aXB0aW9uKTsKLQotfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKLQotfSAvLyBuYW1lc3BhY2UgSlND
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUFDX0pBVkFfQlJJREdFKQotCi0jZW5kaWYgLy8gX0pOSV9V
VElMSVRZX0hfCg==
</data>
<flag name="review"
          id="28983"
          type_id="1"
          status="+"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="29017"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>