<?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>30466</bug_id>
          
          <creation_ts>2009-10-16 15:34:54 -0700</creation_ts>
          <short_desc>Cleanup SVGElement code, preparing for animVal support</short_desc>
          <delta_ts>2009-10-17 15:53:31 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>155281</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-10-16 15:34:54 -0700</bug_when>
    <thetext>SVGElement should be cleaned up, it stores unrelated SVG &lt;-&gt; XML synchronization support functionality, that can be broken out in a new class &apos;SynchronizablePropertyController&apos;. This is a preparation for upcoming animVal patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155296</commentid>
    <comment_count>1</comment_count>
      <attachid>41337</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-10-16 16:08:10 -0700</bug_when>
    <thetext>Created attachment 41337
Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155298</commentid>
    <comment_count>2</comment_count>
      <attachid>41338</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-10-16 16:16:25 -0700</bug_when>
    <thetext>Created attachment 41338
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155428</commentid>
    <comment_count>3</comment_count>
      <attachid>41338</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-10-17 15:53:23 -0700</bug_when>
    <thetext>Comment on attachment 41338
Updated patch

Clearing flags on attachment: 41338

Committed r49745: &lt;http://trac.webkit.org/changeset/49745&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155429</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-10-17 15:53:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41337</attachid>
            <date>2009-10-16 16:08:10 -0700</date>
            <delta_ts>2009-10-16 16:11:54 -0700</delta_ts>
            <desc>Initial patch</desc>
            <filename>bug-30466-20091017010801.patch</filename>
            <type>text/plain</type>
            <size>40544</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">PyAgICAgICBmb28uc3ZnCj8gICAgICAgdGVzdC5zdmcKPyAgICAgICBMYXlvdXRUZXN0cy9hbmlt
VmFsLWJhc2VWYWwtc3VwcG9ydC5zdmcKPyAgICAgICBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YW5pbVZhbC1iYXNlVmFsLXN1cHBvcnQtZXhwZWN0ZWQudHh0Cj8gICAgICAgV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRkaXJzLnBtLm9yaWcKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0Jhc2UueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvQmFzZS54Y2NvbmZpZwkocmV2aXNpb24gNDk2MDQpCisrKyBKYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIEdDQ19HRU5FUkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IFlFUzsKIEdDQ19JTkxJTkVT
X0FSRV9QUklWQVRFX0VYVEVSTiA9IFlFUzsKIEdDQ19NT0RFTF9UVU5JTkcgPSBHNTsKIEdDQ19P
QkpDX0NBTExfQ1hYX0NEVE9SUyA9IFlFUzsKLUdDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIg
PSBZRVM7CitHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gTk87CiBHQ0NfUFJFUFJPQ0VT
U09SX0RFRklOSVRJT05TID0gJChERUJVR19ERUZJTkVTKSBIQVZFX0RUUkFDRT0kKEhBVkVfRFRS
QUNFKSBXRUJLSVRfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9V0VCS0lUX1ZFUlNJT05fTEFURVNUICQo
R0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyk7CiBHQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVT
OwogR0NDX1RIUkVBRFNBRkVfU1RBVElDUyA9IE5POwpJbmRleDogSmF2YVNjcmlwdEdsdWUvQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9D
b25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCShyZXZpc2lvbiA0OTYwNCkKKysrIEphdmFTY3Jp
cHRHbHVlL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAgR0NDX0ZBU1RfT0JKQ19ESVNQQVRDSCA9IFlFUzsKIEdDQ19HRU5FUkFURV9E
RUJVR0dJTkdfU1lNQk9MUyA9IFlFUzsKIEdDQ19JTkxJTkVTX0FSRV9QUklWQVRFX0VYVEVSTiA9
IFlFUzsKIEdDQ19NT0RFTF9UVU5JTkcgPSBHNTsKLUdDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFE
RVIgPSBZRVM7CitHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gTk87CiBHQ0NfU1RSSUNU
X0FMSUFTSU5HID0gWUVTOwogR0NDX1RIUkVBRFNBRkVfU1RBVElDUyA9IE5POwogR0NDX1RSRUFU
X1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA0OTcwNSkKKysrIFdlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMDktMTAtMTYgIE5p
a29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW51cCBTVkdFbGVtZW50IGNvZGUs
IHByZXBhcmluZyBmb3IgYW5pbVZhbCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDQ2NgorCisgICAgICAgIEFkZCBuZXcgU3luY2hyb25p
emFibGVQcm9wZXJ0eUNvbnRyb2xsZXIgYW5kIG1vdmUgdGhlIGNvZGUgZm9yIFNWRyBwcm9wZXJ0
eSA8LT4gWE1MIGF0dHJpYnV0ZSBzeW5jaHJvbml6YXRpb24KKyAgICAgICAgZnJvbSBTVkdFbGVt
ZW50LiBUaGlzIGlzIGEgZnVydGhlciBwcmVwYXJhdGlvbiBmb3IgYW5pbVZhbCBzdXBwb3J0LCB3
aGVyZSBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlciB3aWxsCisgICAgICAgIGJlIHVz
ZWQgdG8gY29udHJvbCB0aGUgc3RhcnQvZW5kIHN0YXRlIG9mIGFuIGFuaW1hdGVkIHByb3BlcnR5
LgorCisgICAgICAgIFdlJ3JlIGN1cnJlbnRseSB0cmFja2luZyBhbmltYXRlZCBwcm9wZXJ0aWVz
IHRoYXQgbmVlZCBzeW5jaHJvbml6YXRpb24sIGdlbmVyYWxpemUgdGhpcyBjb25jZXB0IGFuZCB1
c2UKKyAgICAgICAgaXQgdG8gdHJhY2sgdGhlaXIgY3JlYXRpb24gKGJvdW5kIHRvIGNlcnRhaW4g
U1ZHKkVsZW1lbnQgY2xhc3NlcykgYXMgd2VsbCBhcyBhIGZsYWcgZGV0ZXJtaW5nIHRoZSBuZWVk
CisgICAgICAgIG9mIHN5bmNocm9uaXphdGlvbiAobm8gU1ZHIERPTSBvYmplY3Qgd3JhcHBlcnMs
IG5vIHN5bmNocm9uaXphdGlvbiBuZWVkZWQpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5j
dGlvbmFsaXR5LCB0aHVzIG5vIHRlc3RzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFk
ZCAnU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuY3BwL2gnIHRvIGJ1aWxkCisgICAg
ICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8u
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICog
c3ZnL1NWR0FsbEluT25lLmNwcDogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUHJv
cGVydHkuaDogQWRkIHJlZ2lzdGVyUHJvcGVydHkoKSBmdW5jdGlvbiAKKyAgICAgICAgKFdlYkNv
cmU6Ojo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eSk6IENhbGwgcmVnaXN0ZXJQcm9wZXJ0eSgpIGZ1bmN0
aW9uICAKKyAgICAgICAgKFdlYkNvcmU6Ojo6cmVnaXN0ZXJQcm9wZXJ0eSk6IEFkZCBuZXcgcmVn
aXN0ZXJQcm9wZXJ0eSgpIGZ1bmN0aW9uLCBhbm5vdW5jaW5nIG5ldyBwcm9wZXJ0aWVzIHRvIFN5
bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRl
ZFRlbXBsYXRlLmg6IFVzZSBwcm9wZXJ0eUNvbnRyb2xsZXIoKSBtZXRob2QsIHRvIGFjY2VzcyB0
aGUgbmV3IGZ1bmN0aW9ucyBtb3ZlZCBmcm9tIFNWR0VsZW1lbnQuCisgICAgICAgIChXZWJDb3Jl
Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDog
QWRhcHQgdG8gY29kZSBtb3ZpbmcgdG8gU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIu
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojp1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0
ZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDogTW92ZSBoYW5kbGluZyBTVkcgcHJvcGVy
dHkgc3luY2hyb25pemF0aW9uIHRvIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cHJvcGVydHlDb250cm9sbGVyKTogRXhwb3Nl
IHJlZmVyZW5jZSB0byBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlciBvYmplY3QuCisg
ICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmNwcDogUmVvcmRlciBpbml0aWFsaXphdGlvbiBvcmRl
ciBvZiBjb250ZXh0RWxlbWVudCwgbGVhZGluZyB0byBwb3NzaWJsZSBjcmFzaGVzLgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OlNWR1ZpZXdTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1ZpZXdTcGVjOjp2aWV3VGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuaDog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6Y29udGV4dEVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXI6OlN5
bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNo
cm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyOjpyZWdpc3RlclByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyOjpzZXRQcm9wZXJ0eU5l
ZWRzU3luY2hyb25pemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9uaXphYmxlUHJv
cGVydHlDb250cm9sbGVyOjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyOjpzeW5jaHJvbml6ZUFsbFByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXI6
OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9uaXphYmxlUHJvcGVy
dHlDb250cm9sbGVyOjpzdG9wQW5pbWF0aW9uKToKKyAgICAgICAgKiBzdmcvU3luY2hyb25pemFi
bGVQcm9wZXJ0eUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJv
bml6YWJsZVByb3BlcnR5OjpTeW5jaHJvbml6YWJsZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlN5bmNocm9uaXphYmxlUHJvcGVydHk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN5bmNocm9uaXphYmxlUHJvcGVydHk6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6U3luY2hyb25pemFibGVQcm9wZXJ0eUhhc2g6Omhhc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6U3luY2hyb25pemFibGVQcm9wZXJ0eUhhc2g6OmVxdWFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlN5bmNocm9uaXphYmxlUHJvcGVydHlIYXNoVHJhaXRzOjpjb25zdHJ1Y3REZWxl
dGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25pemFibGVQcm9wZXJ0eUhhc2hU
cmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKwogMjAwOS0xMC0xNiAgU3RldmUgRmFsa2VuYnVyZyAg
PHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCklu
ZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0JKHJldmlzaW9uIDQ5NjA0KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29y
a2luZyBjb3B5KQpAQCAtMzE1MCw2ICszMTUwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmggXAogCVdlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5j
cHAgXAogCVdlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5oIFwKKwlXZWJDb3JlL3N2Zy9TeW5jaHJv
bml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHAgXAorCVdlYkNvcmUvc3ZnL1N5bmNocm9uaXph
YmxlUHJvcGVydHlDb250cm9sbGVyLmggXAogCVdlYkNvcmUvc3ZnL1N5bmNocm9uaXphYmxlVHlw
ZVdyYXBwZXIuaCBcCiAJV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lLmNwcCBcCiAJV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDQ5NjA0KQor
KysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM0NzUsNiArMzQ3NSw4
IEBACiAgICAgICAgICAgICAnc3ZnL1NWR1pvb21BbmRQYW4uaCcsCiAgICAgICAgICAgICAnc3Zn
L1NWR1pvb21FdmVudC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdab29tRXZlbnQuaCcsCisg
ICAgICAgICAgICAnc3ZnL1N5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmNwcCcsCisg
ICAgICAgICAgICAnc3ZnL1N5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmgnLAogICAg
ICAgICAgICAgJ3N2Zy9TeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmgnLAogICAgICAgICAgICAg
J3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJT
b2NrZXQuaCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDQ5NjA0KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwko
d29ya2luZyBjb3B5KQpAQCAtMjI1MSw2ICsyMjUxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgc3Zn
L1NWR1ZpZXdTcGVjLmggXAogICAgIHN2Zy9TVkdab29tQW5kUGFuLmggXAogICAgIHN2Zy9TVkda
b29tRXZlbnQuaCBcCisgICAgc3ZnL1N5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmgg
XAogICAgIHdtbC9XTUxBY2Nlc3NFbGVtZW50LmggXAogICAgIHdtbC9XTUxBRWxlbWVudC5oIFwK
ICAgICB3bWwvV01MQW5jaG9yRWxlbWVudC5oIFwKQEAgLTMwMDYsNiArMzAwNyw3IEBAIGNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkgewogICAgICAgICBzdmcvU1ZHVmlld0VsZW1lbnQu
Y3BwIFwKICAgICAgICAgc3ZnL1NWR1ZpZXdTcGVjLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdab29t
QW5kUGFuLmNwcCBcCisgICAgICAgIHN2Zy9TeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxl
ci5jcHAgXAogICAgICAgICBzdmcvYW5pbWF0aW9uL1NNSUxUaW1lLmNwcCBcCiAgICAgICAgIHN2
Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwIFwKICAgICAgICAgc3ZnL2FuaW1hdGlv
bi9TVkdTTUlMRWxlbWVudC5jcHAgXApJbmRleDogV2ViQ29yZS9Db25maWd1cmF0aW9ucy9CYXNl
LnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2Nv
bmZpZwkocmV2aXNpb24gNDk2MDQpCisrKyBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNj
b25maWcJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgR0NDX0ZBU1RfT0JKQ19ESVNQ
QVRDSCA9IFlFUzsKIEdDQ19HRU5FUkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IFlFUzsKIEdDQ19N
T0RFTF9UVU5JTkcgPSBHNTsKIEdDQ19PQkpDX0NBTExfQ1hYX0NEVE9SUyA9IFlFUzsKLUdDQ19Q
UkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7CitHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVB
REVSID0gTk87CiBHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CiBHQ0NfVFJFQVRfV0FSTklO
R1NfQVNfRVJST1JTID0gWUVTOwogR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElPTlMg
PSBOTzsKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24g
NDk2MDQpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDQ0Nyw2ICszMDQ0NywxMCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3Zn
XFNWR1pvb21FdmVudC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cc3ZnXFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJhbmltYXRpb24iDQog
CQkJCT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gNDk2MTcpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsMTAgQEAKIAkJMDg3MjgxNTgwRjI2QjlC
NjAwQUZDNTk2IC8qIE9wdGlvbkdyb3VwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3MjgxNTQwRjI2QjlCNjAwQUZDNTk2IC8qIE9wdGlv
bkdyb3VwRWxlbWVudC5oICovOyB9OwogCQkwODc0NEJBQTBFREI3RDg2MDA0QzlFNjMgLyogV01M
T25FdmVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg3NDRCQTkwRURCN0Q4NjAwNEM5RTYzIC8qIFdNTE9uRXZlbnRFbGVtZW50LmNw
cCAqLzsgfTsKIAkJMDg3NDRCQUUwRURCN0Q5MjAwNEM5RTYzIC8qIFdNTE9uRXZlbnRFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc0NEJB
RDBFREI3RDkyMDA0QzlFNjMgLyogV01MT25FdmVudEVsZW1lbnQuaCAqLzsgfTsKKwkJMDg3OEIx
RkQxMDg3NEUzRjAwQTU1MDk3IC8qIFNWR0FuaW1hdGVkUHJvcGVydHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NzhCMUY5MTA4NzRFM0YwMEE1NTA5
NyAvKiBTVkdBbmltYXRlZFByb3BlcnR5LmggKi87IH07CisJCTA4NzhCMUZFMTA4NzRFM0YwMEE1
NTA5NyAvKiBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc4QjFGQTEwODc0RTNGMDBBNTUw
OTcgLyogU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuY3BwICovOyB9OworCQkwODc4
QjFGRjEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NzhCMUZC
MTA4NzRFM0YwMEE1NTA5NyAvKiBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5oICov
OyB9OworCQkwODc4QjIwMDEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVUeXBlV3Jh
cHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3
OEIxRkMxMDg3NEUzRjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIuaCAqLzsg
fTsKIAkJMDg3RkZBMEYwRUZGM0VEMzAwOURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODdG
RkEwRDBFRkYzRUQzMDA5REJEODggLyogV01MSW5zZXJ0ZWRMZWdlbmRFbGVtZW50LmNwcCAqLzsg
fTsKIAkJMDg3RkZBMTAwRUZGM0VEMzAwOURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3RkZB
MEUwRUZGM0VEMzAwOURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxlbWVudC5oICovOyB9Owog
CQkwODgwN0I3NjBFRDcwOUFCMDAzRjY5NzUgLyogV01MR29FbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4ODA3QjZBMEVENzA5QUIwMDNG
Njk3NSAvKiBXTUxHb0VsZW1lbnQuY3BwICovOyB9OwpAQCAtNTI0Niw2ICs1MjUwLDEwIEBACiAJ
CTA4NzI4MTU0MEYyNkI5QjYwMEFGQzU5NiAvKiBPcHRpb25Hcm91cEVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uR3JvdXBFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NzQ0QkE5MEVEQjdEODYwMDRDOUU2MyAvKiBXTUxPbkV2
ZW50RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxP
bkV2ZW50RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NzQ0QkFE
MEVEQjdEOTIwMDRDOUU2MyAvKiBXTUxPbkV2ZW50RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXTUxPbkV2ZW50RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwODc4QjFGOTEwODc0RTNGMDBBNTUwOTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NzhCMUZBMTA4NzRFM0YwMEE1NTA5
NyAvKiBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NzhCMUZCMTA4NzRFM0YwMEE1NTA5
NyAvKiBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwODc4QjFGQzEwODc0RTNGMDBBNTUwOTcgLyogU3lu
Y2hyb25pemFibGVUeXBlV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4N0ZGQTBEMEVGRjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRlZExlZ2VuZEVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MSW5zZXJ0ZWRMZWdl
bmRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg3RkZBMEUwRUZG
M0VEMzAwOURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXTUxJbnNlcnRlZExlZ2VuZEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4MDdCNkEwRUQ3MDlBQjAwM0Y2OTc1IC8qIFdNTEdvRWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxHb0VsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM0NzYsNiArMTM0ODQsNyBA
QAogCQkJCUIyMjI3N0YyMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFBvaW50cy5oICov
LAogCQkJCUIyMjI3N0YzMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFBvaW50cy5pZGwg
Ki8sCiAJCQkJQjIyMjc3RjQwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpby5pZGwgKi8sCisJCQkJMDg3OEIxRjkxMDg3NEUzRjAwQTU1MDk3IC8qIFNWR0Fu
aW1hdGVkUHJvcGVydHkuaCAqLywKIAkJCQlCMjIyNzdGNTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZWRSZWN0LmlkbCAqLywKIAkJCQlCMjIyNzdGNjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZWRTdHJpbmcuaWRsICovLAogCQkJCUIyMjI3N0Y3MEQwMEJGMUYwMDcxQjc4MiAvKiBT
VkdBbmltYXRlZFRlbXBsYXRlLmggKi8sCkBAIC0xMzg2NCw2ICsxMzg3Myw5IEBACiAJCQkJQjJF
NEVDOTQwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5jcHAgKi8sCiAJCQkJQjJFNEVD
OTUwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5oICovLAogCQkJCUIyRTRFQzk2MEQw
MEMyMkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaWRsICovLAorCQkJCTA4NzhCMUZBMTA4NzRF
M0YwMEE1NTA5NyAvKiBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHAgKi8sCisJ
CQkJMDg3OEIxRkIxMDg3NEUzRjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250
cm9sbGVyLmggKi8sCisJCQkJMDg3OEIxRkMxMDg3NEUzRjAwQTU1MDk3IC8qIFN5bmNocm9uaXph
YmxlVHlwZVdyYXBwZXIuaCAqLywKIAkJCQlCMjhDNkEyNjBEMDBDNDQ4MDAzMzRBQTQgLyogeGxp
bmthdHRycy5pbiAqLywKIAkJCSk7CiAJCQlwYXRoID0gc3ZnOwpAQCAtMTc2NzUsNiArMTc2ODcs
NyBAQAogCQkJCUIyMjI3OTdBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk4NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZWRQYXRoRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5ODgwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0FuaW1hdGVkUG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwODc4QjFG
RDEwODc0RTNGMDBBNTUwOTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjc5OEQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkVGVtcGxhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMjI3OTkwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRl
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OTMwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTE3ODQ4LDYgKzE3
ODYxLDggQEAKIAkJCQlCMjIyN0FGMzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVmlld1NwZWMuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMjI3QUY2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdab29tQW5k
UGFuLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkU0RUM5ODBEMDBDMjJCMDA0MzI2NDMgLyogU1ZH
Wm9vbUV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwODc4QjFGRjEwODc0RTNGMDBBNTUwOTcg
LyogU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTA4NzhCMjAwMTA4NzRFM0YwMEE1NTA5NyAvKiBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0U2MkQ5QjA5ODVGNDE2MDBFMUI1RTMgLyogU3lzdGVtVGlt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkYwNTEwQTE1NEYwOTAwMEE0MjM0IC8qIFRhYmxl
TGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UzQkVDMzBEMjIyQjFEMDA3RTA2RTQgLyog
VGFnTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjAwMDksNiArMjAwMjQsNyBAQAogCQkJ
CUIyMjI3QUYyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdWaWV3U3BlYy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjIyN0FGNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBhbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMkU0RUM5NzBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA4NzhCMUZFMTA4NzRFM0YwMEE1NTA5NyAvKiBTeW5j
aHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTgy
QTE2MzA5OTk5RDZEMDBCRUVCNkQgLyogU3lzdGVtVGltZU1hYy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQ0UzQkVDMjBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjU1MEI2QTUwOTlERjAyNzAwOTBENzgxIC8qIFRleHQuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA0OTYwNCkKKysrIFdlYkNvcmUv
c3ZnL1NWR0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDMgKzE1MCw0IEBACiAj
aW5jbHVkZSAiU1ZHVmlld1NwZWMuY3BwIgogI2luY2x1ZGUgIlNWR1pvb21BbmRQYW4uY3BwIgog
I2luY2x1ZGUgIlNWR1pvb21FdmVudC5jcHAiCisjaW5jbHVkZSAiU3luY2hyb25pemFibGVQcm9w
ZXJ0eUNvbnRyb2xsZXIuY3BwIgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHkuaAkocmV2
aXNpb24gNDk2MDQpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDYgKzcxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UoKSB7IH0KICAgICAg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRBbmltYXRpb24oKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBz
dG9wQW5pbWF0aW9uKCkgPSAwOwogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25l
clR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwg
Y29uc3QgY2hhciogUHJvcGVydHlOYW1lPgpAQCAtMTI1LDYgKzEyNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLy8gVGVhciBvZmZzIG9ubHkgdXNlZCBieSBiaW5kaW5ncywgbmV2
ZXIgaW4gaW50ZXJuYWwgY29kZQogICAgICAgICBQYXNzUmVmUHRyPFRlYXJPZmY+IGFuaW1hdGVk
VGVhck9mZigpIGNvbnN0OwogCisgICAgICAgIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemUoKSBjb25zdDsKIAogICAgICAgICB2b2lkIHN0
YXJ0QW5pbWF0aW9uKCkgY29uc3Q7CkBAIC0xNDEsNiArMTQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBtX2F0dHJpYnV0ZUlkZW50aWZpZXI7
CiAKICAgICAgICAgbXV0YWJsZSBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyPFN0b3JhYmxlVHlw
ZT4gbV92YWx1ZTsKKworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgYm9vbCBtX3JlZ2lzdGVyZWQ7
CisjZW5kaWYKICAgICB9OwogCiAgICAgLy8gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYgaW1w
bGVtZW50YXRpb24KQEAgLTE4Nyw4ICsxOTQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAsIG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQogICAgICAgICAsIG1fYXR0cmli
dXRlSWRlbnRpZmllcihhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKQogICAgICAgICAsIG1fdmFs
dWUoKQorI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLCBtX3JlZ2lzdGVyZWQoZmFsc2UpCisjZW5k
aWYKICAgICB7CiAgICAgICAgIEFTU0VSVChtX293bmVyVHlwZSk7CisgICAgICAgIHJlZ2lzdGVy
UHJvcGVydHkoKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcs
IHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hh
ciogUHJvcGVydHlOYW1lPgpAQCAtMTk5LDggKzIxMCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCiAgICAgICAgICwgbV9h
dHRyaWJ1dGVJZGVudGlmaWVyKGF0dHJpYnV0ZUlkZW50aWZpZXIpCiAgICAgICAgICwgbV92YWx1
ZSgpCisjaWZuZGVmIE5ERUJVRworICAgICAgICAsIG1fcmVnaXN0ZXJlZChmYWxzZSkKKyNlbmRp
ZgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fb3duZXJUeXBlKTsKKyAgICAgICAgcmVnaXN0ZXJQ
cm9wZXJ0eSgpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywg
dHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFy
KiBQcm9wZXJ0eU5hbWU+CkBAIC0yMTIsOCArMjI3LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKICAgICAgICAgLCBtX2F0
dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSkKICAgICAgICAgLCBt
X3ZhbHVlKGFyZzEpCisjaWZuZGVmIE5ERUJVRworICAgICAgICAsIG1fcmVnaXN0ZXJlZChmYWxz
ZSkKKyNlbmRpZgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fb3duZXJUeXBlKTsKKyAgICAgICAg
cmVnaXN0ZXJQcm9wZXJ0eSgpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVy
VHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBj
b25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CkBAIC0yMjYsOCArMjQ1LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKICAgICAg
ICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlSWRlbnRpZmllcikKICAgICAgICAg
LCBtX3ZhbHVlKGFyZzEpCisjaWZuZGVmIE5ERUJVRworICAgICAgICAsIG1fcmVnaXN0ZXJlZChm
YWxzZSkKKyNlbmRpZgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fb3duZXJUeXBlKTsKKyAgICAg
ICAgcmVnaXN0ZXJQcm9wZXJ0eSgpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1l
LCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CkBAIC0yNDAsOCArMjYzLDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKICAg
ICAgICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSkK
ICAgICAgICAgLCBtX3ZhbHVlKGFyZzEsIGFyZzIpCisjaWZuZGVmIE5ERUJVRworICAgICAgICAs
IG1fcmVnaXN0ZXJlZChmYWxzZSkKKyNlbmRpZgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fb3du
ZXJUeXBlKTsKKyAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eSgpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25z
dCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CkBAIC0yNTUsOCArMjgy
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0
cmlidXRlTmFtZSkKICAgICAgICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlSWRl
bnRpZmllcikKICAgICAgICAgLCBtX3ZhbHVlKGFyZzEsIGFyZzIpCisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICAsIG1fcmVnaXN0ZXJlZChmYWxzZSkKKyNlbmRpZgogICAgIHsKICAgICAgICAgQVNT
RVJUKG1fb3duZXJUeXBlKTsKKyAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eSgpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBl
QXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CkBAIC0y
NzAsOCArMzAxLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLCBtX2F0dHJpYnV0
ZU5hbWUoYXR0cmlidXRlTmFtZSkKICAgICAgICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0
cmlidXRlTmFtZS5sb2NhbE5hbWUoKSkKICAgICAgICAgLCBtX3ZhbHVlKGFyZzEsIGFyZzIsIGFy
ZzMpCisjaWZuZGVmIE5ERUJVRworICAgICAgICAsIG1fcmVnaXN0ZXJlZChmYWxzZSkKKyNlbmRp
ZgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fb3duZXJUeXBlKTsKKyAgICAgICAgcmVnaXN0ZXJQ
cm9wZXJ0eSgpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywg
dHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFy
KiBQcm9wZXJ0eU5hbWU+CkBAIC0yODYsMjAgKzMyMSwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCiAgICAgICAgICwgbV9h
dHRyaWJ1dGVJZGVudGlmaWVyKGF0dHJpYnV0ZUlkZW50aWZpZXIpCiAgICAgICAgICwgbV92YWx1
ZShhcmcxLCBhcmcyLCBhcmczKQorI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLCBtX3JlZ2lzdGVy
ZWQoZmFsc2UpCisjZW5kaWYKICAgICB7CiAgICAgICAgIEFTU0VSVChtX293bmVyVHlwZSk7Cisg
ICAgICAgIHJlZ2lzdGVyUHJvcGVydHkoKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFn
TmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgogICAgIHR5cGVuYW1lIFNWR0FuaW1hdGVk
UHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5
TmFtZT46OkRlY29yYXRlZFR5cGUKICAgICBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFy
ZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+Ojp2YWx1ZSgpIGNvbnN0
CiAgICAgeworICAgICAgICBBU1NFUlQobV9yZWdpc3RlcmVkKTsKICAgICAgICAgcmV0dXJuIG1f
dmFsdWU7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBl
bmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFBy
b3BlcnR5TmFtZT4KICAgICB2b2lkIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJUeXBlQXJnLCBB
bmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OnNldFZhbHVlKHR5cGVuYW1l
IFNWR0FuaW1hdGVkUHJvcGVydHk6OkRlY29yYXRlZFR5cGUgbmV3VmFsdWUpCiAgICAgeworICAg
ICAgICBBU1NFUlQobV9yZWdpc3RlcmVkKTsKICAgICAgICAgbV92YWx1ZSA9IG5ld1ZhbHVlOwog
ICAgICAgICBvd25lckVsZW1lbnQoKS0+c2V0U3luY2hyb25pemVkU1ZHQXR0cmlidXRlcyhmYWxz
ZSk7CiAgICAgfQpAQCAtMzA4LDYgKzM0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0
eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJn
LCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpEZWNvcmF0ZWRUeXBlCiAgICAgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJvcGVydHlO
YW1lPjo6YmFzZVZhbHVlKCkgY29uc3QKICAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZ2lzdGVy
ZWQpOwogICAgICAgICBjb25zdCBPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IHRoaXMtPm93
bmVyRWxlbWVudCgpOwogICAgICAgICBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGV4dGVuc2lvbnMg
PSBvd25lckVsZW1lbnQtPmFjY2Vzc0RvY3VtZW50U1ZHRXh0ZW5zaW9ucygpOwogICAgICAgICBp
ZiAoZXh0ZW5zaW9ucyAmJiBleHRlbnNpb25zLT5oYXNCYXNlVmFsdWU8RGVjb3JhdGVkVHlwZT4o
b3duZXJFbGVtZW50LCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIpKQpAQCAtMzE5LDYgKzM2MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcs
IHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hh
ciogUHJvcGVydHlOYW1lPgogICAgIHZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVB
cmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6c2V0QmFzZVZhbHVl
KHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHk6OkRlY29yYXRlZFR5cGUgbmV3VmFsdWUpCiAg
ICAgeworICAgICAgICBBU1NFUlQobV9yZWdpc3RlcmVkKTsKICAgICAgICAgY29uc3QgT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQgPSB0aGlzLT5vd25lckVsZW1lbnQoKTsKICAgICAgICAgU1ZH
RG9jdW1lbnRFeHRlbnNpb25zKiBleHRlbnNpb25zID0gb3duZXJFbGVtZW50LT5hY2Nlc3NEb2N1
bWVudFNWR0V4dGVuc2lvbnMoKTsKICAgICAgICAgaWYgKGV4dGVuc2lvbnMgJiYgZXh0ZW5zaW9u
cy0+aGFzQmFzZVZhbHVlPERlY29yYXRlZFR5cGU+KG93bmVyRWxlbWVudCwgbV9hdHRyaWJ1dGVJ
ZGVudGlmaWVyKSkgewpAQCAtMzM1LDEyICszNzgsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIFBhc3NSZWZQdHI8dHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcs
IEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6VGVhck9mZj4KICAgICBT
VkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1l
LCBQcm9wZXJ0eU5hbWU+OjphbmltYXRlZFRlYXJPZmYoKSBjb25zdAogICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fcmVnaXN0ZXJlZCk7CiAgICAgICAgIHJldHVybiBsb29rdXBPckNyZWF0ZVdyYXBw
ZXI8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZSwg
VGVhck9mZiwgT3duZXJFbGVtZW50PigqdGhpcywgb3duZXJFbGVtZW50KCksIG1fYXR0cmlidXRl
TmFtZSwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciog
VGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgorICAgIHZvaWQgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJvcGVydHlO
YW1lPjo6cmVnaXN0ZXJQcm9wZXJ0eSgpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fcmVnaXN0
ZXJlZCk7CisgICAgICAgIG93bmVyRWxlbWVudCgpLT5wcm9wZXJ0eUNvbnRyb2xsZXIoKS5yZWdp
c3RlclByb3BlcnR5KG1fYXR0cmlidXRlTmFtZSwgdGhpcyk7CisKKyNpZm5kZWYgTkRFQlVHCisg
ICAgICAgIG1fcmVnaXN0ZXJlZCA9IHRydWU7CisjZW5kaWYKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3Qg
Y2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgogICAgIHZvaWQgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJv
cGVydHlOYW1lPjo6c3luY2hyb25pemUoKSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
cmVnaXN0ZXJlZCk7CiAgICAgICAgIGlmICghbV92YWx1ZS5uZWVkc1N5bmNocm9uaXphdGlvbigp
KSAKICAgICAgICAgICAgIHJldHVybjsgCiAKQEAgLTM1MSw2ICs0MDcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBB
bmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5
TmFtZT4KICAgICB2b2lkIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRl
ZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OnN0YXJ0QW5pbWF0aW9uKCkgY29uc3QK
ICAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZ2lzdGVyZWQpOwogICAgICAgICBjb25zdCBPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IHRoaXMtPm93bmVyRWxlbWVudCgpOwogICAgICAgICBp
ZiAoU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBleHRlbnNpb25zID0gb3duZXJFbGVtZW50LT5hY2Nl
c3NEb2N1bWVudFNWR0V4dGVuc2lvbnMoKSkgewogICAgICAgICAgICAgQVNTRVJUKCFleHRlbnNp
b25zLT5oYXNCYXNlVmFsdWU8RGVjb3JhdGVkVHlwZT4ob3duZXJFbGVtZW50LCBtX2F0dHJpYnV0
ZUlkZW50aWZpZXIpKTsKQEAgLTM2MSwxMSArNDE4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlw
ZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgogICAg
IHZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywg
VGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6c3RvcEFuaW1hdGlvbigpCiAgICAgeworICAgICAgICBB
U1NFUlQobV9yZWdpc3RlcmVkKTsKICAgICAgICAgY29uc3QgT3duZXJFbGVtZW50KiBvd25lckVs
ZW1lbnQgPSB0aGlzLT5vd25lckVsZW1lbnQoKTsKICAgICAgICAgaWYgKFNWR0RvY3VtZW50RXh0
ZW5zaW9ucyogZXh0ZW5zaW9ucyA9IG93bmVyRWxlbWVudC0+YWNjZXNzRG9jdW1lbnRTVkdFeHRl
bnNpb25zKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChleHRlbnNpb25zLT5oYXNCYXNlVmFsdWU8
RGVjb3JhdGVkVHlwZT4ob3duZXJFbGVtZW50LCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIpKTsKICAg
ICAgICAgICAgIHNldFZhbHVlKGV4dGVuc2lvbnMtPmJhc2VWYWx1ZTxEZWNvcmF0ZWRUeXBlPihv
d25lckVsZW1lbnQsIG1fYXR0cmlidXRlSWRlbnRpZmllcikpOwotICAgICAgICAgICAgZXh0ZW5z
aW9ucy0+cmVtb3ZlQmFzZVZhbHVlPEFuaW1hdGVkVHlwZT4ob3duZXJFbGVtZW50LCBtX2F0dHJp
YnV0ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgZXh0ZW5zaW9ucy0+cmVtb3ZlQmFzZVZhbHVl
PERlY29yYXRlZFR5cGU+KG93bmVyRWxlbWVudCwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKTsKICAg
ICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaAkocmV2aXNp
b24gNDk2MDQpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
aWYgKCF3cmFwcGVyKSB7CiAgICAgICAgICAgICB3cmFwcGVyID0gVHlwZTo6Y3JlYXRlKGNyZWF0
b3IsIGVsZW1lbnQsIGF0dHJOYW1lKTsKLSAgICAgICAgICAgIGVsZW1lbnQtPmFkZFNWR1Byb3Bl
cnR5U3luY2hyb25pemVyKGF0dHJOYW1lLCBjcmVhdG9yKTsKKyAgICAgICAgICAgIGVsZW1lbnQt
PnByb3BlcnR5Q29udHJvbGxlcigpLnNldFByb3BlcnR5TmVlZHNTeW5jaHJvbml6YXRpb24oYXR0
ck5hbWUpOwogICAgICAgICAgICAgVHlwZTo6d3JhcHBlckNhY2hlKCktPnNldChrZXksIHdyYXBw
ZXIuZ2V0KCkpOwogICAgICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiA0OTYw
NCkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzAs
MTAgKzI3MCwxMCBAQCB2b2lkIFNWR0VsZW1lbnQ6OnVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmliCiAg
ICAgbV9zeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcyA9IHRydWU7CiAKICAgICBpZiAobmFtZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgaW52b2tlQWxsU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXJzKCk7
CisgICAgICAgIG1fcHJvcGVydHlDb250cm9sbGVyLnN5bmNocm9uaXplQWxsUHJvcGVydGllcygp
OwogICAgICAgICBzZXRTeW5jaHJvbml6ZWRTVkdBdHRyaWJ1dGVzKHRydWUpOwogICAgIH0gZWxz
ZQotICAgICAgICBpbnZva2VTVkdQcm9wZXJ0eVN5bmNocm9uaXplcihuYW1lKTsKKyAgICAgICAg
bV9wcm9wZXJ0eUNvbnRyb2xsZXIuc3luY2hyb25pemVQcm9wZXJ0eShuYW1lKTsKIAogICAgIG1f
c3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXMgPSBmYWxzZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHJl
dmlzaW9uIDQ5NjA0KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw2ICsyNSw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTdHlsZWRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlN5bmNo
cm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNzcsMTQgKzc4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBIYXNoU2V0
PFNWR0VsZW1lbnRJbnN0YW5jZSo+IGluc3RhbmNlc0ZvckVsZW1lbnQoKSBjb25zdDsKIAotICAg
ICAgICB2b2lkIGFkZFNWR1Byb3BlcnR5U3luY2hyb25pemVyKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lLCBjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5QmFzZSYgYmFzZSkgY29uc3QKLSAg
ICAgICAgewotICAgICAgICAgICAgbV9zdmdQcm9wZXJ0eU1hcC5zZXQoYXR0ck5hbWUubG9jYWxO
YW1lKCksICZiYXNlKTsKLSAgICAgICAgfQotCiAgICAgICAgIHZvaWQgc2V0Q3Vyc29yRWxlbWVu
dChTVkdDdXJzb3JFbGVtZW50KiBjdXJzb3JFbGVtZW50KSB7IG1fY3Vyc29yRWxlbWVudCA9IGN1
cnNvckVsZW1lbnQ7IH0KICAgICAgICAgdm9pZCBzZXRDdXJzb3JJbWFnZVZhbHVlKENTU0N1cnNv
ckltYWdlVmFsdWUqIGN1cnNvckltYWdlVmFsdWUpIHsgbV9jdXJzb3JJbWFnZVZhbHVlID0gY3Vy
c29ySW1hZ2VWYWx1ZTsgfQogCisgICAgICAgIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9s
bGVyJiBwcm9wZXJ0eUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5Q29udHJv
bGxlcjsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBTVkdFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC0xMDYsMzYgKzEwNCwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkg
eyB9CiAKLSAgICAgICAgLy8gSW5saW5lZCBtZXRob2RzIGhhbmRsaW5nIFNWRyBwcm9wZXJ0eSBz
eW5jaHJvbml6YXRpb24KLSAgICAgICAgdm9pZCBpbnZva2VTVkdQcm9wZXJ0eVN5bmNocm9uaXpl
cihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICht
X3N2Z1Byb3BlcnR5TWFwLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UqIHByb3BlcnR5ID0gbV9zdmdQcm9wZXJ0eU1hcC5nZXQo
bmFtZSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKLQotICAgICAgICAgICAg
ICAgIHByb3BlcnR5LT5zeW5jaHJvbml6ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBpbnZva2VBbGxTVkdQcm9wZXJ0eVN5bmNocm9uaXplcnMoKSBjb25zdAot
ICAgICAgICB7Ci0gICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgY29uc3QgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUJhc2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N2Z1Byb3BlcnR5TWFwLmJlZ2lu
KCk7Ci0gICAgICAgICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgY29uc3QgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUJhc2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdmdQcm9wZXJ0eU1hcC5lbmQo
KTsKLSAgICAgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAg
ICBjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5QmFzZSogcHJvcGVydHkgPSBpdC0+c2Vjb25kOwot
ICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7Ci0KLSAgICAgICAgICAgICAgICBwcm9w
ZXJ0eS0+c3luY2hyb25pemUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCiAgICAgICAg
IHZvaWQgbWFwSW5zdGFuY2VUb0VsZW1lbnQoU1ZHRWxlbWVudEluc3RhbmNlKik7CiAgICAgICAg
IHZvaWQgcmVtb3ZlSW5zdGFuY2VNYXBwaW5nKFNWR0VsZW1lbnRJbnN0YW5jZSopOwogCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsKIAogICAgICAg
ICBDb250YWluZXJOb2RlKiBtX3NoYWRvd1BhcmVudDsKLSAgICAgICAgbXV0YWJsZSBIYXNoTWFw
PFN0cmluZywgY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UqPiBtX3N2Z1Byb3BlcnR5TWFw
OworICAgICAgICBtdXRhYmxlIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyIG1fcHJv
cGVydHlDb250cm9sbGVyOwogCiAgICAgICAgIFNWR0N1cnNvckVsZW1lbnQqIG1fY3Vyc29yRWxl
bWVudDsKICAgICAgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogbV9jdXJzb3JJbWFnZVZhbHVlOwpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1ZpZXdTcGVjLmNwcAkocmV2aXNpb24gNDk2MDQpCisrKyBXZWJDb3JlL3N2Zy9TVkdW
aWV3U3BlYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBTVkdWaWV3U3BlYzo6U1ZHVmlld1NwZWMoY29uc3QgU1ZHU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQpCiAgICAgOiBTVkdGaXRUb1ZpZXdCb3goKQogICAgICwgU1ZHWm9vbUFu
ZFBhbigpCisgICAgLCBtX2NvbnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQogICAgICwgbV92
aWV3Qm94KHRoaXMsIFNWR05hbWVzOjp2aWV3Qm94QXR0cikKICAgICAsIG1fcHJlc2VydmVBc3Bl
Y3RSYXRpbyh0aGlzLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW86OmNyZWF0ZSgpKQogICAgICwgbV90cmFuc2Zvcm0oU1ZHVHJhbnNmb3Jt
TGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSkKLSAgICAsIG1fY29udGV4dEVs
ZW1lbnQoY29udGV4dEVsZW1lbnQpCiB7CiB9CiAKQEAgLTc0LDEyICs3NCw3IEBAIHZvaWQgU1ZH
Vmlld1NwZWM6OnNldFZpZXdUYXJnZXRTdHJpbmcoY28KIAogU1ZHRWxlbWVudCogU1ZHVmlld1Nw
ZWM6OnZpZXdUYXJnZXQoKSBjb25zdAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdFbGVt
ZW50Kj4obV9jb250ZXh0RWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZCht
X3ZpZXdUYXJnZXRTdHJpbmcpKTsKLX0KLQotY29uc3QgU1ZHRWxlbWVudCogU1ZHVmlld1NwZWM6
OmNvbnRleHRFbGVtZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb250ZXh0RWxlbWVudDsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KG1fY29udGV4dEVsZW1lbnQtPmRv
Y3VtZW50KCktPmdldEVsZW1lbnRCeUlkKG1fdmlld1RhcmdldFN0cmluZykpOwogfQogCiBzdGF0
aWMgY29uc3QgVUNoYXIgc3ZnVmlld1NwZWNbXSA9IHsncycsICd2JywgJ2cnLCAnVicsICdpJywg
J2UnLCAndyd9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCShyZXZpc2lvbiA0OTYwNCkKKysrIFdlYkNvcmUv
c3ZnL1NWR1ZpZXdTcGVjLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE1ICs1MSwxNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyB2aWV3VGFyZ2V0U3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3VGFyZ2V0U3RyaW5nOyB9CiAgICAgICAgIFNWR0VsZW1lbnQqIHZpZXdU
YXJnZXQoKSBjb25zdDsKIAotICAgICAgICBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCgpIGNvbnN0OworICAgICAgICBjb25zdCBTVkdTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dEVsZW1lbnQ7IH0KIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGNvbnN0IFNWR1NWR0VsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CisKICAgICAgICAgLy8g
U1ZHRml0VG9WaWV3Qm94CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdWaWV3U3BlYywgU1ZHRml0VG9WaWV3Qm94SWRlbnRpZmllciwgU1ZHTmFtZXM6OnZpZXdCb3hB
dHRyU3RyaW5nLCBGbG9hdFJlY3QsIFZpZXdCb3gsIHZpZXdCb3gpCiAgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdWaWV3U3BlYywgU1ZHRml0VG9WaWV3Qm94SWRlbnRp
ZmllciwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyU3RyaW5nLCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQog
CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR1RyYW5zZm9ybUxpc3Q+IG1fdHJhbnNmb3JtOwot
ICAgICAgICBjb25zdCBTVkdTVkdFbGVtZW50KiBtX2NvbnRleHRFbGVtZW50OwogICAgICAgICBT
dHJpbmcgbV92aWV3VGFyZ2V0U3RyaW5nOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1N5
bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL3N2Zy9TeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlN5bmNocm9uaXphYmxl
UHJvcGVydHlDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKKyNpbmNs
dWRlICJOb2RlLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1N5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyOjpTeW5jaHJv
bml6YWJsZVByb3BlcnR5Q29udHJvbGxlcigpCit7Cit9CisKK3ZvaWQgU3luY2hyb25pemFibGVQ
cm9wZXJ0eUNvbnRyb2xsZXI6OnJlZ2lzdGVyUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUsIFNWR0FuaW1hdGVkUHJvcGVydHlCYXNlKiBiYXNlKQoreworICAgIC8vICdhdHRy
TmFtZScgaXMgYW1iaWdpb3VzLiBGb3IgaW5zdGFuY2UgaW4gU1ZHTWFya2VyRWxlbWVudCBib3Ro
ICdvcmllbnRUeXBlJyAvICdvcmllbnRBbmdsZScKKyAgICAvLyBTVkcgRE9NIG9iamVjdHMgYXJl
IHN5bmNocm9uaXplZCB3aXRoIHRoZSAnb3JpZW50JyBhdHRyaWJ1dGUuIFRoaXMgd2h5IHdlIG5l
ZWQgYSBIYXNoU2V0LgorICAgIFN5bmNocm9uaXphYmxlUHJvcGVydHkgcHJvcGVydHkoYmFzZSk7
CisKKyAgICBQcm9wZXJ0eU1hcDo6aXRlcmF0b3IgaXQgPSBtX21hcC5maW5kKGF0dHJOYW1lLmxv
Y2FsTmFtZSgpKTsKKyAgICBpZiAoaXQgPT0gbV9tYXAuZW5kKCkpIHsKKyAgICAgICAgUHJvcGVy
dGllcyBwcm9wZXJ0aWVzOworICAgICAgICBwcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eSk7CisgICAg
ICAgIG1fbWFwLnNldChhdHRyTmFtZS5sb2NhbE5hbWUoKSwgcHJvcGVydGllcyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzID0gaXQtPnNlY29u
ZDsKKyAgICBBU1NFUlQoIXByb3BlcnRpZXMuaXNFbXB0eSgpKTsKKworICAgIHByb3BlcnRpZXMu
YWRkKHByb3BlcnR5KTsKK30KKwordm9pZCBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxl
cjo6c2V0UHJvcGVydHlOZWVkc1N5bmNocm9uaXphdGlvbihjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKK3sKKyAgICBQcm9wZXJ0eU1hcDo6aXRlcmF0b3IgaXRQcm9wID0gbV9tYXAuZmlu
ZChhdHRyTmFtZS5sb2NhbE5hbWUoKSk7CisgICAgQVNTRVJUKGl0UHJvcCAhPSBtX21hcC5lbmQo
KSk7CisKKyAgICBQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzID0gaXRQcm9wLT5zZWNvbmQ7CisgICAg
QVNTRVJUKCFwcm9wZXJ0aWVzLmlzRW1wdHkoKSk7CisKKyAgICBQcm9wZXJ0aWVzOjppdGVyYXRv
ciBpdCA9IHByb3BlcnRpZXMuYmVnaW4oKTsKKyAgICBQcm9wZXJ0aWVzOjppdGVyYXRvciBlbmQg
PSBwcm9wZXJ0aWVzLmVuZCgpOworCisgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICBTeW5jaHJvbml6YWJsZVByb3BlcnR5JiBwcm9wZXJ0eSA9ICppdDsKKyAgICAgICAgQVNT
RVJUKHByb3BlcnR5LmJhc2UpOworICAgICAgICBwcm9wZXJ0eS5zaG91bGRTeW5jaHJvbml6ZSA9
IHRydWU7CisgICAgfQorfQorCit2b2lkIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVy
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBQcm9wZXJ0
eU1hcDo6aXRlcmF0b3IgaXRQcm9wID0gbV9tYXAuZmluZChuYW1lKTsKKyAgICBpZiAoaXRQcm9w
ID09IG1fbWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBQcm9wZXJ0aWVzJiBwcm9w
ZXJ0aWVzID0gaXRQcm9wLT5zZWNvbmQ7CisgICAgQVNTRVJUKCFwcm9wZXJ0aWVzLmlzRW1wdHko
KSk7CisKKyAgICBQcm9wZXJ0aWVzOjppdGVyYXRvciBpdCA9IHByb3BlcnRpZXMuYmVnaW4oKTsK
KyAgICBQcm9wZXJ0aWVzOjppdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOworCisgICAg
Zm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBTeW5jaHJvbml6YWJsZVByb3BlcnR5
JiBwcm9wZXJ0eSA9ICppdDsKKyAgICAgICAgQVNTRVJUKHByb3BlcnR5LmJhc2UpOworCisgICAg
ICAgIGlmICghcHJvcGVydHkuc2hvdWxkU3luY2hyb25pemUpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBwcm9wZXJ0eS5iYXNlLT5zeW5jaHJvbml6ZSgpOworICAgIH0KK30KKwor
dm9pZCBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlcjo6c3luY2hyb25pemVBbGxQcm9w
ZXJ0aWVzKCkKK3sKKyAgICBpZiAobV9tYXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBQcm9wZXJ0eU1hcDo6aXRlcmF0b3IgaXRQcm9wID0gbV9tYXAuYmVnaW4oKTsKKyAgICBQ
cm9wZXJ0eU1hcDo6aXRlcmF0b3IgZW5kUHJvcCA9IG1fbWFwLmVuZCgpOworCisgICAgZm9yICg7
IGl0UHJvcCAhPSBlbmRQcm9wOyArK2l0UHJvcCkgeworICAgICAgICBQcm9wZXJ0aWVzJiBwcm9w
ZXJ0aWVzID0gaXRQcm9wLT5zZWNvbmQ7CisgICAgICAgIEFTU0VSVCghcHJvcGVydGllcy5pc0Vt
cHR5KCkpOworCisgICAgICAgIFByb3BlcnRpZXM6Oml0ZXJhdG9yIGl0ID0gcHJvcGVydGllcy5i
ZWdpbigpOworICAgICAgICBQcm9wZXJ0aWVzOjppdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVu
ZCgpOworCisgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFN5
bmNocm9uaXphYmxlUHJvcGVydHkmIHByb3BlcnR5ID0gKml0OworICAgICAgICAgICAgQVNTRVJU
KHByb3BlcnR5LmJhc2UpOworCisgICAgICAgICAgICBpZiAoIXByb3BlcnR5LnNob3VsZFN5bmNo
cm9uaXplKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBwcm9wZXJ0
eS5iYXNlLT5zeW5jaHJvbml6ZSgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFN5bmNo
cm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyOjpzdGFydEFuaW1hdGlvbihjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgUHJvcGVydHlNYXA6Oml0ZXJhdG9yIGl0UHJvcCA9IG1fbWFwLmZpbmQo
bmFtZSk7CisgICAgaWYgKGl0UHJvcCA9PSBtX21hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUHJvcGVydGllcyYgcHJvcGVydGllcyA9IGl0UHJvcC0+c2Vjb25kOworICAgIEFTU0VS
VCghcHJvcGVydGllcy5pc0VtcHR5KCkpOworCisgICAgUHJvcGVydGllczo6aXRlcmF0b3IgaXQg
PSBwcm9wZXJ0aWVzLmJlZ2luKCk7CisgICAgUHJvcGVydGllczo6aXRlcmF0b3IgZW5kID0gcHJv
cGVydGllcy5lbmQoKTsKKworICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
U3luY2hyb25pemFibGVQcm9wZXJ0eSYgcHJvcGVydHkgPSAqaXQ7CisgICAgICAgIEFTU0VSVChw
cm9wZXJ0eS5iYXNlKTsKKyAgICAgICAgcHJvcGVydHkuYmFzZS0+c3RhcnRBbmltYXRpb24oKTsK
KyAgICB9Cit9CisKK3ZvaWQgU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXI6OnN0b3BB
bmltYXRpb24oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIFByb3BlcnR5TWFwOjppdGVyYXRv
ciBpdFByb3AgPSBtX21hcC5maW5kKG5hbWUpOworICAgIGlmIChpdFByb3AgPT0gbV9tYXAuZW5k
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFByb3BlcnRpZXMmIHByb3BlcnRpZXMgPSBpdFBy
b3AtPnNlY29uZDsKKyAgICBBU1NFUlQoIXByb3BlcnRpZXMuaXNFbXB0eSgpKTsKKworICAgIFBy
b3BlcnRpZXM6Oml0ZXJhdG9yIGl0ID0gcHJvcGVydGllcy5iZWdpbigpOworICAgIFByb3BlcnRp
ZXM6Oml0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CisKKyAgICBmb3IgKDsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgICAgIFN5bmNocm9uaXphYmxlUHJvcGVydHkmIHByb3BlcnR5ID0g
Kml0OworICAgICAgICBBU1NFUlQocHJvcGVydHkuYmFzZSk7CisgICAgICAgIHByb3BlcnR5LmJh
c2UtPnN0b3BBbmltYXRpb24oKTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShT
VkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1N5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9s
bGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N2Zy9TeW5jaHJvbml6YWJsZVByb3BlcnR5
Q29udHJvbGxlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworI2lmbmRlZiBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlcl9oCisj
ZGVmaW5lIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyX2gKKworI2lmIEVOQUJMRShT
VkcpCisjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBRdWFsaWZpZWROYW1lOworY2xhc3MgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUJhc2U7CisKK3N0cnVjdCBTeW5jaHJvbml6YWJsZVByb3BlcnR5IHsKKyAg
ICBTeW5jaHJvbml6YWJsZVByb3BlcnR5KCkKKyAgICAgICAgOiBiYXNlKDApCisgICAgICAgICwg
c2hvdWxkU3luY2hyb25pemUoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IFN5
bmNocm9uaXphYmxlUHJvcGVydHkoU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UqIF9iYXNlKQorICAg
ICAgICA6IGJhc2UoX2Jhc2UpCisgICAgICAgICwgc2hvdWxkU3luY2hyb25pemUoZmFsc2UpCisg
ICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IFN5bmNocm9uaXphYmxlUHJvcGVydHkoV1RGOjpI
YXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IGJhc2UocmVpbnRlcnByZXRfY2Fz
dDxTVkdBbmltYXRlZFByb3BlcnR5QmFzZSo+KC0xKSkKKyAgICAgICAgLCBzaG91bGRTeW5jaHJv
bml6ZShmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYmFzZSA9PSByZWludGVycHJldF9j
YXN0PFNWR0FuaW1hdGVkUHJvcGVydHlCYXNlKj4oLTEpOworICAgIH0KKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTeW5jaHJvbml6YWJsZVByb3BlcnR5JiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBiYXNlID09IG90aGVyLmJhc2UgJiYgc2hvdWxkU3luY2hyb25pemUg
PT0gb3RoZXIuc2hvdWxkU3luY2hyb25pemU7CisgICAgfQorCisgICAgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUJhc2UqIGJhc2U7CisgICAgYm9vbCBzaG91bGRTeW5jaHJvbml6ZTsKK307CisKK3N0cnVj
dCBTeW5jaHJvbml6YWJsZVByb3BlcnR5SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgU3luY2hyb25pemFibGVQcm9wZXJ0eSYga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFN0cmluZ0ltcGw6OmNvbXB1dGVIYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPigm
a2V5KSwgc2l6ZW9mKFN5bmNocm9uaXphYmxlUHJvcGVydHkpIC8gc2l6ZW9mKFVDaGFyKSk7Cisg
ICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3luY2hyb25pemFibGVQcm9wZXJ0
eSYgYSwgY29uc3QgU3luY2hyb25pemFibGVQcm9wZXJ0eSYgYikKKyAgICB7CisgICAgICAgIHJl
dHVybiBhID09IGI7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKworc3RydWN0IFN5bmNocm9uaXphYmxlUHJv
cGVydHlIYXNoVHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxTeW5jaHJvbml6YWJsZVBy
b3BlcnR5PiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7
CisKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoU3luY2hyb25pemFibGVQ
cm9wZXJ0eSYgc2xvdCkKKyAgICB7CisgICAgICAgIG5ldyAoJnNsb3QpIFN5bmNocm9uaXphYmxl
UHJvcGVydHkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOworICAgIH0KKworICAgIHN0YXRp
YyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFN5bmNocm9uaXphYmxlUHJvcGVydHkmIHZhbHVl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
CisgICAgfQorfTsKKworLy8gSGVscGVyIGNsYXNzIHVzZWQgZXhjbHVzaXZlbHkgYnkgU1ZHRWxl
bWVudCB0byBrZWVwIHRyYWNrIG9mIGFsbCBhbmltYXRhYmxlIHByb3BlcnRpZXMgd2l0aGluIGEg
U1ZHRWxlbWVudCwKKy8vIGFuZCB3aGV0ZXIgdGhleSBhcmUgc3VwcG9zZWQgdG8gYmUgc3luY2hy
b25pemVkIG9yIG5vdCAoZGVwZW5kaW5nIHdoZXRlciBBbmltYXRlZFByb3BlcnR5VGVhck9mZidz
IGhhdmUgYmVlbiBjcmVhdGVkKQorY2xhc3MgU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xs
ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIHZvaWQgcmVnaXN0ZXJQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiwgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UqKTsKKyAg
ICB2b2lkIHNldFByb3BlcnR5TmVlZHNTeW5jaHJvbml6YXRpb24oY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOworCisgICAgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYpOworICAg
IHZvaWQgc3luY2hyb25pemVBbGxQcm9wZXJ0aWVzKCk7CisKKyAgICB2b2lkIHN0YXJ0QW5pbWF0
aW9uKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc3RvcEFuaW1hdGlvbihjb25zdCBTdHJpbmcm
KTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU1ZHRWxlbWVudDsKKyAgICBTeW5jaHJv
bml6YWJsZVByb3BlcnR5Q29udHJvbGxlcigpOworCitwcml2YXRlOgorICAgIHR5cGVkZWYgSGFz
aFNldDxTeW5jaHJvbml6YWJsZVByb3BlcnR5LCBTeW5jaHJvbml6YWJsZVByb3BlcnR5SGFzaCwg
U3luY2hyb25pemFibGVQcm9wZXJ0eUhhc2hUcmFpdHM+IFByb3BlcnRpZXM7CisgICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgUHJvcGVydGllcz4gUHJvcGVydHlNYXA7CisKKyAgICBQcm9wZXJ0
eU1hcCBtX21hcDsKK307CisKK307CisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmIC8v
IFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyX2gKSW5kZXg6IFdlYktpdC9tYWMvQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NvbmZp
Z3VyYXRpb25zL0Jhc2UueGNjb25maWcJKHJldmlzaW9uIDQ5NjA0KQorKysgV2ViS2l0L21hYy9D
b25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3
IEBAIEdDQ19GQVNUX09CSkNfRElTUEFUQ0ggPSBZRVM7CiBHQ0NfR0VORVJBVEVfREVCVUdHSU5H
X1NZTUJPTFMgPSBZRVM7CiBHQ0NfTU9ERUxfVFVOSU5HID0gRzU7CiBHQ0NfT0JKQ19DQUxMX0NY
WF9DRFRPUlMgPSBZRVM7Ci1HQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOworR0ND
X1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IE5POwogR0NDX1RIUkVBRFNBRkVfU1RBVElDUyA9
IE5POwogR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKIEdDQ19XQVJOX0FCT1VU
X0RFUFJFQ0FURURfRlVOQ1RJT05TID0gTk87CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwko
cmV2aXNpb24gNDk2MDQpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQ29uZmln
dXJhdGlvbnMvQmFzZS54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBH
Q0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gRU5BQkxFX0RBCiBERUJVR19JTkZPUk1BVElP
Tl9GT1JNQVQgPSBkd2FyZgogUFJFQklORElORyA9IE5PCiBHQ0NfQ19MQU5HVUFHRV9TVEFOREFS
RCA9IGdudTk5Ci1HQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTCitHQ0NfUFJFQ09N
UElMRV9QUkVGSVhfSEVBREVSID0gTk8KIEdDQ19UUkVBVF9XQVJOSU5HU19BU19FUlJPUlMgPSBZ
RVMKIEdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUwogR0NDX1dBUk5fVU5VU0VEX1ZBUklB
QkxFID0gWUVTCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCShyZXZpc2lvbiA0OTYw
NCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQkod29ya2luZyBjb3B5KQpA
QCAtMTEwMSw3ICsxMTAxLDcgQEAgc3ViIGJ1aWxkWENvZGVQcm9qZWN0KCQkQCkKICAgICAgICAg
cHVzaChAZXh0cmFPcHRpb25zLCAiY2xlYW4iKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3lzdGVt
ICJ4Y29kZWJ1aWxkIiwgIi1wcm9qZWN0IiwgIiRwcm9qZWN0Lnhjb2RlcHJvaiIsIEBleHRyYU9w
dGlvbnM7CisgICAgcmV0dXJuIHN5c3RlbSAicHVtcCIsICJ4Y29kZWJ1aWxkIiwgIi1wcm9qZWN0
IiwgIiRwcm9qZWN0Lnhjb2RlcHJvaiIsIEBleHRyYU9wdGlvbnM7CiB9CiAKIHN1YiBidWlsZFZp
c3VhbFN0dWRpb1Byb2plY3Q=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41338</attachid>
            <date>2009-10-16 16:16:25 -0700</date>
            <delta_ts>2009-10-17 15:53:22 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-30466-20091017011615.patch</filename>
            <type>text/plain</type>
            <size>37045</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">PyAgICAgICBmb28uc3ZnCj8gICAgICAgdGVzdC5zdmcKPyAgICAgICBMYXlvdXRUZXN0cy9hbmlt
VmFsLWJhc2VWYWwtc3VwcG9ydC5zdmcKPyAgICAgICBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YW5pbVZhbC1iYXNlVmFsLXN1cHBvcnQtZXhwZWN0ZWQudHh0Cj8gICAgICAgV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRkaXJzLnBtLm9yaWcKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA0OTcwNSkKKysrIFdlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMDktMTAtMTYgIE5p
a29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW51cCBTVkdFbGVtZW50IGNvZGUs
IHByZXBhcmluZyBmb3IgYW5pbVZhbCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDQ2NgorCisgICAgICAgIEFkZCBuZXcgU3luY2hyb25p
emFibGVQcm9wZXJ0eUNvbnRyb2xsZXIgYW5kIG1vdmUgdGhlIGNvZGUgZm9yIFNWRyBwcm9wZXJ0
eSA8LT4gWE1MIGF0dHJpYnV0ZSBzeW5jaHJvbml6YXRpb24KKyAgICAgICAgZnJvbSBTVkdFbGVt
ZW50LiBUaGlzIGlzIGEgZnVydGhlciBwcmVwYXJhdGlvbiBmb3IgYW5pbVZhbCBzdXBwb3J0LCB3
aGVyZSBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlciB3aWxsCisgICAgICAgIGJlIHVz
ZWQgdG8gY29udHJvbCB0aGUgc3RhcnQvZW5kIHN0YXRlIG9mIGFuIGFuaW1hdGVkIHByb3BlcnR5
LgorCisgICAgICAgIFdlJ3JlIGN1cnJlbnRseSB0cmFja2luZyBhbmltYXRlZCBwcm9wZXJ0aWVz
IHRoYXQgbmVlZCBzeW5jaHJvbml6YXRpb24sIGdlbmVyYWxpemUgdGhpcyBjb25jZXB0IGFuZCB1
c2UKKyAgICAgICAgaXQgdG8gdHJhY2sgdGhlaXIgY3JlYXRpb24gKGJvdW5kIHRvIGNlcnRhaW4g
U1ZHKkVsZW1lbnQgY2xhc3NlcykgYXMgd2VsbCBhcyBhIGZsYWcgZGV0ZXJtaW5nIHRoZSBuZWVk
CisgICAgICAgIG9mIHN5bmNocm9uaXphdGlvbiAobm8gU1ZHIERPTSBvYmplY3Qgd3JhcHBlcnMs
IG5vIHN5bmNocm9uaXphdGlvbiBuZWVkZWQpLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5j
dGlvbmFsaXR5LCB0aHVzIG5vIHRlc3RzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFk
ZCAnU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuY3BwL2gnIHRvIGJ1aWxkCisgICAg
ICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8u
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICog
c3ZnL1NWR0FsbEluT25lLmNwcDogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUHJv
cGVydHkuaDogQWRkIHJlZ2lzdGVyUHJvcGVydHkoKSBmdW5jdGlvbiAKKyAgICAgICAgKFdlYkNv
cmU6Ojo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eSk6IENhbGwgcmVnaXN0ZXJQcm9wZXJ0eSgpIGZ1bmN0
aW9uICAKKyAgICAgICAgKFdlYkNvcmU6Ojo6cmVnaXN0ZXJQcm9wZXJ0eSk6IEFkZCBuZXcgcmVn
aXN0ZXJQcm9wZXJ0eSgpIGZ1bmN0aW9uLCBhbm5vdW5jaW5nIG5ldyBwcm9wZXJ0aWVzIHRvIFN5
bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRl
ZFRlbXBsYXRlLmg6IFVzZSBwcm9wZXJ0eUNvbnRyb2xsZXIoKSBtZXRob2QsIHRvIGFjY2VzcyB0
aGUgbmV3IGZ1bmN0aW9ucyBtb3ZlZCBmcm9tIFNWR0VsZW1lbnQuCisgICAgICAgIChXZWJDb3Jl
Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDog
QWRhcHQgdG8gY29kZSBtb3ZpbmcgdG8gU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIu
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojp1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0
ZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDogTW92ZSBoYW5kbGluZyBTVkcgcHJvcGVy
dHkgc3luY2hyb25pemF0aW9uIHRvIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cHJvcGVydHlDb250cm9sbGVyKTogRXhwb3Nl
IHJlZmVyZW5jZSB0byBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlciBvYmplY3QuCisg
ICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmNwcDogUmVvcmRlciBpbml0aWFsaXphdGlvbiBvcmRl
ciBvZiBjb250ZXh0RWxlbWVudCwgbGVhZGluZyB0byBwb3NzaWJsZSBjcmFzaGVzLgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OlNWR1ZpZXdTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1ZpZXdTcGVjOjp2aWV3VGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuaDog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6Y29udGV4dEVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXI6OlN5
bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNo
cm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyOjpyZWdpc3RlclByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyOjpzZXRQcm9wZXJ0eU5l
ZWRzU3luY2hyb25pemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9uaXphYmxlUHJv
cGVydHlDb250cm9sbGVyOjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyOjpzeW5jaHJvbml6ZUFsbFByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXI6
OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9uaXphYmxlUHJvcGVy
dHlDb250cm9sbGVyOjpzdG9wQW5pbWF0aW9uKToKKyAgICAgICAgKiBzdmcvU3luY2hyb25pemFi
bGVQcm9wZXJ0eUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJv
bml6YWJsZVByb3BlcnR5OjpTeW5jaHJvbml6YWJsZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlN5bmNocm9uaXphYmxlUHJvcGVydHk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN5bmNocm9uaXphYmxlUHJvcGVydHk6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6U3luY2hyb25pemFibGVQcm9wZXJ0eUhhc2g6Omhhc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6U3luY2hyb25pemFibGVQcm9wZXJ0eUhhc2g6OmVxdWFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlN5bmNocm9uaXphYmxlUHJvcGVydHlIYXNoVHJhaXRzOjpjb25zdHJ1Y3REZWxl
dGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25pemFibGVQcm9wZXJ0eUhhc2hU
cmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKwogMjAwOS0xMC0xNiAgU3RldmUgRmFsa2VuYnVyZyAg
PHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCklu
ZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0JKHJldmlzaW9uIDQ5NjA0KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29y
a2luZyBjb3B5KQpAQCAtMzE1MCw2ICszMTUwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmggXAogCVdlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5j
cHAgXAogCVdlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5oIFwKKwlXZWJDb3JlL3N2Zy9TeW5jaHJv
bml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHAgXAorCVdlYkNvcmUvc3ZnL1N5bmNocm9uaXph
YmxlUHJvcGVydHlDb250cm9sbGVyLmggXAogCVdlYkNvcmUvc3ZnL1N5bmNocm9uaXphYmxlVHlw
ZVdyYXBwZXIuaCBcCiAJV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lLmNwcCBcCiAJV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDQ5NjA0KQor
KysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM0NzUsNiArMzQ3NSw4
IEBACiAgICAgICAgICAgICAnc3ZnL1NWR1pvb21BbmRQYW4uaCcsCiAgICAgICAgICAgICAnc3Zn
L1NWR1pvb21FdmVudC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdab29tRXZlbnQuaCcsCisg
ICAgICAgICAgICAnc3ZnL1N5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmNwcCcsCisg
ICAgICAgICAgICAnc3ZnL1N5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmgnLAogICAg
ICAgICAgICAgJ3N2Zy9TeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmgnLAogICAgICAgICAgICAg
J3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJT
b2NrZXQuaCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDQ5NjA0KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwko
d29ya2luZyBjb3B5KQpAQCAtMjI1MSw2ICsyMjUxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgc3Zn
L1NWR1ZpZXdTcGVjLmggXAogICAgIHN2Zy9TVkdab29tQW5kUGFuLmggXAogICAgIHN2Zy9TVkda
b29tRXZlbnQuaCBcCisgICAgc3ZnL1N5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmgg
XAogICAgIHdtbC9XTUxBY2Nlc3NFbGVtZW50LmggXAogICAgIHdtbC9XTUxBRWxlbWVudC5oIFwK
ICAgICB3bWwvV01MQW5jaG9yRWxlbWVudC5oIFwKQEAgLTMwMDYsNiArMzAwNyw3IEBAIGNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkgewogICAgICAgICBzdmcvU1ZHVmlld0VsZW1lbnQu
Y3BwIFwKICAgICAgICAgc3ZnL1NWR1ZpZXdTcGVjLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdab29t
QW5kUGFuLmNwcCBcCisgICAgICAgIHN2Zy9TeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxl
ci5jcHAgXAogICAgICAgICBzdmcvYW5pbWF0aW9uL1NNSUxUaW1lLmNwcCBcCiAgICAgICAgIHN2
Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwIFwKICAgICAgICAgc3ZnL2FuaW1hdGlv
bi9TVkdTTUlMRWxlbWVudC5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCShyZXZpc2lvbiA0OTYwNCkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTMwNDQ3LDYgKzMwNDQ3LDEwIEBACiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxzdmdcU1ZHWm9vbUV2ZW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU3luY2hyb25pemFibGVQcm9wZXJ0
eUNvbnRyb2xsZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCQk8RmlsdGVyDQogCQkJCU5h
bWU9ImFuaW1hdGlvbiINCiAJCQkJPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0OTYxNykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCwxMCBAQAog
CQkwODcyODE1ODBGMjZCOUI2MDBBRkM1OTYgLyogT3B0aW9uR3JvdXBFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODcyODE1NDBGMjZCOUI2
MDBBRkM1OTYgLyogT3B0aW9uR3JvdXBFbGVtZW50LmggKi87IH07CiAJCTA4NzQ0QkFBMEVEQjdE
ODYwMDRDOUU2MyAvKiBXTUxPbkV2ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc0NEJBOTBFREI3RDg2MDA0QzlFNjMgLyogV01M
T25FdmVudEVsZW1lbnQuY3BwICovOyB9OwogCQkwODc0NEJBRTBFREI3RDkyMDA0QzlFNjMgLyog
V01MT25FdmVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4NzQ0QkFEMEVEQjdEOTIwMDRDOUU2MyAvKiBXTUxPbkV2ZW50RWxlbWVudC5o
ICovOyB9OworCQkwODc4QjFGRDEwODc0RTNGMDBBNTUwOTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3OEIx
RjkxMDg3NEUzRjAwQTU1MDk3IC8qIFNWR0FuaW1hdGVkUHJvcGVydHkuaCAqLzsgfTsKKwkJMDg3
OEIxRkUxMDg3NEUzRjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NzhC
MUZBMTA4NzRFM0YwMEE1NTA5NyAvKiBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5j
cHAgKi87IH07CisJCTA4NzhCMUZGMTA4NzRFM0YwMEE1NTA5NyAvKiBTeW5jaHJvbml6YWJsZVBy
b3BlcnR5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg3OEIxRkIxMDg3NEUzRjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlUHJvcGVy
dHlDb250cm9sbGVyLmggKi87IH07CisJCTA4NzhCMjAwMTA4NzRFM0YwMEE1NTA5NyAvKiBTeW5j
aHJvbml6YWJsZVR5cGVXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODc4QjFGQzEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25pemFibGVU
eXBlV3JhcHBlci5oICovOyB9OwogCQkwODdGRkEwRjBFRkYzRUQzMDA5REJEODggLyogV01MSW5z
ZXJ0ZWRMZWdlbmRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4N0ZGQTBEMEVGRjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRlZExlZ2Vu
ZEVsZW1lbnQuY3BwICovOyB9OwogCQkwODdGRkExMDBFRkYzRUQzMDA5REJEODggLyogV01MSW5z
ZXJ0ZWRMZWdlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODdGRkEwRTBFRkYzRUQzMDA5REJEODggLyogV01MSW5zZXJ0ZWRMZWdlbmRF
bGVtZW50LmggKi87IH07CiAJCTA4ODA3Qjc2MEVENzA5QUIwMDNGNjk3NSAvKiBXTUxHb0VsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4
MDdCNkEwRUQ3MDlBQjAwM0Y2OTc1IC8qIFdNTEdvRWxlbWVudC5jcHAgKi87IH07CkBAIC01MjQ2
LDYgKzUyNTAsMTAgQEAKIAkJMDg3MjgxNTQwRjI2QjlCNjAwQUZDNTk2IC8qIE9wdGlvbkdyb3Vw
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25Hcm91cEVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg3NDRCQTkwRURCN0Q4NjAw
NEM5RTYzIC8qIFdNTE9uRXZlbnRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdNTE9uRXZlbnRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg3NDRCQUQwRURCN0Q5MjAwNEM5RTYzIC8qIFdNTE9uRXZlbnRFbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTE9uRXZlbnRFbGVtZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NzhCMUY5MTA4NzRFM0YwMEE1NTA5NyAvKiBT
VkdBbmltYXRlZFByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0FuaW1hdGVkUHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDg3OEIx
RkExMDg3NEUzRjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bmNocm9uaXphYmxlUHJv
cGVydHlDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDg3OEIx
RkIxMDg3NEUzRjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bmNocm9uaXphYmxlUHJvcGVydHlD
b250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NzhCMUZDMTA4NzRF
M0YwMEE1NTA5NyAvKiBTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg3RkZBMEQwRUZGM0VEMzAwOURCRDg4IC8qIFdNTEluc2Vy
dGVkTGVnZW5kRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXTUxJbnNlcnRlZExlZ2VuZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwODdGRkEwRTBFRkYzRUQzMDA5REJEODggLyogV01MSW5zZXJ0ZWRMZWdlbmRFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEluc2VydGVkTGVnZW5kRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODgwN0I2QTBFRDcwOUFCMDAz
RjY5NzUgLyogV01MR29FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdNTEdvRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MzQ3Niw2ICsxMzQ4NCw3IEBACiAJCQkJQjIyMjc3RjIwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0Fu
aW1hdGVkUG9pbnRzLmggKi8sCiAJCQkJQjIyMjc3RjMwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0Fu
aW1hdGVkUG9pbnRzLmlkbCAqLywKIAkJCQlCMjIyNzdGNDBEMDBCRjFGMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmlkbCAqLywKKwkJCQkwODc4QjFGOTEwODc0RTNG
MDBBNTUwOTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oICovLAogCQkJCUIyMjI3N0Y1MEQwMEJG
MUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFJlY3QuaWRsICovLAogCQkJCUIyMjI3N0Y2MEQwMEJG
MUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFN0cmluZy5pZGwgKi8sCiAJCQkJQjIyMjc3RjcwRDAw
QkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkVGVtcGxhdGUuaCAqLywKQEAgLTEzODY0LDYgKzEz
ODczLDkgQEAKIAkJCQlCMkU0RUM5NDBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmNw
cCAqLywKIAkJCQlCMkU0RUM5NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8s
CiAJCQkJQjJFNEVDOTYwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8sCisJ
CQkJMDg3OEIxRkExMDg3NEUzRjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250
cm9sbGVyLmNwcCAqLywKKwkJCQkwODc4QjFGQjEwODc0RTNGMDBBNTUwOTcgLyogU3luY2hyb25p
emFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuaCAqLywKKwkJCQkwODc4QjFGQzEwODc0RTNGMDBBNTUw
OTcgLyogU3luY2hyb25pemFibGVUeXBlV3JhcHBlci5oICovLAogCQkJCUIyOEM2QTI2MEQwMEM0
NDgwMDMzNEFBNCAvKiB4bGlua2F0dHJzLmluICovLAogCQkJKTsKIAkJCXBhdGggPSBzdmc7CkBA
IC0xNzY3NSw2ICsxNzY4Nyw3IEBACiAJCQkJQjIyMjc5N0EwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0FuaW1hdGVDb2xvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTg1MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFBhdGhEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyNzk4ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRQb2ludHMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA4NzhCMUZEMTA4NzRFM0YwMEE1NTA5NyAvKiBTVkdBbmltYXRlZFByb3BlcnR5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk4RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5p
bWF0ZWRUZW1wbGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OTAwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0FuaW1hdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5MzBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtMTc4NDgsNiArMTc4NjEsOCBAQAogCQkJCUIyMjI3QUYzMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdWaWV3U3BlYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRjYwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1pvb21BbmRQYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRTRFQzk4MEQwMEMy
MkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4NzhCMUZG
MTA4NzRFM0YwMEE1NTA5NyAvKiBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMDg3OEIyMDAxMDg3NEUzRjAwQTU1MDk3IC8qIFN5bmNocm9uaXph
YmxlVHlwZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTYyRDlCMDk4NUY0MTYwMEUx
QjVFMyAvKiBTeXN0ZW1UaW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjA1MTBBMTU0RjA5
MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTNCRUMzMEQy
MjJCMUQwMDdFMDZFNCAvKiBUYWdOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMDAwOSw2
ICsyMDAyNCw3IEBACiAJCQkJQjIyMjdBRjIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1ZpZXdTcGVj
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUY1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkda
b29tQW5kUGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRTRFQzk3MEQwMEMyMkIwMDQzMjY0
MyAvKiBTVkdab29tRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDg3OEIxRkUxMDg3NEUz
RjAwQTU1MDk3IC8qIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTY1ODJBMTYzMDk5OTlENkQwMEJFRUI2RCAvKiBTeXN0ZW1UaW1lTWFjLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTNCRUMyMEQyMjJCMUQwMDdFMDZFNCAvKiBUYWdOb2Rl
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTUwQjZBNTA5OURGMDI3MDA5MEQ3ODEgLyog
VGV4dC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDQ5
NjA0KQorKysgV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTAsMyArMTUwLDQgQEAKICNpbmNsdWRlICJTVkdWaWV3U3BlYy5jcHAiCiAjaW5jbHVkZSAiU1ZH
Wm9vbUFuZFBhbi5jcHAiCiAjaW5jbHVkZSAiU1ZHWm9vbUV2ZW50LmNwcCIKKyNpbmNsdWRlICJT
eW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlci5jcHAiCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFByb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eS5oCShyZXZpc2lvbiA0OTYwNCkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
UHJvcGVydHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFByb3BlcnR5
QmFzZSgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemUoKSBjb25zdCA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydEFuaW1hdGlvbigpIGNvbnN0ID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRpb24oKSA9IDA7CiAgICAgfTsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25z
dCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CkBAIC0xMjUsNiArMTI3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBUZWFyIG9mZnMgb25seSB1c2Vk
IGJ5IGJpbmRpbmdzLCBuZXZlciBpbiBpbnRlcm5hbCBjb2RlCiAgICAgICAgIFBhc3NSZWZQdHI8
VGVhck9mZj4gYW5pbWF0ZWRUZWFyT2ZmKCkgY29uc3Q7CiAKKyAgICAgICAgdm9pZCByZWdpc3Rl
clByb3BlcnR5KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZSgpIGNvbnN0Owog
CiAgICAgICAgIHZvaWQgc3RhcnRBbmltYXRpb24oKSBjb25zdDsKQEAgLTE0MSw2ICsxNDQsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG1fYXR0
cmlidXRlSWRlbnRpZmllcjsKIAogICAgICAgICBtdXRhYmxlIFN5bmNocm9uaXphYmxlVHlwZVdy
YXBwZXI8U3RvcmFibGVUeXBlPiBtX3ZhbHVlOworCisjaWZuZGVmIE5ERUJVRworICAgICAgICBi
b29sIG1fcmVnaXN0ZXJlZDsKKyNlbmRpZgogICAgIH07CiAKICAgICAvLyBTVkdBbmltYXRlZFBy
b3BlcnR5VGVhck9mZiBpbXBsZW1lbnRhdGlvbgpAQCAtMTg3LDggKzE5NCwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCiAg
ICAgICAgICwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkp
CiAgICAgICAgICwgbV92YWx1ZSgpCisjaWZuZGVmIE5ERUJVRworICAgICAgICAsIG1fcmVnaXN0
ZXJlZChmYWxzZSkKKyNlbmRpZgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fb3duZXJUeXBlKTsK
KyAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eSgpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBU
YWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CkBAIC0xOTksOCArMjEwLDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFt
ZSkKICAgICAgICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlSWRlbnRpZmllcikK
ICAgICAgICAgLCBtX3ZhbHVlKCkKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgICwgbV9yZWdpc3Rl
cmVkKGZhbHNlKQorI2VuZGlmCiAgICAgewogICAgICAgICBBU1NFUlQobV9vd25lclR5cGUpOwor
ICAgICAgICByZWdpc3RlclByb3BlcnR5KCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRh
Z05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KQEAgLTIxMiw4ICsyMjcsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1l
KQogICAgICAgICAsIG1fYXR0cmlidXRlSWRlbnRpZmllcihhdHRyaWJ1dGVOYW1lLmxvY2FsTmFt
ZSgpKQogICAgICAgICAsIG1fdmFsdWUoYXJnMSkKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgICwg
bV9yZWdpc3RlcmVkKGZhbHNlKQorI2VuZGlmCiAgICAgewogICAgICAgICBBU1NFUlQobV9vd25l
clR5cGUpOworICAgICAgICByZWdpc3RlclByb3BlcnR5KCk7CiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0
IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KQEAgLTIyNiw4ICsyNDUs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShhdHRy
aWJ1dGVOYW1lKQogICAgICAgICAsIG1fYXR0cmlidXRlSWRlbnRpZmllcihhdHRyaWJ1dGVJZGVu
dGlmaWVyKQogICAgICAgICAsIG1fdmFsdWUoYXJnMSkKKyNpZm5kZWYgTkRFQlVHCisgICAgICAg
ICwgbV9yZWdpc3RlcmVkKGZhbHNlKQorI2VuZGlmCiAgICAgewogICAgICAgICBBU1NFUlQobV9v
d25lclR5cGUpOworICAgICAgICByZWdpc3RlclByb3BlcnR5KCk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNv
bnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KQEAgLTI0MCw4ICsy
NjMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShh
dHRyaWJ1dGVOYW1lKQogICAgICAgICAsIG1fYXR0cmlidXRlSWRlbnRpZmllcihhdHRyaWJ1dGVO
YW1lLmxvY2FsTmFtZSgpKQogICAgICAgICAsIG1fdmFsdWUoYXJnMSwgYXJnMikKKyNpZm5kZWYg
TkRFQlVHCisgICAgICAgICwgbV9yZWdpc3RlcmVkKGZhbHNlKQorI2VuZGlmCiAgICAgewogICAg
ICAgICBBU1NFUlQobV9vd25lclR5cGUpOworICAgICAgICByZWdpc3RlclByb3BlcnR5KCk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBBbmlt
YXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFt
ZT4KQEAgLTI1NSw4ICsyODIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAsIG1f
YXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQogICAgICAgICAsIG1fYXR0cmlidXRlSWRlbnRp
ZmllcihhdHRyaWJ1dGVJZGVudGlmaWVyKQogICAgICAgICAsIG1fdmFsdWUoYXJnMSwgYXJnMikK
KyNpZm5kZWYgTkRFQlVHCisgICAgICAgICwgbV9yZWdpc3RlcmVkKGZhbHNlKQorI2VuZGlmCiAg
ICAgewogICAgICAgICBBU1NFUlQobV9vd25lclR5cGUpOworICAgICAgICByZWdpc3RlclByb3Bl
cnR5KCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlQXJnLCB0eXBl
bmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFBy
b3BlcnR5TmFtZT4KQEAgLTI3MCw4ICszMDEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAsIG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQogICAgICAgICAsIG1fYXR0cmli
dXRlSWRlbnRpZmllcihhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKQogICAgICAgICAsIG1fdmFs
dWUoYXJnMSwgYXJnMiwgYXJnMykKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgICwgbV9yZWdpc3Rl
cmVkKGZhbHNlKQorI2VuZGlmCiAgICAgewogICAgICAgICBBU1NFUlQobV9vd25lclR5cGUpOwor
ICAgICAgICByZWdpc3RlclByb3BlcnR5KCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3duZXJUeXBlQXJnLCB0eXBlbmFtZSBBbmltYXRlZFR5cGVBcmcsIGNvbnN0IGNoYXIqIFRh
Z05hbWUsIGNvbnN0IGNoYXIqIFByb3BlcnR5TmFtZT4KQEAgLTI4NiwyMCArMzIxLDI2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFt
ZSkKICAgICAgICAgLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlSWRlbnRpZmllcikK
ICAgICAgICAgLCBtX3ZhbHVlKGFyZzEsIGFyZzIsIGFyZzMpCisjaWZuZGVmIE5ERUJVRworICAg
ICAgICAsIG1fcmVnaXN0ZXJlZChmYWxzZSkKKyNlbmRpZgogICAgIHsKICAgICAgICAgQVNTRVJU
KG1fb3duZXJUeXBlKTsKKyAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eSgpOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJn
LCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CiAgICAgdHlw
ZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywg
VGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6RGVjb3JhdGVkVHlwZQogICAgIFNWR0FuaW1hdGVkUHJv
cGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFt
ZT46OnZhbHVlKCkgY29uc3QKICAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZ2lzdGVyZWQpOwog
ICAgICAgICByZXR1cm4gbV92YWx1ZTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
d25lclR5cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFt
ZSwgY29uc3QgY2hhciogUHJvcGVydHlOYW1lPgogICAgIHZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eTxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6
c2V0VmFsdWUodHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6RGVjb3JhdGVkVHlwZSBuZXdW
YWx1ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZ2lzdGVyZWQpOwogICAgICAgICBtX3Zh
bHVlID0gbmV3VmFsdWU7CiAgICAgICAgIG93bmVyRWxlbWVudCgpLT5zZXRTeW5jaHJvbml6ZWRT
VkdBdHRyaWJ1dGVzKGZhbHNlKTsKICAgICB9CkBAIC0zMDgsNiArMzQ5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJUeXBlQXJn
LCBBbmltYXRlZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OkRlY29yYXRlZFR5cGUK
ICAgICBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBU
YWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpiYXNlVmFsdWUoKSBjb25zdAogICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fcmVnaXN0ZXJlZCk7CiAgICAgICAgIGNvbnN0IE93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50ID0gdGhpcy0+b3duZXJFbGVtZW50KCk7CiAgICAgICAgIFNWR0RvY3VtZW50RXh0ZW5z
aW9ucyogZXh0ZW5zaW9ucyA9IG93bmVyRWxlbWVudC0+YWNjZXNzRG9jdW1lbnRTVkdFeHRlbnNp
b25zKCk7CiAgICAgICAgIGlmIChleHRlbnNpb25zICYmIGV4dGVuc2lvbnMtPmhhc0Jhc2VWYWx1
ZTxEZWNvcmF0ZWRUeXBlPihvd25lckVsZW1lbnQsIG1fYXR0cmlidXRlSWRlbnRpZmllcikpCkBA
IC0zMTksNiArMzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBU
YWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CiAgICAgdm9pZCBTVkdBbmltYXRlZFBy
b3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5h
bWU+OjpzZXRCYXNlVmFsdWUodHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6RGVjb3JhdGVk
VHlwZSBuZXdWYWx1ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZ2lzdGVyZWQpOwogICAg
ICAgICBjb25zdCBPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IHRoaXMtPm93bmVyRWxlbWVu
dCgpOwogICAgICAgICBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGV4dGVuc2lvbnMgPSBvd25lckVs
ZW1lbnQtPmFjY2Vzc0RvY3VtZW50U1ZHRXh0ZW5zaW9ucygpOwogICAgICAgICBpZiAoZXh0ZW5z
aW9ucyAmJiBleHRlbnNpb25zLT5oYXNCYXNlVmFsdWU8RGVjb3JhdGVkVHlwZT4ob3duZXJFbGVt
ZW50LCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIpKSB7CkBAIC0zMzUsMTIgKzM3OCwyNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgUGFzc1JlZlB0cjx0eXBlbmFtZSBTVkdBbmltYXRlZFByb3Bl
cnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+
OjpUZWFyT2ZmPgogICAgIFNWR0FuaW1hdGVkUHJvcGVydHk8T3duZXJUeXBlQXJnLCBBbmltYXRl
ZFR5cGVBcmcsIFRhZ05hbWUsIFByb3BlcnR5TmFtZT46OmFuaW1hdGVkVGVhck9mZigpIGNvbnN0
CiAgICAgeworICAgICAgICBBU1NFUlQobV9yZWdpc3RlcmVkKTsKICAgICAgICAgcmV0dXJuIGxv
b2t1cE9yQ3JlYXRlV3JhcHBlcjxPd25lclR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFt
ZSwgUHJvcGVydHlOYW1lLCBUZWFyT2ZmLCBPd25lckVsZW1lbnQ+KCp0aGlzLCBvd25lckVsZW1l
bnQoKSwgbV9hdHRyaWJ1dGVOYW1lLCBtX2F0dHJpYnV0ZUlkZW50aWZpZXIpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0ZWRUeXBl
QXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+CisgICAg
dm9pZCBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBlQXJnLCBU
YWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpyZWdpc3RlclByb3BlcnR5KCkKKyAgICB7CisgICAgICAg
IEFTU0VSVCghbV9yZWdpc3RlcmVkKTsKKyAgICAgICAgb3duZXJFbGVtZW50KCktPnByb3BlcnR5
Q29udHJvbGxlcigpLnJlZ2lzdGVyUHJvcGVydHkobV9hdHRyaWJ1dGVOYW1lLCB0aGlzKTsKKwor
I2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9yZWdpc3RlcmVkID0gdHJ1ZTsKKyNlbmRpZgorICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlwZW5hbWUgQW5pbWF0
ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQcm9wZXJ0eU5hbWU+
CiAgICAgdm9pZCBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywgQW5pbWF0ZWRUeXBl
QXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpzeW5jaHJvbml6ZSgpIGNvbnN0CiAgICAgewor
ICAgICAgICBBU1NFUlQobV9yZWdpc3RlcmVkKTsKICAgICAgICAgaWYgKCFtX3ZhbHVlLm5lZWRz
U3luY2hyb25pemF0aW9uKCkpIAogICAgICAgICAgICAgcmV0dXJuOyAKIApAQCAtMzUxLDYgKzQw
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5
cGVBcmcsIHR5cGVuYW1lIEFuaW1hdGVkVHlwZUFyZywgY29uc3QgY2hhciogVGFnTmFtZSwgY29u
c3QgY2hhciogUHJvcGVydHlOYW1lPgogICAgIHZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25l
clR5cGVBcmcsIEFuaW1hdGVkVHlwZUFyZywgVGFnTmFtZSwgUHJvcGVydHlOYW1lPjo6c3RhcnRB
bmltYXRpb24oKSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcmVnaXN0ZXJlZCk7CiAg
ICAgICAgIGNvbnN0IE93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gdGhpcy0+b3duZXJFbGVt
ZW50KCk7CiAgICAgICAgIGlmIChTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGV4dGVuc2lvbnMgPSBv
d25lckVsZW1lbnQtPmFjY2Vzc0RvY3VtZW50U1ZHRXh0ZW5zaW9ucygpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoIWV4dGVuc2lvbnMtPmhhc0Jhc2VWYWx1ZTxEZWNvcmF0ZWRUeXBlPihvd25lckVs
ZW1lbnQsIG1fYXR0cmlidXRlSWRlbnRpZmllcikpOwpAQCAtMzYxLDExICs0MTgsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZUFyZywgdHlw
ZW5hbWUgQW5pbWF0ZWRUeXBlQXJnLCBjb25zdCBjaGFyKiBUYWdOYW1lLCBjb25zdCBjaGFyKiBQ
cm9wZXJ0eU5hbWU+CiAgICAgdm9pZCBTVkdBbmltYXRlZFByb3BlcnR5PE93bmVyVHlwZUFyZywg
QW5pbWF0ZWRUeXBlQXJnLCBUYWdOYW1lLCBQcm9wZXJ0eU5hbWU+OjpzdG9wQW5pbWF0aW9uKCkK
ICAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZ2lzdGVyZWQpOwogICAgICAgICBjb25zdCBPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IHRoaXMtPm93bmVyRWxlbWVudCgpOwogICAgICAgICBp
ZiAoU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBleHRlbnNpb25zID0gb3duZXJFbGVtZW50LT5hY2Nl
c3NEb2N1bWVudFNWR0V4dGVuc2lvbnMoKSkgewogICAgICAgICAgICAgQVNTRVJUKGV4dGVuc2lv
bnMtPmhhc0Jhc2VWYWx1ZTxEZWNvcmF0ZWRUeXBlPihvd25lckVsZW1lbnQsIG1fYXR0cmlidXRl
SWRlbnRpZmllcikpOwogICAgICAgICAgICAgc2V0VmFsdWUoZXh0ZW5zaW9ucy0+YmFzZVZhbHVl
PERlY29yYXRlZFR5cGU+KG93bmVyRWxlbWVudCwgbV9hdHRyaWJ1dGVJZGVudGlmaWVyKSk7Ci0g
ICAgICAgICAgICBleHRlbnNpb25zLT5yZW1vdmVCYXNlVmFsdWU8QW5pbWF0ZWRUeXBlPihvd25l
ckVsZW1lbnQsIG1fYXR0cmlidXRlSWRlbnRpZmllcik7CisgICAgICAgICAgICBleHRlbnNpb25z
LT5yZW1vdmVCYXNlVmFsdWU8RGVjb3JhdGVkVHlwZT4ob3duZXJFbGVtZW50LCBtX2F0dHJpYnV0
ZUlkZW50aWZpZXIpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFRlbXBsYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZS5oCShyZXZpc2lvbiA0OTYwNCkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVt
cGxhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1OCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICBpZiAoIXdyYXBwZXIpIHsKICAgICAgICAgICAgIHdyYXBwZXIgPSBU
eXBlOjpjcmVhdGUoY3JlYXRvciwgZWxlbWVudCwgYXR0ck5hbWUpOwotICAgICAgICAgICAgZWxl
bWVudC0+YWRkU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXIoYXR0ck5hbWUsIGNyZWF0b3IpOworICAg
ICAgICAgICAgZWxlbWVudC0+cHJvcGVydHlDb250cm9sbGVyKCkuc2V0UHJvcGVydHlOZWVkc1N5
bmNocm9uaXphdGlvbihhdHRyTmFtZSk7CiAgICAgICAgICAgICBUeXBlOjp3cmFwcGVyQ2FjaGUo
KS0+c2V0KGtleSwgd3JhcHBlci5nZXQoKSk7CiAgICAgICAgIH0KIApJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAJKHJldmlzaW9uIDQ5NjA0KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3MCwxMCArMjcwLDEwIEBAIHZvaWQgU1ZHRWxlbWVudDo6dXBkYXRlQW5p
bWF0ZWRTVkdBdHRyaWIKICAgICBtX3N5bmNocm9uaXppbmdTVkdBdHRyaWJ1dGVzID0gdHJ1ZTsK
IAogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkgewotICAgICAgICBpbnZva2VBbGxTVkdQcm9wZXJ0
eVN5bmNocm9uaXplcnMoKTsKKyAgICAgICAgbV9wcm9wZXJ0eUNvbnRyb2xsZXIuc3luY2hyb25p
emVBbGxQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHNldFN5bmNocm9uaXplZFNWR0F0dHJpYnV0ZXMo
dHJ1ZSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGludm9rZVNWR1Byb3BlcnR5U3luY2hyb25pemVy
KG5hbWUpOworICAgICAgICBtX3Byb3BlcnR5Q29udHJvbGxlci5zeW5jaHJvbml6ZVByb3BlcnR5
KG5hbWUpOwogCiAgICAgbV9zeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcyA9IGZhbHNlOwogfQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaAkocmV2aXNpb24gNDk2MDQpCisrKyBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2lu
Y2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5Lmgi
CisjaW5jbHVkZSAiU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC03NywxNCArNzgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4gaW5zdGFuY2VzRm9yRWxlbWVu
dCgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgYWRkU1ZHUHJvcGVydHlTeW5jaHJvbml6ZXIoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHlCYXNl
JiBiYXNlKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBtX3N2Z1Byb3BlcnR5TWFwLnNl
dChhdHRyTmFtZS5sb2NhbE5hbWUoKSwgJmJhc2UpOwotICAgICAgICB9Ci0KICAgICAgICAgdm9p
ZCBzZXRDdXJzb3JFbGVtZW50KFNWR0N1cnNvckVsZW1lbnQqIGN1cnNvckVsZW1lbnQpIHsgbV9j
dXJzb3JFbGVtZW50ID0gY3Vyc29yRWxlbWVudDsgfQogICAgICAgICB2b2lkIHNldEN1cnNvcklt
YWdlVmFsdWUoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogY3Vyc29ySW1hZ2VWYWx1ZSkgeyBtX2N1cnNv
ckltYWdlVmFsdWUgPSBjdXJzb3JJbWFnZVZhbHVlOyB9CiAKKyAgICAgICAgU3luY2hyb25pemFi
bGVQcm9wZXJ0eUNvbnRyb2xsZXImIHByb3BlcnR5Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvcGVydHlDb250cm9sbGVyOyB9CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFNWR0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKQEAgLTEwNiwzNiArMTA0
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRQ
ZW5kaW5nUmVzb3VyY2UoKSB7IH0KIAotICAgICAgICAvLyBJbmxpbmVkIG1ldGhvZHMgaGFuZGxp
bmcgU1ZHIHByb3BlcnR5IHN5bmNocm9uaXphdGlvbgotICAgICAgICB2b2lkIGludm9rZVNWR1By
b3BlcnR5U3luY2hyb25pemVyKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG1fc3ZnUHJvcGVydHlNYXAuY29udGFpbnMobmFtZSkpIHsKLSAgICAg
ICAgICAgICAgICBjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5QmFzZSogcHJvcGVydHkgPSBtX3N2
Z1Byb3BlcnR5TWFwLmdldChuYW1lKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocHJvcGVydHkp
OwotCi0gICAgICAgICAgICAgICAgcHJvcGVydHktPnN5bmNocm9uaXplKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGludm9rZUFsbFNWR1Byb3BlcnR5U3luY2hy
b25pemVycygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBj
b25zdCBTVkdBbmltYXRlZFByb3BlcnR5QmFzZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3Zn
UHJvcGVydHlNYXAuYmVnaW4oKTsKLSAgICAgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBj
b25zdCBTVkdBbmltYXRlZFByb3BlcnR5QmFzZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3N2
Z1Byb3BlcnR5TWFwLmVuZCgpOwotICAgICAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICAgICAgICAgIGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHlCYXNlKiBwcm9wZXJ0
eSA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKLQotICAg
ICAgICAgICAgICAgIHByb3BlcnR5LT5zeW5jaHJvbml6ZSgpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KICAgICAgICAgdm9pZCBtYXBJbnN0YW5jZVRvRWxlbWVudChTVkdFbGVtZW50SW5z
dGFuY2UqKTsKICAgICAgICAgdm9pZCByZW1vdmVJbnN0YW5jZU1hcHBpbmcoU1ZHRWxlbWVudElu
c3RhbmNlKik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291
cmNlcygpOwogCiAgICAgICAgIENvbnRhaW5lck5vZGUqIG1fc2hhZG93UGFyZW50OwotICAgICAg
ICBtdXRhYmxlIEhhc2hNYXA8U3RyaW5nLCBjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5QmFzZSo+
IG1fc3ZnUHJvcGVydHlNYXA7CisgICAgICAgIG11dGFibGUgU3luY2hyb25pemFibGVQcm9wZXJ0
eUNvbnRyb2xsZXIgbV9wcm9wZXJ0eUNvbnRyb2xsZXI7CiAKICAgICAgICAgU1ZHQ3Vyc29yRWxl
bWVudCogbV9jdXJzb3JFbGVtZW50OwogICAgICAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBtX2N1
cnNvckltYWdlVmFsdWU7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCShyZXZpc2lvbiA0OTYwNCkKKysr
IFdlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNWR1ZpZXdTcGVjOjpTVkdWaWV3U3BlYyhjb25z
dCBTVkdTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKICAgICA6IFNWR0ZpdFRvVmlld0JveCgp
CiAgICAgLCBTVkdab29tQW5kUGFuKCkKKyAgICAsIG1fY29udGV4dEVsZW1lbnQoY29udGV4dEVs
ZW1lbnQpCiAgICAgLCBtX3ZpZXdCb3godGhpcywgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKQogICAg
ICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKHRoaXMsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJh
dGlvQXR0ciwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6Y3JlYXRlKCkpCiAgICAgLCBtX3RyYW5z
Zm9ybShTVkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpKQot
ICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKIHsKIH0KIApAQCAtNzQsMTIg
Kzc0LDcgQEAgdm9pZCBTVkdWaWV3U3BlYzo6c2V0Vmlld1RhcmdldFN0cmluZyhjbwogCiBTVkdF
bGVtZW50KiBTVkdWaWV3U3BlYzo6dmlld1RhcmdldCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PFNWR0VsZW1lbnQqPihtX2NvbnRleHRFbGVtZW50LT5vd25lckRvY3VtZW50KCkt
PmdldEVsZW1lbnRCeUlkKG1fdmlld1RhcmdldFN0cmluZykpOwotfQotCi1jb25zdCBTVkdFbGVt
ZW50KiBTVkdWaWV3U3BlYzo6Y29udGV4dEVsZW1lbnQoKSBjb25zdAotewotICAgIHJldHVybiBt
X2NvbnRleHRFbGVtZW50OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4obV9j
b250ZXh0RWxlbWVudC0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQobV92aWV3VGFyZ2V0U3Ry
aW5nKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBVQ2hhciBzdmdWaWV3U3BlY1tdID0geydzJywgJ3Yn
LCAnZycsICdWJywgJ2knLCAnZScsICd3J307CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdWaWV3U3Bl
Yy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgJKHJldmlzaW9uIDQ5
NjA0KQorKysgV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MTUgKzUxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIHZpZXdUYXJn
ZXRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdUYXJnZXRTdHJpbmc7IH0KICAgICAgICAg
U1ZHRWxlbWVudCogdmlld1RhcmdldCgpIGNvbnN0OwogCi0gICAgICAgIGNvbnN0IFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFNWR1NWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0RWxlbWVudDsgfQogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgY29uc3QgU1ZHU1ZHRWxlbWVudCogbV9jb250ZXh0RWxlbWVu
dDsKKwogICAgICAgICAvLyBTVkdGaXRUb1ZpZXdCb3gKICAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR1ZpZXdTcGVjLCBTVkdGaXRUb1ZpZXdCb3hJZGVudGlmaWVyLCBT
VkdOYW1lczo6dmlld0JveEF0dHJTdHJpbmcsIEZsb2F0UmVjdCwgVmlld0JveCwgdmlld0JveCkK
ICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1ZpZXdTcGVjLCBTVkdG
aXRUb1ZpZXdCb3hJZGVudGlmaWVyLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHJT
dHJpbmcsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNl
cnZlQXNwZWN0UmF0aW8pCiAKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHVHJhbnNmb3JtTGlz
dD4gbV90cmFuc2Zvcm07Ci0gICAgICAgIGNvbnN0IFNWR1NWR0VsZW1lbnQqIG1fY29udGV4dEVs
ZW1lbnQ7CiAgICAgICAgIFN0cmluZyBtX3ZpZXdUYXJnZXRTdHJpbmc7CiAgICAgfTsKIApJbmRl
eDogV2ViQ29yZS9zdmcvU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1N5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL1N5bmNocm9uaXphYmxlUHJvcGVydHlDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgICAgQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVk
ZSAiU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIk5hbWVk
Tm9kZU1hcC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3Bl
cnR5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3luY2hyb25pemFibGVQcm9wZXJ0eUNv
bnRyb2xsZXI6OlN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyKCkKK3sKK30KKwordm9p
ZCBTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlcjo6cmVnaXN0ZXJQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UqIGJhc2Up
Cit7CisgICAgLy8gJ2F0dHJOYW1lJyBpcyBhbWJpZ2lvdXMuIEZvciBpbnN0YW5jZSBpbiBTVkdN
YXJrZXJFbGVtZW50IGJvdGggJ29yaWVudFR5cGUnIC8gJ29yaWVudEFuZ2xlJworICAgIC8vIFNW
RyBET00gb2JqZWN0cyBhcmUgc3luY2hyb25pemVkIHdpdGggdGhlICdvcmllbnQnIGF0dHJpYnV0
ZS4gVGhpcyB3aHkgd2UgbmVlZCBhIEhhc2hTZXQuCisgICAgU3luY2hyb25pemFibGVQcm9wZXJ0
eSBwcm9wZXJ0eShiYXNlKTsKKworICAgIFByb3BlcnR5TWFwOjppdGVyYXRvciBpdCA9IG1fbWFw
LmZpbmQoYXR0ck5hbWUubG9jYWxOYW1lKCkpOworICAgIGlmIChpdCA9PSBtX21hcC5lbmQoKSkg
eworICAgICAgICBQcm9wZXJ0aWVzIHByb3BlcnRpZXM7CisgICAgICAgIHByb3BlcnRpZXMuYWRk
KHByb3BlcnR5KTsKKyAgICAgICAgbV9tYXAuc2V0KGF0dHJOYW1lLmxvY2FsTmFtZSgpLCBwcm9w
ZXJ0aWVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFByb3BlcnRpZXMmIHByb3Bl
cnRpZXMgPSBpdC0+c2Vjb25kOworICAgIEFTU0VSVCghcHJvcGVydGllcy5pc0VtcHR5KCkpOwor
CisgICAgcHJvcGVydGllcy5hZGQocHJvcGVydHkpOworfQorCit2b2lkIFN5bmNocm9uaXphYmxl
UHJvcGVydHlDb250cm9sbGVyOjpzZXRQcm9wZXJ0eU5lZWRzU3luY2hyb25pemF0aW9uKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFByb3BlcnR5TWFwOjppdGVyYXRvciBp
dFByb3AgPSBtX21hcC5maW5kKGF0dHJOYW1lLmxvY2FsTmFtZSgpKTsKKyAgICBBU1NFUlQoaXRQ
cm9wICE9IG1fbWFwLmVuZCgpKTsKKworICAgIFByb3BlcnRpZXMmIHByb3BlcnRpZXMgPSBpdFBy
b3AtPnNlY29uZDsKKyAgICBBU1NFUlQoIXByb3BlcnRpZXMuaXNFbXB0eSgpKTsKKworICAgIFBy
b3BlcnRpZXM6Oml0ZXJhdG9yIGl0ID0gcHJvcGVydGllcy5iZWdpbigpOworICAgIFByb3BlcnRp
ZXM6Oml0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CisKKyAgICBmb3IgKDsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgICAgIFN5bmNocm9uaXphYmxlUHJvcGVydHkmIHByb3BlcnR5ID0g
Kml0OworICAgICAgICBBU1NFUlQocHJvcGVydHkuYmFzZSk7CisgICAgICAgIHByb3BlcnR5LnNo
b3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgU3luY2hyb25pemFibGVQ
cm9wZXJ0eUNvbnRyb2xsZXI6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIFByb3BlcnR5TWFwOjppdGVyYXRvciBpdFByb3AgPSBtX21hcC5maW5kKG5hbWUp
OworICAgIGlmIChpdFByb3AgPT0gbV9tYXAuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFByb3BlcnRpZXMmIHByb3BlcnRpZXMgPSBpdFByb3AtPnNlY29uZDsKKyAgICBBU1NFUlQoIXBy
b3BlcnRpZXMuaXNFbXB0eSgpKTsKKworICAgIFByb3BlcnRpZXM6Oml0ZXJhdG9yIGl0ID0gcHJv
cGVydGllcy5iZWdpbigpOworICAgIFByb3BlcnRpZXM6Oml0ZXJhdG9yIGVuZCA9IHByb3BlcnRp
ZXMuZW5kKCk7CisKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFN5bmNo
cm9uaXphYmxlUHJvcGVydHkmIHByb3BlcnR5ID0gKml0OworICAgICAgICBBU1NFUlQocHJvcGVy
dHkuYmFzZSk7CisKKyAgICAgICAgaWYgKCFwcm9wZXJ0eS5zaG91bGRTeW5jaHJvbml6ZSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHByb3BlcnR5LmJhc2UtPnN5bmNocm9uaXpl
KCk7CisgICAgfQorfQorCit2b2lkIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyOjpz
eW5jaHJvbml6ZUFsbFByb3BlcnRpZXMoKQoreworICAgIGlmIChtX21hcC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFByb3BlcnR5TWFwOjppdGVyYXRvciBpdFByb3AgPSBtX21h
cC5iZWdpbigpOworICAgIFByb3BlcnR5TWFwOjppdGVyYXRvciBlbmRQcm9wID0gbV9tYXAuZW5k
KCk7CisKKyAgICBmb3IgKDsgaXRQcm9wICE9IGVuZFByb3A7ICsraXRQcm9wKSB7CisgICAgICAg
IFByb3BlcnRpZXMmIHByb3BlcnRpZXMgPSBpdFByb3AtPnNlY29uZDsKKyAgICAgICAgQVNTRVJU
KCFwcm9wZXJ0aWVzLmlzRW1wdHkoKSk7CisKKyAgICAgICAgUHJvcGVydGllczo6aXRlcmF0b3Ig
aXQgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7CisgICAgICAgIFByb3BlcnRpZXM6Oml0ZXJhdG9yIGVu
ZCA9IHByb3BlcnRpZXMuZW5kKCk7CisKKyAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICAgICAgU3luY2hyb25pemFibGVQcm9wZXJ0eSYgcHJvcGVydHkgPSAqaXQ7Cisg
ICAgICAgICAgICBBU1NFUlQocHJvcGVydHkuYmFzZSk7CisKKyAgICAgICAgICAgIGlmICghcHJv
cGVydHkuc2hvdWxkU3luY2hyb25pemUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIHByb3BlcnR5LmJhc2UtPnN5bmNocm9uaXplKCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBQcm9wZXJ0eU1hcDo6aXRlcmF0b3IgaXRQ
cm9wID0gbV9tYXAuZmluZChuYW1lKTsKKyAgICBpZiAoaXRQcm9wID09IG1fbWFwLmVuZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzID0gaXRQcm9wLT5z
ZWNvbmQ7CisgICAgQVNTRVJUKCFwcm9wZXJ0aWVzLmlzRW1wdHkoKSk7CisKKyAgICBQcm9wZXJ0
aWVzOjppdGVyYXRvciBpdCA9IHByb3BlcnRpZXMuYmVnaW4oKTsKKyAgICBQcm9wZXJ0aWVzOjpp
dGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOworCisgICAgZm9yICg7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICBTeW5jaHJvbml6YWJsZVByb3BlcnR5JiBwcm9wZXJ0eSA9ICppdDsK
KyAgICAgICAgQVNTRVJUKHByb3BlcnR5LmJhc2UpOworICAgICAgICBwcm9wZXJ0eS5iYXNlLT5z
dGFydEFuaW1hdGlvbigpOworICAgIH0KK30KKwordm9pZCBTeW5jaHJvbml6YWJsZVByb3BlcnR5
Q29udHJvbGxlcjo6c3RvcEFuaW1hdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgUHJv
cGVydHlNYXA6Oml0ZXJhdG9yIGl0UHJvcCA9IG1fbWFwLmZpbmQobmFtZSk7CisgICAgaWYgKGl0
UHJvcCA9PSBtX21hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUHJvcGVydGllcyYg
cHJvcGVydGllcyA9IGl0UHJvcC0+c2Vjb25kOworICAgIEFTU0VSVCghcHJvcGVydGllcy5pc0Vt
cHR5KCkpOworCisgICAgUHJvcGVydGllczo6aXRlcmF0b3IgaXQgPSBwcm9wZXJ0aWVzLmJlZ2lu
KCk7CisgICAgUHJvcGVydGllczo6aXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKKwor
ICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgU3luY2hyb25pemFibGVQcm9w
ZXJ0eSYgcHJvcGVydHkgPSAqaXQ7CisgICAgICAgIEFTU0VSVChwcm9wZXJ0eS5iYXNlKTsKKyAg
ICAgICAgcHJvcGVydHkuYmFzZS0+c3RvcEFuaW1hdGlvbigpOworICAgIH0KK30KKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3ZnL1N5bmNocm9uaXphYmxlUHJv
cGVydHlDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU3luY2hyb25pemFi
bGVQcm9wZXJ0eUNvbnRyb2xsZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL1N5bmNo
cm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIy
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAw
OS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFN5bmNocm9uaXphYmxlUHJvcGVy
dHlDb250cm9sbGVyX2gKKyNkZWZpbmUgU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXJf
aAorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFF1YWxpZmllZE5h
bWU7CitjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5QmFzZTsKKworc3RydWN0IFN5bmNocm9uaXph
YmxlUHJvcGVydHkgeworICAgIFN5bmNocm9uaXphYmxlUHJvcGVydHkoKQorICAgICAgICA6IGJh
c2UoMCkKKyAgICAgICAgLCBzaG91bGRTeW5jaHJvbml6ZShmYWxzZSkKKyAgICB7CisgICAgfQor
CisgICAgZXhwbGljaXQgU3luY2hyb25pemFibGVQcm9wZXJ0eShTVkdBbmltYXRlZFByb3BlcnR5
QmFzZSogX2Jhc2UpCisgICAgICAgIDogYmFzZShfYmFzZSkKKyAgICAgICAgLCBzaG91bGRTeW5j
aHJvbml6ZShmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgU3luY2hyb25pemFi
bGVQcm9wZXJ0eShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogYmFz
ZShyZWludGVycHJldF9jYXN0PFNWR0FuaW1hdGVkUHJvcGVydHlCYXNlKj4oLTEpKQorICAgICAg
ICAsIHNob3VsZFN5bmNocm9uaXplKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBiYXNl
ID09IHJlaW50ZXJwcmV0X2Nhc3Q8U1ZHQW5pbWF0ZWRQcm9wZXJ0eUJhc2UqPigtMSk7CisgICAg
fQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN5bmNocm9uaXphYmxlUHJvcGVydHkmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJhc2UgPT0gb3RoZXIuYmFzZSAmJiBz
aG91bGRTeW5jaHJvbml6ZSA9PSBvdGhlci5zaG91bGRTeW5jaHJvbml6ZTsKKyAgICB9CisKKyAg
ICBTVkdBbmltYXRlZFByb3BlcnR5QmFzZSogYmFzZTsKKyAgICBib29sIHNob3VsZFN5bmNocm9u
aXplOworfTsKKworc3RydWN0IFN5bmNocm9uaXphYmxlUHJvcGVydHlIYXNoIHsKKyAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBTeW5jaHJvbml6YWJsZVByb3BlcnR5JiBrZXkpCisgICAg
eworICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2gocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVQ2hhcio+KCZrZXkpLCBzaXplb2YoU3luY2hyb25pemFibGVQcm9wZXJ0eSkgLyBz
aXplb2YoVUNoYXIpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTeW5j
aHJvbml6YWJsZVByb3BlcnR5JiBhLCBjb25zdCBTeW5jaHJvbml6YWJsZVByb3BlcnR5JiBiKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCitzdHJ1Y3Qg
U3luY2hyb25pemFibGVQcm9wZXJ0eUhhc2hUcmFpdHMgOiBXVEY6OkdlbmVyaWNIYXNoVHJhaXRz
PFN5bmNocm9uaXphYmxlUHJvcGVydHk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZh
bHVlSXNaZXJvID0gdHJ1ZTsKKworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1
ZShTeW5jaHJvbml6YWJsZVByb3BlcnR5JiBzbG90KQorICAgIHsKKyAgICAgICAgbmV3ICgmc2xv
dCkgU3luY2hyb25pemFibGVQcm9wZXJ0eShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7Cisg
ICAgfQorCisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgU3luY2hyb25pemFi
bGVQcm9wZXJ0eSYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdmFsdWUuaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKTsKKyAgICB9Cit9OworCisvLyBIZWxwZXIgY2xhc3MgdXNlZCBleGNs
dXNpdmVseSBieSBTVkdFbGVtZW50IHRvIGtlZXAgdHJhY2sgb2YgYWxsIGFuaW1hdGFibGUgcHJv
cGVydGllcyB3aXRoaW4gYSBTVkdFbGVtZW50LAorLy8gYW5kIHdoZXRlciB0aGV5IGFyZSBzdXBw
b3NlZCB0byBiZSBzeW5jaHJvbml6ZWQgb3Igbm90IChkZXBlbmRpbmcgd2hldGVyIEFuaW1hdGVk
UHJvcGVydHlUZWFyT2ZmJ3MgaGF2ZSBiZWVuIGNyZWF0ZWQpCitjbGFzcyBTeW5jaHJvbml6YWJs
ZVByb3BlcnR5Q29udHJvbGxlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAg
dm9pZCByZWdpc3RlclByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBTVkdBbmltYXRlZFBy
b3BlcnR5QmFzZSopOworICAgIHZvaWQgc2V0UHJvcGVydHlOZWVkc1N5bmNocm9uaXphdGlvbihj
b25zdCBRdWFsaWZpZWROYW1lJik7CisKKyAgICB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCBzeW5jaHJvbml6ZUFsbFByb3BlcnRpZXMoKTsKKworICAg
IHZvaWQgc3RhcnRBbmltYXRpb24oY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzdG9wQW5pbWF0
aW9uKGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTVkdFbGVt
ZW50OworICAgIFN5bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyKCk7CisKK3ByaXZhdGU6
CisgICAgdHlwZWRlZiBIYXNoU2V0PFN5bmNocm9uaXphYmxlUHJvcGVydHksIFN5bmNocm9uaXph
YmxlUHJvcGVydHlIYXNoLCBTeW5jaHJvbml6YWJsZVByb3BlcnR5SGFzaFRyYWl0cz4gUHJvcGVy
dGllczsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBQcm9wZXJ0aWVzPiBQcm9wZXJ0eU1h
cDsKKworICAgIFByb3BlcnR5TWFwIG1fbWFwOworfTsKKworfTsKKworI2VuZGlmIC8vIEVOQUJM
RShTVkcpCisjZW5kaWYgLy8gU3luY2hyb25pemFibGVQcm9wZXJ0eUNvbnRyb2xsZXJfaA==
</data>

          </attachment>
      

    </bug>

</bugzilla>