<?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>98319</bug_id>
          
          <creation_ts>2012-10-03 16:30:23 -0700</creation_ts>
          <short_desc>Add a setting to enable plugin snapshotting</short_desc>
          <delta_ts>2012-10-05 10:53:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.8</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>734165</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-03 16:30:23 -0700</bug_when>
    <thetext>Add a new bit to Settings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734166</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-10-03 16:30:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/12426480&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734293</commentid>
    <comment_count>2</comment_count>
      <attachid>167017</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-03 18:41:18 -0700</bug_when>
    <thetext>Created attachment 167017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734314</commentid>
    <comment_count>3</comment_count>
      <attachid>167024</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-03 19:22:58 -0700</bug_when>
    <thetext>Created attachment 167024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735015</commentid>
    <comment_count>4</comment_count>
      <attachid>167175</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-04 14:31:17 -0700</bug_when>
    <thetext>Created attachment 167175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735292</commentid>
    <comment_count>5</comment_count>
      <attachid>167241</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-04 21:14:28 -0700</bug_when>
    <thetext>Created attachment 167241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735761</commentid>
    <comment_count>6</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-10-05 10:53:00 -0700</bug_when>
    <thetext>Committed r130523: &lt;http://trac.webkit.org/changeset/130523&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167017</attachid>
            <date>2012-10-03 18:41:18 -0700</date>
            <delta_ts>2012-10-03 19:22:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98319-20121003184024.patch</filename>
            <type>text/plain</type>
            <size>86932</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA2YWIwMGI1YTM2ODc2
NzdkMjBjMDQxNDM3ODQzNzVjNTljNGY0MC4uZjgwMDJhZWIzMjg4ZDEwMzc0YjMwNDI3YTRlZWI5
YmZmZjM5NWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEwLTAzICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIGVuYWJs
ZSBwbHVnaW4gYWN0aXZhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTgzMTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2NDgwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBi
aXQgZm9yIHRoaXMgcHJlZmVyZW5jZS4gQWxzbywgcmVmb3JtYXQgdGhlIGZpbGUgdG8gZml0IGN1
cnJlbnQgV2ViS2l0IHN0eWxlLgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOiBQcmVmZXJlbmNlIGlzIGZhbHNlIGJ5
IGRlZmF1bHQuCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOiBSZWZvcm1hdCBmaWxlLiBBZGRl
ZCBtX2NsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkIGJpdC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpzZXRDbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZCk6IFNldCB0aGUgYml0LgorICAg
ICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmNsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkKTogUmV0
dXJuIHRoZSBiaXQuCisKIDIwMTItMTAtMDMgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IERhdGFMaXN0IFVJIGZvciBpbnB1dCB0eXBlIHRp
bWUgb24gY2hyb21pdW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBiYzRkNmYwZWM3NjVjOWRkZWVmMTAy
OWVhYzAzYWRhNWFjMmU4MWUyLi5kZWZkZjczOTI1M2M2ZjliNGIwMTk1OTM1ZjEwZjFlMzUwYjgw
N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xICsxLDIwIEBACisyMDEyLTEwLTAzICBKb24gTGVl
ICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIGVuYWJsZSBw
bHVnaW4gYWN0aXZhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTgzMTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2NDgwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBjbGlja1Rv
U3RhcnRQbHVnaW5FbmFibGVkIHByZWZlcmVuY2UgdG8gV2ViS2l0IGNsaWVudHMuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOiBBZGQgV2ViS2l0Q2xpY2tU
b1N0YXJ0UGx1Z0luc0VuYWJsZWQga2V5LgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5j
ZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKTogU2V0dGluZyBp
cyB0dXJuZWQgb2ZmIGJ5IGRlZmF1bHQuCisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIGNsaWNr
VG9TdGFydFBsdWdJbnNFbmFibGVkXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldENs
aWNrVG9TdGFydFBsdWdJbnNFbmFibGVkOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6IFVwZGF0ZSBzZXR0aW5ncyBiYXNlZCBv
biBwcmVmZXJlbmNlLgorCiA9PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAxMi0xMC0wMiA9
PQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDRhNDNjMGFiOWJiYjAzMGI2M2U3N2MwMDQ2MDYxNTkwNmZjMzFhMDEu
LjY3OWJhYzExZDNkZDU4OWI5OTFkYWRjNmQ0YzRjYzgxMTQ1MDUzZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMiBAQAorMjAxMi0xMC0wMyAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgc2V0dGluZyB0byBlbmFibGUgcGx1Z2luIGFjdGl2YXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzE5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xMjQyNjQ4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgY2xpY2tUb1N0YXJ0UGx1Z2luRW5hYmxlZCBwcmVm
ZXJlbmNlIHRvIFdlYktpdCBjbGllbnRzLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldENsaWNrVG9TdGFy
dFBsdWdJbnNFbmFibGVkKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRDbGlja1RvU3RhcnRQ
bHVnSW5zRW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogVXBkYXRlIHByZWZlcmVuY2UgYmFz
ZWQgb24gc3RvcmUuCisKIDIwMTItMTAtMDMgIEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdIFtXSzJdIFVudXNlZCB2YXJpYWJsZSBpbiB3ZWJraXRX
ZWJWaWV3TG9hZENoYW5nZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggMzA2NjZjNTYx
OTgzMjM5YjhkOTg5ZDI4MzMxMGNmMmY2YjQ2YzNjOC4uYjkwMmExOWUxOTVlZWQ5Zjc4YWM1MzYy
Yjg2ODI2MjE3Y2JkMTk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTI5Myw2ICsy
OTMsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1fd2luZG93Rm9j
dXNSZXN0cmljdGVkKHRydWUpCiAgICAgLCBtX2RpYWdub3N0aWNMb2dnaW5nRW5hYmxlZChmYWxz
ZSkKICAgICAsIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKKyAg
ICAsIG1fY2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3NldEltYWdl
TG9hZGluZ1NldHRpbmdzVGltZXIodGhpcywgJlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5n
c1RpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1l
b3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91
dEluU2Vjb25kcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBjMThkZmQ3MzA2YjU5NTUy
ZmYzNDJiZDE3YzBmYzI1Y2E1N2Y3MzI0Li43NjVkYjk0MjY0NDA3NjE2ZGRhNGI1MGQ0NTExMDll
OGU0NDg3OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC00Myw4MDIgKzQzLDgwNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBQYWdlOworY2xhc3MgUGFnZTsKIAot
ICAgIGVudW0gRWRpdGFibGVMaW5rQmVoYXZpb3IgewotICAgICAgICBFZGl0YWJsZUxpbmtEZWZh
dWx0QmVoYXZpb3IsCi0gICAgICAgIEVkaXRhYmxlTGlua0Fsd2F5c0xpdmUsCi0gICAgICAgIEVk
aXRhYmxlTGlua09ubHlMaXZlV2l0aFNoaWZ0S2V5LAotICAgICAgICBFZGl0YWJsZUxpbmtMaXZl
V2hlbk5vdEZvY3VzZWQsCi0gICAgICAgIEVkaXRhYmxlTGlua05ldmVyTGl2ZQotICAgIH07Citl
bnVtIEVkaXRhYmxlTGlua0JlaGF2aW9yIHsKKyAgICBFZGl0YWJsZUxpbmtEZWZhdWx0QmVoYXZp
b3IsCisgICAgRWRpdGFibGVMaW5rQWx3YXlzTGl2ZSwKKyAgICBFZGl0YWJsZUxpbmtPbmx5TGl2
ZVdpdGhTaGlmdEtleSwKKyAgICBFZGl0YWJsZUxpbmtMaXZlV2hlbk5vdEZvY3VzZWQsCisgICAg
RWRpdGFibGVMaW5rTmV2ZXJMaXZlCit9OwogCi0gICAgZW51bSBUZXh0RGlyZWN0aW9uU3VibWVu
dUluY2x1c2lvbkJlaGF2aW9yIHsKLSAgICAgICAgVGV4dERpcmVjdGlvblN1Ym1lbnVOZXZlcklu
Y2x1ZGVkLAotICAgICAgICBUZXh0RGlyZWN0aW9uU3VibWVudUF1dG9tYXRpY2FsbHlJbmNsdWRl
ZCwKLSAgICAgICAgVGV4dERpcmVjdGlvblN1Ym1lbnVBbHdheXNJbmNsdWRlZAotICAgIH07Citl
bnVtIFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IgeworICAgIFRleHREaXJl
Y3Rpb25TdWJtZW51TmV2ZXJJbmNsdWRlZCwKKyAgICBUZXh0RGlyZWN0aW9uU3VibWVudUF1dG9t
YXRpY2FsbHlJbmNsdWRlZCwKKyAgICBUZXh0RGlyZWN0aW9uU3VibWVudUFsd2F5c0luY2x1ZGVk
Cit9OwogCi0gICAgLy8gVVNjcmlwdENvZGUgdXNlcyAtMSBhbmQgMCBmb3IgVVNjcmlwdEludmFs
aWRDb2RlIGFuZCBVU2NyaXB0Q29tbW9uLgotICAgIC8vIFdlIG5lZWQgdG8gdXNlIC0yIGFuZCAt
MyBmb3IgZW1wdHkgdmFsdWUgYW5kIGRlbGV0ZWQgdmFsdWUuCi0gICAgc3RydWN0IFVTY3JpcHRD
b2RlSGFzaFRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8aW50PiB7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKLSAgICAgICAgc3RhdGlj
IGludCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gLTI7IH0KLSAgICAgICAgc3RhdGljIHZvaWQgY29u
c3RydWN0RGVsZXRlZFZhbHVlKGludCYgc2xvdCkgeyBzbG90ID0gLTM7IH0KLSAgICAgICAgc3Rh
dGljIGJvb2wgaXNEZWxldGVkVmFsdWUoaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSAtMzsg
fQotICAgIH07CisvLyBVU2NyaXB0Q29kZSB1c2VzIC0xIGFuZCAwIGZvciBVU2NyaXB0SW52YWxp
ZENvZGUgYW5kIFVTY3JpcHRDb21tb24uCisvLyBXZSBuZWVkIHRvIHVzZSAtMiBhbmQgLTMgZm9y
IGVtcHR5IHZhbHVlIGFuZCBkZWxldGVkIHZhbHVlLgorc3RydWN0IFVTY3JpcHRDb2RlSGFzaFRy
YWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8aW50PiB7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIHN0YXRpYyBpbnQgZW1wdHlWYWx1ZSgp
IHsgcmV0dXJuIC0yOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKGlu
dCYgc2xvdCkgeyBzbG90ID0gLTM7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShp
bnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IC0zOyB9Cit9OwogCi0gICAgdHlwZWRlZiBIYXNo
TWFwPGludCwgQXRvbWljU3RyaW5nLCBEZWZhdWx0SGFzaDxpbnQ+OjpIYXNoLCBVU2NyaXB0Q29k
ZUhhc2hUcmFpdHM+IFNjcmlwdEZvbnRGYW1pbHlNYXA7Cit0eXBlZGVmIEhhc2hNYXA8aW50LCBB
dG9taWNTdHJpbmcsIERlZmF1bHRIYXNoPGludD46Okhhc2gsIFVTY3JpcHRDb2RlSGFzaFRyYWl0
cz4gU2NyaXB0Rm9udEZhbWlseU1hcDsKIAotICAgIGNsYXNzIFNldHRpbmdzIHsKLSAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2V0dGluZ3MpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFNldHRpbmdzPiBjcmVhdGUo
UGFnZSopOworY2xhc3MgU2V0dGluZ3MgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldHRp
bmdzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8U2V0dGluZ3M+IGNyZWF0ZShQYWdlKik7CiAKLSAgICAgICAgdm9pZCBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NP
TU1PTik7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RhbmRhcmRGb250RmFtaWx5KFVT
Y3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIHZvaWQgc2V0U3RhbmRhcmRG
b250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01N
T04pOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RhbmRhcmRGb250RmFtaWx5KFVTY3JpcHRD
b2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0Rml4ZWRGb250
RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04p
OwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29k
ZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICB2b2lkIHNldEZpeGVkRm9udEZhbWlseShj
b25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRf
Q09NTU9OKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldFNlcmlmRm9udEZhbWlseShjb25zdCBB
dG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKLSAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBzZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NP
TU1PTikgY29uc3Q7CisgICAgdm9pZCBzZXRTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3Ry
aW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBzZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7
CiAKLSAgICAgICAgdm9pZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmlu
ZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHNhbnNTZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikg
Y29uc3Q7CisgICAgdm9pZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmlu
ZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOworICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2Fuc1NlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25z
dDsKIAotICAgICAgICB2b2lkIHNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmlu
ZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNv
bnN0OworICAgIHZvaWQgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwg
VVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBj
dXJzaXZlRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAot
ICAgICAgICB2b2lkIHNldEZhbnRhc3lGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVT
Y3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0Owor
ICAgIHZvaWQgc2V0RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlw
dENvZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYW50YXN5
Rm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAotICAgICAg
ICB2b2lkIHNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3Jp
cHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHBp
Y3RvZ3JhcGhGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0Owor
ICAgIHZvaWQgc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNj
cmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwaWN0
b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAot
ICAgICAgICB2b2lkIHNldE1pbmltdW1Gb250U2l6ZShpbnQpOwotICAgICAgICBpbnQgbWluaW11
bUZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtRm9udFNpemU7IH0KKyAgICB2b2lk
IHNldE1pbmltdW1Gb250U2l6ZShpbnQpOworICAgIGludCBtaW5pbXVtRm9udFNpemUoKSBjb25z
dCB7IHJldHVybiBtX21pbmltdW1Gb250U2l6ZTsgfQogCi0gICAgICAgIHZvaWQgc2V0TWluaW11
bUxvZ2ljYWxGb250U2l6ZShpbnQpOwotICAgICAgICBpbnQgbWluaW11bUxvZ2ljYWxGb250U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bUxvZ2ljYWxGb250U2l6ZTsgfQorICAgIHZvaWQg
c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZShpbnQpOworICAgIGludCBtaW5pbXVtTG9naWNhbEZv
bnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtTG9naWNhbEZvbnRTaXplOyB9CiAKLSAg
ICAgICAgdm9pZCBzZXREZWZhdWx0Rm9udFNpemUoaW50KTsKLSAgICAgICAgaW50IGRlZmF1bHRG
b250U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdEZvbnRTaXplOyB9CisgICAgdm9pZCBz
ZXREZWZhdWx0Rm9udFNpemUoaW50KTsKKyAgICBpbnQgZGVmYXVsdEZvbnRTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWZhdWx0Rm9udFNpemU7IH0KIAotICAgICAgICB2b2lkIHNldERlZmF1bHRG
aXhlZEZvbnRTaXplKGludCk7Ci0gICAgICAgIGludCBkZWZhdWx0Rml4ZWRGb250U2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmYXVsdEZpeGVkRm9udFNpemU7IH0KKyAgICB2b2lkIHNldERlZmF1
bHRGaXhlZEZvbnRTaXplKGludCk7CisgICAgaW50IGRlZmF1bHRGaXhlZEZvbnRTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9kZWZhdWx0Rml4ZWRGb250U2l6ZTsgfQogCi0gICAgICAgIHZvaWQgc2V0
U2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgc2NyZWVu
Rm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3NjcmVlbkZvbnRTdWJz
dGl0dXRpb25FbmFibGVkOyB9CisgICAgdm9pZCBzZXRTY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5h
YmxlZChib29sKTsKKyAgICBib29sIHNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZDsgfQogCiAjaWYgRU5B
QkxFKFRFWFRfQVVUT1NJWklORykKLSAgICAgICAgdm9pZCBzZXRUZXh0QXV0b3NpemluZ0VuYWJs
ZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgdGV4dEF1dG9zaXppbmdFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV90ZXh0QXV0b3NpemluZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFRleHRBdXRvc2l6
aW5nRW5hYmxlZChib29sKTsKKyAgICBib29sIHRleHRBdXRvc2l6aW5nRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dEF1dG9zaXppbmdFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRU
ZXh0QXV0b3NpemluZ0ZvbnRTY2FsZUZhY3RvcihmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHRleHRB
dXRvc2l6aW5nRm9udFNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0QXV0b3Npemlu
Z0ZvbnRTY2FsZUZhY3RvcjsgfQorICAgIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdGb250U2NhbGVG
YWN0b3IoZmxvYXQpOworICAgIGZsb2F0IHRleHRBdXRvc2l6aW5nRm9udFNjYWxlRmFjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0QXV0b3NpemluZ0ZvbnRTY2FsZUZhY3RvcjsgfQogCi0gICAg
ICAgIC8vIE9ubHkgc2V0IGJ5IExheW91dCBUZXN0cywgYW5kIG9ubHkgdXNlZCBpZiB0ZXh0QXV0
b3NpemluZ0VuYWJsZWQoKSByZXR1cm5zIHRydWUuCi0gICAgICAgIHZvaWQgc2V0VGV4dEF1dG9z
aXppbmdXaW5kb3dTaXplT3ZlcnJpZGUoY29uc3QgSW50U2l6ZSYpOwotICAgICAgICBjb25zdCBJ
bnRTaXplJiB0ZXh0QXV0b3NpemluZ1dpbmRvd1NpemVPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dEF1dG9zaXppbmdXaW5kb3dTaXplT3ZlcnJpZGU7IH0KKyAgICAvLyBPbmx5IHNldCBi
eSBMYXlvdXQgVGVzdHMsIGFuZCBvbmx5IHVzZWQgaWYgdGV4dEF1dG9zaXppbmdFbmFibGVkKCkg
cmV0dXJucyB0cnVlLgorICAgIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdXaW5kb3dTaXplT3ZlcnJp
ZGUoY29uc3QgSW50U2l6ZSYpOworICAgIGNvbnN0IEludFNpemUmIHRleHRBdXRvc2l6aW5nV2lu
ZG93U2l6ZU92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0QXV0b3NpemluZ1dpbmRvd1Np
emVPdmVycmlkZTsgfQogI2VuZGlmCiAKLSAgICAgICAgLy8gVW5saWtlIGFyZUltYWdlc0VuYWJs
ZWQsIHRoaXMgb25seSBzdXBwcmVzc2VzIHRoZSBuZXR3b3JrIGxvYWQgb2YKLSAgICAgICAgLy8g
dGhlIGltYWdlIFVSTC4gIEEgY2FjaGVkIGltYWdlIHdpbGwgc3RpbGwgYmUgcmVuZGVyZWQgaWYg
cmVxdWVzdGVkLgotICAgICAgICB2b2lkIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29s
KTsKLSAgICAgICAgYm9vbCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseTsgfQorICAgIC8vIFVubGlrZSBhcmVJbWFnZXNF
bmFibGVkLCB0aGlzIG9ubHkgc3VwcHJlc3NlcyB0aGUgbmV0d29yayBsb2FkIG9mCisgICAgLy8g
dGhlIGltYWdlIFVSTC4gQSBjYWNoZWQgaW1hZ2Ugd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBpZiBy
ZXF1ZXN0ZWQuCisgICAgdm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9vbCk7Cisg
ICAgYm9vbCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRz
SW1hZ2VzQXV0b21hdGljYWxseTsgfQogCi0gICAgICAgIC8vIFRoaXMgc2V0dGluZyBvbmx5IGFm
ZmVjdHMgc2l0ZSBpY29uIGltYWdlIGxvYWRpbmcgaWYgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
IHNldHRpbmcgaXMgZmFsc2UgYW5kIHRoaXMgc2V0dGluZyBpcyB0cnVlLgotICAgICAgICAvLyBB
bGwgb3RoZXIgcGVybXV0YXRpb25zIHN0aWxsIGhlZWQgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
IHNldHRpbmcuCi0gICAgICAgIHZvaWQgc2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9h
ZGluZ1NldHRpbmcoYm9vbCk7Ci0gICAgICAgIGJvb2wgbG9hZHNTaXRlSWNvbnNJZ25vcmluZ0lt
YWdlTG9hZGluZ1NldHRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzU2l0ZUljb25zSWdub3Jp
bmdJbWFnZUxvYWRpbmdTZXR0aW5nOyB9CisgICAgLy8gVGhpcyBzZXR0aW5nIG9ubHkgYWZmZWN0
cyBzaXRlIGljb24gaW1hZ2UgbG9hZGluZyBpZiBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgc2V0
dGluZyBpcyBmYWxzZSBhbmQgdGhpcyBzZXR0aW5nIGlzIHRydWUuCisgICAgLy8gQWxsIG90aGVy
IHBlcm11dGF0aW9ucyBzdGlsbCBoZWVkIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSBzZXR0aW5n
LgorICAgIHZvaWQgc2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmco
Ym9vbCk7CisgICAgYm9vbCBsb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1Nl
dHRpbmc7IH0KIAotICAgICAgICB2b2lkIHNldFNjcmlwdEVuYWJsZWQoYm9vbCk7Ci0gICAgICAg
IC8vIEluc3RlYWQgb2YgY2FsbGluZyBpc1NjcmlwdEVuYWJsZWQgZGlyZWN0bHksIHBsZWFzZSBj
b25zaWRlciBjYWxsaW5nCi0gICAgICAgIC8vIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVT
Y3JpcHRzLCB3aGljaCB0YWtlcyB0aGluZ3MgbGlrZSB0aGUKLSAgICAgICAgLy8gSFRNTCBzYW5k
Ym94IGF0dHJpYnV0ZSBpbnRvIGFjY291bnQuCi0gICAgICAgIGJvb2wgaXNTY3JpcHRFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc1NjcmlwdEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFNjcmlw
dEVuYWJsZWQoYm9vbCk7CisgICAgLy8gSW5zdGVhZCBvZiBjYWxsaW5nIGlzU2NyaXB0RW5hYmxl
ZCBkaXJlY3RseSwgcGxlYXNlIGNvbnNpZGVyIGNhbGxpbmcKKyAgICAvLyBTY3JpcHRDb250cm9s
bGVyOjpjYW5FeGVjdXRlU2NyaXB0cywgd2hpY2ggdGFrZXMgdGhpbmdzIGxpa2UgdGhlCisgICAg
Ly8gSFRNTCBzYW5kYm94IGF0dHJpYnV0ZSBpbnRvIGFjY291bnQuCisgICAgYm9vbCBpc1Njcmlw
dEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2NyaXB0RW5hYmxlZDsgfQogCi0gICAgICAg
IHZvaWQgc2V0V2ViU2VjdXJpdHlFbmFibGVkKGJvb2wpOwotICAgICAgICBib29sIGlzV2ViU2Vj
dXJpdHlFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1dlYlNlY3VyaXR5RW5hYmxlZDsgfQor
ICAgIHZvaWQgc2V0V2ViU2VjdXJpdHlFbmFibGVkKGJvb2wpOworICAgIGJvb2wgaXNXZWJTZWN1
cml0eUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV2ViU2VjdXJpdHlFbmFibGVkOyB9CiAK
LSAgICAgICAgdm9pZCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKTsK
LSAgICAgICAgYm9vbCBhbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcygpIGNvbnN0IHsg
cmV0dXJuIG1fYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM7IH0KKyAgICB2b2lkIHNl
dEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOworICAgIGJvb2wgYWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93VW5pdmVy
c2FsQWNjZXNzRnJvbUZpbGVVUkxzOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHMoYm9vbCk7Ci0gICAgICAgIGJvb2wgYWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM7IH0K
KyAgICB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKTsKKyAgICBib29s
IGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzOyB9CiAKLSAgICAgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q2FuT3Bl
bldpbmRvd3NBdXRvbWF0aWNhbGx5KGJvb2wpOwotICAgICAgICBib29sIGphdmFTY3JpcHRDYW5P
cGVuV2luZG93c0F1dG9tYXRpY2FsbHkoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRDYW5P
cGVuV2luZG93c0F1dG9tYXRpY2FsbHk7IH0KKyAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHkoYm9vbCk7CisgICAgYm9vbCBqYXZhU2NyaXB0Q2FuT3Blbldp
bmRvd3NBdXRvbWF0aWNhbGx5KCkgY29uc3QgeyByZXR1cm4gbV9qYXZhU2NyaXB0Q2FuT3Blbldp
bmRvd3NBdXRvbWF0aWNhbGx5OyB9CiAKLSAgICAgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q2FuQWNj
ZXNzQ2xpcGJvYXJkKGJvb2wpOwotICAgICAgICBib29sIGphdmFTY3JpcHRDYW5BY2Nlc3NDbGlw
Ym9hcmQoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQ7IH0K
KyAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoYm9vbCk7CisgICAgYm9v
bCBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCkgY29uc3QgeyByZXR1cm4gbV9qYXZhU2Ny
aXB0Q2FuQWNjZXNzQ2xpcGJvYXJkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkOyB9CisgICAg
dm9pZCBzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBpc1NwYXRp
YWxOYXZpZ2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTcGF0aWFsTmF2aWdhdGlv
bkVuYWJsZWQ7IH0KIAotICAgICAgICB2b2lkIHNldEphdmFFbmFibGVkKGJvb2wpOwotICAgICAg
ICBib29sIGlzSmF2YUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSmF2YUVuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldEphdmFFbmFibGVkKGJvb2wpOworICAgIGJvb2wgaXNKYXZhRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNKYXZhRW5hYmxlZDsgfQogCi0gICAgICAgIC8vIFRoaXMgc2V0
dGluZ3MgaXMgb25seSBjb25zdWx0ZWQgaWYgaXNKYXZhRW5hYmxlZCgpIHJldHVybnMgdHJ1ZTsK
LSAgICAgICAgdm9pZCBzZXRKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoYm9vbCk7Ci0gICAgICAg
IGJvb2wgaXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoKSBjb25zdCB7IHJldHVybiBtX2lzSmF2
YUVuYWJsZWRGb3JMb2NhbEZpbGVzOyB9CisgICAgLy8gVGhpcyBzZXR0aW5ncyBpcyBvbmx5IGNv
bnN1bHRlZCBpZiBpc0phdmFFbmFibGVkKCkgcmV0dXJucyB0cnVlOworICAgIHZvaWQgc2V0SmF2
YUVuYWJsZWRGb3JMb2NhbEZpbGVzKGJvb2wpOworICAgIGJvb2wgaXNKYXZhRW5hYmxlZEZvckxv
Y2FsRmlsZXMoKSBjb25zdCB7IHJldHVybiBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzOyB9
CiAKLSAgICAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wpOwotICAgICAgICBib29sIGFy
ZUltYWdlc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUltYWdlc0VuYWJsZWQ7IH0KKyAg
ICB2b2lkIHNldEltYWdlc0VuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBhcmVJbWFnZXNFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9hcmVJbWFnZXNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBz
ZXRNZWRpYUVuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgaXNNZWRpYUVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzTWVkaWFFbmFibGVkOyB9CisgICAgdm9pZCBzZXRNZWRpYUVuYWJsZWQo
Ym9vbCk7CisgICAgYm9vbCBpc01lZGlhRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRp
YUVuYWJsZWQ7IH0KIAotICAgICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGJvb2wpOwotICAg
ICAgICBib29sIGFyZVBsdWdpbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcmVQbHVnaW5z
RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBh
cmVQbHVnaW5zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlUGx1Z2luc0VuYWJsZWQ7IH0K
IAotICAgICAgICB2b2lkIHNldExvY2FsU3RvcmFnZUVuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJv
b2wgbG9jYWxTdG9yYWdlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlRW5h
YmxlZDsgfQorICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChib29sKTsKKyAgICBib29s
IGxvY2FsU3RvcmFnZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZUVuYWJs
ZWQ7IH0KIAotICAgICAgICAvLyBBbGxvdyBjbGllbnRzIGNvbmNlcm5lZCB3aXRoIG1lbW9yeSBj
b25zdW1wdGlvbiB0byBzZXQgYSBxdW90YSBvbiBzZXNzaW9uIHN0b3JhZ2UKLSAgICAgICAgLy8g
c2luY2UgdGhlIG1lbW9yeSB1c2VkIHdvbid0IGJlIHJlbGVhc2VkIHVudGlsIHRoZSBQYWdlIGlz
IGRlc3Ryb3llZC4KLSAgICAgICAgLy8gRGVmYXVsdCBpcyBub1F1b3RhLgotICAgICAgICB2b2lk
IHNldFNlc3Npb25TdG9yYWdlUXVvdGEodW5zaWduZWQpOwotICAgICAgICB1bnNpZ25lZCBzZXNz
aW9uU3RvcmFnZVF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uU3RvcmFnZVF1b3RhOyB9
CisgICAgLy8gQWxsb3cgY2xpZW50cyBjb25jZXJuZWQgd2l0aCBtZW1vcnkgY29uc3VtcHRpb24g
dG8gc2V0IGEgcXVvdGEgb24gc2Vzc2lvbiBzdG9yYWdlCisgICAgLy8gc2luY2UgdGhlIG1lbW9y
eSB1c2VkIHdvbid0IGJlIHJlbGVhc2VkIHVudGlsIHRoZSBQYWdlIGlzIGRlc3Ryb3llZC4KKyAg
ICAvLyBEZWZhdWx0IGlzIG5vUXVvdGEuCisgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZVF1b3Rh
KHVuc2lnbmVkKTsKKyAgICB1bnNpZ25lZCBzZXNzaW9uU3RvcmFnZVF1b3RhKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uU3RvcmFnZVF1b3RhOyB9CiAKLSAgICAgICAgLy8gV2hlbiB0aGlzIG9w
dGlvbiBpcyBzZXQsIFdlYkNvcmUgd2lsbCBhdm9pZCBzdG9yaW5nIGFueSByZWNvcmQgb2YgYnJv
d3NpbmcgYWN0aXZpdHkKLSAgICAgICAgLy8gdGhhdCBtYXkgcGVyc2lzdCBvbiBkaXNrIG9yIHJl
bWFpbiBkaXNwbGF5ZWQgd2hlbiB0aGUgb3B0aW9uIGlzIHJlc2V0LgotICAgICAgICAvLyBUaGlz
IG9wdGlvbiBkb2VzIG5vdCBhZmZlY3QgdGhlIHN0b3JhZ2Ugb2Ygc3VjaCBpbmZvcm1hdGlvbiBp
biBSQU0uCi0gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJlc3BlY3QgdGhpcyBz
ZXR0aW5nOgotICAgICAgICAvLyAgLSBIVE1MNS9ET00gU3RvcmFnZQotICAgICAgICAvLyAgLSBJ
Y29uIERhdGFiYXNlCi0gICAgICAgIC8vICAtIENvbnNvbGUgTWVzc2FnZXMKLSAgICAgICAgLy8g
IC0gTWVtb3J5Q2FjaGUKLSAgICAgICAgLy8gIC0gQXBwbGljYXRpb24gQ2FjaGUKLSAgICAgICAg
Ly8gIC0gQmFjay9Gb3J3YXJkIFBhZ2UgSGlzdG9yeQotICAgICAgICAvLyAgLSBQYWdlIFNlYXJj
aCBSZXN1bHRzCi0gICAgICAgIC8vICAtIEhUVFAgQ29va2llcwotICAgICAgICAvLyAgLSBQbHVn
LWlucyAodGhhdCBzdXBwb3J0IE5QTlZwcml2YXRlTW9kZUJvb2wpCi0gICAgICAgIHZvaWQgc2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkOyB9Cisg
ICAgLy8gV2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQsIFdlYkNvcmUgd2lsbCBhdm9pZCBzdG9yaW5n
IGFueSByZWNvcmQgb2YgYnJvd3NpbmcgYWN0aXZpdHkKKyAgICAvLyB0aGF0IG1heSBwZXJzaXN0
IG9uIGRpc2sgb3IgcmVtYWluIGRpc3BsYXllZCB3aGVuIHRoZSBvcHRpb24gaXMgcmVzZXQuCisg
ICAgLy8gVGhpcyBvcHRpb24gZG9lcyBub3QgYWZmZWN0IHRoZSBzdG9yYWdlIG9mIHN1Y2ggaW5m
b3JtYXRpb24gaW4gUkFNLgorICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJlc3BlY3Qg
dGhpcyBzZXR0aW5nOgorICAgIC8vICAtIEhUTUw1L0RPTSBTdG9yYWdlCisgICAgLy8gIC0gSWNv
biBEYXRhYmFzZQorICAgIC8vICAtIENvbnNvbGUgTWVzc2FnZXMKKyAgICAvLyAgLSBNZW1vcnlD
YWNoZQorICAgIC8vICAtIEFwcGxpY2F0aW9uIENhY2hlCisgICAgLy8gIC0gQmFjay9Gb3J3YXJk
IFBhZ2UgSGlzdG9yeQorICAgIC8vICAtIFBhZ2UgU2VhcmNoIFJlc3VsdHMKKyAgICAvLyAgLSBI
VFRQIENvb2tpZXMKKyAgICAvLyAgLSBQbHVnLWlucyAodGhhdCBzdXBwb3J0IE5QTlZwcml2YXRl
TW9kZUJvb2wpCisgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOworICAg
IGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQo
Ym9vbCk7Ci0gICAgICAgIGJvb2wgY2FyZXRCcm93c2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2NhcmV0QnJvd3NpbmdFbmFibGVkOyB9CisgICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5h
YmxlZChib29sKTsKKyAgICBib29sIGNhcmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9jYXJldEJyb3dzaW5nRW5hYmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0RGVmYXVsdFRl
eHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZGVm
YXVsdFRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRUZXh0RW5jb2Rp
bmdOYW1lOyB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldFVzZXNFbmNvZGluZ0RldGVjdG9y
KGJvb2wpOwotICAgICAgICBib29sIHVzZXNFbmNvZGluZ0RldGVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV91c2VzRW5jb2RpbmdEZXRlY3RvcjsgfQorICAgIHZvaWQgc2V0RGVmYXVsdFRleHRFbmNv
ZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CisgICAgY29uc3QgU3RyaW5nJiBkZWZhdWx0VGV4dEVu
Y29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFRleHRFbmNvZGluZ05hbWU7IH0K
KyAgICAKKyAgICB2b2lkIHNldFVzZXNFbmNvZGluZ0RldGVjdG9yKGJvb2wpOworICAgIGJvb2wg
dXNlc0VuY29kaW5nRGV0ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFbmNvZGluZ0RldGVj
dG9yOyB9CiAKLSAgICAgICAgdm9pZCBzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoYm9vbCk7Ci0g
ICAgICAgIGJvb2wgZG5zUHJlZmV0Y2hpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kbnNQ
cmVmZXRjaGluZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEROU1ByZWZldGNoaW5nRW5hYmxlZChi
b29sKTsKKyAgICBib29sIGRuc1ByZWZldGNoaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG5zUHJlZmV0Y2hpbmdFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKGNvbnN0IEtVUkwmKTsKLSAgICAgICAgY29uc3QgS1VSTCYgdXNlclN0eWxlU2hl
ZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsgfQor
ICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBLVVJMJik7CisgICAgY29u
c3QgS1VSTCYgdXNlclN0eWxlU2hlZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclN0
eWxlU2hlZXRMb2NhdGlvbjsgfQogCi0gICAgICAgIHZvaWQgc2V0Rml4ZWRFbGVtZW50c0xheW91
dFJlbGF0aXZlVG9GcmFtZShib29sKTsKLSAgICAgICAgYm9vbCBmaXhlZEVsZW1lbnRzTGF5b3V0
UmVsYXRpdmVUb0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9maXhlZEVsZW1lbnRzTGF5b3V0UmVs
YXRpdmVUb0ZyYW1lOyB9CisgICAgdm9pZCBzZXRGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVU
b0ZyYW1lKGJvb2wpOworICAgIGJvb2wgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZTsg
fQogCi0gICAgICAgIHZvaWQgc2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyhib29sKTsKLSAgICAg
ICAgYm9vbCBzaG91bGRQcmludEJhY2tncm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRQ
cmludEJhY2tncm91bmRzOyB9CisgICAgdm9pZCBzZXRTaG91bGRQcmludEJhY2tncm91bmRzKGJv
b2wpOworICAgIGJvb2wgc2hvdWxkUHJpbnRCYWNrZ3JvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hvdWxkUHJpbnRCYWNrZ3JvdW5kczsgfQogCi0gICAgICAgIHZvaWQgc2V0VGV4dEFyZWFzQXJl
UmVzaXphYmxlKGJvb2wpOwotICAgICAgICBib29sIHRleHRBcmVhc0FyZVJlc2l6YWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dEFyZWFzQXJlUmVzaXphYmxlOyB9CisgICAgdm9pZCBzZXRUZXh0
QXJlYXNBcmVSZXNpemFibGUoYm9vbCk7CisgICAgYm9vbCB0ZXh0QXJlYXNBcmVSZXNpemFibGUo
KSBjb25zdCB7IHJldHVybiBtX3RleHRBcmVhc0FyZVJlc2l6YWJsZTsgfQogCi0gICAgICAgIHZv
aWQgc2V0RWRpdGFibGVMaW5rQmVoYXZpb3IoRWRpdGFibGVMaW5rQmVoYXZpb3IpOwotICAgICAg
ICBFZGl0YWJsZUxpbmtCZWhhdmlvciBlZGl0YWJsZUxpbmtCZWhhdmlvcigpIGNvbnN0IHsgcmV0
dXJuIG1fZWRpdGFibGVMaW5rQmVoYXZpb3I7IH0KKyAgICB2b2lkIHNldEVkaXRhYmxlTGlua0Jl
aGF2aW9yKEVkaXRhYmxlTGlua0JlaGF2aW9yKTsKKyAgICBFZGl0YWJsZUxpbmtCZWhhdmlvciBl
ZGl0YWJsZUxpbmtCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdGFibGVMaW5rQmVoYXZp
b3I7IH0KIAotICAgICAgICB2b2lkIHNldFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVo
YXZpb3IoVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcik7Ci0gICAgICAgIFRl
eHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IgdGV4dERpcmVjdGlvblN1Ym1lbnVJ
bmNsdXNpb25CZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dERpcmVjdGlvblN1Ym1lbnVJ
bmNsdXNpb25CZWhhdmlvcjsgfQorICAgIHZvaWQgc2V0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNs
dXNpb25CZWhhdmlvcihUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKTsKKyAg
ICBUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yIHRleHREaXJlY3Rpb25TdWJt
ZW51SW5jbHVzaW9uQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3RleHREaXJlY3Rpb25TdWJt
ZW51SW5jbHVzaW9uQmVoYXZpb3I7IH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkK
LSAgICAgICAgdm9pZCBzZXRVc2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZShi
b29sKTsKLSAgICAgICAgYm9vbCB1c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1v
ZGU7IH0KKyAgICB2b2lkIHNldFVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2Rl
KGJvb2wpOworICAgIGJvb2wgdXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUo
KSBjb25zdCB7IHJldHVybiBtX3VzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2Rl
OyB9CiAjZW5kaWYKLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0TmVlZHNBZG9iZUZyYW1lUmVs
b2FkaW5nUXVpcmsoYm9vbCk7Ci0gICAgICAgIGJvb2wgbmVlZHNBY3JvYmF0RnJhbWVSZWxvYWRp
bmdRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcms7
IH0KLQotICAgICAgICB2b2lkIHNldE5lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVp
cmtzKGJvb2wpOwotICAgICAgICBib29sIG5lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9u
UXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlv
blF1aXJrczsgfQotCi0gICAgICAgIHZvaWQgc2V0VHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxl
c2hlZXQoYm9vbCk7Ci0gICAgICAgIGJvb2wgdHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxlc2hl
ZXQoKSBjb25zdCB7IHJldHVybiBtX3RyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0OyB9
Ci0KLSAgICAgICAgdm9pZCBzZXROZWVkc0xlb3BhcmRNYWlsUXVpcmtzKGJvb2wpOwotICAgICAg
ICBib29sIG5lZWRzTGVvcGFyZE1haWxRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX25lZWRzTGVv
cGFyZE1haWxRdWlya3M7IH0KLQotICAgICAgICB2b2lkIHNldERPTVBhc3RlQWxsb3dlZChib29s
KTsKLSAgICAgICAgYm9vbCBpc0RPTVBhc3RlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNE
T01QYXN0ZUFsbG93ZWQ7IH0KLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lkIHNldERlZmF1
bHRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7IC8vIEludGVydmFsIHNwZWNpZmllZCBpbiBz
ZWNvbmRzLgotICAgICAgICBzdGF0aWMgZG91YmxlIGRlZmF1bHRNaW5ET01UaW1lckludGVydmFs
KCk7Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91Ymxl
KTsgLy8gUGVyLXBhZ2U7IGluaXRpYWxpemVkIHRvIGRlZmF1bHQgdmFsdWUuCi0gICAgICAgIGRv
dWJsZSBtaW5ET01UaW1lckludGVydmFsKCk7Ci0KLSAgICAgICAgdm9pZCBzZXRVc2VzUGFnZUNh
Y2hlKGJvb2wpOwotICAgICAgICBib29sIHVzZXNQYWdlQ2FjaGUoKSBjb25zdCB7IHJldHVybiBt
X3VzZXNQYWdlQ2FjaGU7IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0UGFnZUNhY2hlU3Vw
cG9ydHNQbHVnaW5zKGJvb2wgcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKSB7IG1fcGFnZUNhY2hl
U3VwcG9ydHNQbHVnaW5zID0gcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zOyB9Ci0gICAgICAgIGJv
b2wgcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQ2FjaGVT
dXBwb3J0c1BsdWdpbnM7IH0KLQotICAgICAgICB2b2lkIHNldFNocmlua3NTdGFuZGFsb25lSW1h
Z2VzVG9GaXQoYm9vbCk7Ci0gICAgICAgIGJvb2wgc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0Zp
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdDsgfQotCi0g
ICAgICAgIHZvaWQgc2V0U2hvd3NVUkxzSW5Ub29sVGlwcyhib29sKTsKLSAgICAgICAgYm9vbCBz
aG93c1VSTHNJblRvb2xUaXBzKCkgY29uc3QgeyByZXR1cm4gbV9zaG93c1VSTHNJblRvb2xUaXBz
OyB9Ci0KLSAgICAgICAgdm9pZCBzZXRTaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dChib29s
KTsKLSAgICAgICAgYm9vbCBzaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHQ7IH0KLQotICAgICAgICB2b2lk
IHNldEZUUERpcmVjdG9yeVRlbXBsYXRlUGF0aChjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgY29u
c3QgU3RyaW5nJiBmdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Z0
cERpcmVjdG9yeVRlbXBsYXRlUGF0aDsgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRGb3Jj
ZUZUUERpcmVjdG9yeUxpc3RpbmdzKGJvb2wpOwotICAgICAgICBib29sIGZvcmNlRlRQRGlyZWN0
b3J5TGlzdGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlRlRQRGlyZWN0b3J5TGlzdGluZ3M7
IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29s
KTsKLSAgICAgICAgYm9vbCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9kZXZlbG9wZXJFeHRyYXNFbmFibGVkOyB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldEph
dmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgamF2YVNjcmlw
dEV4cGVyaW1lbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlwdEV4cGVyaW1l
bnRzRW5hYmxlZDsgfQotCi0gICAgICAgIHZvaWQgc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChi
b29sKTsKLSAgICAgICAgYm9vbCBmcmFtZUZsYXR0ZW5pbmdFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9mcmFtZUZsYXR0ZW5pbmdFbmFibGVkOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRBdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBhdXRob3JBbmRVc2VyU3R5
bGVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQ7
IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0Rm9udFJlbmRlcmluZ01vZGUoRm9udFJlbmRl
cmluZ01vZGUgbW9kZSk7Ci0gICAgICAgIEZvbnRSZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJpbmdN
b2RlKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhi
b29sKTsKLSAgICAgICAgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNTaXRlU3BlY2lmaWNRdWlya3M7IH0KKyAgICAKKyAgICB2b2lkIHNldE5lZWRz
QWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrKGJvb2wpOworICAgIGJvb2wgbmVlZHNBY3JvYmF0RnJh
bWVSZWxvYWRpbmdRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBZG9iZUZyYW1lUmVsb2Fk
aW5nUXVpcms7IH0KKworICAgIHZvaWQgc2V0TmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRp
b25RdWlya3MoYm9vbCk7CisgICAgYm9vbCBuZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlv
blF1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRp
b25RdWlya3M7IH0KKworICAgIHZvaWQgc2V0VHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxlc2hl
ZXQoYm9vbCk7CisgICAgYm9vbCB0cmVhdHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldCgpIGNv
bnN0IHsgcmV0dXJuIG1fdHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxlc2hlZXQ7IH0KKworICAg
IHZvaWQgc2V0TmVlZHNMZW9wYXJkTWFpbFF1aXJrcyhib29sKTsKKyAgICBib29sIG5lZWRzTGVv
cGFyZE1haWxRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX25lZWRzTGVvcGFyZE1haWxRdWlya3M7
IH0KKworICAgIHZvaWQgc2V0RE9NUGFzdGVBbGxvd2VkKGJvb2wpOworICAgIGJvb2wgaXNET01Q
YXN0ZUFsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRE9NUGFzdGVBbGxvd2VkOyB9CisgICAg
CisgICAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsg
Ly8gSW50ZXJ2YWwgc3BlY2lmaWVkIGluIHNlY29uZHMuCisgICAgc3RhdGljIGRvdWJsZSBkZWZh
dWx0TWluRE9NVGltZXJJbnRlcnZhbCgpOworICAgIAorICAgIHZvaWQgc2V0TWluRE9NVGltZXJJ
bnRlcnZhbChkb3VibGUpOyAvLyBQZXItcGFnZTsgaW5pdGlhbGl6ZWQgdG8gZGVmYXVsdCB2YWx1
ZS4KKyAgICBkb3VibGUgbWluRE9NVGltZXJJbnRlcnZhbCgpOworCisgICAgdm9pZCBzZXRVc2Vz
UGFnZUNhY2hlKGJvb2wpOworICAgIGJvb2wgdXNlc1BhZ2VDYWNoZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlc1BhZ2VDYWNoZTsgfQorICAgIAorICAgIHZvaWQgc2V0UGFnZUNhY2hlU3VwcG9ydHNQ
bHVnaW5zKGJvb2wgcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKSB7IG1fcGFnZUNhY2hlU3VwcG9y
dHNQbHVnaW5zID0gcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zOyB9CisgICAgYm9vbCBwYWdlQ2Fj
aGVTdXBwb3J0c1BsdWdpbnMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDYWNoZVN1cHBvcnRzUGx1
Z2luczsgfQorCisgICAgdm9pZCBzZXRTaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0KGJvb2wp
OworICAgIGJvb2wgc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdDsgfQorCisgICAgdm9pZCBzZXRTaG93c1VS
THNJblRvb2xUaXBzKGJvb2wpOworICAgIGJvb2wgc2hvd3NVUkxzSW5Ub29sVGlwcygpIGNvbnN0
IHsgcmV0dXJuIG1fc2hvd3NVUkxzSW5Ub29sVGlwczsgfQorCisgICAgdm9pZCBzZXRTaG93c1Rv
b2xUaXBPdmVyVHJ1bmNhdGVkVGV4dChib29sKTsKKyAgICBib29sIHNob3dzVG9vbFRpcE92ZXJU
cnVuY2F0ZWRUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVk
VGV4dDsgfQorCisgICAgdm9pZCBzZXRGVFBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoY29uc3QgU3Ry
aW5nJik7CisgICAgY29uc3QgU3RyaW5nJiBmdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSBjb25z
dCB7IHJldHVybiBtX2Z0cERpcmVjdG9yeVRlbXBsYXRlUGF0aDsgfQorICAgIAorICAgIHZvaWQg
c2V0Rm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5ncyhib29sKTsKKyAgICBib29sIGZvcmNlRlRQRGly
ZWN0b3J5TGlzdGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlRlRQRGlyZWN0b3J5TGlzdGlu
Z3M7IH0KKyAgICAKKyAgICB2b2lkIHNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCk7Cisg
ICAgYm9vbCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZlbG9w
ZXJFeHRyYXNFbmFibGVkOyB9CisgICAgCisgICAgdm9pZCBzZXRKYXZhU2NyaXB0RXhwZXJpbWVu
dHNFbmFibGVkKGJvb2wpOworICAgIGJvb2wgamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZDsgfQorCisgICAg
dm9pZCBzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGJvb2wpOworICAgIGJvb2wgZnJhbWVGbGF0
dGVuaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVGbGF0dGVuaW5nRW5hYmxlZDsg
fQorCisgICAgdm9pZCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sKTsKKyAgICBi
b29sIGF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZDsgfQorICAgIAorICAgIHZvaWQgc2V0Rm9udFJlbmRlcmluZ01v
ZGUoRm9udFJlbmRlcmluZ01vZGUpOworICAgIEZvbnRSZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJp
bmdNb2RlKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKGJv
b2wpOworICAgIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdCB7IHJldHVybiBt
X25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzOyB9CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpCi0g
ICAgICAgIHZvaWQgc2V0V2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWQoYm9vbCk7Ci0gICAgICAg
IGJvb2wgd2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3dlYkFy
Y2hpdmVEZWJ1Z01vZGVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRXZWJBcmNoaXZlRGVidWdNb2Rl
RW5hYmxlZChib29sKTsKKyAgICBib29sIHdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV93ZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZDsgfQogI2VuZGlmCiAKLSAg
ICAgICAgdm9pZCBzZXRMb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKGJvb2wpOwotICAg
ICAgICBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2xvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldExvY2Fs
RmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBsb2NhbEZpbGVDb250
ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEZpbGVDb250ZW50U25p
ZmZpbmdFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGgoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0
YWJhc2VQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7IH0K
KyAgICB2b2lkIHNldExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmKTsKKyAg
ICBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBcHBsaWNh
dGlvbkNocm9tZU1vZGUoYm9vbCk7Ci0gICAgICAgIGJvb2wgaW5BcHBsaWNhdGlvbkNocm9tZU1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2luQXBwbGljYXRpb25DaHJvbWVNb2RlOyB9CisgICAgdm9p
ZCBzZXRBcHBsaWNhdGlvbkNocm9tZU1vZGUoYm9vbCk7CisgICAgYm9vbCBpbkFwcGxpY2F0aW9u
Q2hyb21lTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5BcHBsaWNhdGlvbkNocm9tZU1vZGU7IH0K
IAotICAgICAgICB2b2lkIHNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChib29s
KTsKLSAgICAgICAgYm9vbCBvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX29mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsgfQotICAgICAg
ICAKLSAgICAgICAgdm9pZCBzZXRFbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZShib29s
KTsKLSAgICAgICAgYm9vbCBlbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSgpIHsgcmV0
dXJuIG1fZW5mb3JjZUNTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGU7IH0KKyAgICB2b2lkIHNldE9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChib29sKTsKKyAgICBib29sIG9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb2ZmbGluZVdlYkFw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkOyB9CisgICAgCisgICAgdm9pZCBzZXRFbmZvcmNlQ1NTTUlN
RVR5cGVJbk5vUXVpcmtzTW9kZShib29sKTsKKyAgICBib29sIGVuZm9yY2VDU1NNSU1FVHlwZUlu
Tm9RdWlya3NNb2RlKCkgeyByZXR1cm4gbV9lbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9k
ZTsgfQogCi0gICAgICAgIHZvaWQgc2V0TWF4aW11bURlY29kZWRJbWFnZVNpemUoc2l6ZV90IHNp
emUpIHsgbV9tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZSA9IHNpemU7IH0KLSAgICAgICAgc2l6ZV90
IG1heGltdW1EZWNvZGVkSW1hZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtRGVjb2Rl
ZEltYWdlU2l6ZTsgfQorICAgIHZvaWQgc2V0TWF4aW11bURlY29kZWRJbWFnZVNpemUoc2l6ZV90
IHNpemUpIHsgbV9tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZSA9IHNpemU7IH0KKyAgICBzaXplX3Qg
bWF4aW11bURlY29kZWRJbWFnZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1EZWNvZGVk
SW1hZ2VTaXplOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93
cyhib29sKTsKLSAgICAgICAgYm9vbCBhbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cygpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3M7IH0KKyAgICB2b2lkIHNldEFs
bG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKGJvb2wpOworICAgIGJvb2wgYWxsb3dTY3JpcHRzVG9D
bG9zZVdpbmRvd3MoKSBjb25zdCB7IHJldHVybiBtX2FsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dz
OyB9CiAKLSAgICAgICAgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3JUeXBlKEVkaXRpbmdCZWhhdmlv
clR5cGUgYmVoYXZpb3IpIHsgbV9lZGl0aW5nQmVoYXZpb3JUeXBlID0gYmVoYXZpb3I7IH0KLSAg
ICAgICAgRWRpdGluZ0JlaGF2aW9yVHlwZSBlZGl0aW5nQmVoYXZpb3JUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RWRpdGluZ0JlaGF2aW9yVHlwZT4obV9lZGl0aW5nQmVoYXZpb3JU
eXBlKTsgfQorICAgIHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9yVHlwZShFZGl0aW5nQmVoYXZpb3JU
eXBlIGJlaGF2aW9yKSB7IG1fZWRpdGluZ0JlaGF2aW9yVHlwZSA9IGJlaGF2aW9yOyB9CisgICAg
RWRpdGluZ0JlaGF2aW9yVHlwZSBlZGl0aW5nQmVoYXZpb3JUeXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RWRpdGluZ0JlaGF2aW9yVHlwZT4obV9lZGl0aW5nQmVoYXZpb3JUeXBlKTsg
fQogCi0gICAgICAgIHZvaWQgc2V0RG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKGJvb2wp
OwotICAgICAgICBib29sIGRvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRE
b3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBkb3dubG9hZGFi
bGVCaW5hcnlGb250c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2FkYWJsZUJpbmFy
eUZvbnRzRW5hYmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9v
bCk7Ci0gICAgICAgIGJvb2wgeHNzQXVkaXRvckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3hz
c0F1ZGl0b3JFbmFibGVkOyB9CisgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sKTsK
KyAgICBib29sIHhzc0F1ZGl0b3JFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV94c3NBdWRpdG9y
RW5hYmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2lu
Zyhib29sKTsKLSAgICAgICAgYm9vbCBjYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKCkgY29u
c3QgeyByZXR1cm4gbV9jYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nOyB9CisgICAgdm9pZCBz
ZXRDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKGJvb2wpOworICAgIGJvb2wgY2FudmFzVXNl
c0FjY2VsZXJhdGVkRHJhd2luZygpIGNvbnN0IHsgcmV0dXJuIG1fY2FudmFzVXNlc0FjY2VsZXJh
dGVkRHJhd2luZzsgfQogCi0gICAgICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpIHsgbV9hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkID0gZW5hYmxlZDsg
fQotICAgICAgICBib29sIGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2FjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVk
RHJhd2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxl
ZCA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2FjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQ7IH0KIAotICAgICAgICB2b2lk
IHNldEFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fYWNjZWxlcmF0
ZWRGaWx0ZXJzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBhY2NlbGVyYXRlZEZp
bHRlcnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVk
OyB9CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKGJvb2wgZW5hYmxlZCkg
eyBtX2FjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCBhY2Nl
bGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZEZpbHRl
cnNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRDU1NDdXN0b21GaWx0ZXJFbmFibGVkKGJv
b2wgZW5hYmxlZCkgeyBtX2lzQ1NTQ3VzdG9tRmlsdGVyRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAg
ICAgICAgYm9vbCBpc0NTU0N1c3RvbUZpbHRlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q1NTQ3VzdG9tRmlsdGVyRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q1NTQ3VzdG9tRmlsdGVyRW5h
YmxlZChib29sIGVuYWJsZWQpIHsgbV9pc0NTU0N1c3RvbUZpbHRlckVuYWJsZWQgPSBlbmFibGVk
OyB9CisgICAgYm9vbCBpc0NTU0N1c3RvbUZpbHRlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzQ1NTQ3VzdG9tRmlsdGVyRW5hYmxlZDsgfQogCiAjaWYgRU5BQkxFKENTU19TVElDS1lfUE9T
SVRJT04pCi0gICAgICAgIHZvaWQgc2V0Q1NTU3RpY2t5UG9zaXRpb25FbmFibGVkKGJvb2wgZW5h
YmxlZCkgeyBtX2Nzc1N0aWNreVBvc2l0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAg
Ym9vbCBjc3NTdGlja3lQb3NpdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Nzc1N0aWNr
eVBvc2l0aW9uRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q1NTU3RpY2t5UG9zaXRpb25FbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX2Nzc1N0aWNreVBvc2l0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7IH0K
KyAgICBib29sIGNzc1N0aWNreVBvc2l0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3Nz
U3RpY2t5UG9zaXRpb25FbmFibGVkOyB9CiAjZWxzZQotICAgICAgICB2b2lkIHNldENTU1N0aWNr
eVBvc2l0aW9uRW5hYmxlZChib29sKSB7IH0KLSAgICAgICAgYm9vbCBjc3NTdGlja3lQb3NpdGlv
bkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0Q1NTU3RpY2t5
UG9zaXRpb25FbmFibGVkKGJvb2wpIHsgfQorICAgIGJvb2wgY3NzU3RpY2t5UG9zaXRpb25FbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19S
RUdJT05TKQotICAgICAgICB2b2lkIHNldENTU1JlZ2lvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkg
eyBtX2Nzc1JlZ2lvbnNFbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBib29sIGNzc1JlZ2lv
bnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jc3NSZWdpb25zRW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0Q1NTUmVnaW9uc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fY3NzUmVnaW9uc0VuYWJs
ZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCBjc3NSZWdpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY3NzUmVnaW9uc0VuYWJsZWQ7IH0KICNlbHNlCi0gICAgICAgIHZvaWQgc2V0Q1NTUmVn
aW9uc0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAgICAgIGJvb2wgY3NzUmVnaW9uc0VuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0Q1NTUmVnaW9uc0VuYWJsZWQoYm9v
bCkgeyB9CisgICAgYm9vbCBjc3NSZWdpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQotICAgICAgICB2b2lkIHNl
dENTU1ZhcmlhYmxlc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fY3NzVmFyaWFibGVzRW5hYmxl
ZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBjc3NWYXJpYWJsZXNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9jc3NWYXJpYWJsZXNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRDU1NWYXJpYWJs
ZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2Nzc1ZhcmlhYmxlc0VuYWJsZWQgPSBlbmFibGVk
OyB9CisgICAgYm9vbCBjc3NWYXJpYWJsZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jc3NW
YXJpYWJsZXNFbmFibGVkOyB9CiAjZWxzZQotICAgICAgICB2b2lkIHNldENTU1ZhcmlhYmxlc0Vu
YWJsZWQoYm9vbCkgeyB9Ci0gICAgICAgIGJvb2wgY3NzVmFyaWFibGVzRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRDU1NWYXJpYWJsZXNFbmFibGVkKGJvb2wp
IHsgfQorICAgIGJvb2wgY3NzVmFyaWFibGVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAjZW5kaWYKIAotICAgICAgICB2b2lkIHNldFJlZ2lvbkJhc2VkQ29sdW1uc0VuYWJsZWQo
Ym9vbCBlbmFibGVkKSB7IG1fcmVnaW9uQmFzZWRDb2x1bW5zRW5hYmxlZCA9IGVuYWJsZWQ7IH0K
LSAgICAgICAgYm9vbCByZWdpb25CYXNlZENvbHVtbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9yZWdpb25CYXNlZENvbHVtbnNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRSZWdpb25CYXNlZENv
bHVtbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3JlZ2lvbkJhc2VkQ29sdW1uc0VuYWJsZWQg
PSBlbmFibGVkOyB9CisgICAgYm9vbCByZWdpb25CYXNlZENvbHVtbnNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpb25CYXNlZENvbHVtbnNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBz
ZXRDU1NHcmlkTGF5b3V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9jc3NHcmlkTGF5b3V0RW5h
YmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBjc3NHcmlkTGF5b3V0RW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY3NzR3JpZExheW91dEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldENTU0dy
aWRMYXlvdXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2Nzc0dyaWRMYXlvdXRFbmFibGVkID0g
ZW5hYmxlZDsgfQorICAgIGJvb2wgY3NzR3JpZExheW91dEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2Nzc0dyaWRMYXlvdXRFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBv
c2l0aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wp
OworICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChib29sKTsKLSAgICAg
ICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJs
ZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNF
bmFibGVkKGJvb2wpOworICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNm
b3Jtc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3Iz
RFRyYW5zZm9ybXNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yVmlkZW9FbmFibGVkKGJvb2wpOwotICAgICAgICBib29sIGFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3JWaWRlb0VuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0
aW5nRm9yVmlkZW9FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZENvbXBvc2l0
aW5nRm9yVmlkZW9FbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yUGx1Z2luc0VuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yUGx1Z2luc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdGb3JQbHVnaW5zRW5hYmxlZChib29sKTsKKyAgICBib29sIGFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdGb3JQbHVnaW5zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRm9yQ2FudmFzRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBh
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yQ2FudmFzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckNhbnZhc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JDYW52YXNFbmFibGVkKGJvb2wpOworICAgIGJvb2wgYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckNhbnZhc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JDYW52YXNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yQW5pbWF0aW9uRW5hYmxlZChib29sKTsKLSAgICAg
ICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yQW5pbWF0aW9uRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckFuaW1hdGlvbkVuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JBbmltYXRpb25FbmFibGVkKGJv
b2wpOworICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckFuaW1hdGlvbkVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JBbmltYXRpb25FbmFi
bGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQ
b3NpdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zv
ckZpeGVkUG9zaXRpb25FbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBib29sIGFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVkOyB9CisgICAgdm9p
ZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVk
ID0gZW5hYmxlZDsgfQorICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9z
aXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9y
Rml4ZWRQb3NpdGlvbkVuYWJsZWQ7IH0KIAotICAgICAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWVzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZyYW1lc0VuYWJsZWQgPSBlbmFibGVkOyB9
Ci0gICAgICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclNjcm9sbGFibGVGcmFtZXNF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yU2Nyb2xs
YWJsZUZyYW1lc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdG
b3JTY3JvbGxhYmxlRnJhbWVzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hY2NlbGVyYXRlZENv
bXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZyYW1lc0VuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9v
bCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZyYW1lc0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWVzRW5h
YmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJm
bG93U2Nyb2xsRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBib29sIGFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQ7IH07Cisg
ICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9s
bEVuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9y
T3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkOyB9OwogCi0gICAgICAgIHZvaWQgc2V0U2hv
d0RlYnVnQm9yZGVycyhib29sKTsKLSAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9zaG93RGVidWdCb3JkZXJzOyB9CisgICAgdm9pZCBzZXRTaG93RGVidWdC
b3JkZXJzKGJvb2wpOworICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvd0RlYnVnQm9yZGVyczsgfQogCi0gICAgICAgIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3Vu
dGVyKGJvb2wpOwotICAgICAgICBib29sIHNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fc2hvd1JlcGFpbnRDb3VudGVyOyB9CisgICAgdm9pZCBzZXRTaG93UmVwYWludENvdW50
ZXIoYm9vbCk7CisgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIoKSBjb25zdCB7IHJldHVybiBt
X3Nob3dSZXBhaW50Q291bnRlcjsgfQogCi0gICAgICAgIHZvaWQgc2V0RXhwZXJpbWVudGFsTm90
aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgZXhwZXJpbWVudGFsTm90aWZp
Y2F0aW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2V4cGVyaW1lbnRhbE5vdGlmaWNhdGlv
bnNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxl
ZChib29sKTsKKyAgICBib29sIGV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9leHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZDsgfQogCiAjaWYg
UExBVEZPUk0oV0lOKSB8fCAoT1MoV0lORE9XUykgJiYgUExBVEZPUk0oV1gpKQotICAgICAgICBz
dGF0aWMgdm9pZCBzZXRTaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycyhib29sKTsKLSAgICAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoKSB7IHJldHVybiBn
U2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnM7IH0KKyAgICBzdGF0aWMgdm9pZCBzZXRTaG91
bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycyhib29sKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRV
c2VIaWdoUmVzb2x1dGlvblRpbWVycygpIHsgcmV0dXJuIGdTaG91bGRVc2VIaWdoUmVzb2x1dGlv
blRpbWVyczsgfQogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBzZXRXZWJBdWRpb0VuYWJsZWQoYm9v
bCk7Ci0gICAgICAgIGJvb2wgd2ViQXVkaW9FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJB
dWRpb0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFdlYkF1ZGlvRW5hYmxlZChib29sKTsKKyAgICBi
b29sIHdlYkF1ZGlvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQXVkaW9FbmFibGVkOyB9
CiAKLSAgICAgICAgdm9pZCBzZXRXZWJHTEVuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgd2Vi
R0xFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJHTEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dFdlYkdMRW5hYmxlZChib29sKTsKKyAgICBib29sIHdlYkdMRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fd2ViR0xFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRXZWJHTEVycm9yc1RvQ29u
c29sZUVuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgd2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJHTEVycm9yc1RvQ29uc29sZUVuYWJsZWQ7IH0KKyAg
ICB2b2lkIHNldFdlYkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZChib29sKTsKKyAgICBib29sIHdl
YkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViR0xFcnJvcnNU
b0NvbnNvbGVFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRPcGVuR0xNdWx0aXNhbXBsaW5n
RW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBvcGVuR0xNdWx0aXNhbXBsaW5nRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3BlbkdMTXVsdGlzYW1wbGluZ0VuYWJsZWQ7IH0KKyAgICB2b2lk
IHNldE9wZW5HTE11bHRpc2FtcGxpbmdFbmFibGVkKGJvb2wpOworICAgIGJvb2wgb3BlbkdMTXVs
dGlzYW1wbGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX29wZW5HTE11bHRpc2FtcGxpbmdF
bmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRQcml2aWxlZ2VkV2ViR0xFeHRlbnNpb25zRW5h
YmxlZChib29sKTsKLSAgICAgICAgYm9vbCBwcml2aWxlZ2VkV2ViR0xFeHRlbnNpb25zRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmlsZWdlZFdlYkdMRXh0ZW5zaW9uc0VuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldFByaXZpbGVnZWRXZWJHTEV4dGVuc2lvbnNFbmFibGVkKGJvb2wpOworICAg
IGJvb2wgcHJpdmlsZWdlZFdlYkdMRXh0ZW5zaW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZpbGVnZWRXZWJHTEV4dGVuc2lvbnNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRB
Y2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBhY2NlbGVyYXRl
ZDJkQ2FudmFzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRDYW52YXMyZEVu
YWJsZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wpOwor
ICAgIGJvb2wgYWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Fj
Y2VsZXJhdGVkQ2FudmFzMmRFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXREZWZlcnJlZDJk
Q2FudmFzRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBkZWZlcnJlZDJkQ2FudmFzRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmZXJyZWRDYW52YXMyZEVuYWJsZWQ7IH0KKyAgICB2b2lk
IHNldERlZmVycmVkMmRDYW52YXNFbmFibGVkKGJvb2wpOworICAgIGJvb2wgZGVmZXJyZWQyZENh
bnZhc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlZmVycmVkQ2FudmFzMmRFbmFibGVkOyB9
CiAKLSAgICAgICAgLy8gTnVtYmVyIG9mIHBpeGVscyBiZWxvdyB3aGljaCAyRCBjYW52YXMgaXMg
cmVuZGVyZWQgaW4gc29mdHdhcmUKLSAgICAgICAgLy8gZXZlbiBpZiBoYXJkd2FyZSBhY2NlbGVy
YXRpb24gaXMgZW5hYmxlZC4KLSAgICAgICAgLy8gSGFyZHdhcmUgYWNjZWxlcmF0aW9uIGlzIHVz
ZWZ1bCBmb3IgbGFyZ2UgY2FudmFzZXMgd2hlcmUgaXQgY2FuIGF2b2lkIHRoZQotICAgICAgICAv
LyBwaXhlbCBiYW5kd2lkdGggYmV0d2VlbiB0aGUgQ1BVIGFuZCBHUFUuIEJ1dCBHUFUgYWNjZWxl
cmF0aW9uIGNvbWVzIGF0Ci0gICAgICAgIC8vIGEgcHJpY2UgLSBleHRyYSBiYWNrLWJ1ZmZlciBh
bmQgdGV4dHVyZSBjb3B5LiBTbWFsbCBjYW52YXNlcyBhcmUgYWxzbwotICAgICAgICAvLyB3aWRl
bHkgdXNlZCBmb3Igc3R5bGl6ZWQgZm9udHMuIEFudGktYWxpYXNpbmcgdGV4dCBpbiBoYXJkd2Fy
ZSBhdCB0aGF0Ci0gICAgICAgIC8vIHNjYWxlIGlzIGdlbmVyYWxseSBzbG93ZXIuIFNvIGJlbG93
IGEgY2VydGFpbiBzaXplIGl0IGlzIGJldHRlciB0bwotICAgICAgICAvLyBkcmF3IGNhbnZhcyBp
biBzb2Z0d2FyZS4KLSAgICAgICAgdm9pZCBzZXRNaW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZhc1Np
emUoaW50KTsKLSAgICAgICAgaW50IG1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNTaXplOyB9CisgICAgLy8g
TnVtYmVyIG9mIHBpeGVscyBiZWxvdyB3aGljaCAyRCBjYW52YXMgaXMgcmVuZGVyZWQgaW4gc29m
dHdhcmUKKyAgICAvLyBldmVuIGlmIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBpcyBlbmFibGVkLgor
ICAgIC8vIEhhcmR3YXJlIGFjY2VsZXJhdGlvbiBpcyB1c2VmdWwgZm9yIGxhcmdlIGNhbnZhc2Vz
IHdoZXJlIGl0IGNhbiBhdm9pZCB0aGUKKyAgICAvLyBwaXhlbCBiYW5kd2lkdGggYmV0d2VlbiB0
aGUgQ1BVIGFuZCBHUFUuIEJ1dCBHUFUgYWNjZWxlcmF0aW9uIGNvbWVzIGF0CisgICAgLy8gYSBw
cmljZSAtIGV4dHJhIGJhY2stYnVmZmVyIGFuZCB0ZXh0dXJlIGNvcHkuIFNtYWxsIGNhbnZhc2Vz
IGFyZSBhbHNvCisgICAgLy8gd2lkZWx5IHVzZWQgZm9yIHN0eWxpemVkIGZvbnRzLiBBbnRpLWFs
aWFzaW5nIHRleHQgaW4gaGFyZHdhcmUgYXQgdGhhdAorICAgIC8vIHNjYWxlIGlzIGdlbmVyYWxs
eSBzbG93ZXIuIFNvIGJlbG93IGEgY2VydGFpbiBzaXplIGl0IGlzIGJldHRlciB0bworICAgIC8v
IGRyYXcgY2FudmFzIGluIHNvZnR3YXJlLgorICAgIHZvaWQgc2V0TWluaW11bUFjY2VsZXJhdGVk
MmRDYW52YXNTaXplKGludCk7CisgICAgaW50IG1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNTaXplOyB9CiAK
LSAgICAgICAgdm9pZCBzZXRMb2FkRGVmZXJyaW5nRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9v
bCBsb2FkRGVmZXJyaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZERlZmVycmluZ0Vu
YWJsZWQ7IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0VGlsZWRCYWNraW5nU3RvcmVFbmFi
bGVkKGJvb2wpOwotICAgICAgICBib29sIHRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGlsZWRCYWNraW5nU3RvcmVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRMb2Fk
RGVmZXJyaW5nRW5hYmxlZChib29sKTsKKyAgICBib29sIGxvYWREZWZlcnJpbmdFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2FkRGVmZXJyaW5nRW5hYmxlZDsgfQorICAgIAorICAgIHZvaWQg
c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJvb2wpOworICAgIGJvb2wgdGlsZWRCYWNraW5n
U3RvcmVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90aWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQ7
IH0KIAotICAgICAgICB2b2lkIHNldFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZChib29sIGZs
YWcpIHsgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgPSBmbGFnOyB9Ci0gICAgICAgIGJv
b2wgcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYWdpbmF0
ZUR1cmluZ0xheW91dEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFBhZ2luYXRlRHVyaW5nTGF5b3V0
RW5hYmxlZChib29sIGZsYWcpIHsgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgPSBmbGFn
OyB9CisgICAgYm9vbCBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZDsgfQogCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQotICAgICAgICB2b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wgZmxhZykgeyBt
X2Z1bGxTY3JlZW5BUElFbmFibGVkID0gZmxhZzsgfQotICAgICAgICBib29sIGZ1bGxTY3JlZW5F
bmFibGVkKCkgY29uc3QgIHsgcmV0dXJuIG1fZnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICB2
b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wgZmxhZykgeyBtX2Z1bGxTY3JlZW5BUElFbmFi
bGVkID0gZmxhZzsgfQorICAgIGJvb2wgZnVsbFNjcmVlbkVuYWJsZWQoKSBjb25zdCAgeyByZXR1
cm4gbV9mdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBVU0UoQVZGT1VOREFU
SU9OKQotICAgICAgICBzdGF0aWMgdm9pZCBzZXRBVkZvdW5kYXRpb25FbmFibGVkKGJvb2wgZmxh
ZykgeyBnQVZGb3VuZGF0aW9uRW5hYmxlZCA9IGZsYWc7IH0KLSAgICAgICAgc3RhdGljIGJvb2wg
aXNBVkZvdW5kYXRpb25FbmFibGVkKCkgeyByZXR1cm4gZ0FWRm91bmRhdGlvbkVuYWJsZWQ7IH0K
KyAgICBzdGF0aWMgdm9pZCBzZXRBVkZvdW5kYXRpb25FbmFibGVkKGJvb2wgZmxhZykgeyBnQVZG
b3VuZGF0aW9uRW5hYmxlZCA9IGZsYWc7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0FWRm91bmRhdGlv
bkVuYWJsZWQoKSB7IHJldHVybiBnQVZGb3VuZGF0aW9uRW5hYmxlZDsgfQogI2VuZGlmCiAKLSAg
ICAgICAgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGZsYWcp
IHsgbV9hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCA9IGZsYWc7IH0KLSAgICAgICAg
Ym9vbCBhc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0ICB7IHJldHVybiBt
X2FzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOyB9CisgICAgdm9pZCBzZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGZsYWcpIHsgbV9hc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZCA9IGZsYWc7IH0KKyAgICBib29sIGFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkgY29uc3QgIHsgcmV0dXJuIG1fYXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQ7IH0KIAotICAgICAgICB2b2lkIHNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQo
Ym9vbCBmbGFnKSB7IG1fdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCA9IGZsYWc7IH0KLSAgICAg
ICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV91bmlm
aWVkVGV4dENoZWNrZXJFbmFibGVkOyB9CisgICAgdm9pZCBzZXRVbmlmaWVkVGV4dENoZWNrZXJF
bmFibGVkKGJvb2wgZmxhZykgeyBtX3VuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQgPSBmbGFnOyB9
CisgICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV91
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRNZW1vcnlJbmZv
RW5hYmxlZChib29sIGZsYWcpIHsgbV9tZW1vcnlJbmZvRW5hYmxlZCA9IGZsYWc7IH0KLSAgICAg
ICAgYm9vbCBtZW1vcnlJbmZvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5SW5mb0Vu
YWJsZWQ7IH0KKyAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wgZmxhZykgeyBtX21l
bW9yeUluZm9FbmFibGVkID0gZmxhZzsgfQorICAgIGJvb2wgbWVtb3J5SW5mb0VuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX21lbW9yeUluZm9FbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRR
dWFudGl6ZWRNZW1vcnlJbmZvRW5hYmxlZChib29sIGZsYWcpIHsgbV9xdWFudGl6ZWRNZW1vcnlJ
bmZvRW5hYmxlZCA9IGZsYWc7IH0KLSAgICAgICAgYm9vbCBxdWFudGl6ZWRNZW1vcnlJbmZvRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhbnRpemVkTWVtb3J5SW5mb0VuYWJsZWQ7IH0KKyAg
ICB2b2lkIHNldFF1YW50aXplZE1lbW9yeUluZm9FbmFibGVkKGJvb2wgZmxhZykgeyBtX3F1YW50
aXplZE1lbW9yeUluZm9FbmFibGVkID0gZmxhZzsgfQorICAgIGJvb2wgcXVhbnRpemVkTWVtb3J5
SW5mb0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3F1YW50aXplZE1lbW9yeUluZm9FbmFibGVk
OyB9CiAKLSAgICAgICAgLy8gVGhpcyBmZWF0dXJlIHJlcXVpcmVzIGFuIGltcGxlbWVudGF0aW9u
IG9mIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LgotICAgICAgICB2b2lkIHNldEludGVyYWN0aXZl
Rm9ybVZhbGlkYXRpb25FbmFibGVkKGJvb2wgZmxhZykgeyBtX2ludGVyYWN0aXZlRm9ybVZhbGlk
YXRpb24gPSBmbGFnOyB9Ci0gICAgICAgIGJvb2wgaW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb247IH0KKyAg
ICAvLyBUaGlzIGZlYXR1cmUgcmVxdWlyZXMgYW4gaW1wbGVtZW50YXRpb24gb2YgVmFsaWRhdGlv
bk1lc3NhZ2VDbGllbnQuCisgICAgdm9pZCBzZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5h
YmxlZChib29sIGZsYWcpIHsgbV9pbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uID0gZmxhZzsgfQor
ICAgIGJvb2wgaW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb247IH0KIAotICAgICAgICAvLyBTZXRzIHRoZSBt
YWdpbmljYXRpb24gdmFsdWUgZm9yIHZhbGlkYXRpb24gbWVzc2FnZSB0aW1lci4KLSAgICAgICAg
Ly8gSWYgdGhlIG1hZ2luaWNhdGlvbiB2YWx1ZSBpcyBOLCBhIHZhbGlkYXRpb24gbWVzc2FnZSBk
aXNhcHBlYXJzCi0gICAgICAgIC8vIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgPG1lc3NhZ2UgbGVuZ3Ro
PiAqIE4gLyAxMDAwIHNlY29uZHMuIElmIE4gaXMKLSAgICAgICAgLy8gZXF1YWwgdG8gb3IgbGVz
cyB0aGFuIDAsIGEgdmFsaWRhdGlvbiBtZXNzYWdlIGRvZXNuJ3QgZGlzYXBwZWFycwotICAgICAg
ICAvLyBhdXRvbWF0aWNhbHkuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDUwLgotICAgICAgICB2b2lk
IHNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKGludCBuZXdWYWx1ZSkgeyBt
X3ZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uID0gbmV3VmFsdWU7IH0KLSAgICAg
ICAgaW50IHZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWdpbmlmaWNhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb247IH0KLSAgICAgICAgCi0g
ICAgICAgIHZvaWQgc2V0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3MoYm9vbCBmbGFnKSB7IG1fdXNl
UHJlSFRNTDVQYXJzZXJRdWlya3MgPSBmbGFnOyB9Ci0gICAgICAgIGJvb2wgdXNlUHJlSFRNTDVQ
YXJzZXJRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzOyB9
CisgICAgLy8gU2V0cyB0aGUgbWFnaW5pY2F0aW9uIHZhbHVlIGZvciB2YWxpZGF0aW9uIG1lc3Nh
Z2UgdGltZXIuCisgICAgLy8gSWYgdGhlIG1hZ2luaWNhdGlvbiB2YWx1ZSBpcyBOLCBhIHZhbGlk
YXRpb24gbWVzc2FnZSBkaXNhcHBlYXJzCisgICAgLy8gYXV0b21hdGljYWxseSBhZnRlciA8bWVz
c2FnZSBsZW5ndGg+ICogTiAvIDEwMDAgc2Vjb25kcy4gSWYgTiBpcworICAgIC8vIGVxdWFsIHRv
IG9yIGxlc3MgdGhhbiAwLCBhIHZhbGlkYXRpb24gbWVzc2FnZSBkb2Vzbid0IGRpc2FwcGVhcnMK
KyAgICAvLyBhdXRvbWF0aWNhbHkuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDUwLgorICAgIHZvaWQg
c2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24oaW50IG5ld1ZhbHVlKSB7IG1f
dmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24gPSBuZXdWYWx1ZTsgfQorICAgIGlu
dCB2YWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnaW5pZmljYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3ZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uOyB9CisgICAgCisgICAgdm9pZCBz
ZXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrcyhib29sIGZsYWcpIHsgbV91c2VQcmVIVE1MNVBhcnNl
clF1aXJrcyA9IGZsYWc7IH0KKyAgICBib29sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKCkgY29u
c3QgeyByZXR1cm4gbV91c2VQcmVIVE1MNVBhcnNlclF1aXJrczsgfQogCi0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0TWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGggPSA1
MTI7Ci0gICAgICAgIHZvaWQgc2V0TWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGgodW5zaWdu
ZWQgbWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGgpIHsgbV9tYXhpbXVtSFRNTFBhcnNlckRP
TVRyZWVEZXB0aCA9IG1heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoOyB9Ci0gICAgICAgIHVu
c2lnbmVkIG1heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9t
YXhpbXVtSFRNTFBhcnNlckRPTVRyZWVEZXB0aDsgfQorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBkZWZhdWx0TWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGggPSA1MTI7CisgICAgdm9pZCBz
ZXRNYXhpbXVtSFRNTFBhcnNlckRPTVRyZWVEZXB0aCh1bnNpZ25lZCBtYXhpbXVtSFRNTFBhcnNl
ckRPTVRyZWVEZXB0aCkgeyBtX21heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoID0gbWF4aW11
bUhUTUxQYXJzZXJET01UcmVlRGVwdGg7IH0KKyAgICB1bnNpZ25lZCBtYXhpbXVtSFRNTFBhcnNl
ckRPTVRyZWVEZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bUhUTUxQYXJzZXJET01UcmVl
RGVwdGg7IH0KIAotICAgICAgICB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29s
IGZsYWcpIHsgbV9oeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQgPSBmbGFnOyB9Ci0gICAgICAgIGJv
b2wgaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oeXBlcmxpbmtB
dWRpdGluZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChi
b29sIGZsYWcpIHsgbV9oeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQgPSBmbGFnOyB9CisgICAgYm9v
bCBoeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2h5cGVybGlua0F1
ZGl0aW5nRW5hYmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0Q3Jvc3NPcmlnaW5DaGVja0luR2V0
TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQoYm9vbCBmbGFnKSB7IG1fY3Jvc3NPcmlnaW5DaGVja0lu
R2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQgPSBmbGFnOyB9Ci0gICAgICAgIGJvb2wgY3Jvc3NP
cmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2Nyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVkOyB9Ci0gICAgICAg
IAotICAgICAgICB2b2lkIHNldExheW91dEZhbGxiYWNrV2lkdGgoaW50IHdpZHRoKSB7IG1fbGF5
b3V0RmFsbGJhY2tXaWR0aCA9IHdpZHRoOyB9Ci0gICAgICAgIGludCBsYXlvdXRGYWxsYmFja1dp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRGYWxsYmFja1dpZHRoOyB9CisgICAgdm9pZCBz
ZXRDcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxlZChib29sIGZsYWcp
IHsgbV9jcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxlZCA9IGZsYWc7
IH0KKyAgICBib29sIGNyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNE
aXNhYmxlZDsgfQorICAgIAorICAgIHZvaWQgc2V0TGF5b3V0RmFsbGJhY2tXaWR0aChpbnQgd2lk
dGgpIHsgbV9sYXlvdXRGYWxsYmFja1dpZHRoID0gd2lkdGg7IH0KKyAgICBpbnQgbGF5b3V0RmFs
bGJhY2tXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0RmFsbGJhY2tXaWR0aDsgfQogCi0g
ICAgICAgIHZvaWQgc2V0RGV2aWNlV2lkdGgoaW50IHdpZHRoKSB7IG1fZGV2aWNlV2lkdGggPSB3
aWR0aDsgfQotICAgICAgICBpbnQgZGV2aWNlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2Rldmlj
ZVdpZHRoOyB9CisgICAgdm9pZCBzZXREZXZpY2VXaWR0aChpbnQgd2lkdGgpIHsgbV9kZXZpY2VX
aWR0aCA9IHdpZHRoOyB9CisgICAgaW50IGRldmljZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXZpY2VXaWR0aDsgfQogCi0gICAgICAgIHZvaWQgc2V0RGV2aWNlSGVpZ2h0KGludCBoZWlnaHQp
IHsgbV9kZXZpY2VIZWlnaHQgPSBoZWlnaHQ7IH0KLSAgICAgICAgaW50IGRldmljZUhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSGVpZ2h0OyB9CisgICAgdm9pZCBzZXREZXZpY2VIZWln
aHQoaW50IGhlaWdodCkgeyBtX2RldmljZUhlaWdodCA9IGhlaWdodDsgfQorICAgIGludCBkZXZp
Y2VIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUhlaWdodDsgfQogCi0gICAgICAgIHZv
aWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoYm9vbCBmbGFnKSB7IG1fZm9yY2VDb21wb3NpdGlu
Z01vZGUgPSBmbGFnOyB9Ci0gICAgICAgIGJvb2wgZm9yY2VDb21wb3NpdGluZ01vZGUoKSB7IHJl
dHVybiBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRGb3JjZUNvbXBvc2l0
aW5nTW9kZShib29sIGZsYWcpIHsgbV9mb3JjZUNvbXBvc2l0aW5nTW9kZSA9IGZsYWc7IH0KKyAg
ICBib29sIGZvcmNlQ29tcG9zaXRpbmdNb2RlKCkgeyByZXR1cm4gbV9mb3JjZUNvbXBvc2l0aW5n
TW9kZTsgfQogCi0gICAgICAgIHZvaWQgc2V0U2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRp
YWxFbXB0eURvY3VtZW50KGJvb2wgZmxhZykgeyBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5J
bml0aWFsRW1wdHlEb2N1bWVudCA9IGZsYWc7IH0KLSAgICAgICAgYm9vbCBzaG91bGRJbmplY3RV
c2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSB7IHJldHVybiBtX3Nob3VsZEluamVj
dFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudDsgfQorICAgIHZvaWQgc2V0U2hvdWxk
SW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KGJvb2wgZmxhZykgeyBtX3No
b3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCA9IGZsYWc7IH0KKyAg
ICBib29sIHNob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCgpIHsg
cmV0dXJuIG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50OyB9
CiAKLSAgICAgICAgdm9pZCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sIGZs
YWcpIHsgbV9hbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCA9IGZsYWc7IH0KLSAgICAgICAg
Ym9vbCBhbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ7IH0KLSAgICAgICAgdm9pZCBzZXRBbGxvd1J1bm5p
bmdPZkluc2VjdXJlQ29udGVudChib29sIGZsYWcpIHsgbV9hbGxvd1J1bm5pbmdPZkluc2VjdXJl
Q29udGVudCA9IGZsYWc7IH0KLSAgICAgICAgYm9vbCBhbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQ7IH0K
KyAgICB2b2lkIHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGJvb2wgZmxhZykgeyBt
X2FsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50ID0gZmxhZzsgfQorICAgIGJvb2wgYWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93RGlzcGxheU9m
SW5zZWN1cmVDb250ZW50OyB9CisgICAgdm9pZCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29u
dGVudChib29sIGZsYWcpIHsgbV9hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCA9IGZsYWc7
IH0KKyAgICBib29sIGFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gbV9hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudDsgfQogCiAjaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgICAgIHZvaWQgc2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IoYm9vbCBm
bGFnKSB7IG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkID0gZmxhZzsgfQotICAgICAgICBib29sIHNj
cm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQW5pbWF0b3JFbmFi
bGVkOyB9CisgICAgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihib29sIGZsYWcpIHsgbV9z
Y3JvbGxBbmltYXRvckVuYWJsZWQgPSBmbGFnOyB9CisgICAgYm9vbCBzY3JvbGxBbmltYXRvckVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZDsgfQogI2VuZGlm
CiAKLSAgICAgICAgdm9pZCBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShib29s
IGZsYWcpIHsgbV9tZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSA9IGZsYWc7IH07Ci0g
ICAgICAgIGJvb2wgbWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX21lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOyB9CisgICAgdm9pZCBzZXRN
ZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShib29sIGZsYWcpIHsgbV9tZWRpYVBsYXli
YWNrUmVxdWlyZXNVc2VyR2VzdHVyZSA9IGZsYWc7IH07CisgICAgYm9vbCBtZWRpYVBsYXliYWNr
UmVxdWlyZXNVc2VyR2VzdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFQbGF5YmFja1JlcXVp
cmVzVXNlckdlc3R1cmU7IH0KIAotICAgICAgICB2b2lkIHNldE1lZGlhUGxheWJhY2tBbGxvd3NJ
bmxpbmUoYm9vbCBmbGFnKSB7IG1fbWVkaWFQbGF5YmFja0FsbG93c0lubGluZSA9IGZsYWc7IH07
Ci0gICAgICAgIGJvb2wgbWVkaWFQbGF5YmFja0FsbG93c0lubGluZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVkaWFQbGF5YmFja0FsbG93c0lubGluZTsgfQorICAgIHZvaWQgc2V0TWVkaWFQbGF5YmFj
a0FsbG93c0lubGluZShib29sIGZsYWcpIHsgbV9tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lID0g
ZmxhZzsgfTsKKyAgICBib29sIG1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUoKSBjb25zdCB7IHJl
dHVybiBtX21lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmU7IH0KIAotICAgICAgICB2b2lkIHNldFBh
c3N3b3JkRWNob0VuYWJsZWQoYm9vbCBmbGFnKSB7IG1fcGFzc3dvcmRFY2hvRW5hYmxlZCA9IGZs
YWc7IH0KLSAgICAgICAgYm9vbCBwYXNzd29yZEVjaG9FbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9wYXNzd29yZEVjaG9FbmFibGVkOyB9CisgICAgdm9pZCBzZXRQYXNzd29yZEVjaG9FbmFibGVk
KGJvb2wgZmxhZykgeyBtX3Bhc3N3b3JkRWNob0VuYWJsZWQgPSBmbGFnOyB9CisgICAgYm9vbCBw
YXNzd29yZEVjaG9FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYXNzd29yZEVjaG9FbmFibGVk
OyB9CiAKLSAgICAgICAgdm9pZCBzZXRTdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcoYm9v
bCBmbGFnKSB7IG1fc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nID0gZmxhZzsgfQotICAg
ICAgICBib29sIHN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJu
IG1fc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nOyB9Ci0gICAgICAgIAotICAgICAgICB2
b2lkIHNldEJhY2tzcGFjZUtleU5hdmlnYXRpb25FbmFibGVkKGJvb2wgZmxhZykgeyBtX2JhY2tz
cGFjZUtleU5hdmlnYXRpb25FbmFibGVkID0gZmxhZzsgfQotICAgICAgICBib29sIGJhY2tzcGFj
ZUtleU5hdmlnYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrc3BhY2VLZXlOYXZp
Z2F0aW9uRW5hYmxlZDsgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRQYXNzd29yZEVjaG9E
dXJhdGlvbkluU2Vjb25kcyhkb3VibGUgZHVyYXRpb25JblNlY29uZHMpIHsgbV9wYXNzd29yZEVj
aG9EdXJhdGlvbkluU2Vjb25kcyA9IGR1cmF0aW9uSW5TZWNvbmRzOyB9Ci0gICAgICAgIGRvdWJs
ZSBwYXNzd29yZEVjaG9EdXJhdGlvbkluU2Vjb25kcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFzc3dv
cmRFY2hvRHVyYXRpb25JblNlY29uZHM7IH0KKyAgICB2b2lkIHNldFN1cHByZXNzZXNJbmNyZW1l
bnRhbFJlbmRlcmluZyhib29sIGZsYWcpIHsgbV9zdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJp
bmcgPSBmbGFnOyB9CisgICAgYm9vbCBzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcoKSBj
b25zdCB7IHJldHVybiBtX3N1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZzsgfQorICAgIAor
ICAgIHZvaWQgc2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQoYm9vbCBmbGFnKSB7IG1f
YmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgPSBmbGFnOyB9CisgICAgYm9vbCBiYWNrc3Bh
Y2VLZXlOYXZpZ2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja3NwYWNlS2V5TmF2
aWdhdGlvbkVuYWJsZWQ7IH0KKyAgICAKKyAgICB2b2lkIHNldFBhc3N3b3JkRWNob0R1cmF0aW9u
SW5TZWNvbmRzKGRvdWJsZSBkdXJhdGlvbkluU2Vjb25kcykgeyBtX3Bhc3N3b3JkRWNob0R1cmF0
aW9uSW5TZWNvbmRzID0gZHVyYXRpb25JblNlY29uZHM7IH0KKyAgICBkb3VibGUgcGFzc3dvcmRF
Y2hvRHVyYXRpb25JblNlY29uZHMoKSBjb25zdCB7IHJldHVybiBtX3Bhc3N3b3JkRWNob0R1cmF0
aW9uSW5TZWNvbmRzOyB9CiAKICNpZiBVU0UoU0FGQVJJX1RIRU1FKQotICAgICAgICAvLyBXaW5k
b3dzIGRlYnVnZ2luZyBwcmVmIChnbG9iYWwpIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiB0aGUgQXF1
YSBsb29rIGFuZCBhIG5hdGl2ZSB3aW5kb3dzIGxvb2suCi0gICAgICAgIHN0YXRpYyB2b2lkIHNl
dFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoYm9vbCk7Ci0gICAgICAgIHN0YXRpYyBib29sIHNo
b3VsZFBhaW50TmF0aXZlQ29udHJvbHMoKSB7IHJldHVybiBnU2hvdWxkUGFpbnROYXRpdmVDb250
cm9sczsgfQorICAgIC8vIFdpbmRvd3MgZGVidWdnaW5nIHByZWYgKGdsb2JhbCkgZm9yIHN3aXRj
aGluZyBiZXR3ZWVuIHRoZSBBcXVhIGxvb2sgYW5kIGEgbmF0aXZlIHdpbmRvd3MgbG9vay4KKyAg
ICBzdGF0aWMgdm9pZCBzZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKGJvb2wpOworICAgIHN0
YXRpYyBib29sIHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoKSB7IHJldHVybiBnU2hvdWxkUGFp
bnROYXRpdmVDb250cm9sczsgfQogI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIHZvaWQgc2V0TW9j
a1Njcm9sbGJhcnNFbmFibGVkKGJvb2wgZmxhZyk7Ci0gICAgICAgIHN0YXRpYyBib29sIG1vY2tT
Y3JvbGxiYXJzRW5hYmxlZCgpOworICAgIHN0YXRpYyB2b2lkIHNldE1vY2tTY3JvbGxiYXJzRW5h
YmxlZChib29sIGZsYWcpOworICAgIHN0YXRpYyBib29sIG1vY2tTY3JvbGxiYXJzRW5hYmxlZCgp
OwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhib29sIGZs
YWcpOwotICAgICAgICBzdGF0aWMgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKKyAgICBz
dGF0aWMgdm9pZCBzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoYm9vbCBmbGFnKTsKKyAgICBzdGF0
aWMgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKIAotICAgICAgICB2b2lkIHNldFZpc3Vh
bFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fdmlzdWFsV29yZE1vdmVtZW50
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCB2aXN1YWxXb3JkTW92ZW1lbnRFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkOyB9CisgICAg
dm9pZCBzZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3Zpc3Vh
bFdvcmRNb3ZlbWVudEVuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCB2aXN1YWxXb3JkTW92
ZW1lbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxXb3JkTW92ZW1lbnRFbmFibGVk
OyB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgICAgIHZvaWQgc2V0U2hvdWxkRGlz
cGxheVN1YnRpdGxlcyhib29sIGZsYWcpIHsgbV9zaG91bGREaXNwbGF5U3VidGl0bGVzID0gZmxh
ZzsgfQotICAgICAgICBib29sIHNob3VsZERpc3BsYXlTdWJ0aXRsZXMoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZERpc3BsYXlTdWJ0aXRsZXM7IH0KKyAgICB2b2lkIHNldFNob3VsZERpc3BsYXlT
dWJ0aXRsZXMoYm9vbCBmbGFnKSB7IG1fc2hvdWxkRGlzcGxheVN1YnRpdGxlcyA9IGZsYWc7IH0K
KyAgICBib29sIHNob3VsZERpc3BsYXlTdWJ0aXRsZXMoKSBjb25zdCB7IHJldHVybiBtX3Nob3Vs
ZERpc3BsYXlTdWJ0aXRsZXM7IH0KIAotICAgICAgICB2b2lkIHNldFNob3VsZERpc3BsYXlDYXB0
aW9ucyhib29sIGZsYWcpIHsgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMgPSBmbGFnOyB9Ci0gICAg
ICAgIGJvb2wgc2hvdWxkRGlzcGxheUNhcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRE
aXNwbGF5Q2FwdGlvbnM7IH0KKyAgICB2b2lkIHNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhib29s
IGZsYWcpIHsgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMgPSBmbGFnOyB9CisgICAgYm9vbCBzaG91
bGREaXNwbGF5Q2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZERpc3BsYXlDYXB0aW9u
czsgfQogCi0gICAgICAgIHZvaWQgc2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoYm9v
bCBmbGFnKSB7IG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMgPSBmbGFnOyB9Ci0gICAg
ICAgIGJvb2wgc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zOyB9CisgICAgdm9pZCBzZXRTaG91bGREaXNw
bGF5VGV4dERlc2NyaXB0aW9ucyhib29sIGZsYWcpIHsgbV9zaG91bGREaXNwbGF5VGV4dERlc2Ny
aXB0aW9ucyA9IGZsYWc7IH0KKyAgICBib29sIHNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25z
KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uczsgfQogI2Vu
ZGlmCiAKLSAgICAgICAgdm9pZCBzZXRTY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkID0gZW5hYmxlZDsgfQotICAg
ICAgICBib29sIHNjcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkOyB9CisgICAgdm9pZCBzZXRTY3JvbGxpbmdDb29y
ZGluYXRvckVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFi
bGVkID0gZW5hYmxlZDsgfQorICAgIGJvb2wgc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQ7IH0KIAotICAgICAg
ICB2b2lkIHNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX25vdGlmaWNh
dGlvbnNFbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBib29sIG5vdGlmaWNhdGlvbnNFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25zRW5hYmxlZDsgfQorICAgIHZvaWQg
c2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fbm90aWZpY2F0aW9uc0Vu
YWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCBub3RpZmljYXRpb25zRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uc0VuYWJsZWQ7IH0KIAotICAgICAgICAvLyBTb21lIGFw
cHMgbmVlZHMgaXNMb2FkaW5nSW5BUElTZW5zZSB0byBhY2NvdW50IGZvciBhY3RpdmUgc3VicmVz
b3VyY2UgbG9hZGVycy4KLSAgICAgICAgdm9pZCBzZXROZWVkc0lzTG9hZGluZ0luQVBJU2Vuc2VR
dWlyayhib29sIGVuYWJsZWQpIHsgbV9uZWVkc0lzTG9hZGluZ0luQVBJU2Vuc2VRdWlyayA9IGVu
YWJsZWQ7IH0KLSAgICAgICAgYm9vbCBuZWVkc0lzTG9hZGluZ0luQVBJU2Vuc2VRdWlyaygpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNJc0xvYWRpbmdJbkFQSVNlbnNlUXVpcms7IH0KKyAgICAvLyBT
b21lIGFwcHMgbmVlZHMgaXNMb2FkaW5nSW5BUElTZW5zZSB0byBhY2NvdW50IGZvciBhY3RpdmUg
c3VicmVzb3VyY2UgbG9hZGVycy4KKyAgICB2b2lkIHNldE5lZWRzSXNMb2FkaW5nSW5BUElTZW5z
ZVF1aXJrKGJvb2wgZW5hYmxlZCkgeyBtX25lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrID0g
ZW5hYmxlZDsgfQorICAgIGJvb2wgbmVlZHNJc0xvYWRpbmdJbkFQSVNlbnNlUXVpcmsoKSBjb25z
dCB7IHJldHVybiBtX25lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrOyB9CiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQotICAgICAgICB2b2lkIHNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFi
bGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkID0gZW5hYmxl
ZDsgfQotICAgICAgICBib29sIGlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkOyB9CisgICAgdm9pZCBzZXRUb3Vj
aEV2ZW50RW11bGF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90b3VjaEV2ZW50RW11bGF0
aW9uRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGlzVG91Y2hFdmVudEVtdWxhdGlvbkVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkOyB9CiAj
ZW5kaWYKIAotICAgICAgICB2b2lkIHNldFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKGJv
b2wgZW5hYmxlZCkgeyBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0gZW5hYmxlZDsg
fQotICAgICAgICBib29sIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsgfQorICAgIHZvaWQgc2V0U2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oYm9vbCBlbmFibGVkKSB7IG1fc2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24gPSBlbmFibGVkOyB9CisgICAgYm9vbCBzaG91bGRSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50
YXRpb247IH0KIAotICAgICAgICB2b2lkIHNldFdhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5n
QmVoYXZpb3IoYm9vbCBmbGFnKSB7IG1fd2FudHNCYWxhbmNlZFNldERlZmVyc0xvYWRpbmdCZWhh
dmlvciA9IGZsYWc7IH0KLSAgICAgICAgYm9vbCB3YW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGlu
Z0JlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV93YW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGlu
Z0JlaGF2aW9yOyB9CisgICAgdm9pZCBzZXRXYW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGluZ0Jl
aGF2aW9yKGJvb2wgZmxhZykgeyBtX3dhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVoYXZp
b3IgPSBmbGFnOyB9CisgICAgYm9vbCB3YW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGluZ0JlaGF2
aW9yKCkgY29uc3QgeyByZXR1cm4gbV93YW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGluZ0JlaGF2
aW9yOyB9CiAKLSAgICAgICAgdm9pZCBzZXRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9u
VGltZW91dEluU2Vjb25kcyhkb3VibGUgdGltZW91dCkgeyBtX2luY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzID0gdGltZW91dDsgfQotICAgICAgICBkb3VibGUg
aW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHMoKSBjb25zdCB7
IHJldHVybiBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRz
OyB9CisgICAgdm9pZCBzZXRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dElu
U2Vjb25kcyhkb3VibGUgdGltZW91dCkgeyBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Np
b25UaW1lb3V0SW5TZWNvbmRzID0gdGltZW91dDsgfQorICAgIGRvdWJsZSBpbmNyZW1lbnRhbFJl
bmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kcygpIGNvbnN0IHsgcmV0dXJuIG1faW5j
cmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHM7IH0KIAotICAgICAg
ICB2b2lkIHNldFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1f
cmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0QW5p
bWF0aW9uRnJhbWVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVF
bmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3JlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQgPSBl
bmFibGVkOyB9CisgICAgYm9vbCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkOyB9CiAKLSAgICAgICAgdm9p
ZCBzZXREZXZpY2VTdXBwb3J0c1RvdWNoKGJvb2wgZW5hYmxlZCkgeyBtX2RldmljZVN1cHBvcnRz
VG91Y2ggPSBlbmFibGVkOyB9Ci0gICAgICAgIGJvb2wgZGV2aWNlU3VwcG9ydHNUb3VjaCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGV2aWNlU3VwcG9ydHNUb3VjaDsgfQorICAgIHZvaWQgc2V0RGV2aWNl
U3VwcG9ydHNUb3VjaChib29sIGVuYWJsZWQpIHsgbV9kZXZpY2VTdXBwb3J0c1RvdWNoID0gZW5h
YmxlZDsgfQorICAgIGJvb2wgZGV2aWNlU3VwcG9ydHNUb3VjaCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGV2aWNlU3VwcG9ydHNUb3VjaDsgfQogCi0gICAgICAgIHZvaWQgc2V0RGV2aWNlU3VwcG9ydHNN
b3VzZShib29sIGVuYWJsZWQpIHsgbV9kZXZpY2VTdXBwb3J0c01vdXNlID0gZW5hYmxlZDsgfQot
ICAgICAgICBib29sIGRldmljZVN1cHBvcnRzTW91c2UoKSBjb25zdCB7IHJldHVybiBtX2Rldmlj
ZVN1cHBvcnRzTW91c2U7IH0KKyAgICB2b2lkIHNldERldmljZVN1cHBvcnRzTW91c2UoYm9vbCBl
bmFibGVkKSB7IG1fZGV2aWNlU3VwcG9ydHNNb3VzZSA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGRl
dmljZVN1cHBvcnRzTW91c2UoKSBjb25zdCB7IHJldHVybiBtX2RldmljZVN1cHBvcnRzTW91c2U7
IH0KIAotICAgICAgICB2b2lkIHNldE5lZWRzRGlkRmluaXNoTG9hZE9yZGVyUXVpcmsoYm9vbCBu
ZWVkc1F1aXJrKSB7IG1fbmVlZHNEaWRGaW5pc2hMb2FkT3JkZXJRdWlyayA9IG5lZWRzUXVpcms7
IH0KLSAgICAgICAgYm9vbCBuZWVkc0RpZEZpbmlzaExvYWRPcmRlclF1aXJrKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZWVkc0RpZEZpbmlzaExvYWRPcmRlclF1aXJrOyB9CisgICAgdm9pZCBzZXROZWVk
c0RpZEZpbmlzaExvYWRPcmRlclF1aXJrKGJvb2wgbmVlZHNRdWlyaykgeyBtX25lZWRzRGlkRmlu
aXNoTG9hZE9yZGVyUXVpcmsgPSBuZWVkc1F1aXJrOyB9CisgICAgYm9vbCBuZWVkc0RpZEZpbmlz
aExvYWRPcmRlclF1aXJrKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0RpZEZpbmlzaExvYWRPcmRl
clF1aXJrOyB9CiAKLSAgICAgICAgdm9pZCBzZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5n
Q29udGV4dChib29sIGNyZWF0ZXMpIHsgbV9maXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29u
dGV4dCA9IGNyZWF0ZXM7IH0KLSAgICAgICAgYm9vbCBmaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNr
aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2lu
Z0NvbnRleHQ7IH0KKyAgICB2b2lkIHNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250
ZXh0KGJvb2wgY3JlYXRlcykgeyBtX2ZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0
ID0gY3JlYXRlczsgfQorICAgIGJvb2wgZml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0
OyB9CiAKLSAgICAgICAgdm9pZCBzZXRTeW5jWEhSSW5Eb2N1bWVudHNFbmFibGVkKGJvb2wgZW5h
YmxlZCkgeyBtX3N5bmNYSFJJbkRvY3VtZW50c0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgICAg
IGJvb2wgc3luY1hIUkluRG9jdW1lbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3luY1hI
UkluRG9jdW1lbnRzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0U3luY1hIUkluRG9jdW1lbnRzRW5h
YmxlZChib29sIGVuYWJsZWQpIHsgbV9zeW5jWEhSSW5Eb2N1bWVudHNFbmFibGVkID0gZW5hYmxl
ZDsgfQorICAgIGJvb2wgc3luY1hIUkluRG9jdW1lbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3luY1hIUkluRG9jdW1lbnRzRW5hYmxlZDsgfQogCi0gICAgICAgIC8vIFdoZW4gZW5hYmxl
ZCwgd2luZG93LmJsdXIoKSBkb2VzIG5vdCBjaGFuZ2UgZm9jdXMsIGFuZAotICAgICAgICAvLyB3
aW5kb3cuZm9jdXMoKSBvbmx5IGNoYW5nZXMgZm9jdXMgd2hlbiBpbnZva2VkIGZyb20gdGhlIGNv
bnRleHQgdGhhdAotICAgICAgICAvLyBjcmVhdGVkIHRoZSB3aW5kb3cuCi0gICAgICAgIHZvaWQg
c2V0V2luZG93Rm9jdXNSZXN0cmljdGVkKGJvb2wgcmVzdHJpY3RlZCkgeyBtX3dpbmRvd0ZvY3Vz
UmVzdHJpY3RlZCA9IHJlc3RyaWN0ZWQ7IH0KLSAgICAgICAgYm9vbCB3aW5kb3dGb2N1c1Jlc3Ry
aWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd0ZvY3VzUmVzdHJpY3RlZDsgfQorICAgIC8v
IFdoZW4gZW5hYmxlZCwgd2luZG93LmJsdXIoKSBkb2VzIG5vdCBjaGFuZ2UgZm9jdXMsIGFuZAor
ICAgIC8vIHdpbmRvdy5mb2N1cygpIG9ubHkgY2hhbmdlcyBmb2N1cyB3aGVuIGludm9rZWQgZnJv
bSB0aGUgY29udGV4dCB0aGF0CisgICAgLy8gY3JlYXRlZCB0aGUgd2luZG93LgorICAgIHZvaWQg
c2V0V2luZG93Rm9jdXNSZXN0cmljdGVkKGJvb2wgcmVzdHJpY3RlZCkgeyBtX3dpbmRvd0ZvY3Vz
UmVzdHJpY3RlZCA9IHJlc3RyaWN0ZWQ7IH0KKyAgICBib29sIHdpbmRvd0ZvY3VzUmVzdHJpY3Rl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93Rm9jdXNSZXN0cmljdGVkOyB9CiAKLSAgICAgICAg
dm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9j
a2luZ1BvbGljeSk7Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xp
Y3kgc3RvcmFnZUJsb2NraW5nUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlQmxvY2tp
bmdQb2xpY3k7IH0KKyAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9y
aWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKKyAgICBTZWN1cml0eU9yaWdpbjo6U3RvcmFn
ZUJsb2NraW5nUG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmFnZUJsb2NraW5nUG9saWN5OyB9CiAKLSAgICAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wpOwotICAgICAgICBib29sIHNjcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSB7IHJldHVybiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQoYm9vbCk7CisgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KCkgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkOyB9CiAKICNp
ZiBVU0UoSlNDKQotICAgICAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRSZXNwZWN0UHJpb3JpdHlJ
bkNTU0F0dHJpYnV0ZVNldHRlcnMoYm9vbCk7Ci0gICAgICAgIHN0YXRpYyBib29sIHNob3VsZFJl
c3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycygpOworICAgIHN0YXRpYyB2b2lkIHNl
dFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycyhib29sKTsKKyAgICBz
dGF0aWMgYm9vbCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKTsK
ICNlbmRpZgogCi0gICAgICAgIHZvaWQgc2V0Q29va2llRW5hYmxlZChib29sIGVuYWJsZWQpIHsg
bV9jb29raWVFbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBib29sIGNvb2tpZUVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZUVuYWJsZWQ7IH0KLQotICAgICAgICB2b2lkIHNldERp
YWdub3N0aWNMb2dnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9kaWFnbm9zdGljTG9nZ2lu
Z0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgICAgIGJvb2wgZGlhZ25vc3RpY0xvZ2dpbmdFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQ7IH0KLQotICAg
IHByaXZhdGU6Ci0gICAgICAgIGV4cGxpY2l0IFNldHRpbmdzKFBhZ2UqKTsKLQotICAgICAgICB2
b2lkIGluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCk7Ci0KLSAgICAgICAgUGFnZSogbV9w
YWdlOwotCi0gICAgICAgIFN0cmluZyBtX2RlZmF1bHRUZXh0RW5jb2RpbmdOYW1lOwotICAgICAg
ICBTdHJpbmcgbV9mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGg7Ci0gICAgICAgIFN0cmluZyBtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aDsKLSAgICAgICAgS1VSTCBtX3VzZXJTdHlsZVNoZWV0TG9j
YXRpb247Ci0gICAgICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9zdGFuZGFyZEZvbnRGYW1pbHlN
YXA7Ci0gICAgICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9zZXJpZkZvbnRGYW1pbHlNYXA7Ci0g
ICAgICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9maXhlZEZvbnRGYW1pbHlNYXA7Ci0gICAgICAg
IFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9zYW5zU2VyaWZGb250RmFtaWx5TWFwOwotICAgICAgICBT
Y3JpcHRGb250RmFtaWx5TWFwIG1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXA7Ci0gICAgICAgIFNjcmlw
dEZvbnRGYW1pbHlNYXAgbV9mYW50YXN5Rm9udEZhbWlseU1hcDsKLSAgICAgICAgU2NyaXB0Rm9u
dEZhbWlseU1hcCBtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwOwotICAgICAgICBFZGl0YWJsZUxp
bmtCZWhhdmlvciBtX2VkaXRhYmxlTGlua0JlaGF2aW9yOwotICAgICAgICBUZXh0RGlyZWN0aW9u
U3VibWVudUluY2x1c2lvbkJlaGF2aW9yIG1fdGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25C
ZWhhdmlvcjsKLSAgICAgICAgZG91YmxlIG1fcGFzc3dvcmRFY2hvRHVyYXRpb25JblNlY29uZHM7
Ci0gICAgICAgIGludCBtX21pbmltdW1Gb250U2l6ZTsKLSAgICAgICAgaW50IG1fbWluaW11bUxv
Z2ljYWxGb250U2l6ZTsKLSAgICAgICAgaW50IG1fZGVmYXVsdEZvbnRTaXplOwotICAgICAgICBp
bnQgbV9kZWZhdWx0Rml4ZWRGb250U2l6ZTsKLSAgICAgICAgYm9vbCBtX3NjcmVlbkZvbnRTdWJz
dGl0dXRpb25FbmFibGVkOwotICAgICAgICBpbnQgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFn
bmlmaWNhdGlvbjsKLSAgICAgICAgaW50IG1fbWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNTaXpl
OwotICAgICAgICBpbnQgbV9sYXlvdXRGYWxsYmFja1dpZHRoOwotICAgICAgICBzaXplX3QgbV9t
YXhpbXVtRGVjb2RlZEltYWdlU2l6ZTsKLSAgICAgICAgaW50IG1fZGV2aWNlV2lkdGg7Ci0gICAg
ICAgIGludCBtX2RldmljZUhlaWdodDsKLSAgICAgICAgdW5zaWduZWQgbV9zZXNzaW9uU3RvcmFn
ZVF1b3RhOwotICAgICAgICB1bnNpZ25lZCBtX2VkaXRpbmdCZWhhdmlvclR5cGU7Ci0gICAgICAg
IHVuc2lnbmVkIG1fbWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGg7Ci0gICAgICAgIFNlY3Vy
aXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7
CisgICAgdm9pZCBzZXRDb29raWVFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2Nvb2tpZUVuYWJs
ZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCBjb29raWVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9jb29raWVFbmFibGVkOyB9CisKKyAgICB2b2lkIHNldERpYWdub3N0aWNMb2dnaW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpIHsgbV9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQgPSBlbmFibGVkOyB9
CisgICAgYm9vbCBkaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rp
YWdub3N0aWNMb2dnaW5nRW5hYmxlZDsgfQorCisgICAgdm9pZCBzZXRDbGlja1RvU3RhcnRQbHVn
SW5zRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9jbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZCA9
IGVuYWJsZWQ7IH0KKyAgICBib29sIGNsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9jbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZDsgfQorCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IFNldHRpbmdzKFBhZ2UqKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRG
b250RmFtaWxpZXMoKTsKKworICAgIFBhZ2UqIG1fcGFnZTsKKworICAgIFN0cmluZyBtX2RlZmF1
bHRUZXh0RW5jb2RpbmdOYW1lOworICAgIFN0cmluZyBtX2Z0cERpcmVjdG9yeVRlbXBsYXRlUGF0
aDsKKyAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7CisgICAgS1VSTCBtX3Vz
ZXJTdHlsZVNoZWV0TG9jYXRpb247CisgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBtX3N0YW5kYXJk
Rm9udEZhbWlseU1hcDsKKyAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fc2VyaWZGb250RmFtaWx5
TWFwOworICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9maXhlZEZvbnRGYW1pbHlNYXA7CisgICAg
U2NyaXB0Rm9udEZhbWlseU1hcCBtX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXA7CisgICAgU2NyaXB0
Rm9udEZhbWlseU1hcCBtX2N1cnNpdmVGb250RmFtaWx5TWFwOworICAgIFNjcmlwdEZvbnRGYW1p
bHlNYXAgbV9mYW50YXN5Rm9udEZhbWlseU1hcDsKKyAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1f
cGljdG9ncmFwaEZvbnRGYW1pbHlNYXA7CisgICAgRWRpdGFibGVMaW5rQmVoYXZpb3IgbV9lZGl0
YWJsZUxpbmtCZWhhdmlvcjsKKyAgICBUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2
aW9yIG1fdGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcjsKKyAgICBkb3VibGUg
bV9wYXNzd29yZEVjaG9EdXJhdGlvbkluU2Vjb25kczsKKyAgICBpbnQgbV9taW5pbXVtRm9udFNp
emU7CisgICAgaW50IG1fbWluaW11bUxvZ2ljYWxGb250U2l6ZTsKKyAgICBpbnQgbV9kZWZhdWx0
Rm9udFNpemU7CisgICAgaW50IG1fZGVmYXVsdEZpeGVkRm9udFNpemU7CisgICAgYm9vbCBtX3Nj
cmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkOworICAgIGludCBtX3ZhbGlkYXRpb25NZXNzYWdl
VGltZXJNYWduaWZpY2F0aW9uOworICAgIGludCBtX21pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFz
U2l6ZTsKKyAgICBpbnQgbV9sYXlvdXRGYWxsYmFja1dpZHRoOworICAgIHNpemVfdCBtX21heGlt
dW1EZWNvZGVkSW1hZ2VTaXplOworICAgIGludCBtX2RldmljZVdpZHRoOworICAgIGludCBtX2Rl
dmljZUhlaWdodDsKKyAgICB1bnNpZ25lZCBtX3Nlc3Npb25TdG9yYWdlUXVvdGE7CisgICAgdW5z
aWduZWQgbV9lZGl0aW5nQmVoYXZpb3JUeXBlOworICAgIHVuc2lnbmVkIG1fbWF4aW11bUhUTUxQ
YXJzZXJET01UcmVlRGVwdGg7CisgICAgU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1Bv
bGljeSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5H
KQotICAgICAgICBmbG9hdCBtX3RleHRBdXRvc2l6aW5nRm9udFNjYWxlRmFjdG9yOwotICAgICAg
ICBJbnRTaXplIG1fdGV4dEF1dG9zaXppbmdXaW5kb3dTaXplT3ZlcnJpZGU7Ci0gICAgICAgIGJv
b2wgbV90ZXh0QXV0b3NpemluZ0VuYWJsZWQgOiAxOworICAgIGZsb2F0IG1fdGV4dEF1dG9zaXpp
bmdGb250U2NhbGVGYWN0b3I7CisgICAgSW50U2l6ZSBtX3RleHRBdXRvc2l6aW5nV2luZG93U2l6
ZU92ZXJyaWRlOworICAgIGJvb2wgbV90ZXh0QXV0b3NpemluZ0VuYWJsZWQgOiAxOwogI2VuZGlm
Ci0gICAgICAgIGJvb2wgbV9pc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCA6IDE7Ci0gICAgICAg
IGJvb2wgbV9pc0phdmFFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWRG
b3JMb2NhbEZpbGVzIDogMTsKLSAgICAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eSA6IDE7Ci0gICAgICAgIGJvb2wgbV9sb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5n
U2V0dGluZyA6IDE7Ci0gICAgICAgIGJvb2wgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkIDogMTsK
LSAgICAgICAgYm9vbCBtX2NhcmV0QnJvd3NpbmdFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBt
X2FyZUltYWdlc0VuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1faXNNZWRpYUVuYWJsZWQgOiAx
OwotICAgICAgICBib29sIG1fYXJlUGx1Z2luc0VuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1f
bG9jYWxTdG9yYWdlRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9pc1NjcmlwdEVuYWJsZWQg
OiAxOwotICAgICAgICBib29sIG1faXNXZWJTZWN1cml0eUVuYWJsZWQgOiAxOwotICAgICAgICBi
b29sIG1fYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM6IDE7Ci0gICAgICAgIGJvb2wg
bV9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6IDE7Ci0gICAgICAgIGJvb2wgbV9qYXZhU2Ny
aXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5IDogMTsKLSAgICAgICAgYm9vbCBtX2phdmFT
Y3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQgOiAxOwotICAgICAgICBib29sIG1fc2hvdWxkUHJpbnRC
YWNrZ3JvdW5kcyA6IDE7Ci0gICAgICAgIGJvb2wgbV90ZXh0QXJlYXNBcmVSZXNpemFibGUgOiAx
OworICAgIGJvb2wgbV9pc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCA6IDE7CisgICAgYm9vbCBt
X2lzSmF2YUVuYWJsZWQgOiAxOworICAgIGJvb2wgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxl
cyA6IDE7CisgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7CisgICAgYm9v
bCBtX2xvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nIDogMTsKKyAgICBi
b29sIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2NhcmV0QnJvd3Np
bmdFbmFibGVkIDogMTsKKyAgICBib29sIG1fYXJlSW1hZ2VzRW5hYmxlZCA6IDE7CisgICAgYm9v
bCBtX2lzTWVkaWFFbmFibGVkIDogMTsKKyAgICBib29sIG1fYXJlUGx1Z2luc0VuYWJsZWQgOiAx
OworICAgIGJvb2wgbV9sb2NhbFN0b3JhZ2VFbmFibGVkIDogMTsKKyAgICBib29sIG1faXNTY3Jp
cHRFbmFibGVkIDogMTsKKyAgICBib29sIG1faXNXZWJTZWN1cml0eUVuYWJsZWQgOiAxOworICAg
IGJvb2wgbV9hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMczogMTsKKyAgICBib29sIG1f
YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzOiAxOworICAgIGJvb2wgbV9qYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5IDogMTsKKyAgICBib29sIG1famF2YVNjcmlwdENhbkFj
Y2Vzc0NsaXBib2FyZCA6IDE7CisgICAgYm9vbCBtX3Nob3VsZFByaW50QmFja2dyb3VuZHMgOiAx
OworICAgIGJvb2wgbV90ZXh0QXJlYXNBcmVSZXNpemFibGUgOiAxOwogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKLSAgICAgICAgYm9vbCBtX3VzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBh
dGliaWxpdHlNb2RlIDogMTsKKyAgICBib29sIG1fdXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0
aWJpbGl0eU1vZGUgOiAxOwogI2VuZGlmCi0gICAgICAgIGJvb2wgbV9uZWVkc0Fkb2JlRnJhbWVS
ZWxvYWRpbmdRdWlyayA6IDE7Ci0gICAgICAgIGJvb2wgbV9uZWVkc0tleWJvYXJkRXZlbnREaXNh
bWJpZ3VhdGlvblF1aXJrcyA6IDE7Ci0gICAgICAgIGJvb2wgbV90cmVhdHNBbnlUZXh0Q1NTTGlu
a0FzU3R5bGVzaGVldCA6IDE7Ci0gICAgICAgIGJvb2wgbV9uZWVkc0xlb3BhcmRNYWlsUXVpcmtz
IDogMTsKLSAgICAgICAgYm9vbCBtX2lzRE9NUGFzdGVBbGxvd2VkIDogMTsKLSAgICAgICAgYm9v
bCBtX3Nocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQgOiAxOwotICAgICAgICBib29sIG1fdXNl
c1BhZ2VDYWNoZSA6IDE7Ci0gICAgICAgIGJvb2wgbV9wYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMg
OiAxOwotICAgICAgICBib29sIG1fc2hvd3NVUkxzSW5Ub29sVGlwcyA6IDE7Ci0gICAgICAgIGJv
b2wgbV9zaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dCA6IDE7Ci0gICAgICAgIGJvb2wgbV9m
b3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzIDogMTsKLSAgICAgICAgYm9vbCBtX2RldmVsb3BlckV4
dHJhc0VuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1famF2YVNjcmlwdEV4cGVyaW1lbnRzRW5h
YmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCA6IDE7
Ci0gICAgICAgIGJvb2wgbV9uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA6IDE7Ci0gICAgICAgIHVu
c2lnbmVkIG1fZm9udFJlbmRlcmluZ01vZGUgOiAxOwotICAgICAgICBib29sIG1fZnJhbWVGbGF0
dGVuaW5nRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1
aXJrIDogMTsKKyAgICBib29sIG1fbmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRpb25RdWly
a3MgOiAxOworICAgIGJvb2wgbV90cmVhdHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldCA6IDE7
CisgICAgYm9vbCBtX25lZWRzTGVvcGFyZE1haWxRdWlya3MgOiAxOworICAgIGJvb2wgbV9pc0RP
TVBhc3RlQWxsb3dlZCA6IDE7CisgICAgYm9vbCBtX3Nocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9G
aXQgOiAxOworICAgIGJvb2wgbV91c2VzUGFnZUNhY2hlIDogMTsKKyAgICBib29sIG1fcGFnZUNh
Y2hlU3VwcG9ydHNQbHVnaW5zIDogMTsKKyAgICBib29sIG1fc2hvd3NVUkxzSW5Ub29sVGlwcyA6
IDE7CisgICAgYm9vbCBtX3Nob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0IDogMTsKKyAgICBi
b29sIG1fZm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5ncyA6IDE7CisgICAgYm9vbCBtX2RldmVsb3Bl
ckV4dHJhc0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV9qYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFi
bGVkIDogMTsKKyAgICBib29sIG1fYXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQgOiAxOworICAg
IGJvb2wgbV9uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA6IDE7CisgICAgdW5zaWduZWQgbV9mb250
UmVuZGVyaW5nTW9kZSA6IDE7CisgICAgYm9vbCBtX2ZyYW1lRmxhdHRlbmluZ0VuYWJsZWQgOiAx
OwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkKLSAgICAgICAgYm9vbCBtX3dlYkFyY2hpdmVEZWJ1
Z01vZGVFbmFibGVkIDogMTsKKyAgICBib29sIG1fd2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWQg
OiAxOwogI2VuZGlmCi0gICAgICAgIGJvb2wgbV9sb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFi
bGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2luQXBwbGljYXRpb25DaHJvbWVNb2RlIDogMTsKLSAg
ICAgICAgYm9vbCBtX29mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA6IDE7Ci0gICAg
ICAgIGJvb2wgbV9lbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSA6IDE7Ci0gICAgICAg
IGJvb2wgbV91c2VzRW5jb2RpbmdEZXRlY3RvciA6IDE7Ci0gICAgICAgIGJvb2wgbV9hbGxvd1Nj
cmlwdHNUb0Nsb3NlV2luZG93cyA6IDE7Ci0gICAgICAgIGJvb2wgbV9jYW52YXNVc2VzQWNjZWxl
cmF0ZWREcmF3aW5nIDogMTsKLSAgICAgICAgYm9vbCBtX2FjY2VsZXJhdGVkRHJhd2luZ0VuYWJs
ZWQgOiAxOwotICAgICAgICBib29sIG1fYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCA6IDE7Ci0g
ICAgICAgIGJvb2wgbV9pc0NTU0N1c3RvbUZpbHRlckVuYWJsZWQgOiAxOworICAgIGJvb2wgbV9s
b2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkIDogMTsKKyAgICBib29sIG1faW5BcHBsaWNh
dGlvbkNocm9tZU1vZGUgOiAxOworICAgIGJvb2wgbV9vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNo
ZUVuYWJsZWQgOiAxOworICAgIGJvb2wgbV9lbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9k
ZSA6IDE7CisgICAgYm9vbCBtX3VzZXNFbmNvZGluZ0RldGVjdG9yIDogMTsKKyAgICBib29sIG1f
YWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MgOiAxOworICAgIGJvb2wgbV9jYW52YXNVc2VzQWNj
ZWxlcmF0ZWREcmF3aW5nIDogMTsKKyAgICBib29sIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxl
ZCA6IDE7CisgICAgYm9vbCBtX2FjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQgOiAxOworICAgIGJv
b2wgbV9pc0NTU0N1c3RvbUZpbHRlckVuYWJsZWQgOiAxOwogI2lmIEVOQUJMRShDU1NfU1RJQ0tZ
X1BPU0lUSU9OKQotICAgICAgICBib29sIG1fY3NzU3RpY2t5UG9zaXRpb25FbmFibGVkIDogMTsK
KyAgICBib29sIG1fY3NzU3RpY2t5UG9zaXRpb25FbmFibGVkIDogMTsKICNlbmRpZiAgICAgICAg
CiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgICAgICBib29sIG1fY3NzUmVnaW9uc0VuYWJs
ZWQgOiAxOworICAgIGJvb2wgbV9jc3NSZWdpb25zRW5hYmxlZCA6IDE7CiAjZW5kaWYKICNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAgICAgICAgYm9vbCBtX2Nzc1ZhcmlhYmxlc0VuYWJsZWQg
OiAxOworICAgIGJvb2wgbV9jc3NWYXJpYWJsZXNFbmFibGVkIDogMTsKICNlbmRpZgotICAgICAg
ICBib29sIG1fcmVnaW9uQmFzZWRDb2x1bW5zRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9j
c3NHcmlkTGF5b3V0RW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9kb3dubG9hZGFibGVCaW5h
cnlGb250c0VuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1feHNzQXVkaXRvckVuYWJsZWQgOiAx
OwotICAgICAgICBib29sIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgOiAxOwotICAg
ICAgICBib29sIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxl
ZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zv
cm1zRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9y
VmlkZW9FbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdG
b3JQbHVnaW5zRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hY2NlbGVyYXRlZENvbXBvc2l0
aW5nRm9yQ2FudmFzRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yQW5pbWF0aW9uRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclNjcm9sbGFibGVGcmFtZXNFbmFibGVkIDogMTsgLy8g
V29ya3Mgb25seSBpbiBjb25qdW5jdGlvbiB3aXRoIGZvcmNlQ29tcG9zaXRpbmdNb2RlCi0gICAg
ICAgIGJvb2wgbV9zaG93RGVidWdCb3JkZXJzIDogMTsKLSAgICAgICAgYm9vbCBtX3Nob3dSZXBh
aW50Q291bnRlciA6IDE7Ci0gICAgICAgIGJvb2wgbV9leHBlcmltZW50YWxOb3RpZmljYXRpb25z
RW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV93ZWJHTEVuYWJsZWQgOiAxOwotICAgICAgICBi
b29sIG1fd2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX29w
ZW5HTE11bHRpc2FtcGxpbmdFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX3ByaXZpbGVnZWRX
ZWJHTEV4dGVuc2lvbnNFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX3dlYkF1ZGlvRW5hYmxl
ZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hY2NlbGVyYXRlZENhbnZhczJkRW5hYmxlZCA6IDE7Ci0g
ICAgICAgIGJvb2wgbV9kZWZlcnJlZENhbnZhczJkRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wg
bV9sb2FkRGVmZXJyaW5nRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV90aWxlZEJhY2tpbmdT
dG9yZUVuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFi
bGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZCA6IDE7CisgICAg
Ym9vbCBtX3JlZ2lvbkJhc2VkQ29sdW1uc0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV9jc3NHcmlk
TGF5b3V0RW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5h
YmxlZCA6IDE7CisgICAgYm9vbCBtX3hzc0F1ZGl0b3JFbmFibGVkIDogMTsKKyAgICBib29sIG1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkIDogMTsKKyAgICBib29sIG1fYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQgOiAxOworICAgIGJvb2wg
bV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkIDogMTsKKyAgICBib29sIG1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkIDogMTsKKyAgICBib29sIG1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckNhbnZhc0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV9h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yQW5pbWF0aW9uRW5hYmxlZCA6IDE7CisgICAgYm9vbCBt
X2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCA6IDE7CisgICAg
Ym9vbCBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWVzRW5hYmxlZCA6
IDE7IC8vIFdvcmtzIG9ubHkgaW4gY29uanVuY3Rpb24gd2l0aCBmb3JjZUNvbXBvc2l0aW5nTW9k
ZQorICAgIGJvb2wgbV9zaG93RGVidWdCb3JkZXJzIDogMTsKKyAgICBib29sIG1fc2hvd1JlcGFp
bnRDb3VudGVyIDogMTsKKyAgICBib29sIG1fZXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJs
ZWQgOiAxOworICAgIGJvb2wgbV93ZWJHTEVuYWJsZWQgOiAxOworICAgIGJvb2wgbV93ZWJHTEVy
cm9yc1RvQ29uc29sZUVuYWJsZWQgOiAxOworICAgIGJvb2wgbV9vcGVuR0xNdWx0aXNhbXBsaW5n
RW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX3ByaXZpbGVnZWRXZWJHTEV4dGVuc2lvbnNFbmFibGVk
IDogMTsKKyAgICBib29sIG1fd2ViQXVkaW9FbmFibGVkIDogMTsKKyAgICBib29sIG1fYWNjZWxl
cmF0ZWRDYW52YXMyZEVuYWJsZWQgOiAxOworICAgIGJvb2wgbV9kZWZlcnJlZENhbnZhczJkRW5h
YmxlZCA6IDE7CisgICAgYm9vbCBtX2xvYWREZWZlcnJpbmdFbmFibGVkIDogMTsKKyAgICBib29s
IG1fdGlsZWRCYWNraW5nU3RvcmVFbmFibGVkIDogMTsKKyAgICBib29sIG1fcGFnaW5hdGVEdXJp
bmdMYXlvdXRFbmFibGVkIDogMTsKKyAgICBib29sIG1fZG5zUHJlZmV0Y2hpbmdFbmFibGVkIDog
MTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgICAgIGJvb2wgbV9mdWxsU2NyZWVu
QVBJRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2Z1bGxTY3JlZW5BUElFbmFibGVkIDogMTsKICNl
bmRpZgotICAgICAgICBib29sIG1fYXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgOiAx
OwotICAgICAgICBib29sIG1fdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCA6IDE7Ci0gICAgICAg
IGJvb2wgbV9tZW1vcnlJbmZvRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9xdWFudGl6ZWRN
ZW1vcnlJbmZvRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9pbnRlcmFjdGl2ZUZvcm1WYWxp
ZGF0aW9uIDogMTsKLSAgICAgICAgYm9vbCBtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzIDogMTsK
LSAgICAgICAgYm9vbCBtX2h5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJv
b2wgbV9jcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxlZCA6IDE7Ci0g
ICAgICAgIGJvb2wgbV9mb3JjZUNvbXBvc2l0aW5nTW9kZSA6IDE7Ci0gICAgICAgIGJvb2wgbV9z
aG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQgOiAxOwotICAgICAg
ICBib29sIG1fZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSA6IDE7Ci0gICAgICAg
IGJvb2wgbV9hbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCA6IDE7Ci0gICAgICAgIGJvb2wg
bV9hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCA6IDE7CisgICAgYm9vbCBtX2FzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkIDogMTsKKyAgICBib29sIG1fdW5pZmllZFRleHRDaGVj
a2VyRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX21lbW9yeUluZm9FbmFibGVkIDogMTsKKyAgICBi
b29sIG1fcXVhbnRpemVkTWVtb3J5SW5mb0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV9pbnRlcmFj
dGl2ZUZvcm1WYWxpZGF0aW9uIDogMTsKKyAgICBib29sIG1fdXNlUHJlSFRNTDVQYXJzZXJRdWly
a3MgOiAxOworICAgIGJvb2wgbV9oeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQgOiAxOworICAgIGJv
b2wgbV9jcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxlZCA6IDE7Cisg
ICAgYm9vbCBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlIDogMTsKKyAgICBib29sIG1fc2hvdWxkSW5q
ZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50IDogMTsKKyAgICBib29sIG1fZml4
ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSA6IDE7CisgICAgYm9vbCBtX2FsbG93RGlz
cGxheU9mSW5zZWN1cmVDb250ZW50IDogMTsKKyAgICBib29sIG1fYWxsb3dSdW5uaW5nT2ZJbnNl
Y3VyZUNvbnRlbnQgOiAxOwogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgICAgICBi
b29sIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkIDogMTsKKyAgICBib29sIG1fc2Nyb2xsQW5pbWF0
b3JFbmFibGVkIDogMTsKICNlbmRpZgotICAgICAgICBib29sIG1fbWVkaWFQbGF5YmFja1JlcXVp
cmVzVXNlckdlc3R1cmUgOiAxOwotICAgICAgICBib29sIG1fbWVkaWFQbGF5YmFja0FsbG93c0lu
bGluZSA6IDE7Ci0gICAgICAgIGJvb2wgbV9wYXNzd29yZEVjaG9FbmFibGVkIDogMTsKLSAgICAg
ICAgYm9vbCBtX3N1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyA6IDE7Ci0gICAgICAgIGJv
b2wgbV9iYWNrc3BhY2VLZXlOYXZpZ2F0aW9uRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV92
aXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkIDogMTsKKyAgICBib29sIG1fbWVkaWFQbGF5YmFja1Jl
cXVpcmVzVXNlckdlc3R1cmUgOiAxOworICAgIGJvb2wgbV9tZWRpYVBsYXliYWNrQWxsb3dzSW5s
aW5lIDogMTsKKyAgICBib29sIG1fcGFzc3dvcmRFY2hvRW5hYmxlZCA6IDE7CisgICAgYm9vbCBt
X3N1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyA6IDE7CisgICAgYm9vbCBtX2JhY2tzcGFj
ZUtleU5hdmlnYXRpb25FbmFibGVkIDogMTsKKyAgICBib29sIG1fdmlzdWFsV29yZE1vdmVtZW50
RW5hYmxlZCA6IDE7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgICAgIGJvb2wgbV9z
aG91bGREaXNwbGF5U3VidGl0bGVzIDogMTsKLSAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlD
YXB0aW9ucyA6IDE7Ci0gICAgICAgIGJvb2wgbV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9u
cyA6IDE7CisgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlTdWJ0aXRsZXMgOiAxOworICAgIGJvb2wg
bV9zaG91bGREaXNwbGF5Q2FwdGlvbnMgOiAxOworICAgIGJvb2wgbV9zaG91bGREaXNwbGF5VGV4
dERlc2NyaXB0aW9ucyA6IDE7CiAjZW5kaWYKLSAgICAgICAgYm9vbCBtX3Njcm9sbGluZ0Nvb3Jk
aW5hdG9yRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxl
ZCA6IDE7CiAKLSAgICAgICAgYm9vbCBtX25vdGlmaWNhdGlvbnNFbmFibGVkIDogMTsKLSAgICAg
ICAgYm9vbCBtX25lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrIDogMTsKKyAgICBib29sIG1f
bm90aWZpY2F0aW9uc0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV9uZWVkc0lzTG9hZGluZ0luQVBJ
U2Vuc2VRdWlyayA6IDE7CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgICAgICBib29s
IG1fdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQgOiAxOworICAgIGJvb2wgbV90b3VjaEV2ZW50
RW11bGF0aW9uRW5hYmxlZCA6IDE7CiAjZW5kaWYKLSAgICAgICAgYm9vbCBtX3Nob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uIDogMTsKLSAgICAgICAgYm9vbCBtX3dhbnRzQmFsYW5jZWRTZXRE
ZWZlcnNMb2FkaW5nQmVoYXZpb3IgOiAxOwotICAgICAgICBib29sIG1fcmVxdWVzdEFuaW1hdGlv
bkZyYW1lRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9kZXZpY2VTdXBwb3J0c1RvdWNoIDog
MTsKLSAgICAgICAgYm9vbCBtX2RldmljZVN1cHBvcnRzTW91c2UgOiAxOwotICAgICAgICBib29s
IG1fbmVlZHNEaWRGaW5pc2hMb2FkT3JkZXJRdWlyayA6IDE7CisgICAgYm9vbCBtX3Nob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIDogMTsKKyAgICBib29sIG1fd2FudHNCYWxhbmNlZFNldERl
ZmVyc0xvYWRpbmdCZWhhdmlvciA6IDE7CisgICAgYm9vbCBtX3JlcXVlc3RBbmltYXRpb25GcmFt
ZUVuYWJsZWQgOiAxOworICAgIGJvb2wgbV9kZXZpY2VTdXBwb3J0c1RvdWNoIDogMTsKKyAgICBi
b29sIG1fZGV2aWNlU3VwcG9ydHNNb3VzZSA6IDE7CisgICAgYm9vbCBtX25lZWRzRGlkRmluaXNo
TG9hZE9yZGVyUXVpcmsgOiAxOwogCi0gICAgICAgIGJvb2wgbV9maXhlZFBvc2l0aW9uQ3JlYXRl
c1N0YWNraW5nQ29udGV4dCA6IDE7Ci0gICAgICAgIGJvb2wgbV9zeW5jWEhSSW5Eb2N1bWVudHNF
bmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2Nvb2tpZUVuYWJsZWQgOiAxOworICAgIGJvb2wg
bV9maXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dCA6IDE7CisgICAgYm9vbCBtX3N5
bmNYSFJJbkRvY3VtZW50c0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV9jb29raWVFbmFibGVkIDog
MTsKIAotICAgICAgICBib29sIG1fd2luZG93Rm9jdXNSZXN0cmljdGVkIDogMTsKKyAgICBib29s
IG1fd2luZG93Rm9jdXNSZXN0cmljdGVkIDogMTsKIAotICAgICAgICBib29sIG1fZGlhZ25vc3Rp
Y0xvZ2dpbmdFbmFibGVkIDogMTsKKyAgICBib29sIG1fZGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVk
IDogMTsKIAotICAgICAgICBib29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxl
ZCA6IDE7CisgICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgOiAx
OwogCi0gICAgICAgIFRpbWVyPFNldHRpbmdzPiBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGlt
ZXI7Ci0gICAgICAgIHZvaWQgaW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKFRpbWVyPFNl
dHRpbmdzPiopOwotICAgICAgICAKLSAgICAgICAgZG91YmxlIG1faW5jcmVtZW50YWxSZW5kZXJp
bmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHM7CisgICAgYm9vbCBtX2NsaWNrVG9TdGFydFBs
dWdJbnNFbmFibGVkIDogMTsKKworICAgIFRpbWVyPFNldHRpbmdzPiBtX3NldEltYWdlTG9hZGlu
Z1NldHRpbmdzVGltZXI7CisgICAgdm9pZCBpbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQo
VGltZXI8U2V0dGluZ3M+Kik7CisgICAgCisgICAgZG91YmxlIG1faW5jcmVtZW50YWxSZW5kZXJp
bmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHM7CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQot
ICAgICAgICBzdGF0aWMgYm9vbCBnQVZGb3VuZGF0aW9uRW5hYmxlZDsKKyAgICBzdGF0aWMgYm9v
bCBnQVZGb3VuZGF0aW9uRW5hYmxlZDsKICNlbmRpZgotICAgICAgICBzdGF0aWMgYm9vbCBnTW9j
a1Njcm9sbGJhcnNFbmFibGVkOwotICAgICAgICBzdGF0aWMgYm9vbCBnVXNlc092ZXJsYXlTY3Jv
bGxiYXJzOworICAgIHN0YXRpYyBib29sIGdNb2NrU2Nyb2xsYmFyc0VuYWJsZWQ7CisgICAgc3Rh
dGljIGJvb2wgZ1VzZXNPdmVybGF5U2Nyb2xsYmFyczsKIAogI2lmIFVTRShTQUZBUklfVEhFTUUp
Ci0gICAgICAgIHN0YXRpYyBib29sIGdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOworICAgIHN0
YXRpYyBib29sIGdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOwogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oV0lOKSB8fCAoT1MoV0lORE9XUykgJiYgUExBVEZPUk0oV1gpKQotICAgICAgICBzdGF0aWMg
Ym9vbCBnU2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnM7CisgICAgc3RhdGljIGJvb2wgZ1No
b3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzOwogI2VuZGlmCiAjaWYgVVNFKEpTQykKLSAgICAg
ICAgc3RhdGljIGJvb2wgZ1Nob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVy
czsKKyAgICBzdGF0aWMgYm9vbCBnU2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVT
ZXR0ZXJzOwogI2VuZGlmCi0gICAgfTsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmgKaW5kZXggY2I3OThiM2MzODU4NDVjMTNjMTg4Yjc4YzVlZTg2NTNhZThmNDE2ZC4uZDI2
MTAxYjUyNGYzZjZjNjhkYmQ4NmVkNmUyMWY0Y2NhZDg4ZTIyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0xMjcs
NiArMTI3LDcgQEAKICNkZWZpbmUgV2ViS2l0RGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkS2V5IEAi
V2ViS2l0RGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkIgogI2RlZmluZSBXZWJLaXRTY3JlZW5Gb250
U3Vic3RpdHV0aW9uRW5hYmxlZEtleSBAIldlYktpdFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFi
bGVkIgogI2RlZmluZSBXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXkgQCJXZWJLaXRTdG9y
YWdlQmxvY2tpbmdQb2xpY3kiCisjZGVmaW5lIFdlYktpdENsaWNrVG9TdGFydFBsdWdJbnNFbmFi
bGVkUHJlZmVyZW5jZUtleSBAIldlYktpdENsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkIgogCiAv
LyBUaGVzZSBhcmUgcHJpdmF0ZSBib3RoIGJlY2F1c2UgY2FsbGVycyBzaG91bGQgYmUgdXNpbmcg
dGhlIGNvdmVyIG1ldGhvZHMgYW5kIGJlY2F1c2UgdGhlCiAvLyBjb3ZlciBtZXRob2RzIHRoZW1z
ZWx2ZXMgYXJlIHByaXZhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tbQppbmRleCA3YzQ0ODI0ZjUyNTRjZjI5MTI1ZDNhMzI1YzUyNjIwZjZmYmJhMTNmLi5i
N2I0MWRiOTQ5MmUwOGMxNTJmMjhhODVmMDIwM2E0MjI4N2Y0YjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTQwNiw2ICs0MDYsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRTY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZEtleSwKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6V2ViQWxsb3dBbGxTdG9yYWdlXSwgV2ViS2l0U3RvcmFnZUJsb2NraW5nUG9s
aWN5S2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdENs
aWNrVG9TdGFydFBsdWdJbnNFbmFibGVkUHJlZmVyZW5jZUtleSwKIAogICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aExvbmdMb25nOkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCld
LCBXZWJLaXRBcHBsaWNhdGlvbkNhY2hlVG90YWxRdW90YSwKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhMb25nTG9uZzpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpXSwgV2Vi
S2l0QXBwbGljYXRpb25DYWNoZURlZmF1bHRPcmlnaW5RdW90YSwKQEAgLTE3NjYsNiArMTc2Nywx
NiBAQCBzdGF0aWMgTlNTdHJpbmcgKmNsYXNzSUJDcmVhdG9ySUQgPSBuaWw7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdlYlN0b3JhZ2VCbG9ja2luZ1BvbGljeT4oW3NlbGYgX2ludGVnZXJWYWx1
ZUZvcktleTpXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXldKTsKIH0KIAorLSAoQk9PTClj
bGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZAoreworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVl
Rm9yS2V5OldlYktpdENsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkUHJlZmVyZW5jZUtleV07Cit9
CisKKy0gKHZvaWQpc2V0Q2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAor
eworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0Q2xpY2tUb1N0
YXJ0UGx1Z0luc0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50
YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYkludGVybmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggMzkwMTcxNzJmMDNhZmMw
MTNkZGQ0NzhhMmJjN2Q5ZTZhM2UzMmIyMy4uMWVjY2ZkNGExOWVhMGU3NDA4Njk0MzY5M2FkYjgz
ZDFjNjdjNGNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzUHJpdmF0ZS5oCkBAIC0zMTcsNCArMzE3LDcgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQ
cmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2VkSW50ZXJuYWxOb3RpZmljYXRpb247CiAtICh2b2lk
KXNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeTooV2ViU3RvcmFnZUJsb2NraW5nUG9saWN5KXN0b3Jh
Z2VCbG9ja2luZ1BvbGljeTsKIC0gKFdlYlN0b3JhZ2VCbG9ja2luZ1BvbGljeSlzdG9yYWdlQmxv
Y2tpbmdQb2xpY3k7CiAKKy0gKEJPT0wpY2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQ7CistICh2
b2lkKXNldENsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkOihCT09MKWVuYWJsZWQ7CisKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0NTdkNDA2MmE0YmMwN2JiYjgy
NTU4NDhmZTg1ZmQ4OGNiN2RmOGZhLi5iNDFjYTA0NjhjMzQ4ZTBlZGNjZGVjMjYzYmMwNzcyMmQ4
Mzc0ZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xNTgwLDYgKzE1
ODAsOCBAQCBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGlsZUxvYWRpbmdRdWlyaygpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIHNldHRpbmdzLT5zZXRDbGlja1RvU3RhcnRQbHVn
SW5zRW5hYmxlZChbcHJlZmVyZW5jZXMgY2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWRdKTsKKwog
ICAgIC8vIFdlIGhhdmUgZW5hYmxlZCB0aGlzIHNldHRpbmcgaW4gV2ViS2l0MiBmb3IgdGhlIHNh
a2Ugb2Ygc29tZSBTY3JvbGxpbmdDb29yZGluYXRvciB3b3JrLgogICAgIC8vIFRvIGF2b2lkIHBv
c3NpYmxlIHJlbmRlcmluZyBkaWZmZXJlbmNlcywgd2Ugc2hvdWxkIGVuYWJsZSBpdCBmb3IgV2Vi
S2l0MSB0b28uCiAgICAgc2V0dGluZ3MtPnNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdD
b250ZXh0KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZl
cmVuY2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3Jl
LmgKaW5kZXggYWNiNGFiZjM1ZDQzZDFiYTE2OTNlMWFlYmQ2OWRhMzU4MjY2ZThiMy4uOGMwODQ5
MGE1NjQ5OWZiYjBlMzZmNDQ3OTE3ZmExNjZhZmZjNzJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCkBAIC0xMzYsNiArMTM2LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAgICAgbWFjcm8oU2Nyb2xsQW5pbWF0b3JFbmFibGVkLCBzY3JvbGxBbmltYXRv
ckVuYWJsZWQsIEJvb2wsIGJvb2wsIERFRkFVTFRfV0VCS0lUX1NDUk9MTF9BTklNQVRPUl9FTkFC
TEVEKSBcCiAgICAgbWFjcm8oU2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQsIHNjcmVlbkZv
bnRTdWJzdGl0dXRpb25FbmFibGVkLCBCb29sLCBib29sLCBERUZBVUxUX1NDUkVFTl9GT05UX1NV
QlNUSVRVVElPTl9FTkFCTEVEKSBcCiAgICAgbWFjcm8oQ29va2llRW5hYmxlZCwgY29va2llRW5h
YmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXAorICAgIG1hY3JvKENsaWNrVG9TdGFydFBsdWdJbnNF
bmFibGVkLCBjbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwK
ICAgICBcCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX0RPVUJMRV9QUkVGRVJFTkNFKG1hY3Jv
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAKaW5kZXggYTNjMDI4YzRhMDEwMmVkOTgwODRjMzkyYjYyOWNhMzVjM2Y0ZTcyYi4uNWRkNTg4
YjdmMmNkNzI0MjBiNjljMGJmZTA2YjZmZjQ5YTBlMjJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcApAQCAtOTIzLDMgKzkyMywxMyBA
QCBib29sIFdLUHJlZmVyZW5jZXNHZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZQogewogICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5j
ZXNSZWYpLT5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7CiB9CisKK3ZvaWQg
V0tQcmVmZXJlbmNlc1NldENsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwocHJlZmVyZW5j
ZXNSZWYpLT5zZXRDbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZChlbmFibGVkKTsKK30KKworYm9v
bCBXS1ByZWZlcmVuY2VzR2V0Q2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+Y2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5oCmluZGV4IGMwZmRlNjdmZDkxZGJjY2ZkOWMy
OGJkMjUzZTJlNzU2NmEwNGE0NWYuLmE3YjIzMTJlNDI4N2JlOGYzZmM1MjRiN2MwYjE2NWExNjA3
ZTZiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5j
ZXMuaApAQCAtMjE2LDYgKzIxNiwxMCBAQCBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0
U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oV0tQcmVmZXJlbmNlc1JlZiBwcgogV0tfRVhQ
T1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0b3JhZ2VCbG9ja2luZ1BvbGljeSBwb2xpY3kpOwog
V0tfRVhQT1JUIFdLU3RvcmFnZUJsb2NraW5nUG9saWN5IFdLUHJlZmVyZW5jZXNHZXRTdG9yYWdl
QmxvY2tpbmdQb2xpY3koV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CiAKKy8vIERl
ZmF1bHRzIHRvIGZhbHNlCitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Q2xpY2tUb1N0
YXJ0UGx1Z0luc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBl
bmFibGVkKTsKK1dLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRDbGlja1RvU3RhcnRQbHVn
SW5zRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCA1YzRmNmU4ZWQ3YzUzYWY3ZmU3MTYxMjQzMWI3MWMxZDYzOTE2MjRlLi4yZGQ4NTg0YjAy
MmEzMDVmYzQ0YWFjOTlkOWJlZDZmZDFhNmQ3MjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTUxLDYgKzIxNTEsOCBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3Jl
KQogCiAgICAgc2V0dGluZ3MtPnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQo
bV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKTsKIAorICAgIHNldHRpbmdzLT5z
ZXRDbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OmNsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkS2V5KCkpKTsKKwogICAg
IHBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2Uoc3RvcmUpOwogCiAgICAgaWYgKG1fZHJhd2lu
Z0FyZWEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167024</attachid>
            <date>2012-10-03 19:22:58 -0700</date>
            <delta_ts>2012-10-04 14:31:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98319-20121003192208.patch</filename>
            <type>text/plain</type>
            <size>87450</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E0ZWJhNzE1NmNlZjA3
ZWY5ZWM1NGFiN2Y0MTIyYjZmMDdkYWJkNS4uMjY4YjEzMjFmYmViZTM4MmJlYjFmZTRkNmUyNTMy
ZmYyYWZiMGQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEwLTAzICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIGVuYWJs
ZSBwbHVnaW4gYWN0aXZhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTgzMTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2NDgwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBi
aXQgZm9yIHRoaXMgcHJlZmVyZW5jZS4gQWxzbywgcmVmb3JtYXQgdGhlIGZpbGUgdG8gZml0IGN1
cnJlbnQgV2ViS2l0IHN0eWxlLgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOiBQcmVmZXJlbmNlIGlzIGZhbHNlIGJ5
IGRlZmF1bHQuCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOiBSZWZvcm1hdCBmaWxlLiBBZGRl
ZCBtX2NsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkIGJpdC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpzZXRDbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZCk6IFNldCB0aGUgYml0LgorICAg
ICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmNsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkKTogUmV0
dXJuIHRoZSBiaXQuCisKIDIwMTItMTAtMDMgIERvdWdsYXMgU3RvY2t3ZWxsICA8ZHN0b2Nrd2Vs
bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21pdW0gbmVlZHMgc3VwcG9ydCBmb3IgYm9y
ZGVyIHJhZGl1cyBjbGlwcGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGJjNGQ2ZjBlYzc2NWM5ZGRl
ZWYxMDI5ZWFjMDNhZGE1YWMyZTgxZTIuLmRlZmRmNzM5MjUzYzZmOWI0YjAxOTU5MzVmMTBmMWUz
NTBiODA3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEgKzEsMjAgQEAKKzIwMTItMTAtMDMgIEpv
biBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHNldHRpbmcgdG8gZW5h
YmxlIHBsdWdpbiBhY3RpdmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODMxOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI0MjY0ODA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGNs
aWNrVG9TdGFydFBsdWdpbkVuYWJsZWQgcHJlZmVyZW5jZSB0byBXZWJLaXQgY2xpZW50cy4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6IEFkZCBXZWJLaXRD
bGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZCBrZXkuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOiBTZXR0
aW5nIGlzIHR1cm5lZCBvZmYgYnkgZGVmYXVsdC4KKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
Y2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWRdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
c2V0Q2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQ
cmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKTogVXBkYXRlIHNldHRpbmdzIGJh
c2VkIG9uIHByZWZlcmVuY2UuCisKID09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxvZy0yMDEyLTEw
LTAyID09CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggODViMzNkNDdlZjY2MjJjZmZmMWE4ODA2YmVlNTFhYjRkYzA5
ZDRjYy4uNDRiNjNjN2IzOTdkMjkxNzQyMDExOGExYTYxOGY2Y2UzMTI1MDdjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTAzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIGVuYWJsZSBwbHVnaW4gYWN0aXZhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMTkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2NDgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBjbGlja1RvU3RhcnRQbHVnaW5FbmFibGVk
IHByZWZlcmVuY2UgdG8gV2ViS2l0IGNsaWVudHMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJl
ZmVyZW5jZXNTdG9yZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0Q2xpY2tU
b1N0YXJ0UGx1Z0luc0VuYWJsZWQpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldENsaWNrVG9T
dGFydFBsdWdJbnNFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOiBVcGRhdGUgcHJlZmVyZW5j
ZSBiYXNlZCBvbiBzdG9yZS4KKwogMjAxMi0xMC0wMyAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5A
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgRml4IHVudXNlZCBwYXJhbWV0ZXIgY29tcGlsZSB3YXJu
aW5ncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggNzgyOTU4ZjNlNWRmYzBkNTY1MWFm
ZTdmOTQxYmE4NTUyYjM3MTkyNS4uYTFmMGI0MDU0OWMyYmE1NjZhMTkwNDgwZGU0MjYzZWI0NjI0
NTJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTI5NCw2ICsyOTQsNyBAQCBTZXR0
aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1fZGlhZ25vc3RpY0xvZ2dpbmdFbmFi
bGVkKGZhbHNlKQogICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZh
bHNlKQogICAgICwgbV9hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcihmYWxzZSkKKyAg
ICAsIG1fY2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3NldEltYWdl
TG9hZGluZ1NldHRpbmdzVGltZXIodGhpcywgJlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5n
c1RpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1l
b3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91
dEluU2Vjb25kcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBiZDkxODI3ODQ1ZThjMmQ5
ZTYxNzY2NmUyOWEwNDY0NDQ0N2NlZDcyLi5kMWUyNGQ2ZDBjZGFkM2I4NWVhYjY2MzhjZGI1MTM0
MGUwMjQ1OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC00Myw4MDcgKzQzLDgxMSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBQYWdlOworY2xhc3MgUGFnZTsKIAot
ICAgIGVudW0gRWRpdGFibGVMaW5rQmVoYXZpb3IgewotICAgICAgICBFZGl0YWJsZUxpbmtEZWZh
dWx0QmVoYXZpb3IsCi0gICAgICAgIEVkaXRhYmxlTGlua0Fsd2F5c0xpdmUsCi0gICAgICAgIEVk
aXRhYmxlTGlua09ubHlMaXZlV2l0aFNoaWZ0S2V5LAotICAgICAgICBFZGl0YWJsZUxpbmtMaXZl
V2hlbk5vdEZvY3VzZWQsCi0gICAgICAgIEVkaXRhYmxlTGlua05ldmVyTGl2ZQotICAgIH07Citl
bnVtIEVkaXRhYmxlTGlua0JlaGF2aW9yIHsKKyAgICBFZGl0YWJsZUxpbmtEZWZhdWx0QmVoYXZp
b3IsCisgICAgRWRpdGFibGVMaW5rQWx3YXlzTGl2ZSwKKyAgICBFZGl0YWJsZUxpbmtPbmx5TGl2
ZVdpdGhTaGlmdEtleSwKKyAgICBFZGl0YWJsZUxpbmtMaXZlV2hlbk5vdEZvY3VzZWQsCisgICAg
RWRpdGFibGVMaW5rTmV2ZXJMaXZlCit9OwogCi0gICAgZW51bSBUZXh0RGlyZWN0aW9uU3VibWVu
dUluY2x1c2lvbkJlaGF2aW9yIHsKLSAgICAgICAgVGV4dERpcmVjdGlvblN1Ym1lbnVOZXZlcklu
Y2x1ZGVkLAotICAgICAgICBUZXh0RGlyZWN0aW9uU3VibWVudUF1dG9tYXRpY2FsbHlJbmNsdWRl
ZCwKLSAgICAgICAgVGV4dERpcmVjdGlvblN1Ym1lbnVBbHdheXNJbmNsdWRlZAotICAgIH07Citl
bnVtIFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IgeworICAgIFRleHREaXJl
Y3Rpb25TdWJtZW51TmV2ZXJJbmNsdWRlZCwKKyAgICBUZXh0RGlyZWN0aW9uU3VibWVudUF1dG9t
YXRpY2FsbHlJbmNsdWRlZCwKKyAgICBUZXh0RGlyZWN0aW9uU3VibWVudUFsd2F5c0luY2x1ZGVk
Cit9OwogCi0gICAgLy8gVVNjcmlwdENvZGUgdXNlcyAtMSBhbmQgMCBmb3IgVVNjcmlwdEludmFs
aWRDb2RlIGFuZCBVU2NyaXB0Q29tbW9uLgotICAgIC8vIFdlIG5lZWQgdG8gdXNlIC0yIGFuZCAt
MyBmb3IgZW1wdHkgdmFsdWUgYW5kIGRlbGV0ZWQgdmFsdWUuCi0gICAgc3RydWN0IFVTY3JpcHRD
b2RlSGFzaFRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8aW50PiB7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKLSAgICAgICAgc3RhdGlj
IGludCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gLTI7IH0KLSAgICAgICAgc3RhdGljIHZvaWQgY29u
c3RydWN0RGVsZXRlZFZhbHVlKGludCYgc2xvdCkgeyBzbG90ID0gLTM7IH0KLSAgICAgICAgc3Rh
dGljIGJvb2wgaXNEZWxldGVkVmFsdWUoaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSAtMzsg
fQotICAgIH07CisvLyBVU2NyaXB0Q29kZSB1c2VzIC0xIGFuZCAwIGZvciBVU2NyaXB0SW52YWxp
ZENvZGUgYW5kIFVTY3JpcHRDb21tb24uCisvLyBXZSBuZWVkIHRvIHVzZSAtMiBhbmQgLTMgZm9y
IGVtcHR5IHZhbHVlIGFuZCBkZWxldGVkIHZhbHVlLgorc3RydWN0IFVTY3JpcHRDb2RlSGFzaFRy
YWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8aW50PiB7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOworICAgIHN0YXRpYyBpbnQgZW1wdHlWYWx1ZSgp
IHsgcmV0dXJuIC0yOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKGlu
dCYgc2xvdCkgeyBzbG90ID0gLTM7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShp
bnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IC0zOyB9Cit9OwogCi0gICAgdHlwZWRlZiBIYXNo
TWFwPGludCwgQXRvbWljU3RyaW5nLCBEZWZhdWx0SGFzaDxpbnQ+OjpIYXNoLCBVU2NyaXB0Q29k
ZUhhc2hUcmFpdHM+IFNjcmlwdEZvbnRGYW1pbHlNYXA7Cit0eXBlZGVmIEhhc2hNYXA8aW50LCBB
dG9taWNTdHJpbmcsIERlZmF1bHRIYXNoPGludD46Okhhc2gsIFVTY3JpcHRDb2RlSGFzaFRyYWl0
cz4gU2NyaXB0Rm9udEZhbWlseU1hcDsKIAotICAgIGNsYXNzIFNldHRpbmdzIHsKLSAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2V0dGluZ3MpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFNldHRpbmdzPiBjcmVhdGUo
UGFnZSopOworY2xhc3MgU2V0dGluZ3MgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldHRp
bmdzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8U2V0dGluZ3M+IGNyZWF0ZShQYWdlKik7CiAKLSAgICAgICAgdm9pZCBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NP
TU1PTik7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RhbmRhcmRGb250RmFtaWx5KFVT
Y3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIHZvaWQgc2V0U3RhbmRhcmRG
b250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01N
T04pOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RhbmRhcmRGb250RmFtaWx5KFVTY3JpcHRD
b2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0Rml4ZWRGb250
RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04p
OwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29k
ZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICB2b2lkIHNldEZpeGVkRm9udEZhbWlseShj
b25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRf
Q09NTU9OKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldFNlcmlmRm9udEZhbWlseShjb25zdCBB
dG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKLSAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBzZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NP
TU1PTikgY29uc3Q7CisgICAgdm9pZCBzZXRTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3Ry
aW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBzZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7
CiAKLSAgICAgICAgdm9pZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmlu
ZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHNhbnNTZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikg
Y29uc3Q7CisgICAgdm9pZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmlu
ZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOworICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2Fuc1NlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25z
dDsKIAotICAgICAgICB2b2lkIHNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmlu
ZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNv
bnN0OworICAgIHZvaWQgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwg
VVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBj
dXJzaXZlRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAot
ICAgICAgICB2b2lkIHNldEZhbnRhc3lGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVT
Y3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0Owor
ICAgIHZvaWQgc2V0RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlw
dENvZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYW50YXN5
Rm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAotICAgICAg
ICB2b2lkIHNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3Jp
cHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHBp
Y3RvZ3JhcGhGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0Owor
ICAgIHZvaWQgc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNj
cmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwaWN0
b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAot
ICAgICAgICB2b2lkIHNldE1pbmltdW1Gb250U2l6ZShpbnQpOwotICAgICAgICBpbnQgbWluaW11
bUZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtRm9udFNpemU7IH0KKyAgICB2b2lk
IHNldE1pbmltdW1Gb250U2l6ZShpbnQpOworICAgIGludCBtaW5pbXVtRm9udFNpemUoKSBjb25z
dCB7IHJldHVybiBtX21pbmltdW1Gb250U2l6ZTsgfQogCi0gICAgICAgIHZvaWQgc2V0TWluaW11
bUxvZ2ljYWxGb250U2l6ZShpbnQpOwotICAgICAgICBpbnQgbWluaW11bUxvZ2ljYWxGb250U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bUxvZ2ljYWxGb250U2l6ZTsgfQorICAgIHZvaWQg
c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZShpbnQpOworICAgIGludCBtaW5pbXVtTG9naWNhbEZv
bnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtTG9naWNhbEZvbnRTaXplOyB9CiAKLSAg
ICAgICAgdm9pZCBzZXREZWZhdWx0Rm9udFNpemUoaW50KTsKLSAgICAgICAgaW50IGRlZmF1bHRG
b250U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdEZvbnRTaXplOyB9CisgICAgdm9pZCBz
ZXREZWZhdWx0Rm9udFNpemUoaW50KTsKKyAgICBpbnQgZGVmYXVsdEZvbnRTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWZhdWx0Rm9udFNpemU7IH0KIAotICAgICAgICB2b2lkIHNldERlZmF1bHRG
aXhlZEZvbnRTaXplKGludCk7Ci0gICAgICAgIGludCBkZWZhdWx0Rml4ZWRGb250U2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmYXVsdEZpeGVkRm9udFNpemU7IH0KKyAgICB2b2lkIHNldERlZmF1
bHRGaXhlZEZvbnRTaXplKGludCk7CisgICAgaW50IGRlZmF1bHRGaXhlZEZvbnRTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9kZWZhdWx0Rml4ZWRGb250U2l6ZTsgfQogCi0gICAgICAgIHZvaWQgc2V0
U2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgc2NyZWVu
Rm9udFN1YnN0aXR1dGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3NjcmVlbkZvbnRTdWJz
dGl0dXRpb25FbmFibGVkOyB9CisgICAgdm9pZCBzZXRTY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5h
YmxlZChib29sKTsKKyAgICBib29sIHNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZDsgfQogCiAjaWYgRU5B
QkxFKFRFWFRfQVVUT1NJWklORykKLSAgICAgICAgdm9pZCBzZXRUZXh0QXV0b3NpemluZ0VuYWJs
ZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgdGV4dEF1dG9zaXppbmdFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV90ZXh0QXV0b3NpemluZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFRleHRBdXRvc2l6
aW5nRW5hYmxlZChib29sKTsKKyAgICBib29sIHRleHRBdXRvc2l6aW5nRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dEF1dG9zaXppbmdFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRU
ZXh0QXV0b3NpemluZ0ZvbnRTY2FsZUZhY3RvcihmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHRleHRB
dXRvc2l6aW5nRm9udFNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0QXV0b3Npemlu
Z0ZvbnRTY2FsZUZhY3RvcjsgfQorICAgIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdGb250U2NhbGVG
YWN0b3IoZmxvYXQpOworICAgIGZsb2F0IHRleHRBdXRvc2l6aW5nRm9udFNjYWxlRmFjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0QXV0b3NpemluZ0ZvbnRTY2FsZUZhY3RvcjsgfQogCi0gICAg
ICAgIC8vIE9ubHkgc2V0IGJ5IExheW91dCBUZXN0cywgYW5kIG9ubHkgdXNlZCBpZiB0ZXh0QXV0
b3NpemluZ0VuYWJsZWQoKSByZXR1cm5zIHRydWUuCi0gICAgICAgIHZvaWQgc2V0VGV4dEF1dG9z
aXppbmdXaW5kb3dTaXplT3ZlcnJpZGUoY29uc3QgSW50U2l6ZSYpOwotICAgICAgICBjb25zdCBJ
bnRTaXplJiB0ZXh0QXV0b3NpemluZ1dpbmRvd1NpemVPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dEF1dG9zaXppbmdXaW5kb3dTaXplT3ZlcnJpZGU7IH0KKyAgICAvLyBPbmx5IHNldCBi
eSBMYXlvdXQgVGVzdHMsIGFuZCBvbmx5IHVzZWQgaWYgdGV4dEF1dG9zaXppbmdFbmFibGVkKCkg
cmV0dXJucyB0cnVlLgorICAgIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdXaW5kb3dTaXplT3ZlcnJp
ZGUoY29uc3QgSW50U2l6ZSYpOworICAgIGNvbnN0IEludFNpemUmIHRleHRBdXRvc2l6aW5nV2lu
ZG93U2l6ZU92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0QXV0b3NpemluZ1dpbmRvd1Np
emVPdmVycmlkZTsgfQogI2VuZGlmCiAKLSAgICAgICAgLy8gVW5saWtlIGFyZUltYWdlc0VuYWJs
ZWQsIHRoaXMgb25seSBzdXBwcmVzc2VzIHRoZSBuZXR3b3JrIGxvYWQgb2YKLSAgICAgICAgLy8g
dGhlIGltYWdlIFVSTC4gIEEgY2FjaGVkIGltYWdlIHdpbGwgc3RpbGwgYmUgcmVuZGVyZWQgaWYg
cmVxdWVzdGVkLgotICAgICAgICB2b2lkIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29s
KTsKLSAgICAgICAgYm9vbCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseTsgfQorICAgIC8vIFVubGlrZSBhcmVJbWFnZXNF
bmFibGVkLCB0aGlzIG9ubHkgc3VwcHJlc3NlcyB0aGUgbmV0d29yayBsb2FkIG9mCisgICAgLy8g
dGhlIGltYWdlIFVSTC4gQSBjYWNoZWQgaW1hZ2Ugd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBpZiBy
ZXF1ZXN0ZWQuCisgICAgdm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9vbCk7Cisg
ICAgYm9vbCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRz
SW1hZ2VzQXV0b21hdGljYWxseTsgfQogCi0gICAgICAgIC8vIFRoaXMgc2V0dGluZyBvbmx5IGFm
ZmVjdHMgc2l0ZSBpY29uIGltYWdlIGxvYWRpbmcgaWYgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
IHNldHRpbmcgaXMgZmFsc2UgYW5kIHRoaXMgc2V0dGluZyBpcyB0cnVlLgotICAgICAgICAvLyBB
bGwgb3RoZXIgcGVybXV0YXRpb25zIHN0aWxsIGhlZWQgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
IHNldHRpbmcuCi0gICAgICAgIHZvaWQgc2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9h
ZGluZ1NldHRpbmcoYm9vbCk7Ci0gICAgICAgIGJvb2wgbG9hZHNTaXRlSWNvbnNJZ25vcmluZ0lt
YWdlTG9hZGluZ1NldHRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzU2l0ZUljb25zSWdub3Jp
bmdJbWFnZUxvYWRpbmdTZXR0aW5nOyB9CisgICAgLy8gVGhpcyBzZXR0aW5nIG9ubHkgYWZmZWN0
cyBzaXRlIGljb24gaW1hZ2UgbG9hZGluZyBpZiBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgc2V0
dGluZyBpcyBmYWxzZSBhbmQgdGhpcyBzZXR0aW5nIGlzIHRydWUuCisgICAgLy8gQWxsIG90aGVy
IHBlcm11dGF0aW9ucyBzdGlsbCBoZWVkIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSBzZXR0aW5n
LgorICAgIHZvaWQgc2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmco
Ym9vbCk7CisgICAgYm9vbCBsb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1Nl
dHRpbmc7IH0KIAotICAgICAgICB2b2lkIHNldFNjcmlwdEVuYWJsZWQoYm9vbCk7Ci0gICAgICAg
IC8vIEluc3RlYWQgb2YgY2FsbGluZyBpc1NjcmlwdEVuYWJsZWQgZGlyZWN0bHksIHBsZWFzZSBj
b25zaWRlciBjYWxsaW5nCi0gICAgICAgIC8vIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVT
Y3JpcHRzLCB3aGljaCB0YWtlcyB0aGluZ3MgbGlrZSB0aGUKLSAgICAgICAgLy8gSFRNTCBzYW5k
Ym94IGF0dHJpYnV0ZSBpbnRvIGFjY291bnQuCi0gICAgICAgIGJvb2wgaXNTY3JpcHRFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc1NjcmlwdEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFNjcmlw
dEVuYWJsZWQoYm9vbCk7CisgICAgLy8gSW5zdGVhZCBvZiBjYWxsaW5nIGlzU2NyaXB0RW5hYmxl
ZCBkaXJlY3RseSwgcGxlYXNlIGNvbnNpZGVyIGNhbGxpbmcKKyAgICAvLyBTY3JpcHRDb250cm9s
bGVyOjpjYW5FeGVjdXRlU2NyaXB0cywgd2hpY2ggdGFrZXMgdGhpbmdzIGxpa2UgdGhlCisgICAg
Ly8gSFRNTCBzYW5kYm94IGF0dHJpYnV0ZSBpbnRvIGFjY291bnQuCisgICAgYm9vbCBpc1Njcmlw
dEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2NyaXB0RW5hYmxlZDsgfQogCi0gICAgICAg
IHZvaWQgc2V0V2ViU2VjdXJpdHlFbmFibGVkKGJvb2wpOwotICAgICAgICBib29sIGlzV2ViU2Vj
dXJpdHlFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1dlYlNlY3VyaXR5RW5hYmxlZDsgfQor
ICAgIHZvaWQgc2V0V2ViU2VjdXJpdHlFbmFibGVkKGJvb2wpOworICAgIGJvb2wgaXNXZWJTZWN1
cml0eUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzV2ViU2VjdXJpdHlFbmFibGVkOyB9CiAK
LSAgICAgICAgdm9pZCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKTsK
LSAgICAgICAgYm9vbCBhbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcygpIGNvbnN0IHsg
cmV0dXJuIG1fYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM7IH0KKyAgICB2b2lkIHNl
dEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOworICAgIGJvb2wgYWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93VW5pdmVy
c2FsQWNjZXNzRnJvbUZpbGVVUkxzOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHMoYm9vbCk7Ci0gICAgICAgIGJvb2wgYWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM7IH0K
KyAgICB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKTsKKyAgICBib29s
IGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzOyB9CiAKLSAgICAgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q2FuT3Bl
bldpbmRvd3NBdXRvbWF0aWNhbGx5KGJvb2wpOwotICAgICAgICBib29sIGphdmFTY3JpcHRDYW5P
cGVuV2luZG93c0F1dG9tYXRpY2FsbHkoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRDYW5P
cGVuV2luZG93c0F1dG9tYXRpY2FsbHk7IH0KKyAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHkoYm9vbCk7CisgICAgYm9vbCBqYXZhU2NyaXB0Q2FuT3Blbldp
bmRvd3NBdXRvbWF0aWNhbGx5KCkgY29uc3QgeyByZXR1cm4gbV9qYXZhU2NyaXB0Q2FuT3Blbldp
bmRvd3NBdXRvbWF0aWNhbGx5OyB9CiAKLSAgICAgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q2FuQWNj
ZXNzQ2xpcGJvYXJkKGJvb2wpOwotICAgICAgICBib29sIGphdmFTY3JpcHRDYW5BY2Nlc3NDbGlw
Ym9hcmQoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQ7IH0K
KyAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoYm9vbCk7CisgICAgYm9v
bCBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCkgY29uc3QgeyByZXR1cm4gbV9qYXZhU2Ny
aXB0Q2FuQWNjZXNzQ2xpcGJvYXJkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkOyB9CisgICAg
dm9pZCBzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBpc1NwYXRp
YWxOYXZpZ2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTcGF0aWFsTmF2aWdhdGlv
bkVuYWJsZWQ7IH0KIAotICAgICAgICB2b2lkIHNldEphdmFFbmFibGVkKGJvb2wpOwotICAgICAg
ICBib29sIGlzSmF2YUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSmF2YUVuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldEphdmFFbmFibGVkKGJvb2wpOworICAgIGJvb2wgaXNKYXZhRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNKYXZhRW5hYmxlZDsgfQogCi0gICAgICAgIC8vIFRoaXMgc2V0
dGluZ3MgaXMgb25seSBjb25zdWx0ZWQgaWYgaXNKYXZhRW5hYmxlZCgpIHJldHVybnMgdHJ1ZTsK
LSAgICAgICAgdm9pZCBzZXRKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoYm9vbCk7Ci0gICAgICAg
IGJvb2wgaXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoKSBjb25zdCB7IHJldHVybiBtX2lzSmF2
YUVuYWJsZWRGb3JMb2NhbEZpbGVzOyB9CisgICAgLy8gVGhpcyBzZXR0aW5ncyBpcyBvbmx5IGNv
bnN1bHRlZCBpZiBpc0phdmFFbmFibGVkKCkgcmV0dXJucyB0cnVlOworICAgIHZvaWQgc2V0SmF2
YUVuYWJsZWRGb3JMb2NhbEZpbGVzKGJvb2wpOworICAgIGJvb2wgaXNKYXZhRW5hYmxlZEZvckxv
Y2FsRmlsZXMoKSBjb25zdCB7IHJldHVybiBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzOyB9
CiAKLSAgICAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wpOwotICAgICAgICBib29sIGFy
ZUltYWdlc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUltYWdlc0VuYWJsZWQ7IH0KKyAg
ICB2b2lkIHNldEltYWdlc0VuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBhcmVJbWFnZXNFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9hcmVJbWFnZXNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBz
ZXRNZWRpYUVuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgaXNNZWRpYUVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzTWVkaWFFbmFibGVkOyB9CisgICAgdm9pZCBzZXRNZWRpYUVuYWJsZWQo
Ym9vbCk7CisgICAgYm9vbCBpc01lZGlhRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRp
YUVuYWJsZWQ7IH0KIAotICAgICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGJvb2wpOwotICAg
ICAgICBib29sIGFyZVBsdWdpbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcmVQbHVnaW5z
RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBh
cmVQbHVnaW5zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlUGx1Z2luc0VuYWJsZWQ7IH0K
IAotICAgICAgICB2b2lkIHNldExvY2FsU3RvcmFnZUVuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJv
b2wgbG9jYWxTdG9yYWdlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlRW5h
YmxlZDsgfQorICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChib29sKTsKKyAgICBib29s
IGxvY2FsU3RvcmFnZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZUVuYWJs
ZWQ7IH0KIAotICAgICAgICAvLyBBbGxvdyBjbGllbnRzIGNvbmNlcm5lZCB3aXRoIG1lbW9yeSBj
b25zdW1wdGlvbiB0byBzZXQgYSBxdW90YSBvbiBzZXNzaW9uIHN0b3JhZ2UKLSAgICAgICAgLy8g
c2luY2UgdGhlIG1lbW9yeSB1c2VkIHdvbid0IGJlIHJlbGVhc2VkIHVudGlsIHRoZSBQYWdlIGlz
IGRlc3Ryb3llZC4KLSAgICAgICAgLy8gRGVmYXVsdCBpcyBub1F1b3RhLgotICAgICAgICB2b2lk
IHNldFNlc3Npb25TdG9yYWdlUXVvdGEodW5zaWduZWQpOwotICAgICAgICB1bnNpZ25lZCBzZXNz
aW9uU3RvcmFnZVF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uU3RvcmFnZVF1b3RhOyB9
CisgICAgLy8gQWxsb3cgY2xpZW50cyBjb25jZXJuZWQgd2l0aCBtZW1vcnkgY29uc3VtcHRpb24g
dG8gc2V0IGEgcXVvdGEgb24gc2Vzc2lvbiBzdG9yYWdlCisgICAgLy8gc2luY2UgdGhlIG1lbW9y
eSB1c2VkIHdvbid0IGJlIHJlbGVhc2VkIHVudGlsIHRoZSBQYWdlIGlzIGRlc3Ryb3llZC4KKyAg
ICAvLyBEZWZhdWx0IGlzIG5vUXVvdGEuCisgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZVF1b3Rh
KHVuc2lnbmVkKTsKKyAgICB1bnNpZ25lZCBzZXNzaW9uU3RvcmFnZVF1b3RhKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uU3RvcmFnZVF1b3RhOyB9CiAKLSAgICAgICAgLy8gV2hlbiB0aGlzIG9w
dGlvbiBpcyBzZXQsIFdlYkNvcmUgd2lsbCBhdm9pZCBzdG9yaW5nIGFueSByZWNvcmQgb2YgYnJv
d3NpbmcgYWN0aXZpdHkKLSAgICAgICAgLy8gdGhhdCBtYXkgcGVyc2lzdCBvbiBkaXNrIG9yIHJl
bWFpbiBkaXNwbGF5ZWQgd2hlbiB0aGUgb3B0aW9uIGlzIHJlc2V0LgotICAgICAgICAvLyBUaGlz
IG9wdGlvbiBkb2VzIG5vdCBhZmZlY3QgdGhlIHN0b3JhZ2Ugb2Ygc3VjaCBpbmZvcm1hdGlvbiBp
biBSQU0uCi0gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJlc3BlY3QgdGhpcyBz
ZXR0aW5nOgotICAgICAgICAvLyAgLSBIVE1MNS9ET00gU3RvcmFnZQotICAgICAgICAvLyAgLSBJ
Y29uIERhdGFiYXNlCi0gICAgICAgIC8vICAtIENvbnNvbGUgTWVzc2FnZXMKLSAgICAgICAgLy8g
IC0gTWVtb3J5Q2FjaGUKLSAgICAgICAgLy8gIC0gQXBwbGljYXRpb24gQ2FjaGUKLSAgICAgICAg
Ly8gIC0gQmFjay9Gb3J3YXJkIFBhZ2UgSGlzdG9yeQotICAgICAgICAvLyAgLSBQYWdlIFNlYXJj
aCBSZXN1bHRzCi0gICAgICAgIC8vICAtIEhUVFAgQ29va2llcwotICAgICAgICAvLyAgLSBQbHVn
LWlucyAodGhhdCBzdXBwb3J0IE5QTlZwcml2YXRlTW9kZUJvb2wpCi0gICAgICAgIHZvaWQgc2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkOyB9Cisg
ICAgLy8gV2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQsIFdlYkNvcmUgd2lsbCBhdm9pZCBzdG9yaW5n
IGFueSByZWNvcmQgb2YgYnJvd3NpbmcgYWN0aXZpdHkKKyAgICAvLyB0aGF0IG1heSBwZXJzaXN0
IG9uIGRpc2sgb3IgcmVtYWluIGRpc3BsYXllZCB3aGVuIHRoZSBvcHRpb24gaXMgcmVzZXQuCisg
ICAgLy8gVGhpcyBvcHRpb24gZG9lcyBub3QgYWZmZWN0IHRoZSBzdG9yYWdlIG9mIHN1Y2ggaW5m
b3JtYXRpb24gaW4gUkFNLgorICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJlc3BlY3Qg
dGhpcyBzZXR0aW5nOgorICAgIC8vICAtIEhUTUw1L0RPTSBTdG9yYWdlCisgICAgLy8gIC0gSWNv
biBEYXRhYmFzZQorICAgIC8vICAtIENvbnNvbGUgTWVzc2FnZXMKKyAgICAvLyAgLSBNZW1vcnlD
YWNoZQorICAgIC8vICAtIEFwcGxpY2F0aW9uIENhY2hlCisgICAgLy8gIC0gQmFjay9Gb3J3YXJk
IFBhZ2UgSGlzdG9yeQorICAgIC8vICAtIFBhZ2UgU2VhcmNoIFJlc3VsdHMKKyAgICAvLyAgLSBI
VFRQIENvb2tpZXMKKyAgICAvLyAgLSBQbHVnLWlucyAodGhhdCBzdXBwb3J0IE5QTlZwcml2YXRl
TW9kZUJvb2wpCisgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOworICAg
IGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQo
Ym9vbCk7Ci0gICAgICAgIGJvb2wgY2FyZXRCcm93c2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2NhcmV0QnJvd3NpbmdFbmFibGVkOyB9CisgICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5h
YmxlZChib29sKTsKKyAgICBib29sIGNhcmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9jYXJldEJyb3dzaW5nRW5hYmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0RGVmYXVsdFRl
eHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZGVm
YXVsdFRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRUZXh0RW5jb2Rp
bmdOYW1lOyB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldFVzZXNFbmNvZGluZ0RldGVjdG9y
KGJvb2wpOwotICAgICAgICBib29sIHVzZXNFbmNvZGluZ0RldGVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV91c2VzRW5jb2RpbmdEZXRlY3RvcjsgfQorICAgIHZvaWQgc2V0RGVmYXVsdFRleHRFbmNv
ZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CisgICAgY29uc3QgU3RyaW5nJiBkZWZhdWx0VGV4dEVu
Y29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFRleHRFbmNvZGluZ05hbWU7IH0K
KyAgICAKKyAgICB2b2lkIHNldFVzZXNFbmNvZGluZ0RldGVjdG9yKGJvb2wpOworICAgIGJvb2wg
dXNlc0VuY29kaW5nRGV0ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFbmNvZGluZ0RldGVj
dG9yOyB9CiAKLSAgICAgICAgdm9pZCBzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoYm9vbCk7Ci0g
ICAgICAgIGJvb2wgZG5zUHJlZmV0Y2hpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kbnNQ
cmVmZXRjaGluZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEROU1ByZWZldGNoaW5nRW5hYmxlZChi
b29sKTsKKyAgICBib29sIGRuc1ByZWZldGNoaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG5zUHJlZmV0Y2hpbmdFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKGNvbnN0IEtVUkwmKTsKLSAgICAgICAgY29uc3QgS1VSTCYgdXNlclN0eWxlU2hl
ZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsgfQor
ICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBLVVJMJik7CisgICAgY29u
c3QgS1VSTCYgdXNlclN0eWxlU2hlZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclN0
eWxlU2hlZXRMb2NhdGlvbjsgfQogCi0gICAgICAgIHZvaWQgc2V0Rml4ZWRFbGVtZW50c0xheW91
dFJlbGF0aXZlVG9GcmFtZShib29sKTsKLSAgICAgICAgYm9vbCBmaXhlZEVsZW1lbnRzTGF5b3V0
UmVsYXRpdmVUb0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9maXhlZEVsZW1lbnRzTGF5b3V0UmVs
YXRpdmVUb0ZyYW1lOyB9CisgICAgdm9pZCBzZXRGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVU
b0ZyYW1lKGJvb2wpOworICAgIGJvb2wgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZTsg
fQogCi0gICAgICAgIHZvaWQgc2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyhib29sKTsKLSAgICAg
ICAgYm9vbCBzaG91bGRQcmludEJhY2tncm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRQ
cmludEJhY2tncm91bmRzOyB9CisgICAgdm9pZCBzZXRTaG91bGRQcmludEJhY2tncm91bmRzKGJv
b2wpOworICAgIGJvb2wgc2hvdWxkUHJpbnRCYWNrZ3JvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hvdWxkUHJpbnRCYWNrZ3JvdW5kczsgfQogCi0gICAgICAgIHZvaWQgc2V0VGV4dEFyZWFzQXJl
UmVzaXphYmxlKGJvb2wpOwotICAgICAgICBib29sIHRleHRBcmVhc0FyZVJlc2l6YWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dEFyZWFzQXJlUmVzaXphYmxlOyB9CisgICAgdm9pZCBzZXRUZXh0
QXJlYXNBcmVSZXNpemFibGUoYm9vbCk7CisgICAgYm9vbCB0ZXh0QXJlYXNBcmVSZXNpemFibGUo
KSBjb25zdCB7IHJldHVybiBtX3RleHRBcmVhc0FyZVJlc2l6YWJsZTsgfQogCi0gICAgICAgIHZv
aWQgc2V0RWRpdGFibGVMaW5rQmVoYXZpb3IoRWRpdGFibGVMaW5rQmVoYXZpb3IpOwotICAgICAg
ICBFZGl0YWJsZUxpbmtCZWhhdmlvciBlZGl0YWJsZUxpbmtCZWhhdmlvcigpIGNvbnN0IHsgcmV0
dXJuIG1fZWRpdGFibGVMaW5rQmVoYXZpb3I7IH0KKyAgICB2b2lkIHNldEVkaXRhYmxlTGlua0Jl
aGF2aW9yKEVkaXRhYmxlTGlua0JlaGF2aW9yKTsKKyAgICBFZGl0YWJsZUxpbmtCZWhhdmlvciBl
ZGl0YWJsZUxpbmtCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdGFibGVMaW5rQmVoYXZp
b3I7IH0KIAotICAgICAgICB2b2lkIHNldFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVo
YXZpb3IoVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcik7Ci0gICAgICAgIFRl
eHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IgdGV4dERpcmVjdGlvblN1Ym1lbnVJ
bmNsdXNpb25CZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dERpcmVjdGlvblN1Ym1lbnVJ
bmNsdXNpb25CZWhhdmlvcjsgfQorICAgIHZvaWQgc2V0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNs
dXNpb25CZWhhdmlvcihUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKTsKKyAg
ICBUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yIHRleHREaXJlY3Rpb25TdWJt
ZW51SW5jbHVzaW9uQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3RleHREaXJlY3Rpb25TdWJt
ZW51SW5jbHVzaW9uQmVoYXZpb3I7IH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkK
LSAgICAgICAgdm9pZCBzZXRVc2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZShi
b29sKTsKLSAgICAgICAgYm9vbCB1c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1v
ZGU7IH0KKyAgICB2b2lkIHNldFVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2Rl
KGJvb2wpOworICAgIGJvb2wgdXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUo
KSBjb25zdCB7IHJldHVybiBtX3VzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2Rl
OyB9CiAjZW5kaWYKLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0TmVlZHNBZG9iZUZyYW1lUmVs
b2FkaW5nUXVpcmsoYm9vbCk7Ci0gICAgICAgIGJvb2wgbmVlZHNBY3JvYmF0RnJhbWVSZWxvYWRp
bmdRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcms7
IH0KLQotICAgICAgICB2b2lkIHNldE5lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVp
cmtzKGJvb2wpOwotICAgICAgICBib29sIG5lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9u
UXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlv
blF1aXJrczsgfQotCi0gICAgICAgIHZvaWQgc2V0VHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxl
c2hlZXQoYm9vbCk7Ci0gICAgICAgIGJvb2wgdHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxlc2hl
ZXQoKSBjb25zdCB7IHJldHVybiBtX3RyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0OyB9
Ci0KLSAgICAgICAgdm9pZCBzZXROZWVkc0xlb3BhcmRNYWlsUXVpcmtzKGJvb2wpOwotICAgICAg
ICBib29sIG5lZWRzTGVvcGFyZE1haWxRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX25lZWRzTGVv
cGFyZE1haWxRdWlya3M7IH0KLQotICAgICAgICB2b2lkIHNldERPTVBhc3RlQWxsb3dlZChib29s
KTsKLSAgICAgICAgYm9vbCBpc0RPTVBhc3RlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNE
T01QYXN0ZUFsbG93ZWQ7IH0KLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lkIHNldERlZmF1
bHRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7IC8vIEludGVydmFsIHNwZWNpZmllZCBpbiBz
ZWNvbmRzLgotICAgICAgICBzdGF0aWMgZG91YmxlIGRlZmF1bHRNaW5ET01UaW1lckludGVydmFs
KCk7Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91Ymxl
KTsgLy8gUGVyLXBhZ2U7IGluaXRpYWxpemVkIHRvIGRlZmF1bHQgdmFsdWUuCi0gICAgICAgIGRv
dWJsZSBtaW5ET01UaW1lckludGVydmFsKCk7Ci0KLSAgICAgICAgdm9pZCBzZXRVc2VzUGFnZUNh
Y2hlKGJvb2wpOwotICAgICAgICBib29sIHVzZXNQYWdlQ2FjaGUoKSBjb25zdCB7IHJldHVybiBt
X3VzZXNQYWdlQ2FjaGU7IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0UGFnZUNhY2hlU3Vw
cG9ydHNQbHVnaW5zKGJvb2wgcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKSB7IG1fcGFnZUNhY2hl
U3VwcG9ydHNQbHVnaW5zID0gcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zOyB9Ci0gICAgICAgIGJv
b2wgcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQ2FjaGVT
dXBwb3J0c1BsdWdpbnM7IH0KLQotICAgICAgICB2b2lkIHNldFNocmlua3NTdGFuZGFsb25lSW1h
Z2VzVG9GaXQoYm9vbCk7Ci0gICAgICAgIGJvb2wgc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0Zp
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdDsgfQotCi0g
ICAgICAgIHZvaWQgc2V0U2hvd3NVUkxzSW5Ub29sVGlwcyhib29sKTsKLSAgICAgICAgYm9vbCBz
aG93c1VSTHNJblRvb2xUaXBzKCkgY29uc3QgeyByZXR1cm4gbV9zaG93c1VSTHNJblRvb2xUaXBz
OyB9Ci0KLSAgICAgICAgdm9pZCBzZXRTaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dChib29s
KTsKLSAgICAgICAgYm9vbCBzaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHQ7IH0KLQotICAgICAgICB2b2lk
IHNldEZUUERpcmVjdG9yeVRlbXBsYXRlUGF0aChjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgY29u
c3QgU3RyaW5nJiBmdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Z0
cERpcmVjdG9yeVRlbXBsYXRlUGF0aDsgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRGb3Jj
ZUZUUERpcmVjdG9yeUxpc3RpbmdzKGJvb2wpOwotICAgICAgICBib29sIGZvcmNlRlRQRGlyZWN0
b3J5TGlzdGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlRlRQRGlyZWN0b3J5TGlzdGluZ3M7
IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29s
KTsKLSAgICAgICAgYm9vbCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9kZXZlbG9wZXJFeHRyYXNFbmFibGVkOyB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldEph
dmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgamF2YVNjcmlw
dEV4cGVyaW1lbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlwdEV4cGVyaW1l
bnRzRW5hYmxlZDsgfQotCi0gICAgICAgIHZvaWQgc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChi
b29sKTsKLSAgICAgICAgYm9vbCBmcmFtZUZsYXR0ZW5pbmdFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9mcmFtZUZsYXR0ZW5pbmdFbmFibGVkOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRBdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBhdXRob3JBbmRVc2VyU3R5
bGVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQ7
IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0Rm9udFJlbmRlcmluZ01vZGUoRm9udFJlbmRl
cmluZ01vZGUgbW9kZSk7Ci0gICAgICAgIEZvbnRSZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJpbmdN
b2RlKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhi
b29sKTsKLSAgICAgICAgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNTaXRlU3BlY2lmaWNRdWlya3M7IH0KKyAgICAKKyAgICB2b2lkIHNldE5lZWRz
QWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrKGJvb2wpOworICAgIGJvb2wgbmVlZHNBY3JvYmF0RnJh
bWVSZWxvYWRpbmdRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBZG9iZUZyYW1lUmVsb2Fk
aW5nUXVpcms7IH0KKworICAgIHZvaWQgc2V0TmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRp
b25RdWlya3MoYm9vbCk7CisgICAgYm9vbCBuZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlv
blF1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNLZXlib2FyZEV2ZW50RGlzYW1iaWd1YXRp
b25RdWlya3M7IH0KKworICAgIHZvaWQgc2V0VHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxlc2hl
ZXQoYm9vbCk7CisgICAgYm9vbCB0cmVhdHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldCgpIGNv
bnN0IHsgcmV0dXJuIG1fdHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxlc2hlZXQ7IH0KKworICAg
IHZvaWQgc2V0TmVlZHNMZW9wYXJkTWFpbFF1aXJrcyhib29sKTsKKyAgICBib29sIG5lZWRzTGVv
cGFyZE1haWxRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX25lZWRzTGVvcGFyZE1haWxRdWlya3M7
IH0KKworICAgIHZvaWQgc2V0RE9NUGFzdGVBbGxvd2VkKGJvb2wpOworICAgIGJvb2wgaXNET01Q
YXN0ZUFsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRE9NUGFzdGVBbGxvd2VkOyB9CisgICAg
CisgICAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsg
Ly8gSW50ZXJ2YWwgc3BlY2lmaWVkIGluIHNlY29uZHMuCisgICAgc3RhdGljIGRvdWJsZSBkZWZh
dWx0TWluRE9NVGltZXJJbnRlcnZhbCgpOworICAgIAorICAgIHZvaWQgc2V0TWluRE9NVGltZXJJ
bnRlcnZhbChkb3VibGUpOyAvLyBQZXItcGFnZTsgaW5pdGlhbGl6ZWQgdG8gZGVmYXVsdCB2YWx1
ZS4KKyAgICBkb3VibGUgbWluRE9NVGltZXJJbnRlcnZhbCgpOworCisgICAgdm9pZCBzZXRVc2Vz
UGFnZUNhY2hlKGJvb2wpOworICAgIGJvb2wgdXNlc1BhZ2VDYWNoZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlc1BhZ2VDYWNoZTsgfQorICAgIAorICAgIHZvaWQgc2V0UGFnZUNhY2hlU3VwcG9ydHNQ
bHVnaW5zKGJvb2wgcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKSB7IG1fcGFnZUNhY2hlU3VwcG9y
dHNQbHVnaW5zID0gcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zOyB9CisgICAgYm9vbCBwYWdlQ2Fj
aGVTdXBwb3J0c1BsdWdpbnMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDYWNoZVN1cHBvcnRzUGx1
Z2luczsgfQorCisgICAgdm9pZCBzZXRTaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0KGJvb2wp
OworICAgIGJvb2wgc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdDsgfQorCisgICAgdm9pZCBzZXRTaG93c1VS
THNJblRvb2xUaXBzKGJvb2wpOworICAgIGJvb2wgc2hvd3NVUkxzSW5Ub29sVGlwcygpIGNvbnN0
IHsgcmV0dXJuIG1fc2hvd3NVUkxzSW5Ub29sVGlwczsgfQorCisgICAgdm9pZCBzZXRTaG93c1Rv
b2xUaXBPdmVyVHJ1bmNhdGVkVGV4dChib29sKTsKKyAgICBib29sIHNob3dzVG9vbFRpcE92ZXJU
cnVuY2F0ZWRUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVk
VGV4dDsgfQorCisgICAgdm9pZCBzZXRGVFBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoY29uc3QgU3Ry
aW5nJik7CisgICAgY29uc3QgU3RyaW5nJiBmdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSBjb25z
dCB7IHJldHVybiBtX2Z0cERpcmVjdG9yeVRlbXBsYXRlUGF0aDsgfQorICAgIAorICAgIHZvaWQg
c2V0Rm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5ncyhib29sKTsKKyAgICBib29sIGZvcmNlRlRQRGly
ZWN0b3J5TGlzdGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlRlRQRGlyZWN0b3J5TGlzdGlu
Z3M7IH0KKyAgICAKKyAgICB2b2lkIHNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCk7Cisg
ICAgYm9vbCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZlbG9w
ZXJFeHRyYXNFbmFibGVkOyB9CisgICAgCisgICAgdm9pZCBzZXRKYXZhU2NyaXB0RXhwZXJpbWVu
dHNFbmFibGVkKGJvb2wpOworICAgIGJvb2wgamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZDsgfQorCisgICAg
dm9pZCBzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGJvb2wpOworICAgIGJvb2wgZnJhbWVGbGF0
dGVuaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVGbGF0dGVuaW5nRW5hYmxlZDsg
fQorCisgICAgdm9pZCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sKTsKKyAgICBi
b29sIGF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZDsgfQorICAgIAorICAgIHZvaWQgc2V0Rm9udFJlbmRlcmluZ01v
ZGUoRm9udFJlbmRlcmluZ01vZGUpOworICAgIEZvbnRSZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJp
bmdNb2RlKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKGJv
b2wpOworICAgIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdCB7IHJldHVybiBt
X25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzOyB9CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpCi0g
ICAgICAgIHZvaWQgc2V0V2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWQoYm9vbCk7Ci0gICAgICAg
IGJvb2wgd2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3dlYkFy
Y2hpdmVEZWJ1Z01vZGVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRXZWJBcmNoaXZlRGVidWdNb2Rl
RW5hYmxlZChib29sKTsKKyAgICBib29sIHdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV93ZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZDsgfQogI2VuZGlmCiAKLSAg
ICAgICAgdm9pZCBzZXRMb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKGJvb2wpOwotICAg
ICAgICBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2xvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldExvY2Fs
RmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBsb2NhbEZpbGVDb250
ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEZpbGVDb250ZW50U25p
ZmZpbmdFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGgoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGF0
YWJhc2VQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7IH0K
KyAgICB2b2lkIHNldExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmKTsKKyAg
ICBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBcHBsaWNh
dGlvbkNocm9tZU1vZGUoYm9vbCk7Ci0gICAgICAgIGJvb2wgaW5BcHBsaWNhdGlvbkNocm9tZU1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2luQXBwbGljYXRpb25DaHJvbWVNb2RlOyB9CisgICAgdm9p
ZCBzZXRBcHBsaWNhdGlvbkNocm9tZU1vZGUoYm9vbCk7CisgICAgYm9vbCBpbkFwcGxpY2F0aW9u
Q2hyb21lTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5BcHBsaWNhdGlvbkNocm9tZU1vZGU7IH0K
IAotICAgICAgICB2b2lkIHNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChib29s
KTsKLSAgICAgICAgYm9vbCBvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX29mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsgfQotICAgICAg
ICAKLSAgICAgICAgdm9pZCBzZXRFbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZShib29s
KTsKLSAgICAgICAgYm9vbCBlbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSgpIHsgcmV0
dXJuIG1fZW5mb3JjZUNTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGU7IH0KKyAgICB2b2lkIHNldE9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChib29sKTsKKyAgICBib29sIG9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb2ZmbGluZVdlYkFw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkOyB9CisgICAgCisgICAgdm9pZCBzZXRFbmZvcmNlQ1NTTUlN
RVR5cGVJbk5vUXVpcmtzTW9kZShib29sKTsKKyAgICBib29sIGVuZm9yY2VDU1NNSU1FVHlwZUlu
Tm9RdWlya3NNb2RlKCkgeyByZXR1cm4gbV9lbmZvcmNlQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9k
ZTsgfQogCi0gICAgICAgIHZvaWQgc2V0TWF4aW11bURlY29kZWRJbWFnZVNpemUoc2l6ZV90IHNp
emUpIHsgbV9tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZSA9IHNpemU7IH0KLSAgICAgICAgc2l6ZV90
IG1heGltdW1EZWNvZGVkSW1hZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtRGVjb2Rl
ZEltYWdlU2l6ZTsgfQorICAgIHZvaWQgc2V0TWF4aW11bURlY29kZWRJbWFnZVNpemUoc2l6ZV90
IHNpemUpIHsgbV9tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZSA9IHNpemU7IH0KKyAgICBzaXplX3Qg
bWF4aW11bURlY29kZWRJbWFnZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1EZWNvZGVk
SW1hZ2VTaXplOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93
cyhib29sKTsKLSAgICAgICAgYm9vbCBhbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cygpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3M7IH0KKyAgICB2b2lkIHNldEFs
bG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKGJvb2wpOworICAgIGJvb2wgYWxsb3dTY3JpcHRzVG9D
bG9zZVdpbmRvd3MoKSBjb25zdCB7IHJldHVybiBtX2FsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dz
OyB9CiAKLSAgICAgICAgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3JUeXBlKEVkaXRpbmdCZWhhdmlv
clR5cGUgYmVoYXZpb3IpIHsgbV9lZGl0aW5nQmVoYXZpb3JUeXBlID0gYmVoYXZpb3I7IH0KLSAg
ICAgICAgRWRpdGluZ0JlaGF2aW9yVHlwZSBlZGl0aW5nQmVoYXZpb3JUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RWRpdGluZ0JlaGF2aW9yVHlwZT4obV9lZGl0aW5nQmVoYXZpb3JU
eXBlKTsgfQorICAgIHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9yVHlwZShFZGl0aW5nQmVoYXZpb3JU
eXBlIGJlaGF2aW9yKSB7IG1fZWRpdGluZ0JlaGF2aW9yVHlwZSA9IGJlaGF2aW9yOyB9CisgICAg
RWRpdGluZ0JlaGF2aW9yVHlwZSBlZGl0aW5nQmVoYXZpb3JUeXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RWRpdGluZ0JlaGF2aW9yVHlwZT4obV9lZGl0aW5nQmVoYXZpb3JUeXBlKTsg
fQogCi0gICAgICAgIHZvaWQgc2V0RG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKGJvb2wp
OwotICAgICAgICBib29sIGRvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRE
b3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBkb3dubG9hZGFi
bGVCaW5hcnlGb250c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2FkYWJsZUJpbmFy
eUZvbnRzRW5hYmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9v
bCk7Ci0gICAgICAgIGJvb2wgeHNzQXVkaXRvckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3hz
c0F1ZGl0b3JFbmFibGVkOyB9CisgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sKTsK
KyAgICBib29sIHhzc0F1ZGl0b3JFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV94c3NBdWRpdG9y
RW5hYmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2lu
Zyhib29sKTsKLSAgICAgICAgYm9vbCBjYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKCkgY29u
c3QgeyByZXR1cm4gbV9jYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nOyB9CisgICAgdm9pZCBz
ZXRDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKGJvb2wpOworICAgIGJvb2wgY2FudmFzVXNl
c0FjY2VsZXJhdGVkRHJhd2luZygpIGNvbnN0IHsgcmV0dXJuIG1fY2FudmFzVXNlc0FjY2VsZXJh
dGVkRHJhd2luZzsgfQogCi0gICAgICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpIHsgbV9hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkID0gZW5hYmxlZDsg
fQotICAgICAgICBib29sIGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2FjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVk
RHJhd2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxl
ZCA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2FjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQ7IH0KIAotICAgICAgICB2b2lk
IHNldEFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fYWNjZWxlcmF0
ZWRGaWx0ZXJzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBhY2NlbGVyYXRlZEZp
bHRlcnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVk
OyB9CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKGJvb2wgZW5hYmxlZCkg
eyBtX2FjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCBhY2Nl
bGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZEZpbHRl
cnNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRDU1NDdXN0b21GaWx0ZXJFbmFibGVkKGJv
b2wgZW5hYmxlZCkgeyBtX2lzQ1NTQ3VzdG9tRmlsdGVyRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAg
ICAgICAgYm9vbCBpc0NTU0N1c3RvbUZpbHRlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q1NTQ3VzdG9tRmlsdGVyRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q1NTQ3VzdG9tRmlsdGVyRW5h
YmxlZChib29sIGVuYWJsZWQpIHsgbV9pc0NTU0N1c3RvbUZpbHRlckVuYWJsZWQgPSBlbmFibGVk
OyB9CisgICAgYm9vbCBpc0NTU0N1c3RvbUZpbHRlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzQ1NTQ3VzdG9tRmlsdGVyRW5hYmxlZDsgfQogCiAjaWYgRU5BQkxFKENTU19TVElDS1lfUE9T
SVRJT04pCi0gICAgICAgIHZvaWQgc2V0Q1NTU3RpY2t5UG9zaXRpb25FbmFibGVkKGJvb2wgZW5h
YmxlZCkgeyBtX2Nzc1N0aWNreVBvc2l0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAg
Ym9vbCBjc3NTdGlja3lQb3NpdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Nzc1N0aWNr
eVBvc2l0aW9uRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q1NTU3RpY2t5UG9zaXRpb25FbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX2Nzc1N0aWNreVBvc2l0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7IH0K
KyAgICBib29sIGNzc1N0aWNreVBvc2l0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3Nz
U3RpY2t5UG9zaXRpb25FbmFibGVkOyB9CiAjZWxzZQotICAgICAgICB2b2lkIHNldENTU1N0aWNr
eVBvc2l0aW9uRW5hYmxlZChib29sKSB7IH0KLSAgICAgICAgYm9vbCBjc3NTdGlja3lQb3NpdGlv
bkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0Q1NTU3RpY2t5
UG9zaXRpb25FbmFibGVkKGJvb2wpIHsgfQorICAgIGJvb2wgY3NzU3RpY2t5UG9zaXRpb25FbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19S
RUdJT05TKQotICAgICAgICB2b2lkIHNldENTU1JlZ2lvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkg
eyBtX2Nzc1JlZ2lvbnNFbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBib29sIGNzc1JlZ2lv
bnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jc3NSZWdpb25zRW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0Q1NTUmVnaW9uc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fY3NzUmVnaW9uc0VuYWJs
ZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCBjc3NSZWdpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY3NzUmVnaW9uc0VuYWJsZWQ7IH0KICNlbHNlCi0gICAgICAgIHZvaWQgc2V0Q1NTUmVn
aW9uc0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAgICAgIGJvb2wgY3NzUmVnaW9uc0VuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0Q1NTUmVnaW9uc0VuYWJsZWQoYm9v
bCkgeyB9CisgICAgYm9vbCBjc3NSZWdpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQotICAgICAgICB2b2lkIHNl
dENTU1ZhcmlhYmxlc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fY3NzVmFyaWFibGVzRW5hYmxl
ZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBjc3NWYXJpYWJsZXNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9jc3NWYXJpYWJsZXNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRDU1NWYXJpYWJs
ZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2Nzc1ZhcmlhYmxlc0VuYWJsZWQgPSBlbmFibGVk
OyB9CisgICAgYm9vbCBjc3NWYXJpYWJsZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jc3NW
YXJpYWJsZXNFbmFibGVkOyB9CiAjZWxzZQotICAgICAgICB2b2lkIHNldENTU1ZhcmlhYmxlc0Vu
YWJsZWQoYm9vbCkgeyB9Ci0gICAgICAgIGJvb2wgY3NzVmFyaWFibGVzRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRDU1NWYXJpYWJsZXNFbmFibGVkKGJvb2wp
IHsgfQorICAgIGJvb2wgY3NzVmFyaWFibGVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAjZW5kaWYKIAotICAgICAgICB2b2lkIHNldFJlZ2lvbkJhc2VkQ29sdW1uc0VuYWJsZWQo
Ym9vbCBlbmFibGVkKSB7IG1fcmVnaW9uQmFzZWRDb2x1bW5zRW5hYmxlZCA9IGVuYWJsZWQ7IH0K
LSAgICAgICAgYm9vbCByZWdpb25CYXNlZENvbHVtbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9yZWdpb25CYXNlZENvbHVtbnNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRSZWdpb25CYXNlZENv
bHVtbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3JlZ2lvbkJhc2VkQ29sdW1uc0VuYWJsZWQg
PSBlbmFibGVkOyB9CisgICAgYm9vbCByZWdpb25CYXNlZENvbHVtbnNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpb25CYXNlZENvbHVtbnNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBz
ZXRDU1NHcmlkTGF5b3V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9jc3NHcmlkTGF5b3V0RW5h
YmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBjc3NHcmlkTGF5b3V0RW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY3NzR3JpZExheW91dEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldENTU0dy
aWRMYXlvdXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2Nzc0dyaWRMYXlvdXRFbmFibGVkID0g
ZW5hYmxlZDsgfQorICAgIGJvb2wgY3NzR3JpZExheW91dEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2Nzc0dyaWRMYXlvdXRFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBv
c2l0aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wp
OworICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChib29sKTsKLSAgICAg
ICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJs
ZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNF
bmFibGVkKGJvb2wpOworICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNm
b3Jtc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3Iz
RFRyYW5zZm9ybXNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yVmlkZW9FbmFibGVkKGJvb2wpOwotICAgICAgICBib29sIGFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3JWaWRlb0VuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0
aW5nRm9yVmlkZW9FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZENvbXBvc2l0
aW5nRm9yVmlkZW9FbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yUGx1Z2luc0VuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yUGx1Z2luc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdGb3JQbHVnaW5zRW5hYmxlZChib29sKTsKKyAgICBib29sIGFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdGb3JQbHVnaW5zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRm9yQ2FudmFzRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBh
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yQ2FudmFzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckNhbnZhc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JDYW52YXNFbmFibGVkKGJvb2wpOworICAgIGJvb2wgYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckNhbnZhc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JDYW52YXNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yQW5pbWF0aW9uRW5hYmxlZChib29sKTsKLSAgICAg
ICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yQW5pbWF0aW9uRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckFuaW1hdGlvbkVuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JBbmltYXRpb25FbmFibGVkKGJv
b2wpOworICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckFuaW1hdGlvbkVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JBbmltYXRpb25FbmFi
bGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQ
b3NpdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zv
ckZpeGVkUG9zaXRpb25FbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBib29sIGFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVkOyB9CisgICAgdm9p
ZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVk
ID0gZW5hYmxlZDsgfQorICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9z
aXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9y
Rml4ZWRQb3NpdGlvbkVuYWJsZWQ7IH0KIAotICAgICAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWVzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZyYW1lc0VuYWJsZWQgPSBlbmFibGVkOyB9
Ci0gICAgICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclNjcm9sbGFibGVGcmFtZXNF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yU2Nyb2xs
YWJsZUZyYW1lc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdG
b3JTY3JvbGxhYmxlRnJhbWVzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hY2NlbGVyYXRlZENv
bXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZyYW1lc0VuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9v
bCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZyYW1lc0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWVzRW5h
YmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJm
bG93U2Nyb2xsRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBib29sIGFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQ7IH07Cisg
ICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9s
bEVuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9y
T3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkOyB9OwogCi0gICAgICAgIHZvaWQgc2V0U2hv
d0RlYnVnQm9yZGVycyhib29sKTsKLSAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9zaG93RGVidWdCb3JkZXJzOyB9CisgICAgdm9pZCBzZXRTaG93RGVidWdC
b3JkZXJzKGJvb2wpOworICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvd0RlYnVnQm9yZGVyczsgfQogCi0gICAgICAgIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3Vu
dGVyKGJvb2wpOwotICAgICAgICBib29sIHNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fc2hvd1JlcGFpbnRDb3VudGVyOyB9CisgICAgdm9pZCBzZXRTaG93UmVwYWludENvdW50
ZXIoYm9vbCk7CisgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIoKSBjb25zdCB7IHJldHVybiBt
X3Nob3dSZXBhaW50Q291bnRlcjsgfQogCi0gICAgICAgIHZvaWQgc2V0RXhwZXJpbWVudGFsTm90
aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgZXhwZXJpbWVudGFsTm90aWZp
Y2F0aW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2V4cGVyaW1lbnRhbE5vdGlmaWNhdGlv
bnNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxl
ZChib29sKTsKKyAgICBib29sIGV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9leHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZDsgfQogCiAjaWYg
UExBVEZPUk0oV0lOKSB8fCAoT1MoV0lORE9XUykgJiYgUExBVEZPUk0oV1gpKQotICAgICAgICBz
dGF0aWMgdm9pZCBzZXRTaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycyhib29sKTsKLSAgICAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoKSB7IHJldHVybiBn
U2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnM7IH0KKyAgICBzdGF0aWMgdm9pZCBzZXRTaG91
bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycyhib29sKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRV
c2VIaWdoUmVzb2x1dGlvblRpbWVycygpIHsgcmV0dXJuIGdTaG91bGRVc2VIaWdoUmVzb2x1dGlv
blRpbWVyczsgfQogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBzZXRXZWJBdWRpb0VuYWJsZWQoYm9v
bCk7Ci0gICAgICAgIGJvb2wgd2ViQXVkaW9FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJB
dWRpb0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFdlYkF1ZGlvRW5hYmxlZChib29sKTsKKyAgICBi
b29sIHdlYkF1ZGlvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQXVkaW9FbmFibGVkOyB9
CiAKLSAgICAgICAgdm9pZCBzZXRXZWJHTEVuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgd2Vi
R0xFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJHTEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dFdlYkdMRW5hYmxlZChib29sKTsKKyAgICBib29sIHdlYkdMRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fd2ViR0xFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRXZWJHTEVycm9yc1RvQ29u
c29sZUVuYWJsZWQoYm9vbCk7Ci0gICAgICAgIGJvb2wgd2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJHTEVycm9yc1RvQ29uc29sZUVuYWJsZWQ7IH0KKyAg
ICB2b2lkIHNldFdlYkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZChib29sKTsKKyAgICBib29sIHdl
YkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViR0xFcnJvcnNU
b0NvbnNvbGVFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRPcGVuR0xNdWx0aXNhbXBsaW5n
RW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBvcGVuR0xNdWx0aXNhbXBsaW5nRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3BlbkdMTXVsdGlzYW1wbGluZ0VuYWJsZWQ7IH0KKyAgICB2b2lk
IHNldE9wZW5HTE11bHRpc2FtcGxpbmdFbmFibGVkKGJvb2wpOworICAgIGJvb2wgb3BlbkdMTXVs
dGlzYW1wbGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX29wZW5HTE11bHRpc2FtcGxpbmdF
bmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRQcml2aWxlZ2VkV2ViR0xFeHRlbnNpb25zRW5h
YmxlZChib29sKTsKLSAgICAgICAgYm9vbCBwcml2aWxlZ2VkV2ViR0xFeHRlbnNpb25zRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmlsZWdlZFdlYkdMRXh0ZW5zaW9uc0VuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldFByaXZpbGVnZWRXZWJHTEV4dGVuc2lvbnNFbmFibGVkKGJvb2wpOworICAg
IGJvb2wgcHJpdmlsZWdlZFdlYkdMRXh0ZW5zaW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZpbGVnZWRXZWJHTEV4dGVuc2lvbnNFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRB
Y2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBhY2NlbGVyYXRl
ZDJkQ2FudmFzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRDYW52YXMyZEVu
YWJsZWQ7IH0KKyAgICB2b2lkIHNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wpOwor
ICAgIGJvb2wgYWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Fj
Y2VsZXJhdGVkQ2FudmFzMmRFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXREZWZlcnJlZDJk
Q2FudmFzRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9vbCBkZWZlcnJlZDJkQ2FudmFzRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmZXJyZWRDYW52YXMyZEVuYWJsZWQ7IH0KKyAgICB2b2lk
IHNldERlZmVycmVkMmRDYW52YXNFbmFibGVkKGJvb2wpOworICAgIGJvb2wgZGVmZXJyZWQyZENh
bnZhc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlZmVycmVkQ2FudmFzMmRFbmFibGVkOyB9
CiAKLSAgICAgICAgLy8gTnVtYmVyIG9mIHBpeGVscyBiZWxvdyB3aGljaCAyRCBjYW52YXMgaXMg
cmVuZGVyZWQgaW4gc29mdHdhcmUKLSAgICAgICAgLy8gZXZlbiBpZiBoYXJkd2FyZSBhY2NlbGVy
YXRpb24gaXMgZW5hYmxlZC4KLSAgICAgICAgLy8gSGFyZHdhcmUgYWNjZWxlcmF0aW9uIGlzIHVz
ZWZ1bCBmb3IgbGFyZ2UgY2FudmFzZXMgd2hlcmUgaXQgY2FuIGF2b2lkIHRoZQotICAgICAgICAv
LyBwaXhlbCBiYW5kd2lkdGggYmV0d2VlbiB0aGUgQ1BVIGFuZCBHUFUuIEJ1dCBHUFUgYWNjZWxl
cmF0aW9uIGNvbWVzIGF0Ci0gICAgICAgIC8vIGEgcHJpY2UgLSBleHRyYSBiYWNrLWJ1ZmZlciBh
bmQgdGV4dHVyZSBjb3B5LiBTbWFsbCBjYW52YXNlcyBhcmUgYWxzbwotICAgICAgICAvLyB3aWRl
bHkgdXNlZCBmb3Igc3R5bGl6ZWQgZm9udHMuIEFudGktYWxpYXNpbmcgdGV4dCBpbiBoYXJkd2Fy
ZSBhdCB0aGF0Ci0gICAgICAgIC8vIHNjYWxlIGlzIGdlbmVyYWxseSBzbG93ZXIuIFNvIGJlbG93
IGEgY2VydGFpbiBzaXplIGl0IGlzIGJldHRlciB0bwotICAgICAgICAvLyBkcmF3IGNhbnZhcyBp
biBzb2Z0d2FyZS4KLSAgICAgICAgdm9pZCBzZXRNaW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZhc1Np
emUoaW50KTsKLSAgICAgICAgaW50IG1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNTaXplOyB9CisgICAgLy8g
TnVtYmVyIG9mIHBpeGVscyBiZWxvdyB3aGljaCAyRCBjYW52YXMgaXMgcmVuZGVyZWQgaW4gc29m
dHdhcmUKKyAgICAvLyBldmVuIGlmIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBpcyBlbmFibGVkLgor
ICAgIC8vIEhhcmR3YXJlIGFjY2VsZXJhdGlvbiBpcyB1c2VmdWwgZm9yIGxhcmdlIGNhbnZhc2Vz
IHdoZXJlIGl0IGNhbiBhdm9pZCB0aGUKKyAgICAvLyBwaXhlbCBiYW5kd2lkdGggYmV0d2VlbiB0
aGUgQ1BVIGFuZCBHUFUuIEJ1dCBHUFUgYWNjZWxlcmF0aW9uIGNvbWVzIGF0CisgICAgLy8gYSBw
cmljZSAtIGV4dHJhIGJhY2stYnVmZmVyIGFuZCB0ZXh0dXJlIGNvcHkuIFNtYWxsIGNhbnZhc2Vz
IGFyZSBhbHNvCisgICAgLy8gd2lkZWx5IHVzZWQgZm9yIHN0eWxpemVkIGZvbnRzLiBBbnRpLWFs
aWFzaW5nIHRleHQgaW4gaGFyZHdhcmUgYXQgdGhhdAorICAgIC8vIHNjYWxlIGlzIGdlbmVyYWxs
eSBzbG93ZXIuIFNvIGJlbG93IGEgY2VydGFpbiBzaXplIGl0IGlzIGJldHRlciB0bworICAgIC8v
IGRyYXcgY2FudmFzIGluIHNvZnR3YXJlLgorICAgIHZvaWQgc2V0TWluaW11bUFjY2VsZXJhdGVk
MmRDYW52YXNTaXplKGludCk7CisgICAgaW50IG1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNTaXplOyB9CiAK
LSAgICAgICAgdm9pZCBzZXRMb2FkRGVmZXJyaW5nRW5hYmxlZChib29sKTsKLSAgICAgICAgYm9v
bCBsb2FkRGVmZXJyaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZERlZmVycmluZ0Vu
YWJsZWQ7IH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0VGlsZWRCYWNraW5nU3RvcmVFbmFi
bGVkKGJvb2wpOwotICAgICAgICBib29sIHRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGlsZWRCYWNraW5nU3RvcmVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRMb2Fk
RGVmZXJyaW5nRW5hYmxlZChib29sKTsKKyAgICBib29sIGxvYWREZWZlcnJpbmdFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2FkRGVmZXJyaW5nRW5hYmxlZDsgfQorICAgIAorICAgIHZvaWQg
c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJvb2wpOworICAgIGJvb2wgdGlsZWRCYWNraW5n
U3RvcmVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV90aWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQ7
IH0KIAotICAgICAgICB2b2lkIHNldFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZChib29sIGZs
YWcpIHsgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgPSBmbGFnOyB9Ci0gICAgICAgIGJv
b2wgcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYWdpbmF0
ZUR1cmluZ0xheW91dEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFBhZ2luYXRlRHVyaW5nTGF5b3V0
RW5hYmxlZChib29sIGZsYWcpIHsgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgPSBmbGFn
OyB9CisgICAgYm9vbCBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZDsgfQogCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQotICAgICAgICB2b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wgZmxhZykgeyBt
X2Z1bGxTY3JlZW5BUElFbmFibGVkID0gZmxhZzsgfQotICAgICAgICBib29sIGZ1bGxTY3JlZW5F
bmFibGVkKCkgY29uc3QgIHsgcmV0dXJuIG1fZnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICB2
b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wgZmxhZykgeyBtX2Z1bGxTY3JlZW5BUElFbmFi
bGVkID0gZmxhZzsgfQorICAgIGJvb2wgZnVsbFNjcmVlbkVuYWJsZWQoKSBjb25zdCAgeyByZXR1
cm4gbV9mdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBVU0UoQVZGT1VOREFU
SU9OKQotICAgICAgICBzdGF0aWMgdm9pZCBzZXRBVkZvdW5kYXRpb25FbmFibGVkKGJvb2wgZmxh
ZykgeyBnQVZGb3VuZGF0aW9uRW5hYmxlZCA9IGZsYWc7IH0KLSAgICAgICAgc3RhdGljIGJvb2wg
aXNBVkZvdW5kYXRpb25FbmFibGVkKCkgeyByZXR1cm4gZ0FWRm91bmRhdGlvbkVuYWJsZWQ7IH0K
KyAgICBzdGF0aWMgdm9pZCBzZXRBVkZvdW5kYXRpb25FbmFibGVkKGJvb2wgZmxhZykgeyBnQVZG
b3VuZGF0aW9uRW5hYmxlZCA9IGZsYWc7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0FWRm91bmRhdGlv
bkVuYWJsZWQoKSB7IHJldHVybiBnQVZGb3VuZGF0aW9uRW5hYmxlZDsgfQogI2VuZGlmCiAKLSAg
ICAgICAgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGZsYWcp
IHsgbV9hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCA9IGZsYWc7IH0KLSAgICAgICAg
Ym9vbCBhc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0ICB7IHJldHVybiBt
X2FzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOyB9CisgICAgdm9pZCBzZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGZsYWcpIHsgbV9hc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZCA9IGZsYWc7IH0KKyAgICBib29sIGFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkgY29uc3QgIHsgcmV0dXJuIG1fYXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQ7IH0KIAotICAgICAgICB2b2lkIHNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQo
Ym9vbCBmbGFnKSB7IG1fdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCA9IGZsYWc7IH0KLSAgICAg
ICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV91bmlm
aWVkVGV4dENoZWNrZXJFbmFibGVkOyB9CisgICAgdm9pZCBzZXRVbmlmaWVkVGV4dENoZWNrZXJF
bmFibGVkKGJvb2wgZmxhZykgeyBtX3VuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQgPSBmbGFnOyB9
CisgICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV91
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRNZW1vcnlJbmZv
RW5hYmxlZChib29sIGZsYWcpIHsgbV9tZW1vcnlJbmZvRW5hYmxlZCA9IGZsYWc7IH0KLSAgICAg
ICAgYm9vbCBtZW1vcnlJbmZvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5SW5mb0Vu
YWJsZWQ7IH0KKyAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wgZmxhZykgeyBtX21l
bW9yeUluZm9FbmFibGVkID0gZmxhZzsgfQorICAgIGJvb2wgbWVtb3J5SW5mb0VuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX21lbW9yeUluZm9FbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRR
dWFudGl6ZWRNZW1vcnlJbmZvRW5hYmxlZChib29sIGZsYWcpIHsgbV9xdWFudGl6ZWRNZW1vcnlJ
bmZvRW5hYmxlZCA9IGZsYWc7IH0KLSAgICAgICAgYm9vbCBxdWFudGl6ZWRNZW1vcnlJbmZvRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhbnRpemVkTWVtb3J5SW5mb0VuYWJsZWQ7IH0KKyAg
ICB2b2lkIHNldFF1YW50aXplZE1lbW9yeUluZm9FbmFibGVkKGJvb2wgZmxhZykgeyBtX3F1YW50
aXplZE1lbW9yeUluZm9FbmFibGVkID0gZmxhZzsgfQorICAgIGJvb2wgcXVhbnRpemVkTWVtb3J5
SW5mb0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3F1YW50aXplZE1lbW9yeUluZm9FbmFibGVk
OyB9CiAKLSAgICAgICAgLy8gVGhpcyBmZWF0dXJlIHJlcXVpcmVzIGFuIGltcGxlbWVudGF0aW9u
IG9mIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LgotICAgICAgICB2b2lkIHNldEludGVyYWN0aXZl
Rm9ybVZhbGlkYXRpb25FbmFibGVkKGJvb2wgZmxhZykgeyBtX2ludGVyYWN0aXZlRm9ybVZhbGlk
YXRpb24gPSBmbGFnOyB9Ci0gICAgICAgIGJvb2wgaW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb247IH0KKyAg
ICAvLyBUaGlzIGZlYXR1cmUgcmVxdWlyZXMgYW4gaW1wbGVtZW50YXRpb24gb2YgVmFsaWRhdGlv
bk1lc3NhZ2VDbGllbnQuCisgICAgdm9pZCBzZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5h
YmxlZChib29sIGZsYWcpIHsgbV9pbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uID0gZmxhZzsgfQor
ICAgIGJvb2wgaW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb247IH0KIAotICAgICAgICAvLyBTZXRzIHRoZSBt
YWdpbmljYXRpb24gdmFsdWUgZm9yIHZhbGlkYXRpb24gbWVzc2FnZSB0aW1lci4KLSAgICAgICAg
Ly8gSWYgdGhlIG1hZ2luaWNhdGlvbiB2YWx1ZSBpcyBOLCBhIHZhbGlkYXRpb24gbWVzc2FnZSBk
aXNhcHBlYXJzCi0gICAgICAgIC8vIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgPG1lc3NhZ2UgbGVuZ3Ro
PiAqIE4gLyAxMDAwIHNlY29uZHMuIElmIE4gaXMKLSAgICAgICAgLy8gZXF1YWwgdG8gb3IgbGVz
cyB0aGFuIDAsIGEgdmFsaWRhdGlvbiBtZXNzYWdlIGRvZXNuJ3QgZGlzYXBwZWFycwotICAgICAg
ICAvLyBhdXRvbWF0aWNhbHkuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDUwLgotICAgICAgICB2b2lk
IHNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKGludCBuZXdWYWx1ZSkgeyBt
X3ZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uID0gbmV3VmFsdWU7IH0KLSAgICAg
ICAgaW50IHZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWdpbmlmaWNhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb247IH0KLSAgICAgICAgCi0g
ICAgICAgIHZvaWQgc2V0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3MoYm9vbCBmbGFnKSB7IG1fdXNl
UHJlSFRNTDVQYXJzZXJRdWlya3MgPSBmbGFnOyB9Ci0gICAgICAgIGJvb2wgdXNlUHJlSFRNTDVQ
YXJzZXJRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzOyB9
CisgICAgLy8gU2V0cyB0aGUgbWFnaW5pY2F0aW9uIHZhbHVlIGZvciB2YWxpZGF0aW9uIG1lc3Nh
Z2UgdGltZXIuCisgICAgLy8gSWYgdGhlIG1hZ2luaWNhdGlvbiB2YWx1ZSBpcyBOLCBhIHZhbGlk
YXRpb24gbWVzc2FnZSBkaXNhcHBlYXJzCisgICAgLy8gYXV0b21hdGljYWxseSBhZnRlciA8bWVz
c2FnZSBsZW5ndGg+ICogTiAvIDEwMDAgc2Vjb25kcy4gSWYgTiBpcworICAgIC8vIGVxdWFsIHRv
IG9yIGxlc3MgdGhhbiAwLCBhIHZhbGlkYXRpb24gbWVzc2FnZSBkb2Vzbid0IGRpc2FwcGVhcnMK
KyAgICAvLyBhdXRvbWF0aWNhbHkuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDUwLgorICAgIHZvaWQg
c2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24oaW50IG5ld1ZhbHVlKSB7IG1f
dmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24gPSBuZXdWYWx1ZTsgfQorICAgIGlu
dCB2YWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnaW5pZmljYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3ZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uOyB9CisgICAgCisgICAgdm9pZCBz
ZXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrcyhib29sIGZsYWcpIHsgbV91c2VQcmVIVE1MNVBhcnNl
clF1aXJrcyA9IGZsYWc7IH0KKyAgICBib29sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKCkgY29u
c3QgeyByZXR1cm4gbV91c2VQcmVIVE1MNVBhcnNlclF1aXJrczsgfQogCi0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0TWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGggPSA1
MTI7Ci0gICAgICAgIHZvaWQgc2V0TWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGgodW5zaWdu
ZWQgbWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGgpIHsgbV9tYXhpbXVtSFRNTFBhcnNlckRP
TVRyZWVEZXB0aCA9IG1heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoOyB9Ci0gICAgICAgIHVu
c2lnbmVkIG1heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9t
YXhpbXVtSFRNTFBhcnNlckRPTVRyZWVEZXB0aDsgfQorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBkZWZhdWx0TWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGggPSA1MTI7CisgICAgdm9pZCBz
ZXRNYXhpbXVtSFRNTFBhcnNlckRPTVRyZWVEZXB0aCh1bnNpZ25lZCBtYXhpbXVtSFRNTFBhcnNl
ckRPTVRyZWVEZXB0aCkgeyBtX21heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoID0gbWF4aW11
bUhUTUxQYXJzZXJET01UcmVlRGVwdGg7IH0KKyAgICB1bnNpZ25lZCBtYXhpbXVtSFRNTFBhcnNl
ckRPTVRyZWVEZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bUhUTUxQYXJzZXJET01UcmVl
RGVwdGg7IH0KIAotICAgICAgICB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29s
IGZsYWcpIHsgbV9oeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQgPSBmbGFnOyB9Ci0gICAgICAgIGJv
b2wgaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oeXBlcmxpbmtB
dWRpdGluZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChi
b29sIGZsYWcpIHsgbV9oeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQgPSBmbGFnOyB9CisgICAgYm9v
bCBoeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2h5cGVybGlua0F1
ZGl0aW5nRW5hYmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0Q3Jvc3NPcmlnaW5DaGVja0luR2V0
TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQoYm9vbCBmbGFnKSB7IG1fY3Jvc3NPcmlnaW5DaGVja0lu
R2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQgPSBmbGFnOyB9Ci0gICAgICAgIGJvb2wgY3Jvc3NP
cmlnaW5DaGVja0luR2V0TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2Nyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVkOyB9Ci0gICAgICAg
IAotICAgICAgICB2b2lkIHNldExheW91dEZhbGxiYWNrV2lkdGgoaW50IHdpZHRoKSB7IG1fbGF5
b3V0RmFsbGJhY2tXaWR0aCA9IHdpZHRoOyB9Ci0gICAgICAgIGludCBsYXlvdXRGYWxsYmFja1dp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRGYWxsYmFja1dpZHRoOyB9CisgICAgdm9pZCBz
ZXRDcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxlZChib29sIGZsYWcp
IHsgbV9jcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxlZCA9IGZsYWc7
IH0KKyAgICBib29sIGNyb3NzT3JpZ2luQ2hlY2tJbkdldE1hdGNoZWRDU1NSdWxlc0Rpc2FibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRjaGVkQ1NTUnVsZXNE
aXNhYmxlZDsgfQorICAgIAorICAgIHZvaWQgc2V0TGF5b3V0RmFsbGJhY2tXaWR0aChpbnQgd2lk
dGgpIHsgbV9sYXlvdXRGYWxsYmFja1dpZHRoID0gd2lkdGg7IH0KKyAgICBpbnQgbGF5b3V0RmFs
bGJhY2tXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0RmFsbGJhY2tXaWR0aDsgfQogCi0g
ICAgICAgIHZvaWQgc2V0RGV2aWNlV2lkdGgoaW50IHdpZHRoKSB7IG1fZGV2aWNlV2lkdGggPSB3
aWR0aDsgfQotICAgICAgICBpbnQgZGV2aWNlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2Rldmlj
ZVdpZHRoOyB9CisgICAgdm9pZCBzZXREZXZpY2VXaWR0aChpbnQgd2lkdGgpIHsgbV9kZXZpY2VX
aWR0aCA9IHdpZHRoOyB9CisgICAgaW50IGRldmljZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXZpY2VXaWR0aDsgfQogCi0gICAgICAgIHZvaWQgc2V0RGV2aWNlSGVpZ2h0KGludCBoZWlnaHQp
IHsgbV9kZXZpY2VIZWlnaHQgPSBoZWlnaHQ7IH0KLSAgICAgICAgaW50IGRldmljZUhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSGVpZ2h0OyB9CisgICAgdm9pZCBzZXREZXZpY2VIZWln
aHQoaW50IGhlaWdodCkgeyBtX2RldmljZUhlaWdodCA9IGhlaWdodDsgfQorICAgIGludCBkZXZp
Y2VIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUhlaWdodDsgfQogCi0gICAgICAgIHZv
aWQgc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoYm9vbCBmbGFnKSB7IG1fZm9yY2VDb21wb3NpdGlu
Z01vZGUgPSBmbGFnOyB9Ci0gICAgICAgIGJvb2wgZm9yY2VDb21wb3NpdGluZ01vZGUoKSB7IHJl
dHVybiBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRGb3JjZUNvbXBvc2l0
aW5nTW9kZShib29sIGZsYWcpIHsgbV9mb3JjZUNvbXBvc2l0aW5nTW9kZSA9IGZsYWc7IH0KKyAg
ICBib29sIGZvcmNlQ29tcG9zaXRpbmdNb2RlKCkgeyByZXR1cm4gbV9mb3JjZUNvbXBvc2l0aW5n
TW9kZTsgfQogCi0gICAgICAgIHZvaWQgc2V0U2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRp
YWxFbXB0eURvY3VtZW50KGJvb2wgZmxhZykgeyBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5J
bml0aWFsRW1wdHlEb2N1bWVudCA9IGZsYWc7IH0KLSAgICAgICAgYm9vbCBzaG91bGRJbmplY3RV
c2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSB7IHJldHVybiBtX3Nob3VsZEluamVj
dFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudDsgfQorICAgIHZvaWQgc2V0U2hvdWxk
SW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KGJvb2wgZmxhZykgeyBtX3No
b3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCA9IGZsYWc7IH0KKyAg
ICBib29sIHNob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCgpIHsg
cmV0dXJuIG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50OyB9
CiAKLSAgICAgICAgdm9pZCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sIGZs
YWcpIHsgbV9hbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCA9IGZsYWc7IH0KLSAgICAgICAg
Ym9vbCBhbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ7IH0KLSAgICAgICAgdm9pZCBzZXRBbGxvd1J1bm5p
bmdPZkluc2VjdXJlQ29udGVudChib29sIGZsYWcpIHsgbV9hbGxvd1J1bm5pbmdPZkluc2VjdXJl
Q29udGVudCA9IGZsYWc7IH0KLSAgICAgICAgYm9vbCBhbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQ7IH0K
KyAgICB2b2lkIHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGJvb2wgZmxhZykgeyBt
X2FsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50ID0gZmxhZzsgfQorICAgIGJvb2wgYWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93RGlzcGxheU9m
SW5zZWN1cmVDb250ZW50OyB9CisgICAgdm9pZCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29u
dGVudChib29sIGZsYWcpIHsgbV9hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCA9IGZsYWc7
IH0KKyAgICBib29sIGFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gbV9hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudDsgfQogCiAjaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgICAgIHZvaWQgc2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IoYm9vbCBm
bGFnKSB7IG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkID0gZmxhZzsgfQotICAgICAgICBib29sIHNj
cm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQW5pbWF0b3JFbmFi
bGVkOyB9CisgICAgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihib29sIGZsYWcpIHsgbV9z
Y3JvbGxBbmltYXRvckVuYWJsZWQgPSBmbGFnOyB9CisgICAgYm9vbCBzY3JvbGxBbmltYXRvckVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZDsgfQogI2VuZGlm
CiAKLSAgICAgICAgdm9pZCBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShib29s
IGZsYWcpIHsgbV9tZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSA9IGZsYWc7IH07Ci0g
ICAgICAgIGJvb2wgbWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX21lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOyB9CisgICAgdm9pZCBzZXRN
ZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShib29sIGZsYWcpIHsgbV9tZWRpYVBsYXli
YWNrUmVxdWlyZXNVc2VyR2VzdHVyZSA9IGZsYWc7IH07CisgICAgYm9vbCBtZWRpYVBsYXliYWNr
UmVxdWlyZXNVc2VyR2VzdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFQbGF5YmFja1JlcXVp
cmVzVXNlckdlc3R1cmU7IH0KIAotICAgICAgICB2b2lkIHNldE1lZGlhUGxheWJhY2tBbGxvd3NJ
bmxpbmUoYm9vbCBmbGFnKSB7IG1fbWVkaWFQbGF5YmFja0FsbG93c0lubGluZSA9IGZsYWc7IH07
Ci0gICAgICAgIGJvb2wgbWVkaWFQbGF5YmFja0FsbG93c0lubGluZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVkaWFQbGF5YmFja0FsbG93c0lubGluZTsgfQorICAgIHZvaWQgc2V0TWVkaWFQbGF5YmFj
a0FsbG93c0lubGluZShib29sIGZsYWcpIHsgbV9tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lID0g
ZmxhZzsgfTsKKyAgICBib29sIG1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUoKSBjb25zdCB7IHJl
dHVybiBtX21lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmU7IH0KIAotICAgICAgICB2b2lkIHNldFBh
c3N3b3JkRWNob0VuYWJsZWQoYm9vbCBmbGFnKSB7IG1fcGFzc3dvcmRFY2hvRW5hYmxlZCA9IGZs
YWc7IH0KLSAgICAgICAgYm9vbCBwYXNzd29yZEVjaG9FbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9wYXNzd29yZEVjaG9FbmFibGVkOyB9CisgICAgdm9pZCBzZXRQYXNzd29yZEVjaG9FbmFibGVk
KGJvb2wgZmxhZykgeyBtX3Bhc3N3b3JkRWNob0VuYWJsZWQgPSBmbGFnOyB9CisgICAgYm9vbCBw
YXNzd29yZEVjaG9FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYXNzd29yZEVjaG9FbmFibGVk
OyB9CiAKLSAgICAgICAgdm9pZCBzZXRTdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcoYm9v
bCBmbGFnKSB7IG1fc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nID0gZmxhZzsgfQotICAg
ICAgICBib29sIHN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJu
IG1fc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nOyB9Ci0gICAgICAgIAotICAgICAgICB2
b2lkIHNldEJhY2tzcGFjZUtleU5hdmlnYXRpb25FbmFibGVkKGJvb2wgZmxhZykgeyBtX2JhY2tz
cGFjZUtleU5hdmlnYXRpb25FbmFibGVkID0gZmxhZzsgfQotICAgICAgICBib29sIGJhY2tzcGFj
ZUtleU5hdmlnYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrc3BhY2VLZXlOYXZp
Z2F0aW9uRW5hYmxlZDsgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRQYXNzd29yZEVjaG9E
dXJhdGlvbkluU2Vjb25kcyhkb3VibGUgZHVyYXRpb25JblNlY29uZHMpIHsgbV9wYXNzd29yZEVj
aG9EdXJhdGlvbkluU2Vjb25kcyA9IGR1cmF0aW9uSW5TZWNvbmRzOyB9Ci0gICAgICAgIGRvdWJs
ZSBwYXNzd29yZEVjaG9EdXJhdGlvbkluU2Vjb25kcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFzc3dv
cmRFY2hvRHVyYXRpb25JblNlY29uZHM7IH0KKyAgICB2b2lkIHNldFN1cHByZXNzZXNJbmNyZW1l
bnRhbFJlbmRlcmluZyhib29sIGZsYWcpIHsgbV9zdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJp
bmcgPSBmbGFnOyB9CisgICAgYm9vbCBzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcoKSBj
b25zdCB7IHJldHVybiBtX3N1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZzsgfQorICAgIAor
ICAgIHZvaWQgc2V0QmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQoYm9vbCBmbGFnKSB7IG1f
YmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgPSBmbGFnOyB9CisgICAgYm9vbCBiYWNrc3Bh
Y2VLZXlOYXZpZ2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja3NwYWNlS2V5TmF2
aWdhdGlvbkVuYWJsZWQ7IH0KKyAgICAKKyAgICB2b2lkIHNldFBhc3N3b3JkRWNob0R1cmF0aW9u
SW5TZWNvbmRzKGRvdWJsZSBkdXJhdGlvbkluU2Vjb25kcykgeyBtX3Bhc3N3b3JkRWNob0R1cmF0
aW9uSW5TZWNvbmRzID0gZHVyYXRpb25JblNlY29uZHM7IH0KKyAgICBkb3VibGUgcGFzc3dvcmRF
Y2hvRHVyYXRpb25JblNlY29uZHMoKSBjb25zdCB7IHJldHVybiBtX3Bhc3N3b3JkRWNob0R1cmF0
aW9uSW5TZWNvbmRzOyB9CiAKICNpZiBVU0UoU0FGQVJJX1RIRU1FKQotICAgICAgICAvLyBXaW5k
b3dzIGRlYnVnZ2luZyBwcmVmIChnbG9iYWwpIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiB0aGUgQXF1
YSBsb29rIGFuZCBhIG5hdGl2ZSB3aW5kb3dzIGxvb2suCi0gICAgICAgIHN0YXRpYyB2b2lkIHNl
dFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoYm9vbCk7Ci0gICAgICAgIHN0YXRpYyBib29sIHNo
b3VsZFBhaW50TmF0aXZlQ29udHJvbHMoKSB7IHJldHVybiBnU2hvdWxkUGFpbnROYXRpdmVDb250
cm9sczsgfQorICAgIC8vIFdpbmRvd3MgZGVidWdnaW5nIHByZWYgKGdsb2JhbCkgZm9yIHN3aXRj
aGluZyBiZXR3ZWVuIHRoZSBBcXVhIGxvb2sgYW5kIGEgbmF0aXZlIHdpbmRvd3MgbG9vay4KKyAg
ICBzdGF0aWMgdm9pZCBzZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKGJvb2wpOworICAgIHN0
YXRpYyBib29sIHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoKSB7IHJldHVybiBnU2hvdWxkUGFp
bnROYXRpdmVDb250cm9sczsgfQogI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIHZvaWQgc2V0TW9j
a1Njcm9sbGJhcnNFbmFibGVkKGJvb2wgZmxhZyk7Ci0gICAgICAgIHN0YXRpYyBib29sIG1vY2tT
Y3JvbGxiYXJzRW5hYmxlZCgpOworICAgIHN0YXRpYyB2b2lkIHNldE1vY2tTY3JvbGxiYXJzRW5h
YmxlZChib29sIGZsYWcpOworICAgIHN0YXRpYyBib29sIG1vY2tTY3JvbGxiYXJzRW5hYmxlZCgp
OwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhib29sIGZs
YWcpOwotICAgICAgICBzdGF0aWMgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKKyAgICBz
dGF0aWMgdm9pZCBzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoYm9vbCBmbGFnKTsKKyAgICBzdGF0
aWMgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKIAotICAgICAgICB2b2lkIHNldFZpc3Vh
bFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fdmlzdWFsV29yZE1vdmVtZW50
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCB2aXN1YWxXb3JkTW92ZW1lbnRFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkOyB9CisgICAg
dm9pZCBzZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3Zpc3Vh
bFdvcmRNb3ZlbWVudEVuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCB2aXN1YWxXb3JkTW92
ZW1lbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxXb3JkTW92ZW1lbnRFbmFibGVk
OyB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgICAgIHZvaWQgc2V0U2hvdWxkRGlz
cGxheVN1YnRpdGxlcyhib29sIGZsYWcpIHsgbV9zaG91bGREaXNwbGF5U3VidGl0bGVzID0gZmxh
ZzsgfQotICAgICAgICBib29sIHNob3VsZERpc3BsYXlTdWJ0aXRsZXMoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZERpc3BsYXlTdWJ0aXRsZXM7IH0KKyAgICB2b2lkIHNldFNob3VsZERpc3BsYXlT
dWJ0aXRsZXMoYm9vbCBmbGFnKSB7IG1fc2hvdWxkRGlzcGxheVN1YnRpdGxlcyA9IGZsYWc7IH0K
KyAgICBib29sIHNob3VsZERpc3BsYXlTdWJ0aXRsZXMoKSBjb25zdCB7IHJldHVybiBtX3Nob3Vs
ZERpc3BsYXlTdWJ0aXRsZXM7IH0KIAotICAgICAgICB2b2lkIHNldFNob3VsZERpc3BsYXlDYXB0
aW9ucyhib29sIGZsYWcpIHsgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMgPSBmbGFnOyB9Ci0gICAg
ICAgIGJvb2wgc2hvdWxkRGlzcGxheUNhcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRE
aXNwbGF5Q2FwdGlvbnM7IH0KKyAgICB2b2lkIHNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhib29s
IGZsYWcpIHsgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMgPSBmbGFnOyB9CisgICAgYm9vbCBzaG91
bGREaXNwbGF5Q2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZERpc3BsYXlDYXB0aW9u
czsgfQogCi0gICAgICAgIHZvaWQgc2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoYm9v
bCBmbGFnKSB7IG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMgPSBmbGFnOyB9Ci0gICAg
ICAgIGJvb2wgc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zOyB9CisgICAgdm9pZCBzZXRTaG91bGREaXNw
bGF5VGV4dERlc2NyaXB0aW9ucyhib29sIGZsYWcpIHsgbV9zaG91bGREaXNwbGF5VGV4dERlc2Ny
aXB0aW9ucyA9IGZsYWc7IH0KKyAgICBib29sIHNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25z
KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uczsgfQogI2Vu
ZGlmCiAKLSAgICAgICAgdm9pZCBzZXRTY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkID0gZW5hYmxlZDsgfQotICAg
ICAgICBib29sIHNjcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkOyB9CisgICAgdm9pZCBzZXRTY3JvbGxpbmdDb29y
ZGluYXRvckVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFi
bGVkID0gZW5hYmxlZDsgfQorICAgIGJvb2wgc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQ7IH0KIAotICAgICAg
ICB2b2lkIHNldE5vdGlmaWNhdGlvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX25vdGlmaWNh
dGlvbnNFbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBib29sIG5vdGlmaWNhdGlvbnNFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25zRW5hYmxlZDsgfQorICAgIHZvaWQg
c2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fbm90aWZpY2F0aW9uc0Vu
YWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCBub3RpZmljYXRpb25zRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uc0VuYWJsZWQ7IH0KIAotICAgICAgICAvLyBTb21lIGFw
cHMgbmVlZHMgaXNMb2FkaW5nSW5BUElTZW5zZSB0byBhY2NvdW50IGZvciBhY3RpdmUgc3VicmVz
b3VyY2UgbG9hZGVycy4KLSAgICAgICAgdm9pZCBzZXROZWVkc0lzTG9hZGluZ0luQVBJU2Vuc2VR
dWlyayhib29sIGVuYWJsZWQpIHsgbV9uZWVkc0lzTG9hZGluZ0luQVBJU2Vuc2VRdWlyayA9IGVu
YWJsZWQ7IH0KLSAgICAgICAgYm9vbCBuZWVkc0lzTG9hZGluZ0luQVBJU2Vuc2VRdWlyaygpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNJc0xvYWRpbmdJbkFQSVNlbnNlUXVpcms7IH0KKyAgICAvLyBT
b21lIGFwcHMgbmVlZHMgaXNMb2FkaW5nSW5BUElTZW5zZSB0byBhY2NvdW50IGZvciBhY3RpdmUg
c3VicmVzb3VyY2UgbG9hZGVycy4KKyAgICB2b2lkIHNldE5lZWRzSXNMb2FkaW5nSW5BUElTZW5z
ZVF1aXJrKGJvb2wgZW5hYmxlZCkgeyBtX25lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrID0g
ZW5hYmxlZDsgfQorICAgIGJvb2wgbmVlZHNJc0xvYWRpbmdJbkFQSVNlbnNlUXVpcmsoKSBjb25z
dCB7IHJldHVybiBtX25lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrOyB9CiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQotICAgICAgICB2b2lkIHNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFi
bGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkID0gZW5hYmxl
ZDsgfQotICAgICAgICBib29sIGlzVG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkOyB9CisgICAgdm9pZCBzZXRUb3Vj
aEV2ZW50RW11bGF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90b3VjaEV2ZW50RW11bGF0
aW9uRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGlzVG91Y2hFdmVudEVtdWxhdGlvbkVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkOyB9CiAj
ZW5kaWYKIAotICAgICAgICB2b2lkIHNldFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKGJv
b2wgZW5hYmxlZCkgeyBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0gZW5hYmxlZDsg
fQotICAgICAgICBib29sIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsgfQorICAgIHZvaWQgc2V0U2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oYm9vbCBlbmFibGVkKSB7IG1fc2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24gPSBlbmFibGVkOyB9CisgICAgYm9vbCBzaG91bGRSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50
YXRpb247IH0KIAotICAgICAgICB2b2lkIHNldFdhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5n
QmVoYXZpb3IoYm9vbCBmbGFnKSB7IG1fd2FudHNCYWxhbmNlZFNldERlZmVyc0xvYWRpbmdCZWhh
dmlvciA9IGZsYWc7IH0KLSAgICAgICAgYm9vbCB3YW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGlu
Z0JlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV93YW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGlu
Z0JlaGF2aW9yOyB9CisgICAgdm9pZCBzZXRXYW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGluZ0Jl
aGF2aW9yKGJvb2wgZmxhZykgeyBtX3dhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVoYXZp
b3IgPSBmbGFnOyB9CisgICAgYm9vbCB3YW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGluZ0JlaGF2
aW9yKCkgY29uc3QgeyByZXR1cm4gbV93YW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGluZ0JlaGF2
aW9yOyB9CiAKLSAgICAgICAgdm9pZCBzZXRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9u
VGltZW91dEluU2Vjb25kcyhkb3VibGUgdGltZW91dCkgeyBtX2luY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzID0gdGltZW91dDsgfQotICAgICAgICBkb3VibGUg
aW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHMoKSBjb25zdCB7
IHJldHVybiBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRz
OyB9CisgICAgdm9pZCBzZXRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dElu
U2Vjb25kcyhkb3VibGUgdGltZW91dCkgeyBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Np
b25UaW1lb3V0SW5TZWNvbmRzID0gdGltZW91dDsgfQorICAgIGRvdWJsZSBpbmNyZW1lbnRhbFJl
bmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kcygpIGNvbnN0IHsgcmV0dXJuIG1faW5j
cmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHM7IH0KIAotICAgICAg
ICB2b2lkIHNldFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1f
cmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9vbCBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0QW5p
bWF0aW9uRnJhbWVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVF
bmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3JlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQgPSBl
bmFibGVkOyB9CisgICAgYm9vbCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkOyB9CiAKLSAgICAgICAgdm9p
ZCBzZXREZXZpY2VTdXBwb3J0c1RvdWNoKGJvb2wgZW5hYmxlZCkgeyBtX2RldmljZVN1cHBvcnRz
VG91Y2ggPSBlbmFibGVkOyB9Ci0gICAgICAgIGJvb2wgZGV2aWNlU3VwcG9ydHNUb3VjaCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGV2aWNlU3VwcG9ydHNUb3VjaDsgfQorICAgIHZvaWQgc2V0RGV2aWNl
U3VwcG9ydHNUb3VjaChib29sIGVuYWJsZWQpIHsgbV9kZXZpY2VTdXBwb3J0c1RvdWNoID0gZW5h
YmxlZDsgfQorICAgIGJvb2wgZGV2aWNlU3VwcG9ydHNUb3VjaCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGV2aWNlU3VwcG9ydHNUb3VjaDsgfQogCi0gICAgICAgIHZvaWQgc2V0RGV2aWNlU3VwcG9ydHNN
b3VzZShib29sIGVuYWJsZWQpIHsgbV9kZXZpY2VTdXBwb3J0c01vdXNlID0gZW5hYmxlZDsgfQot
ICAgICAgICBib29sIGRldmljZVN1cHBvcnRzTW91c2UoKSBjb25zdCB7IHJldHVybiBtX2Rldmlj
ZVN1cHBvcnRzTW91c2U7IH0KKyAgICB2b2lkIHNldERldmljZVN1cHBvcnRzTW91c2UoYm9vbCBl
bmFibGVkKSB7IG1fZGV2aWNlU3VwcG9ydHNNb3VzZSA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGRl
dmljZVN1cHBvcnRzTW91c2UoKSBjb25zdCB7IHJldHVybiBtX2RldmljZVN1cHBvcnRzTW91c2U7
IH0KIAotICAgICAgICB2b2lkIHNldE5lZWRzRGlkRmluaXNoTG9hZE9yZGVyUXVpcmsoYm9vbCBu
ZWVkc1F1aXJrKSB7IG1fbmVlZHNEaWRGaW5pc2hMb2FkT3JkZXJRdWlyayA9IG5lZWRzUXVpcms7
IH0KLSAgICAgICAgYm9vbCBuZWVkc0RpZEZpbmlzaExvYWRPcmRlclF1aXJrKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZWVkc0RpZEZpbmlzaExvYWRPcmRlclF1aXJrOyB9CisgICAgdm9pZCBzZXROZWVk
c0RpZEZpbmlzaExvYWRPcmRlclF1aXJrKGJvb2wgbmVlZHNRdWlyaykgeyBtX25lZWRzRGlkRmlu
aXNoTG9hZE9yZGVyUXVpcmsgPSBuZWVkc1F1aXJrOyB9CisgICAgYm9vbCBuZWVkc0RpZEZpbmlz
aExvYWRPcmRlclF1aXJrKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0RpZEZpbmlzaExvYWRPcmRl
clF1aXJrOyB9CiAKLSAgICAgICAgdm9pZCBzZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5n
Q29udGV4dChib29sIGNyZWF0ZXMpIHsgbV9maXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29u
dGV4dCA9IGNyZWF0ZXM7IH0KLSAgICAgICAgYm9vbCBmaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNr
aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2lu
Z0NvbnRleHQ7IH0KKyAgICB2b2lkIHNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250
ZXh0KGJvb2wgY3JlYXRlcykgeyBtX2ZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0
ID0gY3JlYXRlczsgfQorICAgIGJvb2wgZml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0
OyB9CiAKLSAgICAgICAgdm9pZCBzZXRTeW5jWEhSSW5Eb2N1bWVudHNFbmFibGVkKGJvb2wgZW5h
YmxlZCkgeyBtX3N5bmNYSFJJbkRvY3VtZW50c0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgICAg
IGJvb2wgc3luY1hIUkluRG9jdW1lbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3luY1hI
UkluRG9jdW1lbnRzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0U3luY1hIUkluRG9jdW1lbnRzRW5h
YmxlZChib29sIGVuYWJsZWQpIHsgbV9zeW5jWEhSSW5Eb2N1bWVudHNFbmFibGVkID0gZW5hYmxl
ZDsgfQorICAgIGJvb2wgc3luY1hIUkluRG9jdW1lbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3luY1hIUkluRG9jdW1lbnRzRW5hYmxlZDsgfQogCi0gICAgICAgIC8vIFdoZW4gZW5hYmxl
ZCwgd2luZG93LmJsdXIoKSBkb2VzIG5vdCBjaGFuZ2UgZm9jdXMsIGFuZAotICAgICAgICAvLyB3
aW5kb3cuZm9jdXMoKSBvbmx5IGNoYW5nZXMgZm9jdXMgd2hlbiBpbnZva2VkIGZyb20gdGhlIGNv
bnRleHQgdGhhdAotICAgICAgICAvLyBjcmVhdGVkIHRoZSB3aW5kb3cuCi0gICAgICAgIHZvaWQg
c2V0V2luZG93Rm9jdXNSZXN0cmljdGVkKGJvb2wgcmVzdHJpY3RlZCkgeyBtX3dpbmRvd0ZvY3Vz
UmVzdHJpY3RlZCA9IHJlc3RyaWN0ZWQ7IH0KLSAgICAgICAgYm9vbCB3aW5kb3dGb2N1c1Jlc3Ry
aWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd0ZvY3VzUmVzdHJpY3RlZDsgfQorICAgIC8v
IFdoZW4gZW5hYmxlZCwgd2luZG93LmJsdXIoKSBkb2VzIG5vdCBjaGFuZ2UgZm9jdXMsIGFuZAor
ICAgIC8vIHdpbmRvdy5mb2N1cygpIG9ubHkgY2hhbmdlcyBmb2N1cyB3aGVuIGludm9rZWQgZnJv
bSB0aGUgY29udGV4dCB0aGF0CisgICAgLy8gY3JlYXRlZCB0aGUgd2luZG93LgorICAgIHZvaWQg
c2V0V2luZG93Rm9jdXNSZXN0cmljdGVkKGJvb2wgcmVzdHJpY3RlZCkgeyBtX3dpbmRvd0ZvY3Vz
UmVzdHJpY3RlZCA9IHJlc3RyaWN0ZWQ7IH0KKyAgICBib29sIHdpbmRvd0ZvY3VzUmVzdHJpY3Rl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93Rm9jdXNSZXN0cmljdGVkOyB9CiAKLSAgICAgICAg
dm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9j
a2luZ1BvbGljeSk7Ci0gICAgICAgIFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xp
Y3kgc3RvcmFnZUJsb2NraW5nUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlQmxvY2tp
bmdQb2xpY3k7IH0KKyAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9y
aWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKKyAgICBTZWN1cml0eU9yaWdpbjo6U3RvcmFn
ZUJsb2NraW5nUG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmFnZUJsb2NraW5nUG9saWN5OyB9CiAKLSAgICAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJm
b3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wpOwotICAgICAgICBib29sIHNjcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQoKSB7IHJldHVybiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQoYm9vbCk7CisgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KCkgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkOyB9CiAKICNp
ZiBVU0UoSlNDKQotICAgICAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRSZXNwZWN0UHJpb3JpdHlJ
bkNTU0F0dHJpYnV0ZVNldHRlcnMoYm9vbCk7Ci0gICAgICAgIHN0YXRpYyBib29sIHNob3VsZFJl
c3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycygpOworICAgIHN0YXRpYyB2b2lkIHNl
dFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycyhib29sKTsKKyAgICBz
dGF0aWMgYm9vbCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKTsK
ICNlbmRpZgogCi0gICAgICAgIHZvaWQgc2V0Q29va2llRW5hYmxlZChib29sIGVuYWJsZWQpIHsg
bV9jb29raWVFbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBib29sIGNvb2tpZUVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZUVuYWJsZWQ7IH0KLQotICAgICAgICB2b2lkIHNldERp
YWdub3N0aWNMb2dnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9kaWFnbm9zdGljTG9nZ2lu
Z0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgICAgIGJvb2wgZGlhZ25vc3RpY0xvZ2dpbmdFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQ7IH0KLQotICAg
ICAgICB2b2lkIHNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKGJvb2wgZW5hYmxl
ZCkgeyBtX2FwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yID0gZW5hYmxlZDsgfQotICAg
ICAgICBib29sIGFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcjsgfQotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgZXhwbGljaXQgU2V0dGluZ3MoUGFnZSopOwotCi0gICAgICAgIHZvaWQgaW5pdGlh
bGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKTsKLQotICAgICAgICBQYWdlKiBtX3BhZ2U7Ci0KLSAg
ICAgICAgU3RyaW5nIG1fZGVmYXVsdFRleHRFbmNvZGluZ05hbWU7Ci0gICAgICAgIFN0cmluZyBt
X2Z0cERpcmVjdG9yeVRlbXBsYXRlUGF0aDsKLSAgICAgICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoOwotICAgICAgICBLVVJMIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsKLSAg
ICAgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBtX3N0YW5kYXJkRm9udEZhbWlseU1hcDsKLSAgICAg
ICAgU2NyaXB0Rm9udEZhbWlseU1hcCBtX3NlcmlmRm9udEZhbWlseU1hcDsKLSAgICAgICAgU2Ny
aXB0Rm9udEZhbWlseU1hcCBtX2ZpeGVkRm9udEZhbWlseU1hcDsKLSAgICAgICAgU2NyaXB0Rm9u
dEZhbWlseU1hcCBtX3NhbnNTZXJpZkZvbnRGYW1pbHlNYXA7Ci0gICAgICAgIFNjcmlwdEZvbnRG
YW1pbHlNYXAgbV9jdXJzaXZlRm9udEZhbWlseU1hcDsKLSAgICAgICAgU2NyaXB0Rm9udEZhbWls
eU1hcCBtX2ZhbnRhc3lGb250RmFtaWx5TWFwOwotICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFw
IG1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXA7Ci0gICAgICAgIEVkaXRhYmxlTGlua0JlaGF2aW9y
IG1fZWRpdGFibGVMaW5rQmVoYXZpb3I7Ci0gICAgICAgIFRleHREaXJlY3Rpb25TdWJtZW51SW5j
bHVzaW9uQmVoYXZpb3IgbV90ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yOwot
ICAgICAgICBkb3VibGUgbV9wYXNzd29yZEVjaG9EdXJhdGlvbkluU2Vjb25kczsKLSAgICAgICAg
aW50IG1fbWluaW11bUZvbnRTaXplOwotICAgICAgICBpbnQgbV9taW5pbXVtTG9naWNhbEZvbnRT
aXplOwotICAgICAgICBpbnQgbV9kZWZhdWx0Rm9udFNpemU7Ci0gICAgICAgIGludCBtX2RlZmF1
bHRGaXhlZEZvbnRTaXplOwotICAgICAgICBib29sIG1fc2NyZWVuRm9udFN1YnN0aXR1dGlvbkVu
YWJsZWQ7Ci0gICAgICAgIGludCBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9u
OwotICAgICAgICBpbnQgbV9taW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZhc1NpemU7Ci0gICAgICAg
IGludCBtX2xheW91dEZhbGxiYWNrV2lkdGg7Ci0gICAgICAgIHNpemVfdCBtX21heGltdW1EZWNv
ZGVkSW1hZ2VTaXplOwotICAgICAgICBpbnQgbV9kZXZpY2VXaWR0aDsKLSAgICAgICAgaW50IG1f
ZGV2aWNlSGVpZ2h0OwotICAgICAgICB1bnNpZ25lZCBtX3Nlc3Npb25TdG9yYWdlUXVvdGE7Ci0g
ICAgICAgIHVuc2lnbmVkIG1fZWRpdGluZ0JlaGF2aW9yVHlwZTsKLSAgICAgICAgdW5zaWduZWQg
bV9tYXhpbXVtSFRNTFBhcnNlckRPTVRyZWVEZXB0aDsKLSAgICAgICAgU2VjdXJpdHlPcmlnaW46
OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsKKyAgICB2b2lk
IHNldENvb2tpZUVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fY29va2llRW5hYmxlZCA9IGVuYWJs
ZWQ7IH0KKyAgICBib29sIGNvb2tpZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZUVu
YWJsZWQ7IH0KKworICAgIHZvaWQgc2V0RGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkgeyBtX2RpYWdub3N0aWNMb2dnaW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICBib29s
IGRpYWdub3N0aWNMb2dnaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlhZ25vc3RpY0xv
Z2dpbmdFbmFibGVkOyB9CisKKyAgICB2b2lkIHNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21w
b3NpdG9yKGJvb2wgZW5hYmxlZCkgeyBtX2FwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9y
ID0gZW5hYmxlZDsgfQorICAgIGJvb2wgYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Io
KSBjb25zdCB7IHJldHVybiBtX2FwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yOyB9CisK
KyAgICB2b2lkIHNldENsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBt
X2NsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkID0gZW5hYmxlZDsgfQorICAgIGJvb2wgY2xpY2tU
b1N0YXJ0UGx1Z0luc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2NsaWNrVG9TdGFydFBsdWdJ
bnNFbmFibGVkOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU2V0dGluZ3MoUGFnZSopOwor
CisgICAgdm9pZCBpbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpOworCisgICAgUGFnZSog
bV9wYWdlOworCisgICAgU3RyaW5nIG1fZGVmYXVsdFRleHRFbmNvZGluZ05hbWU7CisgICAgU3Ry
aW5nIG1fZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoOworICAgIFN0cmluZyBtX2xvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aDsKKyAgICBLVVJMIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsKKyAgICBT
Y3JpcHRGb250RmFtaWx5TWFwIG1fc3RhbmRhcmRGb250RmFtaWx5TWFwOworICAgIFNjcmlwdEZv
bnRGYW1pbHlNYXAgbV9zZXJpZkZvbnRGYW1pbHlNYXA7CisgICAgU2NyaXB0Rm9udEZhbWlseU1h
cCBtX2ZpeGVkRm9udEZhbWlseU1hcDsKKyAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fc2Fuc1Nl
cmlmRm9udEZhbWlseU1hcDsKKyAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fY3Vyc2l2ZUZvbnRG
YW1pbHlNYXA7CisgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBtX2ZhbnRhc3lGb250RmFtaWx5TWFw
OworICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9waWN0b2dyYXBoRm9udEZhbWlseU1hcDsKKyAg
ICBFZGl0YWJsZUxpbmtCZWhhdmlvciBtX2VkaXRhYmxlTGlua0JlaGF2aW9yOworICAgIFRleHRE
aXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IgbV90ZXh0RGlyZWN0aW9uU3VibWVudUlu
Y2x1c2lvbkJlaGF2aW9yOworICAgIGRvdWJsZSBtX3Bhc3N3b3JkRWNob0R1cmF0aW9uSW5TZWNv
bmRzOworICAgIGludCBtX21pbmltdW1Gb250U2l6ZTsKKyAgICBpbnQgbV9taW5pbXVtTG9naWNh
bEZvbnRTaXplOworICAgIGludCBtX2RlZmF1bHRGb250U2l6ZTsKKyAgICBpbnQgbV9kZWZhdWx0
Rml4ZWRGb250U2l6ZTsKKyAgICBib29sIG1fc2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQ7
CisgICAgaW50IG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb247CisgICAgaW50
IG1fbWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNTaXplOworICAgIGludCBtX2xheW91dEZhbGxi
YWNrV2lkdGg7CisgICAgc2l6ZV90IG1fbWF4aW11bURlY29kZWRJbWFnZVNpemU7CisgICAgaW50
IG1fZGV2aWNlV2lkdGg7CisgICAgaW50IG1fZGV2aWNlSGVpZ2h0OworICAgIHVuc2lnbmVkIG1f
c2Vzc2lvblN0b3JhZ2VRdW90YTsKKyAgICB1bnNpZ25lZCBtX2VkaXRpbmdCZWhhdmlvclR5cGU7
CisgICAgdW5zaWduZWQgbV9tYXhpbXVtSFRNTFBhcnNlckRPTVRyZWVEZXB0aDsKKyAgICBTZWN1
cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5
OwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgICAgIGZsb2F0IG1fdGV4dEF1dG9z
aXppbmdGb250U2NhbGVGYWN0b3I7Ci0gICAgICAgIEludFNpemUgbV90ZXh0QXV0b3NpemluZ1dp
bmRvd1NpemVPdmVycmlkZTsKLSAgICAgICAgYm9vbCBtX3RleHRBdXRvc2l6aW5nRW5hYmxlZCA6
IDE7CisgICAgZmxvYXQgbV90ZXh0QXV0b3NpemluZ0ZvbnRTY2FsZUZhY3RvcjsKKyAgICBJbnRT
aXplIG1fdGV4dEF1dG9zaXppbmdXaW5kb3dTaXplT3ZlcnJpZGU7CisgICAgYm9vbCBtX3RleHRB
dXRvc2l6aW5nRW5hYmxlZCA6IDE7CiAjZW5kaWYKLSAgICAgICAgYm9vbCBtX2lzU3BhdGlhbE5h
dmlnYXRpb25FbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWQgOiAxOwot
ICAgICAgICBib29sIG1faXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMgOiAxOwotICAgICAgICBi
b29sIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5IDogMTsKLSAgICAgICAgYm9vbCBtX2xvYWRz
U2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nIDogMTsKLSAgICAgICAgYm9vbCBt
X3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1fY2FyZXRCcm93c2lu
Z0VuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1fYXJlSW1hZ2VzRW5hYmxlZCA6IDE7Ci0gICAg
ICAgIGJvb2wgbV9pc01lZGlhRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hcmVQbHVnaW5z
RW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9sb2NhbFN0b3JhZ2VFbmFibGVkIDogMTsKLSAg
ICAgICAgYm9vbCBtX2lzU2NyaXB0RW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9pc1dlYlNl
Y3VyaXR5RW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zy
b21GaWxlVVJMczogMTsKLSAgICAgICAgYm9vbCBtX2FsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJM
czogMTsKLSAgICAgICAgYm9vbCBtX2phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2Fs
bHkgOiAxOwotICAgICAgICBib29sIG1famF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCA6IDE7
Ci0gICAgICAgIGJvb2wgbV9zaG91bGRQcmludEJhY2tncm91bmRzIDogMTsKLSAgICAgICAgYm9v
bCBtX3RleHRBcmVhc0FyZVJlc2l6YWJsZSA6IDE7CisgICAgYm9vbCBtX2lzU3BhdGlhbE5hdmln
YXRpb25FbmFibGVkIDogMTsKKyAgICBib29sIG1faXNKYXZhRW5hYmxlZCA6IDE7CisgICAgYm9v
bCBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzIDogMTsKKyAgICBib29sIG1fbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5IDogMTsKKyAgICBib29sIG1fbG9hZHNTaXRlSWNvbnNJZ25vcmluZ0lt
YWdlTG9hZGluZ1NldHRpbmcgOiAxOworICAgIGJvb2wgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVk
IDogMTsKKyAgICBib29sIG1fY2FyZXRCcm93c2luZ0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV9h
cmVJbWFnZXNFbmFibGVkIDogMTsKKyAgICBib29sIG1faXNNZWRpYUVuYWJsZWQgOiAxOworICAg
IGJvb2wgbV9hcmVQbHVnaW5zRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2xvY2FsU3RvcmFnZUVu
YWJsZWQgOiAxOworICAgIGJvb2wgbV9pc1NjcmlwdEVuYWJsZWQgOiAxOworICAgIGJvb2wgbV9p
c1dlYlNlY3VyaXR5RW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2FsbG93VW5pdmVyc2FsQWNjZXNz
RnJvbUZpbGVVUkxzOiAxOworICAgIGJvb2wgbV9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6
IDE7CisgICAgYm9vbCBtX2phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgOiAx
OworICAgIGJvb2wgbV9qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIDogMTsKKyAgICBib29s
IG1fc2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyA6IDE7CisgICAgYm9vbCBtX3RleHRBcmVhc0FyZVJl
c2l6YWJsZSA6IDE7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgICAgICBib29s
IG1fdXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgOiAxOworICAgIGJvb2wg
bV91c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA6IDE7CiAjZW5kaWYKLSAg
ICAgICAgYm9vbCBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrIDogMTsKLSAgICAgICAg
Ym9vbCBtX25lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVpcmtzIDogMTsKLSAgICAg
ICAgYm9vbCBtX3RyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0IDogMTsKLSAgICAgICAg
Ym9vbCBtX25lZWRzTGVvcGFyZE1haWxRdWlya3MgOiAxOwotICAgICAgICBib29sIG1faXNET01Q
YXN0ZUFsbG93ZWQgOiAxOwotICAgICAgICBib29sIG1fc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNU
b0ZpdCA6IDE7Ci0gICAgICAgIGJvb2wgbV91c2VzUGFnZUNhY2hlIDogMTsKLSAgICAgICAgYm9v
bCBtX3BhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucyA6IDE7Ci0gICAgICAgIGJvb2wgbV9zaG93c1VS
THNJblRvb2xUaXBzIDogMTsKLSAgICAgICAgYm9vbCBtX3Nob3dzVG9vbFRpcE92ZXJUcnVuY2F0
ZWRUZXh0IDogMTsKLSAgICAgICAgYm9vbCBtX2ZvcmNlRlRQRGlyZWN0b3J5TGlzdGluZ3MgOiAx
OwotICAgICAgICBib29sIG1fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJv
b2wgbV9qYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2F1
dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX25lZWRzU2l0ZVNw
ZWNpZmljUXVpcmtzIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9mb250UmVuZGVyaW5nTW9kZSA6
IDE7Ci0gICAgICAgIGJvb2wgbV9mcmFtZUZsYXR0ZW5pbmdFbmFibGVkIDogMTsKKyAgICBib29s
IG1fbmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcmsgOiAxOworICAgIGJvb2wgbV9uZWVkc0tl
eWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrcyA6IDE7CisgICAgYm9vbCBtX3RyZWF0c0Fu
eVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0IDogMTsKKyAgICBib29sIG1fbmVlZHNMZW9wYXJkTWFp
bFF1aXJrcyA6IDE7CisgICAgYm9vbCBtX2lzRE9NUGFzdGVBbGxvd2VkIDogMTsKKyAgICBib29s
IG1fc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdCA6IDE7CisgICAgYm9vbCBtX3VzZXNQYWdl
Q2FjaGUgOiAxOworICAgIGJvb2wgbV9wYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMgOiAxOworICAg
IGJvb2wgbV9zaG93c1VSTHNJblRvb2xUaXBzIDogMTsKKyAgICBib29sIG1fc2hvd3NUb29sVGlw
T3ZlclRydW5jYXRlZFRleHQgOiAxOworICAgIGJvb2wgbV9mb3JjZUZUUERpcmVjdG9yeUxpc3Rp
bmdzIDogMTsKKyAgICBib29sIG1fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA6IDE7CisgICAgYm9v
bCBtX2phdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV9hdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX25lZWRzU2l0ZVNwZWNpZmljUXVp
cmtzIDogMTsKKyAgICB1bnNpZ25lZCBtX2ZvbnRSZW5kZXJpbmdNb2RlIDogMTsKKyAgICBib29s
IG1fZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCA6IDE7CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKQot
ICAgICAgICBib29sIG1fd2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWQgOiAxOworICAgIGJvb2wg
bV93ZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZCA6IDE7CiAjZW5kaWYKLSAgICAgICAgYm9vbCBt
X2xvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1faW5B
cHBsaWNhdGlvbkNocm9tZU1vZGUgOiAxOwotICAgICAgICBib29sIG1fb2ZmbGluZVdlYkFwcGxp
Y2F0aW9uQ2FjaGVFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2VuZm9yY2VDU1NNSU1FVHlw
ZUluTm9RdWlya3NNb2RlIDogMTsKLSAgICAgICAgYm9vbCBtX3VzZXNFbmNvZGluZ0RldGVjdG9y
IDogMTsKLSAgICAgICAgYm9vbCBtX2FsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzIDogMTsKLSAg
ICAgICAgYm9vbCBtX2NhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmcgOiAxOwotICAgICAgICBi
b29sIG1fYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hY2Nl
bGVyYXRlZEZpbHRlcnNFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2lzQ1NTQ3VzdG9tRmls
dGVyRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2xvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJs
ZWQgOiAxOworICAgIGJvb2wgbV9pbkFwcGxpY2F0aW9uQ2hyb21lTW9kZSA6IDE7CisgICAgYm9v
bCBtX29mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2Vu
Zm9yY2VDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlIDogMTsKKyAgICBib29sIG1fdXNlc0VuY29k
aW5nRGV0ZWN0b3IgOiAxOworICAgIGJvb2wgbV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyA6
IDE7CisgICAgYm9vbCBtX2NhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmcgOiAxOworICAgIGJv
b2wgbV9hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIDogMTsKKyAgICBib29sIG1fYWNjZWxlcmF0
ZWRGaWx0ZXJzRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2lzQ1NTQ3VzdG9tRmlsdGVyRW5hYmxl
ZCA6IDE7CiAjaWYgRU5BQkxFKENTU19TVElDS1lfUE9TSVRJT04pCi0gICAgICAgIGJvb2wgbV9j
c3NTdGlja3lQb3NpdGlvbkVuYWJsZWQgOiAxOworICAgIGJvb2wgbV9jc3NTdGlja3lQb3NpdGlv
bkVuYWJsZWQgOiAxOwogI2VuZGlmICAgICAgICAKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0g
ICAgICAgIGJvb2wgbV9jc3NSZWdpb25zRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2Nzc1JlZ2lv
bnNFbmFibGVkIDogMTsKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQotICAgICAg
ICBib29sIG1fY3NzVmFyaWFibGVzRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2Nzc1ZhcmlhYmxl
c0VuYWJsZWQgOiAxOwogI2VuZGlmCi0gICAgICAgIGJvb2wgbV9yZWdpb25CYXNlZENvbHVtbnNF
bmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2Nzc0dyaWRMYXlvdXRFbmFibGVkIDogMTsKLSAg
ICAgICAgYm9vbCBtX2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCA6IDE7Ci0gICAgICAg
IGJvb2wgbV94c3NBdWRpdG9yRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkIDogMTsKLSAgICAgICAgYm9v
bCBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQgOiAxOwotICAgICAgICBi
b29sIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkIDogMTsKLSAgICAg
ICAgYm9vbCBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JDYW52YXNFbmFibGVkIDogMTsKLSAg
ICAgICAgYm9vbCBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JBbmltYXRpb25FbmFibGVkIDog
MTsKLSAgICAgICAgYm9vbCBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9u
RW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yU2Ny
b2xsYWJsZUZyYW1lc0VuYWJsZWQgOiAxOyAvLyBXb3JrcyBvbmx5IGluIGNvbmp1bmN0aW9uIHdp
dGggZm9yY2VDb21wb3NpdGluZ01vZGUKLSAgICAgICAgYm9vbCBtX3Nob3dEZWJ1Z0JvcmRlcnMg
OiAxOwotICAgICAgICBib29sIG1fc2hvd1JlcGFpbnRDb3VudGVyIDogMTsKLSAgICAgICAgYm9v
bCBtX2V4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBt
X3dlYkdMRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV93ZWJHTEVycm9yc1RvQ29uc29sZUVu
YWJsZWQgOiAxOwotICAgICAgICBib29sIG1fb3BlbkdMTXVsdGlzYW1wbGluZ0VuYWJsZWQgOiAx
OwotICAgICAgICBib29sIG1fcHJpdmlsZWdlZFdlYkdMRXh0ZW5zaW9uc0VuYWJsZWQgOiAxOwot
ICAgICAgICBib29sIG1fd2ViQXVkaW9FbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2FjY2Vs
ZXJhdGVkQ2FudmFzMmRFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2RlZmVycmVkQ2FudmFz
MmRFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2xvYWREZWZlcnJpbmdFbmFibGVkIDogMTsK
LSAgICAgICAgYm9vbCBtX3RpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJv
b2wgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1fZG5z
UHJlZmV0Y2hpbmdFbmFibGVkIDogMTsKKyAgICBib29sIG1fcmVnaW9uQmFzZWRDb2x1bW5zRW5h
YmxlZCA6IDE7CisgICAgYm9vbCBtX2Nzc0dyaWRMYXlvdXRFbmFibGVkIDogMTsKKyAgICBib29s
IG1fZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkIDogMTsKKyAgICBib29sIG1feHNzQXVk
aXRvckVuYWJsZWQgOiAxOworICAgIGJvb2wgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxl
ZCA6IDE7CisgICAgYm9vbCBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9s
bEVuYWJsZWQgOiAxOworICAgIGJvb2wgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFu
c2Zvcm1zRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JW
aWRlb0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yUGx1
Z2luc0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yQ2Fu
dmFzRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JBbmlt
YXRpb25FbmFibGVkIDogMTsKKyAgICBib29sIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZp
eGVkUG9zaXRpb25FbmFibGVkIDogMTsKKyAgICBib29sIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0ZvclNjcm9sbGFibGVGcmFtZXNFbmFibGVkIDogMTsgLy8gV29ya3Mgb25seSBpbiBjb25qdW5j
dGlvbiB3aXRoIGZvcmNlQ29tcG9zaXRpbmdNb2RlCisgICAgYm9vbCBtX3Nob3dEZWJ1Z0JvcmRl
cnMgOiAxOworICAgIGJvb2wgbV9zaG93UmVwYWludENvdW50ZXIgOiAxOworICAgIGJvb2wgbV9l
eHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX3dlYkdMRW5h
YmxlZCA6IDE7CisgICAgYm9vbCBtX3dlYkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZCA6IDE7Cisg
ICAgYm9vbCBtX29wZW5HTE11bHRpc2FtcGxpbmdFbmFibGVkIDogMTsKKyAgICBib29sIG1fcHJp
dmlsZWdlZFdlYkdMRXh0ZW5zaW9uc0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV93ZWJBdWRpb0Vu
YWJsZWQgOiAxOworICAgIGJvb2wgbV9hY2NlbGVyYXRlZENhbnZhczJkRW5hYmxlZCA6IDE7Cisg
ICAgYm9vbCBtX2RlZmVycmVkQ2FudmFzMmRFbmFibGVkIDogMTsKKyAgICBib29sIG1fbG9hZERl
ZmVycmluZ0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV90aWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQg
OiAxOworICAgIGJvb2wgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgOiAxOworICAgIGJv
b2wgbV9kbnNQcmVmZXRjaGluZ0VuYWJsZWQgOiAxOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKLSAgICAgICAgYm9vbCBtX2Z1bGxTY3JlZW5BUElFbmFibGVkIDogMTsKKyAgICBib29sIG1f
ZnVsbFNjcmVlbkFQSUVuYWJsZWQgOiAxOwogI2VuZGlmCi0gICAgICAgIGJvb2wgbV9hc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCA6IDE7Ci0gICAgICAgIGJvb2wgbV91bmlmaWVkVGV4
dENoZWNrZXJFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX21lbW9yeUluZm9FbmFibGVkIDog
MTsKLSAgICAgICAgYm9vbCBtX3F1YW50aXplZE1lbW9yeUluZm9FbmFibGVkIDogMTsKLSAgICAg
ICAgYm9vbCBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb24gOiAxOwotICAgICAgICBib29sIG1f
dXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgOiAxOwotICAgICAgICBib29sIG1faHlwZXJsaW5rQXVk
aXRpbmdFbmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2Nyb3NzT3JpZ2luQ2hlY2tJbkdldE1h
dGNoZWRDU1NSdWxlc0Rpc2FibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX2ZvcmNlQ29tcG9zaXRp
bmdNb2RlIDogMTsKLSAgICAgICAgYm9vbCBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0
aWFsRW1wdHlEb2N1bWVudCA6IDE7Ci0gICAgICAgIGJvb2wgbV9maXhlZEVsZW1lbnRzTGF5b3V0
UmVsYXRpdmVUb0ZyYW1lIDogMTsKLSAgICAgICAgYm9vbCBtX2FsbG93RGlzcGxheU9mSW5zZWN1
cmVDb250ZW50IDogMTsKLSAgICAgICAgYm9vbCBtX2FsbG93UnVubmluZ09mSW5zZWN1cmVDb250
ZW50IDogMTsKKyAgICBib29sIG1fYXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgOiAx
OworICAgIGJvb2wgbV91bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkIDogMTsKKyAgICBib29sIG1f
bWVtb3J5SW5mb0VuYWJsZWQgOiAxOworICAgIGJvb2wgbV9xdWFudGl6ZWRNZW1vcnlJbmZvRW5h
YmxlZCA6IDE7CisgICAgYm9vbCBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb24gOiAxOworICAg
IGJvb2wgbV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyA6IDE7CisgICAgYm9vbCBtX2h5cGVybGlu
a0F1ZGl0aW5nRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2Nyb3NzT3JpZ2luQ2hlY2tJbkdldE1h
dGNoZWRDU1NSdWxlc0Rpc2FibGVkIDogMTsKKyAgICBib29sIG1fZm9yY2VDb21wb3NpdGluZ01v
ZGUgOiAxOworICAgIGJvb2wgbV9zaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5
RG9jdW1lbnQgOiAxOworICAgIGJvb2wgbV9maXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0Zy
YW1lIDogMTsKKyAgICBib29sIG1fYWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQgOiAxOwor
ICAgIGJvb2wgbV9hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCA6IDE7CiAjaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQg
OiAxOworICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgOiAxOwogI2VuZGlmCi0gICAg
ICAgIGJvb2wgbV9tZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSA6IDE7Ci0gICAgICAg
IGJvb2wgbV9tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lIDogMTsKLSAgICAgICAgYm9vbCBtX3Bh
c3N3b3JkRWNob0VuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1fc3VwcHJlc3Nlc0luY3JlbWVu
dGFsUmVuZGVyaW5nIDogMTsKLSAgICAgICAgYm9vbCBtX2JhY2tzcGFjZUtleU5hdmlnYXRpb25F
bmFibGVkIDogMTsKLSAgICAgICAgYm9vbCBtX3Zpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQgOiAx
OworICAgIGJvb2wgbV9tZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSA6IDE7CisgICAg
Ym9vbCBtX21lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUgOiAxOworICAgIGJvb2wgbV9wYXNzd29y
ZEVjaG9FbmFibGVkIDogMTsKKyAgICBib29sIG1fc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVy
aW5nIDogMTsKKyAgICBib29sIG1fYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgOiAxOwor
ICAgIGJvb2wgbV92aXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkIDogMTsKIAogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKLSAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlTdWJ0aXRsZXMgOiAxOwot
ICAgICAgICBib29sIG1fc2hvdWxkRGlzcGxheUNhcHRpb25zIDogMTsKLSAgICAgICAgYm9vbCBt
X3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zIDogMTsKKyAgICBib29sIG1fc2hvdWxkRGlz
cGxheVN1YnRpdGxlcyA6IDE7CisgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlDYXB0aW9ucyA6IDE7
CisgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zIDogMTsKICNlbmRpZgot
ICAgICAgICBib29sIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkIDogMTsKKyAgICBib29s
IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkIDogMTsKIAotICAgICAgICBib29sIG1fbm90
aWZpY2F0aW9uc0VuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1fbmVlZHNJc0xvYWRpbmdJbkFQ
SVNlbnNlUXVpcmsgOiAxOworICAgIGJvb2wgbV9ub3RpZmljYXRpb25zRW5hYmxlZCA6IDE7Cisg
ICAgYm9vbCBtX25lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrIDogMTsKIAogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCi0gICAgICAgIGJvb2wgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCA6IDE7CisgICAgYm9vbCBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkIDogMTsKICNlbmRp
ZgotICAgICAgICBib29sIG1fc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gOiAxOwotICAg
ICAgICBib29sIG1fd2FudHNCYWxhbmNlZFNldERlZmVyc0xvYWRpbmdCZWhhdmlvciA6IDE7Ci0g
ICAgICAgIGJvb2wgbV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkIDogMTsKLSAgICAgICAg
Ym9vbCBtX2RldmljZVN1cHBvcnRzVG91Y2ggOiAxOwotICAgICAgICBib29sIG1fZGV2aWNlU3Vw
cG9ydHNNb3VzZSA6IDE7Ci0gICAgICAgIGJvb2wgbV9uZWVkc0RpZEZpbmlzaExvYWRPcmRlclF1
aXJrIDogMTsKKyAgICBib29sIG1fc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gOiAxOwor
ICAgIGJvb2wgbV93YW50c0JhbGFuY2VkU2V0RGVmZXJzTG9hZGluZ0JlaGF2aW9yIDogMTsKKyAg
ICBib29sIG1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2Rl
dmljZVN1cHBvcnRzVG91Y2ggOiAxOworICAgIGJvb2wgbV9kZXZpY2VTdXBwb3J0c01vdXNlIDog
MTsKKyAgICBib29sIG1fbmVlZHNEaWRGaW5pc2hMb2FkT3JkZXJRdWlyayA6IDE7CiAKLSAgICAg
ICAgYm9vbCBtX2ZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0IDogMTsKLSAgICAg
ICAgYm9vbCBtX3N5bmNYSFJJbkRvY3VtZW50c0VuYWJsZWQgOiAxOwotICAgICAgICBib29sIG1f
Y29va2llRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2ZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tp
bmdDb250ZXh0IDogMTsKKyAgICBib29sIG1fc3luY1hIUkluRG9jdW1lbnRzRW5hYmxlZCA6IDE7
CisgICAgYm9vbCBtX2Nvb2tpZUVuYWJsZWQgOiAxOwogCi0gICAgICAgIGJvb2wgbV93aW5kb3dG
b2N1c1Jlc3RyaWN0ZWQgOiAxOworICAgIGJvb2wgbV93aW5kb3dGb2N1c1Jlc3RyaWN0ZWQgOiAx
OwogCi0gICAgICAgIGJvb2wgbV9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQgOiAxOworICAgIGJv
b2wgbV9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQgOiAxOwogCi0gICAgICAgIGJvb2wgbV9zY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIDogMTsKKyAgICBib29sIG1fc2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA6IDE7CiAKLSAgICAgICAgYm9vbCBtX2FwcGx5UGFn
ZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yIDogMTsKKyAgICBib29sIG1fYXBwbHlQYWdlU2NhbGVG
YWN0b3JJbkNvbXBvc2l0b3IgOiAxOworICAgIGJvb2wgbV9jbGlja1RvU3RhcnRQbHVnSW5zRW5h
YmxlZCA6IDE7CiAKLSAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fc2V0SW1hZ2VMb2FkaW5nU2V0
dGluZ3NUaW1lcjsKLSAgICAgICAgdm9pZCBpbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQo
VGltZXI8U2V0dGluZ3M+Kik7CisgICAgVGltZXI8U2V0dGluZ3M+IG1fc2V0SW1hZ2VMb2FkaW5n
U2V0dGluZ3NUaW1lcjsKKyAgICB2b2lkIGltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZChU
aW1lcjxTZXR0aW5ncz4qKTsKIAotICAgICAgICBkb3VibGUgbV9pbmNyZW1lbnRhbFJlbmRlcmlu
Z1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kczsKKyAgICBkb3VibGUgbV9pbmNyZW1lbnRhbFJl
bmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kczsKIAogI2lmIFVTRShBVkZPVU5EQVRJ
T04pCi0gICAgICAgIHN0YXRpYyBib29sIGdBVkZvdW5kYXRpb25FbmFibGVkOworICAgIHN0YXRp
YyBib29sIGdBVkZvdW5kYXRpb25FbmFibGVkOwogI2VuZGlmCi0gICAgICAgIHN0YXRpYyBib29s
IGdNb2NrU2Nyb2xsYmFyc0VuYWJsZWQ7Ci0gICAgICAgIHN0YXRpYyBib29sIGdVc2VzT3Zlcmxh
eVNjcm9sbGJhcnM7CisgICAgc3RhdGljIGJvb2wgZ01vY2tTY3JvbGxiYXJzRW5hYmxlZDsKKyAg
ICBzdGF0aWMgYm9vbCBnVXNlc092ZXJsYXlTY3JvbGxiYXJzOwogCiAjaWYgVVNFKFNBRkFSSV9U
SEVNRSkKLSAgICAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFBhaW50TmF0aXZlQ29udHJvbHM7Cisg
ICAgc3RhdGljIGJvb2wgZ1Nob3VsZFBhaW50TmF0aXZlQ29udHJvbHM7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShXSU4pIHx8IChPUyhXSU5ET1dTKSAmJiBQTEFURk9STShXWCkpCi0gICAgICAgIHN0
YXRpYyBib29sIGdTaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVyczsKKyAgICBzdGF0aWMgYm9v
bCBnU2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnM7CiAjZW5kaWYKICNpZiBVU0UoSlNDKQot
ICAgICAgICBzdGF0aWMgYm9vbCBnU2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVT
ZXR0ZXJzOworICAgIHN0YXRpYyBib29sIGdTaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJp
YnV0ZVNldHRlcnM7CiAjZW5kaWYKLSAgICB9OworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VL
ZXlzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaAppbmRleCBjYjc5OGIzYzM4NTg0NWMxM2MxODhiNzhjNWVlODY1M2FlOGY0MTZk
Li5kMjYxMDFiNTI0ZjNmNmM2OGRiZDg2ZWQ2ZTIxZjRjY2FkODhlMjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAg
LTEyNyw2ICsxMjcsNyBAQAogI2RlZmluZSBXZWJLaXREaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWRL
ZXkgQCJXZWJLaXREaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFNjcmVl
bkZvbnRTdWJzdGl0dXRpb25FbmFibGVkS2V5IEAiV2ViS2l0U2NyZWVuRm9udFN1YnN0aXR1dGlv
bkVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSBAIldlYktp
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeSIKKyNkZWZpbmUgV2ViS2l0Q2xpY2tUb1N0YXJ0UGx1Z0lu
c0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0Q2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQi
CiAKIC8vIFRoZXNlIGFyZSBwcml2YXRlIGJvdGggYmVjYXVzZSBjYWxsZXJzIHNob3VsZCBiZSB1
c2luZyB0aGUgY292ZXIgbWV0aG9kcyBhbmQgYmVjYXVzZSB0aGUKIC8vIGNvdmVyIG1ldGhvZHMg
dGhlbXNlbHZlcyBhcmUgcHJpdmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCmluZGV4IDdjNDQ4MjRmNTI1NGNmMjkxMjVkM2EzMjVjNTI2MjBmNmZiYmEx
M2YuLmI3YjQxZGI5NDkyZTA4YzE1MmYyOGE4NWYwMjAzYTQyMjg3ZjRiNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtNDA2LDYgKzQwNiw3IEBA
IHB1YmxpYzoKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkS2V5LAogICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpXZWJBbGxvd0FsbFN0b3JhZ2VdLCBXZWJLaXRTdG9yYWdlQmxvY2tp
bmdQb2xpY3lLZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2Vi
S2l0Q2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogCiAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoTG9uZ0xvbmc6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVv
dGEoKV0sIFdlYktpdEFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3RhLAogICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aExvbmdMb25nOkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCld
LCBXZWJLaXRBcHBsaWNhdGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhLApAQCAtMTc2Niw2ICsx
NzY3LDE2IEBAIHN0YXRpYyBOU1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJRCA9IG5pbDsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8V2ViU3RvcmFnZUJsb2NraW5nUG9saWN5Pihbc2VsZiBfaW50ZWdl
clZhbHVlRm9yS2V5OldlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleV0pOwogfQogCistIChC
T09MKWNsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29s
VmFsdWVGb3JLZXk6V2ViS2l0Q2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWRQcmVmZXJlbmNlS2V5
XTsKK30KKworLSAodm9pZClzZXRDbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZDooQk9PTCllbmFi
bGVkCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRDbGlj
a1RvU3RhcnRQbHVnSW5zRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCiBAZW5kCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViSW50ZXJuYWwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCAzOTAxNzE3MmYw
M2FmYzAxM2RkZDQ3OGEyYmM3ZDllNmEzZTMyYjIzLi4xZWNjZmQ0YTE5ZWEwZTc0MDg2OTQzNjkz
YWRiODNkMWM2N2M0Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTMxNyw0ICszMTcsNyBAQCBleHRlcm4gTlNTdHJpbmcg
KldlYlByZWZlcmVuY2VzQ2FjaGVNb2RlbENoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbjsKIC0g
KHZvaWQpc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5OihXZWJTdG9yYWdlQmxvY2tpbmdQb2xpY3kp
c3RvcmFnZUJsb2NraW5nUG9saWN5OwogLSAoV2ViU3RvcmFnZUJsb2NraW5nUG9saWN5KXN0b3Jh
Z2VCbG9ja2luZ1BvbGljeTsKIAorLSAoQk9PTCljbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZDsK
Ky0gKHZvaWQpc2V0Q2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKKwog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDQ1N2Q0MDYyYTRiYzA3
YmJiODI1NTg0OGZlODVmZDg4Y2I3ZGY4ZmEuLmI0MWNhMDQ2OGMzNDhlMGVkY2NkZWMyNjNiYzA3
NzIyZDgzNzRlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE1ODAs
NiArMTU4MCw4IEBAIHN0YXRpYyBib29sIG5lZWRzU2VsZlJldGFpbldoaWxlTG9hZGluZ1F1aXJr
KCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgc2V0dGluZ3MtPnNldENsaWNrVG9TdGFy
dFBsdWdJbnNFbmFibGVkKFtwcmVmZXJlbmNlcyBjbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZF0p
OworCiAgICAgLy8gV2UgaGF2ZSBlbmFibGVkIHRoaXMgc2V0dGluZyBpbiBXZWJLaXQyIGZvciB0
aGUgc2FrZSBvZiBzb21lIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIHdvcmsuCiAgICAgLy8gVG8gYXZv
aWQgcG9zc2libGUgcmVuZGVyaW5nIGRpZmZlcmVuY2VzLCB3ZSBzaG91bGQgZW5hYmxlIGl0IGZv
ciBXZWJLaXQxIHRvby4KICAgICBzZXR0aW5ncy0+c2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFj
a2luZ0NvbnRleHQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXNTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
U3RvcmUuaAppbmRleCBhY2I0YWJmMzVkNDNkMWJhMTY5M2UxYWViZDY5ZGEzNTgyNjZlOGIzLi44
YzA4NDkwYTU2NDk5ZmJiMGUzNmY0NDc5MTdmYTE2NmFmZmM3MmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKQEAgLTEzNiw2ICsxMzYsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICBtYWNybyhTY3JvbGxBbmltYXRvckVuYWJsZWQsIHNjcm9sbEFu
aW1hdG9yRW5hYmxlZCwgQm9vbCwgYm9vbCwgREVGQVVMVF9XRUJLSVRfU0NST0xMX0FOSU1BVE9S
X0VOQUJMRUQpIFwKICAgICBtYWNybyhTY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZCwgc2Ny
ZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIERFRkFVTFRfU0NSRUVOX0ZP
TlRfU1VCU1RJVFVUSU9OX0VOQUJMRUQpIFwKICAgICBtYWNybyhDb29raWVFbmFibGVkLCBjb29r
aWVFbmFibGVkLCBCb29sLCBib29sLCB0cnVlKSBcCisgICAgbWFjcm8oQ2xpY2tUb1N0YXJ0UGx1
Z0luc0VuYWJsZWQsIGNsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkLCBCb29sLCBib29sLCBmYWxz
ZSkgXAogICAgIFwKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfRE9VQkxFX1BSRUZFUkVOQ0Uo
bWFjcm8pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVu
Y2VzLmNwcAppbmRleCBhM2MwMjhjNGEwMTAyZWQ5ODA4NGMzOTJiNjI5Y2EzNWMzZjRlNzJiLi41
ZGQ1ODhiN2YyY2Q3MjQyMGI2OWMwYmZlMDZiNmZmNDlhMGUyMmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC05MjMsMyArOTIz
LDEzIEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlCiB7CiAgICAgcmV0dXJuIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKTsKIH0KKwor
dm9pZCBXS1ByZWZlcmVuY2VzU2V0Q2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQoreworICAgIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnNldENsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkKGVuYWJsZWQpOworfQor
Citib29sIFdLUHJlZmVyZW5jZXNHZXRDbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZChXS1ByZWZl
cmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQoreworICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5j
ZXNSZWYpLT5jbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmgKaW5kZXggYzBmZGU2N2ZkOTFkYmNj
ZmQ5YzI4YmQyNTNlMmU3NTY2YTA0YTQ1Zi4uYTdiMjMxMmU0Mjg3YmU4ZjNmYzUyNGI3YzBiMTY1
YTE2MDdlNmJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5oCkBAIC0yMTYsNiArMjE2LDEwIEBAIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5j
ZXNHZXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbihXS1ByZWZlcmVuY2VzUmVmIHByCiBX
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFdLUHJl
ZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGlj
eSk7CiBXS19FWFBPUlQgV0tTdG9yYWdlQmxvY2tpbmdQb2xpY3kgV0tQcmVmZXJlbmNlc0dldFN0
b3JhZ2VCbG9ja2luZ1BvbGljeShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKIAor
Ly8gRGVmYXVsdHMgdG8gZmFsc2UKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRDbGlj
a1RvU3RhcnRQbHVnSW5zRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIGVuYWJsZWQpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldENsaWNrVG9TdGFy
dFBsdWdJbnNFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYpOworCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDVjNGY2ZThlZDdjNTNhZjdmZTcxNjEyNDMxYjcxYzFkNjM5MTYyNGUuLjJkZDg1
ODRiMDIyYTMwNWZjNDRhYWM5OWQ5YmVkNmZkMWE2ZDcyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIxNTEsNiArMjE1MSw4IEBAIHZv
aWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUpCiAKICAgICBzZXR0aW5ncy0+c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5h
YmxlZChtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQpOwogCisgICAgc2V0dGlu
Z3MtPnNldENsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6Y2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWRLZXkoKSkpOwor
CiAgICAgcGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShzdG9yZSk7CiAKICAgICBpZiAobV9k
cmF3aW5nQXJlYSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167175</attachid>
            <date>2012-10-04 14:31:17 -0700</date>
            <delta_ts>2012-10-04 21:14:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98319-20121004143026.patch</filename>
            <type>text/plain</type>
            <size>11531</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E0ZWJhNzE1NmNlZjA3
ZWY5ZWM1NGFiN2Y0MTIyYjZmMDdkYWJkNS4uMDU2YmZhOTNkZjNmYWFkYTk5NGE3ZjgyYThmMDgx
ZjMwOGQ0NjYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEwLTA0ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIGVuYWJs
ZSBwbHVnaW4gYWN0aXZhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTgzMTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2NDgwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBi
aXQgZm9yIHRoaXMgcHJlZmVyZW5jZS4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKTogUHJlZmVyZW5jZSBpcyBmYWxz
ZSBieSBkZWZhdWx0LgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDogQWRkZWQgbV9jbGlja1Rv
U3RhcnRQbHVnSW5zRW5hYmxlZCBiaXQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0
Q2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQpOiBTZXQgdGhlIGJpdC4KKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpjbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZCk6IFJldHVybiB0aGUgYml0
LgorCiAyMDEyLTEwLTAzICBEb3VnbGFzIFN0b2Nrd2VsbCAgPGRzdG9ja3dlbGxAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIENocm9taXVtIG5lZWRzIHN1cHBvcnQgZm9yIGJvcmRlciByYWRpdXMg
Y2xpcHBpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBiYzRkNmYwZWM3NjVjOWRkZWVmMTAyOWVhYzAz
YWRhNWFjMmU4MWUyLi4wNGE1NDFiYmY0ODg0N2VhZjZiMWM0ZjFkODg4ZmY0NjY4MmEzZWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xICsxLDIwIEBACisyMDEyLTEwLTA0ICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIGVuYWJsZSBwbHVnaW4g
YWN0aXZhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTgzMTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2NDgwPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBjbGlja1RvU3RhcnRQ
bHVnaW5FbmFibGVkIHByZWZlcmVuY2UgdG8gV2ViS2l0IGNsaWVudHMuCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOiBBZGQgV2ViS2l0Q2xpY2tUb1N0YXJ0
UGx1Z0luc0VuYWJsZWQga2V5LgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06
CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKTogU2V0dGluZyBpcyB0dXJu
ZWQgb2ZmIGJ5IGRlZmF1bHQuCisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIGNsaWNrVG9TdGFy
dFBsdWdJbnNFbmFibGVkXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldENsaWNrVG9T
dGFydFBsdWdJbnNFbmFibGVkOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQ
cml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJW
aWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6IFVwZGF0ZSBzZXR0aW5ncyBiYXNlZCBvbiBwcmVm
ZXJlbmNlLgorCiA9PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAxMi0xMC0wMiA9PQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDg1YjMzZDQ3ZWY2NjIyY2ZmZjFhODgwNmJlZTUxYWI0ZGMwOWQ0Y2MuLmFiMDlh
MGMzMWE0NTNmNWQ5NzU5NzU1ZGU1OWJhN2RhMDA3MTY5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMiBAQAorMjAxMi0xMC0wNCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIGEgc2V0dGluZyB0byBlbmFibGUgcGx1Z2luIGFjdGl2YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzE5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMjQyNjQ4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFeHBvc2UgY2xpY2tUb1N0YXJ0UGx1Z2luRW5hYmxlZCBwcmVmZXJlbmNl
IHRvIFdlYktpdCBjbGllbnRzLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3Rv
cmUuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldENsaWNrVG9TdGFydFBsdWdJ
bnNFbmFibGVkKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRDbGlja1RvU3RhcnRQbHVnSW5z
RW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogVXBkYXRlIHByZWZlcmVuY2UgYmFzZWQgb24g
c3RvcmUuCisKIDIwMTItMTAtMDMgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIEZpeCB1bnVzZWQgcGFyYW1ldGVyIGNvbXBpbGUgd2FybmluZ3MuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDc4Mjk1OGYzZTVkZmMwZDU2NTFhZmU3Zjk0MWJhODU1
MmIzNzE5MjUuLmExZjBiNDA1NDljMmJhNTY2YTE5MDQ4MGRlNDI2M2ViNDYyNDUyZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0yOTQsNiArMjk0LDcgQEAgU2V0dGluZ3M6OlNldHRp
bmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2RpYWdub3N0aWNMb2dnaW5nRW5hYmxlZChmYWxzZSkK
ICAgICAsIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKICAgICAs
IG1fYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoZmFsc2UpCisgICAgLCBtX2NsaWNr
VG9TdGFydFBsdWdJbnNFbmFibGVkKGZhbHNlKQogICAgICwgbV9zZXRJbWFnZUxvYWRpbmdTZXR0
aW5nc1RpbWVyKHRoaXMsICZTZXR0aW5nczo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVk
KQogICAgICwgbV9pbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25k
cyhkZWZhdWx0SW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHMp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggYmQ5MTgyNzg0NWU4YzJkOWU2MTc2NjZlMjlh
MDQ2NDQ0NDdjZWQ3Mi4uMDFkMTdlMmFkNGNjN2M3N2Y4NzYzMmFlMTYxY2Q0MzZlZTYyOTQ0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtNjM2LDYgKzYzNiw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBzZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcihi
b29sIGVuYWJsZWQpIHsgbV9hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciA9IGVuYWJs
ZWQ7IH0KICAgICAgICAgYm9vbCBhcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3I7IH0KIAorICAg
ICAgICB2b2lkIHNldENsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBt
X2NsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkID0gZW5hYmxlZDsgfQorICAgICAgICBib29sIGNs
aWNrVG9TdGFydFBsdWdJbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jbGlja1RvU3RhcnRQ
bHVnSW5zRW5hYmxlZDsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgU2V0dGlu
Z3MoUGFnZSopOwogCkBAIC04MjIsNiArODI1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBib29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA6IDE7CiAKICAg
ICAgICAgYm9vbCBtX2FwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yIDogMTsKKyAgICAg
ICAgYm9vbCBtX2NsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkIDogMTsKIAogICAgICAgICBUaW1l
cjxTZXR0aW5ncz4gbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyOwogICAgICAgICB2b2lk
IGltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5o
CmluZGV4IGNiNzk4YjNjMzg1ODQ1YzEzYzE4OGI3OGM1ZWU4NjUzYWU4ZjQxNmQuLmQyNjEwMWI1
MjRmM2Y2YzY4ZGJkODZlZDZlMjFmNGNjYWQ4OGUyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApAQCAtMTI3LDYgKzEy
Nyw3IEBACiAjZGVmaW5lIFdlYktpdERpYWdub3N0aWNMb2dnaW5nRW5hYmxlZEtleSBAIldlYktp
dERpYWdub3N0aWNMb2dnaW5nRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0U2NyZWVuRm9udFN1YnN0
aXR1dGlvbkVuYWJsZWRLZXkgQCJXZWJLaXRTY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZCIK
ICNkZWZpbmUgV2ViS2l0U3RvcmFnZUJsb2NraW5nUG9saWN5S2V5IEAiV2ViS2l0U3RvcmFnZUJs
b2NraW5nUG9saWN5IgorI2RlZmluZSBXZWJLaXRDbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZFBy
ZWZlcmVuY2VLZXkgQCJXZWJLaXRDbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZCIKIAogLy8gVGhl
c2UgYXJlIHByaXZhdGUgYm90aCBiZWNhdXNlIGNhbGxlcnMgc2hvdWxkIGJlIHVzaW5nIHRoZSBj
b3ZlciBtZXRob2RzIGFuZCBiZWNhdXNlIHRoZQogLy8gY292ZXIgbWV0aG9kcyB0aGVtc2VsdmVz
IGFyZSBwcml2YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0KaW5kZXggN2M0NDgyNGY1MjU0Y2YyOTEyNWQzYTMyNWM1MjYyMGY2ZmJiYTEzZi4uYjdiNDFk
Yjk0OTJlMDhjMTUyZjI4YTg1ZjAyMDNhNDIyODdmNGI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC00MDYsNiArNDA2LDcgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2Ny
ZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWRLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoSW50OldlYkFsbG93QWxsU3RvcmFnZV0sIFdlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtl
eSwKKyAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRDbGlja1Rv
U3RhcnRQbHVnSW5zRW5hYmxlZFByZWZlcmVuY2VLZXksCiAKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhMb25nTG9uZzpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpXSwgV2Vi
S2l0QXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEsCiAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoTG9uZ0xvbmc6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktpdEFw
cGxpY2F0aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVvdGEsCkBAIC0xNzY2LDYgKzE3NjcsMTYgQEAg
c3RhdGljIE5TU3RyaW5nICpjbGFzc0lCQ3JlYXRvcklEID0gbmlsOwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxXZWJTdG9yYWdlQmxvY2tpbmdQb2xpY3k+KFtzZWxmIF9pbnRlZ2VyVmFsdWVGb3JL
ZXk6V2ViS2l0U3RvcmFnZUJsb2NraW5nUG9saWN5S2V5XSk7CiB9CiAKKy0gKEJPT0wpY2xpY2tU
b1N0YXJ0UGx1Z0luc0VuYWJsZWQKK3sKKyAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktl
eTpXZWJLaXRDbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCist
ICh2b2lkKXNldENsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAg
ICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdENsaWNrVG9TdGFydFBs
dWdJbnNFbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9u
IFdlYlByZWZlcmVuY2VzIChXZWJJbnRlcm5hbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDM5MDE3MTcyZjAzYWZjMDEzZGRk
NDc4YTJiYzdkOWU2YTNlMzJiMjMuLjFlY2NmZDRhMTllYTBlNzQwODY5NDM2OTNhZGI4M2QxYzY3
YzRjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaApAQCAtMzE3LDQgKzMxNyw3IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUHJlZmVy
ZW5jZXNDYWNoZU1vZGVsQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uOwogLSAodm9pZClzZXRT
dG9yYWdlQmxvY2tpbmdQb2xpY3k6KFdlYlN0b3JhZ2VCbG9ja2luZ1BvbGljeSlzdG9yYWdlQmxv
Y2tpbmdQb2xpY3k7CiAtIChXZWJTdG9yYWdlQmxvY2tpbmdQb2xpY3kpc3RvcmFnZUJsb2NraW5n
UG9saWN5OwogCistIChCT09MKWNsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkOworLSAodm9pZClz
ZXRDbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZDooQk9PTCllbmFibGVkOworCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNDU3ZDQwNjJhNGJjMDdiYmI4MjU1ODQ4
ZmU4NWZkODhjYjdkZjhmYS4uYjQxY2EwNDY4YzM0OGUwZWRjY2RlYzI2M2JjMDc3MjJkODM3NGVh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTU4MCw2ICsxNTgwLDgg
QEAgc3RhdGljIGJvb2wgbmVlZHNTZWxmUmV0YWluV2hpbGVMb2FkaW5nUXVpcmsoKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBzZXR0aW5ncy0+c2V0Q2xpY2tUb1N0YXJ0UGx1Z0luc0Vu
YWJsZWQoW3ByZWZlcmVuY2VzIGNsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkXSk7CisKICAgICAv
LyBXZSBoYXZlIGVuYWJsZWQgdGhpcyBzZXR0aW5nIGluIFdlYktpdDIgZm9yIHRoZSBzYWtlIG9m
IHNvbWUgU2Nyb2xsaW5nQ29vcmRpbmF0b3Igd29yay4KICAgICAvLyBUbyBhdm9pZCBwb3NzaWJs
ZSByZW5kZXJpbmcgZGlmZmVyZW5jZXMsIHdlIHNob3VsZCBlbmFibGUgaXQgZm9yIFdlYktpdDEg
dG9vLgogICAgIHNldHRpbmdzLT5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4
dCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNl
c1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmlu
ZGV4IGFjYjRhYmYzNWQ0M2QxYmExNjkzZTFhZWJkNjlkYTM1ODI2NmU4YjMuLjhjMDg0OTBhNTY0
OTlmYmIwZTM2ZjQ0NzkxN2ZhMTY2YWZmYzcyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAtMTM2LDYgKzEzNiw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogICAgIG1hY3JvKFNjcm9sbEFuaW1hdG9yRW5hYmxlZCwgc2Nyb2xsQW5pbWF0b3JFbmFi
bGVkLCBCb29sLCBib29sLCBERUZBVUxUX1dFQktJVF9TQ1JPTExfQU5JTUFUT1JfRU5BQkxFRCkg
XAogICAgIG1hY3JvKFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkLCBzY3JlZW5Gb250U3Vi
c3RpdHV0aW9uRW5hYmxlZCwgQm9vbCwgYm9vbCwgREVGQVVMVF9TQ1JFRU5fRk9OVF9TVUJTVElU
VVRJT05fRU5BQkxFRCkgXAogICAgIG1hY3JvKENvb2tpZUVuYWJsZWQsIGNvb2tpZUVuYWJsZWQs
IEJvb2wsIGJvb2wsIHRydWUpIFwKKyAgICBtYWNybyhDbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxl
ZCwgY2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAg
XAogCiAjZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9ET1VCTEVfUFJFRkVSRU5DRShtYWNybykgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmlu
ZGV4IGEzYzAyOGM0YTAxMDJlZDk4MDg0YzM5MmI2MjljYTM1YzNmNGU3MmIuLjVkZDU4OGI3ZjJj
ZDcyNDIwYjY5YzBiZmUwNmI2ZmY0OWEwZTIyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTkyMywzICs5MjMsMTMgQEAgYm9v
bCBXS1ByZWZlcmVuY2VzR2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmUKIHsKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpOwogfQorCit2b2lkIFdLUHJl
ZmVyZW5jZXNTZXRDbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+c2V0Q2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK2Jvb2wgV0tQ
cmVmZXJlbmNlc0dldENsaWNrVG9TdGFydFBsdWdJbnNFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmNs
aWNrVG9TdGFydFBsdWdJbnNFbmFibGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuaAppbmRleCBjMGZkZTY3ZmQ5MWRiY2NmZDljMjhiZDI1
M2UyZTc1NjZhMDRhNDVmLi42NWZhYzhlMDZkODhkMmE1ZDcxNTY5OGIwMDgyYTY4MjAyNmU0M2Ri
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmgK
QEAgLTIxNiw2ICsyMTYsMTAgQEAgV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKFdLUHJlZmVyZW5jZXNSZWYgcHIKIFdLX0VYUE9SVCB2
b2lkIFdLUHJlZmVyZW5jZXNTZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZiwgV0tTdG9yYWdlQmxvY2tpbmdQb2xpY3kgcG9saWN5KTsKIFdLX0VY
UE9SVCBXS1N0b3JhZ2VCbG9ja2luZ1BvbGljeSBXS1ByZWZlcmVuY2VzR2V0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCisvLyBEZWZhdWx0
cyB0byBmYWxzZQorV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldENsaWNrVG9TdGFydFBs
dWdJbnNFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxl
ZCk7CitXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0Q2xpY2tUb1N0YXJ0UGx1Z0luc0Vu
YWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CisKICNpZmRlZiBfX2NwbHVz
cGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggNWM0ZjZlOGVkN2M1M2FmN2ZlNzE2MTI0MzFiNzFjMWQ2MzkxNjI0ZS4u
MmRkODU4NGIwMjJhMzA1ZmM0NGFhYzk5ZDliZWQ2ZmQxYTZkNzI4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjE1MSw2ICsyMTUxLDgg
QEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiBzdG9yZSkKIAogICAgIHNldHRpbmdzLT5zZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkKG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCk7CiAKKyAgICBz
ZXR0aW5ncy0+c2V0Q2xpY2tUb1N0YXJ0UGx1Z0luc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpjbGlja1RvU3RhcnRQbHVnSW5zRW5hYmxlZEtleSgp
KSk7CisKICAgICBwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0b3JlKTsKIAogICAgIGlm
IChtX2RyYXdpbmdBcmVhKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167241</attachid>
            <date>2012-10-04 21:14:28 -0700</date>
            <delta_ts>2012-10-05 10:28:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98319-20121004211337.patch</filename>
            <type>text/plain</type>
            <size>13748</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk2ZTRjNTAxNDYyZDg5
NmFlZDNlNDg2ZTUxNzVhOWMzZmY0NDM1MC4uNmZlNjUyNzI2MjkxMDljMThjOTJmOGE2MjEyNTZh
ZjUyNmM4NTIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEwLTA0ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIGVuYWJs
ZSBwbHVnaW4gc25hcHNob3R0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODMxOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI0MjY0ODA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3
IGJpdCBmb3IgdGhpcyBwcmVmZXJlbmNlLgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOiBQcmVmZXJlbmNlIGlzIGZh
bHNlIGJ5IGRlZmF1bHQuCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOiBBZGRlZCBtX3BsdWdJ
blNuYXBzaG90dGluZ0VuYWJsZWQgYml0LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNl
dFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQpOiBTZXQgdGhlIGJpdC4KKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpwbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKTogUmV0dXJuIHRoZSBiaXQu
CisKIDIwMTItMTAtMDQgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgTXV0YXRpb25SZWNvcmQgYXR0cmlidXRlTmFtZSBzaG91bGQgYmUgbnVsbCBmb3Igbm9uIGF0
dHJpYnV0ZSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZTYxYTU1ZGQwYjgwMWMwMjc5MTRm
MzgxMTVhM2U5ODdkZDFmMGE5Yi4uYjllYjA5MDgyMzY4MDA0MzFjNTA1OTY1MjI3MmNiMjY3MzQz
M2ZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTA0ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIGVuYWJs
ZSBwbHVnaW4gc25hcHNob3R0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODMxOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI0MjY0ODA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIHBs
dWdJblNuYXBzaG90dGluZ0VuYWJsZWQgcHJlZmVyZW5jZSB0byBXZWJLaXQgY2xpZW50cy4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6IEFkZCBXZWJLaXRQ
bHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkIGtleS4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZl
cmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBpbml0aWFsaXplXSk6IFNldHRp
bmcgaXMgdHVybmVkIG9mZiBieSBkZWZhdWx0LgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBw
bHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNl
dFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKTogVXBkYXRlIHNldHRpbmdzIGJhc2Vk
IG9uIHByZWZlcmVuY2UuCisKIDIwMTItMTAtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgRmluYWwgcGFydCBvZiAic3luYyIgdG8gImZsdXNoIiBy
ZW5hbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGRlM2VkOTI0ZWJmYWUwNmIxNDk4NzFiMWNhMmMzYzJhZTQz
MmQ5MGIuLjRlNzU5MWIyMGQzNWMxMWQ2NTc2NmEwZmI2YWQyMjc4NDU0NDFiZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0xMC0wNCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgc2V0dGluZyB0byBlbmFibGUgcGx1Z2luIHNuYXBzaG90dGlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgzMTkK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDI2NDgwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBwbHVnSW5TbmFwc2hvdHRpbmdFbmFi
bGVkIHByZWZlcmVuY2UgdG8gV2ViS2l0IGNsaWVudHMuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJlZmVyZW5jZXNTdG9yZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0UGx1
Z0luU25hcHNob3R0aW5nRW5hYmxlZCk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0UGx1Z0lu
U25hcHNob3R0aW5nRW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogVXBkYXRlIHByZWZlcmVu
Y2UgYmFzZWQgb24gc3RvcmUuCisKIDIwMTItMTAtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0gc2hvdWxkIG5vdCBpbmNsdWRlIFJlbmRlckxheWVyQ29tcG9zaXRvci5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCmluZGV4IGE5MjdlOGZhZDQ5MWVmMmYzNjkxNTE4NTFmMjVhNTM3Yjc5ZDcz
OGMuLmVhZjQ5ZGNlYzA0NDEwN2MyMTk0Mjk4YzVjMzIxNmUzNTU0ODQzMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yOTQsNiArMjk0LDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAg
ICAgLCBtX2RpYWdub3N0aWNMb2dnaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fYXBwbHlQYWdlU2NhbGVG
YWN0b3JJbkNvbXBvc2l0b3IoZmFsc2UpCisgICAgLCBtX3BsdWdJblNuYXBzaG90dGluZ0VuYWJs
ZWQoZmFsc2UpCiAgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIodGhpcywgJlNl
dHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVu
dGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRh
bFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAppbmRleCBhZmM2ZmE2YjRlNjgxODEwYTY3OGQ0YTJlYTc5YTIxNDhiZWFkODNjLi4xY2Ux
NDg4YjQyODgxNWYxNTdmODZkNWQxZDI3ZGY4NGQ5YWZiNjhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEdyYWhh
bSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
NjM2LDYgKzYzNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRBcHBs
eVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcihib29sIGVuYWJsZWQpIHsgbV9hcHBseVBhZ2VT
Y2FsZUZhY3RvckluQ29tcG9zaXRvciA9IGVuYWJsZWQ7IH0KICAgICAgICAgYm9vbCBhcHBseVBh
Z2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlQYWdlU2Nh
bGVGYWN0b3JJbkNvbXBvc2l0b3I7IH0KIAorICAgICAgICB2b2lkIHNldFBsdWdJblNuYXBzaG90
dGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fcGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCA9
IGVuYWJsZWQ7IH0KKyAgICAgICAgYm9vbCBwbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9wbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOyB9CisKICAgICBwcml2YXRl
OgogICAgICAgICBleHBsaWNpdCBTZXR0aW5ncyhQYWdlKik7CiAKQEAgLTgyMiw2ICs4MjUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9zY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkIDogMTsKIAogICAgICAgICBib29sIG1fYXBwbHlQYWdlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IgOiAxOworICAgICAgICBib29sIG1fcGx1Z0luU25hcHNob3R0aW5nRW5h
YmxlZCA6IDE7CiAKICAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fc2V0SW1hZ2VMb2FkaW5nU2V0
dGluZ3NUaW1lcjsKICAgICAgICAgdm9pZCBpbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQo
VGltZXI8U2V0dGluZ3M+Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAppbmRleCBjYjc5OGIzYzM4NTg0NWMxM2MxODhiNzhj
NWVlODY1M2FlOGY0MTZkLi43NWI0NzMzMmZmZjMzYTVkYTMzMmJmYzJhMzdkMjYzYWM2ZGE0ODAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtl
eXNQcml2YXRlLmgKQEAgLTEyNyw2ICsxMjcsNyBAQAogI2RlZmluZSBXZWJLaXREaWFnbm9zdGlj
TG9nZ2luZ0VuYWJsZWRLZXkgQCJXZWJLaXREaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQiCiAjZGVm
aW5lIFdlYktpdFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkS2V5IEAiV2ViS2l0U2NyZWVu
Rm9udFN1YnN0aXR1dGlvbkVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeUtleSBAIldlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeSIKKyNkZWZpbmUgV2ViS2l0UGx1
Z0luU25hcHNob3R0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRQbHVnSW5TbmFwc2hv
dHRpbmdFbmFibGVkIgogCiAvLyBUaGVzZSBhcmUgcHJpdmF0ZSBib3RoIGJlY2F1c2UgY2FsbGVy
cyBzaG91bGQgYmUgdXNpbmcgdGhlIGNvdmVyIG1ldGhvZHMgYW5kIGJlY2F1c2UgdGhlCiAvLyBj
b3ZlciBtZXRob2RzIHRoZW1zZWx2ZXMgYXJlIHByaXZhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCA3YzQ0ODI0ZjUyNTRjZjI5MTI1ZDNhMzI1
YzUyNjIwZjZmYmJhMTNmLi41OTlkYzU4Nzg5OGEzMzYyMmJjMWVmMDVmZDJhMWI0MmNjZjBiYjcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTQw
Niw2ICs0MDYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRTY3JlZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZEtleSwKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6V2ViQWxsb3dBbGxTdG9yYWdlXSwgV2ViS2l0
U3RvcmFnZUJsb2NraW5nUG9saWN5S2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6Tk9dLCAgIFdlYktpdFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAog
CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoTG9uZ0xvbmc6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktpdEFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3RhLAogICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aExvbmdMb25nOkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Ojpub1F1b3RhKCldLCBXZWJLaXRBcHBsaWNhdGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhLApA
QCAtMTc2Niw2ICsxNzY3LDE2IEBAIHN0YXRpYyBOU1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJRCA9
IG5pbDsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViU3RvcmFnZUJsb2NraW5nUG9saWN5Pihb
c2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleV0p
OwogfQogCistIChCT09MKXBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQKK3sKKyAgICByZXR1cm4g
W3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkUHJl
ZmVyZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZDoo
Qk9PTCllbmFibGVkCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpX
ZWJLaXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdlYlByZWZlcmVuY2VzIChXZWJJbnRlcm5hbCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDM5
MDE3MTcyZjAzYWZjMDEzZGRkNDc4YTJiYzdkOWU2YTNlMzJiMjMuLmMyODgwY2NkYTYyNjBhYzkx
YmQwNzIyNDA0M2RiMWU1NDg5MmE3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMTEgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMTEsIDIwMTIgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMxNyw0ICszMTcsNyBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlBy
ZWZlcmVuY2VzQ2FjaGVNb2RlbENoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbjsKIC0gKHZvaWQp
c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5OihXZWJTdG9yYWdlQmxvY2tpbmdQb2xpY3kpc3RvcmFn
ZUJsb2NraW5nUG9saWN5OwogLSAoV2ViU3RvcmFnZUJsb2NraW5nUG9saWN5KXN0b3JhZ2VCbG9j
a2luZ1BvbGljeTsKIAorLSAoQk9PTClwbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOworLSAodm9p
ZClzZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkOihCT09MKWVuYWJsZWQ7CisKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAzM2IyMDA4ZjAxOTNiMTZkZDM3MWNi
YTJjZDRkMmJlMDMyODdlOWNjLi43ODNmYzdlNjAwODBjZjE5MjkwNmQ0ZmZjYzllOThlNzYxMGVl
MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xNTgwLDYgKzE1ODAs
OCBAQCBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGlsZUxvYWRpbmdRdWlyaygpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIHNldHRpbmdzLT5zZXRQbHVnSW5TbmFwc2hvdHRpbmdF
bmFibGVkKFtwcmVmZXJlbmNlcyBwbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkXSk7CisKICAgICAv
LyBXZSBoYXZlIGVuYWJsZWQgdGhpcyBzZXR0aW5nIGluIFdlYktpdDIgZm9yIHRoZSBzYWtlIG9m
IHNvbWUgU2Nyb2xsaW5nQ29vcmRpbmF0b3Igd29yay4KICAgICAvLyBUbyBhdm9pZCBwb3NzaWJs
ZSByZW5kZXJpbmcgZGlmZmVyZW5jZXMsIHdlIHNob3VsZCBlbmFibGUgaXQgZm9yIFdlYktpdDEg
dG9vLgogICAgIHNldHRpbmdzLT5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4
dCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNl
c1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmlu
ZGV4IGFjYjRhYmYzNWQ0M2QxYmExNjkzZTFhZWJkNjlkYTM1ODI2NmU4YjMuLjFlM2NhNjM5YmMy
YzRkMDVmYWM5NDU1NGE1OGQwYTEzM2JmNjM0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM2LDYgKzEzNiw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogICAgIG1hY3JvKFNjcm9sbEFuaW1hdG9yRW5hYmxlZCwgc2Nyb2xsQW5p
bWF0b3JFbmFibGVkLCBCb29sLCBib29sLCBERUZBVUxUX1dFQktJVF9TQ1JPTExfQU5JTUFUT1Jf
RU5BQkxFRCkgXAogICAgIG1hY3JvKFNjcmVlbkZvbnRTdWJzdGl0dXRpb25FbmFibGVkLCBzY3Jl
ZW5Gb250U3Vic3RpdHV0aW9uRW5hYmxlZCwgQm9vbCwgYm9vbCwgREVGQVVMVF9TQ1JFRU5fRk9O
VF9TVUJTVElUVVRJT05fRU5BQkxFRCkgXAogICAgIG1hY3JvKENvb2tpZUVuYWJsZWQsIGNvb2tp
ZUVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKKyAgICBtYWNybyhQbHVnSW5TbmFwc2hvdHRp
bmdFbmFibGVkLCBwbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkg
XAogICAgIFwKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfRE9VQkxFX1BSRUZFUkVOQ0UobWFj
cm8pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAppbmRleCBhM2MwMjhjNGEwMTAyZWQ5ODA4NGMzOTJiNjI5Y2EzNWMzZjRlNzJiLi5lY2Nl
MjA1MzU3MmZhMzdiOGI0MGEyMTk3ZWQ3YmY5ODFmOWI3NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MjMsMyArOTIzLDEzIEBA
IGJvb2wgV0tQcmVmZXJlbmNlc0dldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQo
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlCiB7CiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKTsKIH0KKwordm9pZCBX
S1ByZWZlcmVuY2VzU2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2Vz
UmVmKS0+c2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZChlbmFibGVkKTsKK30KKworYm9vbCBX
S1ByZWZlcmVuY2VzR2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmKQoreworICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5w
bHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuaAppbmRleCBjMGZkZTY3ZmQ5MWRiY2NmZDljMjhiZDI1
M2UyZTc1NjZhMDRhNDVmLi5kOTFiODJkODNhODk1ZTJlODJmNjI4YWMzOTllYzM2ZmU3ZTk5MGZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIxNiw2ICsyMTYsMTAgQEAgV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKFdLUHJlZmVyZW5jZXNSZWYgcHIKIFdLX0VYUE9SVCB2b2lk
IFdLUHJlZmVyZW5jZXNTZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZiwgV0tTdG9yYWdlQmxvY2tpbmdQb2xpY3kgcG9saWN5KTsKIFdLX0VYUE9S
VCBXS1N0b3JhZ2VCbG9ja2luZ1BvbGljeSBXS1ByZWZlcmVuY2VzR2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCisvLyBEZWZhdWx0cyB0
byBmYWxzZQorV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFBsdWdJblNuYXBzaG90dGlu
Z0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKTsK
K1dLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVk
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOworCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDVjNGY2ZThlZDdjNTNhZjdmZTcxNjEyNDMxYjcxYzFkNjM5MTYyNGUuLjQ3ODIw
YzVlZGIyNjExNTM5NjFhMTk1ZGVmZmYwMDIxNzE3YWMxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yMTUxLDYgKzIxNTEsOCBAQCB2
b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlKQogCiAgICAgc2V0dGluZ3MtPnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQobV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKTsKIAorICAgIHNldHRp
bmdzLT5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6cGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZEtleSgpKSk7CisK
ICAgICBwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0b3JlKTsKIAogICAgIGlmIChtX2Ry
YXdpbmdBcmVhKQo=
</data>
<flag name="review"
          id="179857"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>