<?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>11540</bug_id>
          
          <creation_ts>2006-11-07 11:21:29 -0800</creation_ts>
          <short_desc>Port of WebKit ToT to S60</short_desc>
          <delta_ts>2008-06-11 00:21:30 -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>Platform</component>
          <version>420+</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>CLOSED</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="alan">zalan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bradley.morrison</cc>
    
    <cc>dacarson</cc>
    
    <cc>koivisto</cc>
    
    <cc>mrowe</cc>
    
    <cc>roland.geisler</cc>
    
    <cc>Sachin.Padma</cc>
    
    <cc>yongjun.zhang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>46614</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2006-11-07 11:21:29 -0800</bug_when>
    <thetext>This bug brings S60 to WebKit ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46585</commentid>
    <comment_count>1</comment_count>
      <attachid>11417</attachid>
    <who name="alan">zalan</who>
    <bug_when>2006-11-07 12:56:02 -0800</bug_when>
    <thetext>Created attachment 11417
contains basic types like point, rect, size and string on symbian platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46586</commentid>
    <comment_count>2</comment_count>
      <attachid>11418</attachid>
    <who name="alan">zalan</who>
    <bug_when>2006-11-07 15:18:03 -0800</bug_when>
    <thetext>Created attachment 11418
platform/PlatformString.h changes were missing from the prev patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46593</commentid>
    <comment_count>3</comment_count>
      <attachid>11418</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-11-07 22:02:24 -0800</bug_when>
    <thetext>Comment on attachment 11418
platform/PlatformString.h changes were missing from the prev patch

Could you explain these changes a little more:

+#if PLATFORM(SYMBIAN)
+#undef CHECK_FOR_HANDLE_LEAKS
+// tot:fixme need page aligned allocations
+#define CHECK_FOR_HANDLE_LEAKS 1
+#endif
+

+#elif PLATFORM(SYMBIAN)
+    // fixme needs to do page aligned allocation
+    block = NULL;

Does Symbian not have a way to allocate at page boundaries? If so you will probably also have problems with JavaScriptCore.


I do&apos;t think it&apos;s necessary to put the comment below in the code, we usually just put stuff like that in the ChangeLog unless what it&apos;s doing is really weird:

+    // char _internalBuffer has to be in front of the bitfields as
+    // Codewarrior (3.2.5 build 461) compiler cannot cope with bitfields and breaks byte aligment
+    char _internalBuffer[WEBCORE_DS_INTERNAL_BUFFER_SIZE]; // Pad out to a (((size + 1) &amp; ~15) + 14) size
+

I suggest using lowercase &quot;symbian&quot; as the platform directory name, we usually use lowercase even when the official name of the relevant platform is capitalized:

Index: WebCore/platform/Symbian/DeprecatedStringSymbian.cpp

The BSD license in DeprecatedStringSymbian.cpp doesn&apos;t quite match the BSD license in the rest of WebKit. Mich of the difference is cosmetic, but it also has the following extra clause:

+*      * Neither the name of the Nokia Corporation nor the names of its
+*        contributors may be used to endorse or promote products derived
+*        from this software without specific prior written permission.

Is there any problem with using the usual two-clause BSD license that&apos;s in other WebKit BSD-licensed code? Please use that if possible. The same applies to a couple of other files.

Did you mean to include the patent license here? There&apos;s no WebKitS60 directory on the trunk otherwise. We&apos;ll have to check with our legal department to include this, I sent an email. In the meantime, would it be ok to submit the rest of the patch without this? I don&apos;t think the patent covers anything submitted so far.

r- for now. Please address these comments and resubmit. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46512</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2006-11-08 09:13:49 -0800</bug_when>
    <thetext>No, Symbian does not have valloc() or anything similar. There is no easy way to do page aligned allocations as far as I can find out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46492</commentid>
    <comment_count>5</comment_count>
    <who name="Yongjun Zhang">yongjun.zhang</who>
    <bug_when>2006-11-08 09:32:06 -0800</bug_when>
    <thetext>valloc is not internal supported by Symbian. The good news is that we are going to use dlmalloc to replace Symbian&apos;s default allocator, and we can simulate page-aligned memory allocation by using dlvalloc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46496</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2006-11-08 10:21:30 -0800</bug_when>
    <thetext>yes, i think we can submit the patch without the patentlicense.txt. 
Nokia uses this modified BSD license text throughout its (BSD)open source contribution but I will check with the legal department whether that is something we can change for WebKit. 
Do you think if you could land the code with the current license header as the legal check could take a while and i really don&apos;t want to block commits just because of that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46403</commentid>
    <comment_count>7</comment_count>
      <attachid>11444</attachid>
    <who name="alan">zalan</who>
    <bug_when>2006-11-09 12:15:33 -0800</bug_when>
    <thetext>Created attachment 11444
basic types for Symbian platform

-lowercase symbian dir
-moved byte alignment comment from .h to WebCore/Changlog
-removed WebKitS60 dir
-haven&apos;t received anything back on the modified BSD header so this patch has the same header as the previous patch had (except the removed patentlicense text)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46326</commentid>
    <comment_count>8</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-11-10 03:33:55 -0800</bug_when>
    <thetext>OK, the code changes all look great, let me check on the license on our end.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46166</commentid>
    <comment_count>9</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-11-10 14:44:01 -0800</bug_when>
    <thetext>License is fine too. r=me. Yay for the first S60 merge patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46083</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2006-11-10 19:04:43 -0800</bug_when>
    <thetext>Landed in r17722.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11417</attachid>
            <date>2006-11-07 12:56:02 -0800</date>
            <delta_ts>2006-11-07 15:18:03 -0800</delta_ts>
            <desc>contains basic types like point, rect, size and string on symbian platform</desc>
            <filename>basictypes.patch</filename>
            <type>text/plain</type>
            <size>33668</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NjQyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYtMTEtMDcgIFphbGFuIEJ1
anRhcyAgPHphbGFuLmJ1anRhc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGRpbmcgczYwL3N5bWJpYW4gcGxhdGZv
cm0gZGVmaW5lcy4gCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTQwCisgICAgICAgIAorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDA2LTEx
LTA2ICBLcnp5c3p0b2YgS293YWxjenlrICA8a2tvd2FsY3p5a0BnbWFpbC5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9u
IDE3NjI3KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTk1LDYgKzk1LDE2IEBACiAjZGVmaW5lIFdURl9QTEFURk9STV9DQUlSTyAxCiAjZW5kaWYK
IAorCisjaWZkZWYgX19TNjBfXworLy8gd2UgYXJlIGNyb3NzLWNvbXBpbGluZywgaXQgaXMgbm90
IHJlYWxseSB3aW5kb3dzCisjdW5kZWYgV1RGX1BMQVRGT1JNX1dJTl9PUworI3VuZGVmIFdURl9Q
TEFURk9STV9XSU4KKyN1bmRlZiBXVEZfUExBVEZPUk1fQ0FJUk8KKyNkZWZpbmUgV1RGX1BMQVRG
T1JNX1M2MCAxCisjZGVmaW5lIFdURl9QTEFURk9STV9TWU1CSUFOIDEKKyNlbmRpZgorCiAvKiBD
UFUgKi8KIAogLyogUExBVEZPUk0oUFBDKSAqLwpAQCAtMTY5LDYgKzE3OSw4IEBACiAjaWYgUExB
VEZPUk0oS0RFKQogLyogRklYTUU6IE5vdCB1c2luZyBRdDQgdW5pY29kZSBmb3Igbm93ISAqLwog
I2RlZmluZSBXVEZfVVNFX0lDVV9VTklDT0RFIDEKKyNlbGlmIFBMQVRGT1JNKFNZTUJJQU4pCisj
ZGVmaW5lIFdURl9VU0VfU1lNQklBTl9VTklDT0RFIDEKICNlbHNlCiAjZGVmaW5lIFdURl9VU0Vf
SUNVX1VOSUNPREUgMQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc2NDIpCisrKyBXZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDA2LTExLTA3ICBaYWxhbiBC
dWp0YXMgIDx6YWxhbi5idWp0YXNAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBiYXNpYyB0eXBlcyBmb3Igc3ltYmlhbiBw
bGF0Zm9ybS4KKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE1NDAKKworICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICAqIHBsYXRmb3JtL0F0b21pY1N0
cmluZy5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjpvcGVyYXRvciBUUHRyQyk6CisgICAgICAg
ICogcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0
aWFsaXplSGFuZGxlTm9kZUJsb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EZXByZWNhdGVkU3Ry
aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vRmxvYXRQb2ludC5oOgorICAgICAgICAqIHBsYXRm
b3JtL0Zsb2F0UmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL0ludFBvaW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vSW50UmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL0ludFNpemUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TdHJpbmdJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vU3ltYmlh
bi9EZXByZWNhdGVkU3RyaW5nU3ltYmlhbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGVwcmVjYXRlZFN0cmluZzo6c2V0QnVmZmVyRnJvbURlcyk6CisgICAgICAgIChXZWJDb3JlOjpE
ZXByZWNhdGVkU3RyaW5nOjpmcm9tRGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRT
dHJpbmc6OmRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkU3RyaW5nOjpkZXM4KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TeW1iaWFuL0Zsb2F0UG9pbnRTeW1iaWFuLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50OjpGbG9hdFBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0UG9pbnQ6Om9wZXJhdG9yIFRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0v
U3ltYmlhbi9GbG9hdFJlY3RTeW1iaWFuLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpG
bG9hdFJlY3Q6OkZsb2F0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJlY3Q6Om9wZXJh
dG9yIFRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6cmVjdCk6CisgICAgICAg
ICogcGxhdGZvcm0vU3ltYmlhbi9JbnRQb2ludFN5bWJpYW4uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkludFBvaW50OjpJbnRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRQb2lu
dDo6b3BlcmF0b3IgVFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TeW1iaWFuL0ludFJlY3RT
eW1iaWFuLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0OjpJbnRSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6Om9wZXJhdG9yIFRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkludFJlY3Q6OlJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL1N5bWJpYW4vSW50U2l6
ZVN5bWJpYW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludFNpemU6OkludFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6SW50U2l6ZTo6b3BlcmF0b3IgVFNpemUpOgorICAgICAgICAq
IHBsYXRmb3JtL1N5bWJpYW4vU3RyaW5nSW1wbFN5bWJpYW4uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0cmluZ0ltcGw6OlN0cmluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U3Ry
aW5nSW1wbDo6ZGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TeW1iaWFuL1N0cmluZ1N5bWJpYW4u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6U3RyaW5nKToKKwogMjAwNi0x
MS0wNiAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSHlhdHQuCkluZGV4OiBXZWJDb3JlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y29uZmlnLmgJKHJldmlzaW9uIDE3NjI3KQorKysgV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBj
b3B5KQpAQCAtNTksNiArNTksMTAgQEAgdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwogCiAjZW5kaWYg
LyogUExBVEZPUk0oV0lOX09TKSAqLwogCisjaWYgIVBMQVRGT1JNKFNZTUJJQU4pCisjZGVmaW5l
IElNUE9SVF9DCisjZGVmaW5lIEVYUE9SVF9DCisjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVz
CiAKQEAgLTc4LDMgKzgyLDIzIEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKICNkZWZpbmUgV1RG
X1VTRV9KQVZBU0NSSVBUQ09SRV9CSU5ESU5HUyAxCiAjZGVmaW5lIFdURl9VU0VfTlBPQkpFQ1Qg
MQogI2VuZGlmCisKKyNpZiBQTEFURk9STShTWU1CSUFOKQorI2RlZmluZSBXVEZfVVNFX0pBVkFT
Q1JJUFRDT1JFX0JJTkRJTkdTIDEKKyNkZWZpbmUgV1RGX1VTRV9OUE9CSkVDVCAxCisjdW5kZWYg
WFNMVF9TVVBQT1JUCisjdW5kZWYgV0lOMzIKKyN1bmRlZiBfV0lOMzIKKyN1bmRlZiBBVk9JRF9T
VEFUSUNfQ09OU1RSVUNUT1JTCisjZGVmaW5lIFVTRV9TWVNURU1fTUFMTE9DIDEKKyNkZWZpbmUg
VV9IQVZFX0lOVDhfVCAwCisjZGVmaW5lIFVfSEFWRV9JTlQxNl9UIDAKKyNkZWZpbmUgVV9IQVZF
X0lOVDMyX1QgMAorI2RlZmluZSBVX0hBVkVfSU5UNjRfVCAwCisjZGVmaW5lIFVfSEFWRV9JTlRU
WVBFU19IIDAKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c25wcmludGYuaD4KKyNp
bmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0F0b21pY1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vQXRvbWljU3RyaW5nLmgJKHJldmlzaW9uIDE3NjI3KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9BdG9taWNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsMTAgQEAg
cHVibGljOgogICAgIEF0b21pY1N0cmluZyhOU1N0cmluZyogcykgOiBtX3N0cmluZyhhZGQoU3Ry
aW5nKHMpLmltcGwoKSkpIHsgfQogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKKyNpZiBQTEFURk9STShTWU1CSUFOKQorICAgIEF0b21p
Y1N0cmluZyhjb25zdCBURGVzQyYgcykgOiBtX3N0cmluZyhhZGQoU3RyaW5nKHMpLmltcGwoKSkp
IHsgfQorICAgIG9wZXJhdG9yIFRQdHJDKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyNl
bmRpZgogCiAgICAgQXRvbWljU3RyaW5nKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmKTsKICAgICBE
ZXByZWNhdGVkU3RyaW5nIGRlcHJlY2F0ZWRTdHJpbmcoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9EZXByZWNhdGVkU3RyaW5nLmNwcAkocmV2aXNpb24gMTc2MjcpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL0RlcHJlY2F0ZWRTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNkZWZpbmUgQ0hFQ0tfRk9SX0hBTkRMRV9MRUFL
UyAwCiAKKyNpZiBQTEFURk9STShTWU1CSUFOKQorI3VuZGVmIENIRUNLX0ZPUl9IQU5ETEVfTEVB
S1MKKy8vIHRvdDpmaXhtZSBuZWVkIHBhZ2UgYWxpZ25lZCBhbGxvY2F0aW9ucworI2RlZmluZSBD
SEVDS19GT1JfSEFORExFX0xFQUtTIDEKKyNlbmRpZgorCiAjZGVmaW5lIEFMTE9DX1FDSEFSX0dP
T0RfU0laRShYKSAoWCkKICNkZWZpbmUgQUxMT0NfQ0hBUl9HT09EX1NJWkUoWCkgKFgpCiAKQEAg
LTI0NDcsNiArMjQ1Myw5IEBAIHN0YXRpYyBIYW5kbGVOb2RlICppbml0aWFsaXplSGFuZGxlTm9k
ZUIKIAogI2lmIFBMQVRGT1JNKFdJTl9PUykKICAgICBibG9jayA9IChIYW5kbGVOb2RlKilWaXJ0
dWFsQWxsb2MoMCwgcGFnZVNpemUsIE1FTV9DT01NSVQgfCBNRU1fUkVTRVJWRSwgUEFHRV9SRUFE
V1JJVEUpOworI2VsaWYgUExBVEZPUk0oU1lNQklBTikKKyAgICAvLyBmaXhtZSBuZWVkcyB0byBk
byBwYWdlIGFsaWduZWQgYWxsb2NhdGlvbgorICAgIGJsb2NrID0gTlVMTDsKICNlbHNlCiAgICAg
YmxvY2sgPSAoSGFuZGxlTm9kZSopdmFsbG9jKHBhZ2VTaXplKTsKICNlbmRpZgpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9EZXByZWNhdGVkU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9EZXByZWNhdGVkU3RyaW5nLmgJKHJldmlzaW9uIDE3NjI3KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9EZXByZWNhdGVkU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNSwxNCArMjE1
LDE2IEBAIHN0cnVjdCBEZXByZWNhdGVkU3RyaW5nRGF0YSAgCiAgICAgdW5zaWduZWQgX2xlbmd0
aDsKICAgICBtdXRhYmxlIERlcHJlY2F0ZWRDaGFyICpfdW5pY29kZTsKICAgICBtdXRhYmxlIGNo
YXIgKl9hc2NpaTsKKyAgICAvLyBjaGFyIF9pbnRlcm5hbEJ1ZmZlciBoYXMgdG8gYmUgaW4gZnJv
bnQgb2YgdGhlIGJpdGZpZWxkcyBhcworICAgIC8vIENvZGV3YXJyaW9yICgzLjIuNSBidWlsZCA0
NjEpIGNvbXBpbGVyIGNhbm5vdCBjb3BlIHdpdGggYml0ZmllbGRzIGFuZCBicmVha3MgYnl0ZSBh
bGlnbWVudAorICAgIGNoYXIgX2ludGVybmFsQnVmZmVyW1dFQkNPUkVfRFNfSU5URVJOQUxfQlVG
RkVSX1NJWkVdOyAvLyBQYWQgb3V0IHRvIGEgKCgoc2l6ZSArIDEpICYgfjE1KSArIDE0KSBzaXpl
CisKICAgICB1bnNpZ25lZCBfbWF4VW5pY29kZSA6IDMwOwogICAgIGJvb2wgX2lzVW5pY29kZVZh
bGlkIDogMTsKICAgICBib29sIF9pc0hlYXBBbGxvY2F0ZWQgOiAxOyAvLyBGcmFnaWxlLCBidXQg
dGhlIG9ubHkgd2F5IHdlIGNhbiBiZSBzdXJlIHRoZSBpbnN0YW5jZSB3YXMgY3JlYXRlZCB3aXRo
ICduZXcnLgogICAgIHVuc2lnbmVkIF9tYXhBc2NpaSA6IDMxOwogICAgIGJvb2wgX2lzQXNjaWlW
YWxpZCA6IDE7CiAgICAgCi0gICAgY2hhciBfaW50ZXJuYWxCdWZmZXJbV0VCQ09SRV9EU19JTlRF
Uk5BTF9CVUZGRVJfU0laRV07IC8vIFBhZCBvdXQgdG8gYSAoKChzaXplICsgMSkgJiB+MTUpICsg
MTQpIHNpemUKLQogcHJpdmF0ZToKICAgICBEZXByZWNhdGVkU3RyaW5nRGF0YShjb25zdCBEZXBy
ZWNhdGVkU3RyaW5nRGF0YSAmKTsKICAgICBEZXByZWNhdGVkU3RyaW5nRGF0YSAmb3BlcmF0b3I9
KGNvbnN0IERlcHJlY2F0ZWRTdHJpbmdEYXRhICYpOwpAQCAtMjY4LDYgKzI3MCwxMCBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBEZXByZWNhdGVkU3RyaW5nIGZyb21O
U1N0cmluZyhOU1N0cmluZyopOwogI2VuZGlmCisjaWYgUExBVEZPUk0oU1lNQklBTikKKyAgICBz
dGF0aWMgRGVwcmVjYXRlZFN0cmluZyBmcm9tRGVzKGNvbnN0IFREZXNDJik7CisgICAgc3RhdGlj
IERlcHJlY2F0ZWRTdHJpbmcgZnJvbURlcyhjb25zdCBURGVzQzgmKTsKKyNlbmRpZgogICAgIERl
cHJlY2F0ZWRTdHJpbmcgJm9wZXJhdG9yPShjaGFyKTsKICAgICBEZXByZWNhdGVkU3RyaW5nICZv
cGVyYXRvcj0oRGVwcmVjYXRlZENoYXIpOwogICAgIERlcHJlY2F0ZWRTdHJpbmcgJm9wZXJhdG9y
PShjb25zdCBjaGFyICopOwpAQCAtNDA0LDYgKzQxMCwxMyBAQCBwdWJsaWM6CiAKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oU1lNQklBTikKKyAgICBUUHRyQyBkZXMoKSBjb25zdDsKKyAgICBUUHRy
QzggZGVzOCgpIGNvbnN0OworICAgIHZvaWQgc2V0QnVmZmVyRnJvbURlcyhjb25zdCBURGVzQyYp
OworICAgIHZvaWQgc2V0QnVmZmVyRnJvbURlcyhjb25zdCBURGVzQzgmKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIC8vIFVzZWQgYnkgRGVwcmVjYXRlZENvbnN0U3RyaW5nLgogICAgIERlcHJl
Y2F0ZWRTdHJpbmcoRGVwcmVjYXRlZFN0cmluZ0RhdGEgKmNvbnN0RGF0YSwgYm9vbCAvKmR1bW15
Ki8pOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdFBvaW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9GbG9hdFBvaW50LmgJKHJldmlzaW9uIDE3NjI3KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9GbG9hdFBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDEwIEBA
IHR5cGVkZWYgc3RydWN0IF9OU1BvaW50IE5TUG9pbnQ7CiBjbGFzcyBRUG9pbnRGOwogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShTWU1CSUFOKQorY2xhc3MgVFBvaW50OworI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50UG9pbnQ7CkBAIC03OCw2ICs4MiwxMSBAQCBwdWJs
aWM6CiAgICAgb3BlcmF0b3IgUVBvaW50RigpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShTWU1CSUFOKQorICAgIG9wZXJhdG9yIFRQb2ludCgpIGNvbnN0OworICAgIEZsb2F0UG9pbnQo
Y29uc3QgVFBvaW50JiApOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZmxvYXQgbV94LCBtX3k7
CiB9OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdFJlY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL0Zsb2F0UmVjdC5oCShyZXZpc2lvbiAxNzYyNykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vRmxvYXRSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw2ICsxMjAsMTEgQEAg
cHVibGljOgogICAgIEZsb2F0UmVjdChjb25zdCBRUmVjdEYmKTsKICAgICBvcGVyYXRvciBRUmVj
dEYoKSBjb25zdDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFNZTUJJQU4pCisgICAgRmxvYXRSZWN0
KGNvbnN0IFRSZWN0Jik7CisgICAgb3BlcmF0b3IgVFJlY3QoKSBjb25zdDsKKyAgICBUUmVjdCBy
ZWN0KCkgY29uc3Q7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fbG9jYXRp
b247CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0ludFBvaW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9JbnRQb2ludC5oCShyZXZpc2lvbiAxNzYyNykKKysrIFdlYkNvcmUvcGxh
dGZvcm0vSW50UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOSBAQCB0eXBlZGVm
IHN0cnVjdCB0YWdQT0lOVFMgUE9JTlRTOwogI2VsaWYgUExBVEZPUk0oUVQpCiBjbGFzcyBRUG9p
bnQ7CiAjZW5kaWYKKyNpZiBQTEFURk9STShTWU1CSUFOKQorY2xhc3MgVFBvaW50OworI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODIsNiArODUsMTAgQEAgcHVibGljOgogICAg
IEludFBvaW50KGNvbnN0IFFQb2ludCYpOwogICAgIG9wZXJhdG9yIFFQb2ludCgpIGNvbnN0Owog
I2VuZGlmCisjaWYgUExBVEZPUk0oU1lNQklBTikKKyAgICBJbnRQb2ludChjb25zdCBUUG9pbnQm
KTsKKyAgICBvcGVyYXRvciBUUG9pbnQoKSBjb25zdDsKKyNlbmRpZgogCiBwcml2YXRlOgogICAg
IGludCBtX3gsIG1feTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vSW50UmVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vSW50UmVjdC5oCShyZXZpc2lvbiAxNzYyNykKKysrIFdl
YkNvcmUvcGxhdGZvcm0vSW50UmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw5IEBA
IHR5cGVkZWYgc3RydWN0IHRhZ1JFQ1QgUkVDVDsKICNlbGlmIFBMQVRGT1JNKFFUKQogY2xhc3Mg
UVJlY3Q7CiAjZW5kaWYKKyNpZiBQTEFURk9STShTWU1CSUFOKQorY2xhc3MgVFJlY3Q7CisjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMTMsNiArMTE2LDExIEBAIHB1YmxpYzoK
ICAgICBJbnRSZWN0KGNvbnN0IFFSZWN0Jik7CiAgICAgb3BlcmF0b3IgUVJlY3QoKSBjb25zdDsK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKFNZTUJJQU4pCisgICAgSW50UmVjdChjb25zdCBUUmVjdCYp
OworICAgIG9wZXJhdG9yIFRSZWN0KCkgY29uc3Q7CisgICAgVFJlY3QgUmVjdCgpIGNvbnN0Owor
I2VuZGlmCiAKICNpZiBQTEFURk9STShDRykKICAgICBvcGVyYXRvciBDR1JlY3QoKSBjb25zdDsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vSW50U2l6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vSW50U2l6ZS5oCShyZXZpc2lvbiAxNzYyNykKKysrIFdlYkNvcmUvcGxhdGZvcm0v
SW50U2l6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIHR5cGVkZWYgc3RydWN0
IHRhZ1NJWkUgU0laRTsKICNlbGlmIFBMQVRGT1JNKFFUKQogY2xhc3MgUVNpemU7CiAjZW5kaWYK
KyNpZiBQTEFURk9STShTWU1CSUFOKQorY2xhc3MgVFNpemU7CisjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC05Nyw2ICsxMDAsMTAgQEAgcHVibGljOgogICAgIEludFNpemUoY29u
c3QgUVNpemUmKTsKICAgICBvcGVyYXRvciBRU2l6ZSgpIGNvbnN0OwogI2VuZGlmCisjaWYgUExB
VEZPUk0oU1lNQklBTikKKyAgICBJbnRTaXplKGNvbnN0IFRTaXplJik7CisgICAgb3BlcmF0b3Ig
VFNpemUoKSBjb25zdDsKKyNlbmRpZgogCiAKIHByaXZhdGU6CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1N0cmluZ0lt
cGwuaAkocmV2aXNpb24gMTc2MjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1N0cmluZ0ltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0MiwxMCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nSW1w
bChOU1N0cmluZyopOwogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0OwogI2VuZGlmCisj
aWYgUExBVEZPUk0oU1lNQklBTikKKyAgICBTdHJpbmdJbXBsKGNvbnN0IFREZXNDJik7CisgICAg
VFB0ckMgZGVzKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIFN0cmluZ0ltcGwoY29uc3QgRGVwcmVj
YXRlZFN0cmluZyYpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4vRGVwcmVjYXRl
ZFN0cmluZ1N5bWJpYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU3ltYmlh
bi9EZXByZWNhdGVkU3RyaW5nU3ltYmlhbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL1N5bWJpYW4vRGVwcmVjYXRlZFN0cmluZ1N5bWJpYW4uY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgzIEBACisvKgorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogICAgQ29weXJp
Z2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3JhdGlvbgorKiAgICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorKgorKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiAgIGFyZSBtZXQ6CisqCisqICAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorKiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbgorKiAgICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorKiAgICAgICAgZGlzdHJpYnV0aW9uLgorKiAgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiB0aGUgTm9raWEgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyogICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorKiAgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiAgIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogICAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqICAgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKiAgIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiAg
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyogICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorKiAgIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyogICBEQU1BR0UuCisqCisq
ICAgIFBsZWFzZSBzZWUgZmlsZSBwYXRlbnRsaWNlbnNlLnR4dCBmb3IgZnVydGhlciBncmFudHMu
CisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRlcHJlY2F0ZWRTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lk
IERlcHJlY2F0ZWRTdHJpbmc6OnNldEJ1ZmZlckZyb21EZXMoY29uc3QgVERlc0MmIGRlcykKK3sK
KyAgICBzZXRVbmljb2RlKChjb25zdCBEZXByZWNhdGVkQ2hhciAqKWRlcy5QdHIoKSwgKHVpbnQp
ZGVzLkxlbmd0aCgpKTsKK30KKwordm9pZCBEZXByZWNhdGVkU3RyaW5nOjpzZXRCdWZmZXJGcm9t
RGVzKGNvbnN0IFREZXNDOCYgZGVzKQoreworICAgIHNldExhdGluMSgoY29uc3QgY2hhciopZGVz
LlB0cigpLCAodWludClkZXMuTGVuZ3RoKCkpOworfQorCitEZXByZWNhdGVkU3RyaW5nIERlcHJl
Y2F0ZWRTdHJpbmc6OmZyb21EZXMoY29uc3QgVERlc0MmIGRlcykKK3sKKyAgICBEZXByZWNhdGVk
U3RyaW5nIHM7CisgICAgcy5zZXRCdWZmZXJGcm9tRGVzKGRlcyk7CisgICAgcmV0dXJuIHM7Cit9
CisKK0RlcHJlY2F0ZWRTdHJpbmcgRGVwcmVjYXRlZFN0cmluZzo6ZnJvbURlcyhjb25zdCBURGVz
QzgmIGRlcykKK3sKKyAgICBEZXByZWNhdGVkU3RyaW5nIHM7CisgICAgcy5zZXRCdWZmZXJGcm9t
RGVzKGRlcyk7CisgICAgcmV0dXJuIHM7Cit9CisKK1RQdHJDIERlcHJlY2F0ZWRTdHJpbmc6OmRl
cygpIGNvbnN0Cit7CisgICAgaWYgKCFkYXRhSGFuZGxlWzBdLT5faXNVbmljb2RlVmFsaWQpCisg
ICAgICAgIGRhdGFIYW5kbGVbMF0tPm1ha2VVbmljb2RlKCk7CisKKyAgICBUUHRyQyB0c3RyKChj
b25zdCBUVWludDE2Kil1bmljb2RlKCksIGxlbmd0aCgpICk7CisKKyAgICByZXR1cm4gdHN0cjsK
K30KKworVFB0ckM4IERlcHJlY2F0ZWRTdHJpbmc6OmRlczgoKSBjb25zdAoreworICAgIFRQdHJD
OCB0c3RyKChjb25zdCBUVWludDgqKWxhdGluMSgpLCBsZW5ndGgoKSk7CisKKyAgICByZXR1cm4g
dHN0cjsKK30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vU3ltYmlhbi9GbG9hdFBvaW50U3ltYmlhbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9TeW1iaWFuL0Zsb2F0UG9pbnRTeW1iaWFuLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vU3ltYmlhbi9GbG9hdFBvaW50U3ltYmlhbi5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisqID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKiAg
ICBDb3B5cmlnaHQgKGMpIDIwMDYsIE5va2lhIENvcnBvcmF0aW9uCisqICAgIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisqCisqICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqICAgYXJlIG1ldDoK
KyoKKyogICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisqICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAg
ICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluCisqICAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqICAgICAgICBkaXN0cmlidXRpb24uCisqICAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBOb2tpYSBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVz
IG9mIGl0cworKiAgICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisqICAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqICAgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworKiAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisqICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisqICAgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogICBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyogICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqICAgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFCisqICAgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorKiAgIERBTUFH
RS4KKyoKKyogICAgUGxlYXNlIHNlZSBmaWxlIHBhdGVudGxpY2Vuc2UudHh0IGZvciBmdXJ0aGVy
IGdyYW50cy4KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgPGUzMmNtbi5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0Zsb2F0UG9pbnQ6OkZsb2F0UG9pbnQoY29uc3QgVFBvaW50JiBw
KQorICAgIDogbV94KHAuaVgpCisgICAgLCBtX3kocC5pWSkKK3sKK30KKworRmxvYXRQb2ludDo6
b3BlcmF0b3IgVFBvaW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gVFBvaW50KG1feCwgbV95KTsK
K30KKworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TeW1iaWFuL0Zsb2F0UmVjdFN5bWJpYW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU3ltYmlhbi9GbG9hdFJlY3RTeW1i
aWFuLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU3ltYmlhbi9GbG9hdFJl
Y3RTeW1iaWFuLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyogPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisqICAgIENvcHlyaWdodCAoYykgMjAwNiwgTm9raWEgQ29ycG9yYXRp
b24KKyogICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogICBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogICBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyogICBhcmUgbWV0OgorKgorKiAgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyog
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyogICAgICAgIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogICAgICAgIGRp
c3RyaWJ1dGlvbi4KKyogICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIE5va2lhIENvcnBv
cmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqICAgICAgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyogICAgICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyoKKyogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyogICBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyog
ICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogICBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyogICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqICAgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKyog
ICBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNICisqICAgREFNQUdFLgorKgorKiAgICBQbGVhc2Ugc2VlIGZpbGUgcGF0ZW50bGlj
ZW5zZS50eHQgZm9yIGZ1cnRoZXIgZ3JhbnRzLgorKiA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRl
ICJJbnRTaXplLmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlIDxlMzJzdGQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGbG9hdFJlY3Q6OkZsb2F0UmVjdChjb25zdCBUUmVj
dCYgcikKKyAgICA6IG1fbG9jYXRpb24oSW50UG9pbnQoci5pVGwuaVgsIHIuaVRsLmlZKSkKKyAg
ICAsIG1fc2l6ZShJbnRTaXplKHIuU2l6ZSgpLmlXaWR0aCwgci5TaXplKCkuaUhlaWdodCkpCit7
Cit9CisKK0Zsb2F0UmVjdDo6b3BlcmF0b3IgVFJlY3QoKSBjb25zdAoreworICAgIHJldHVybiBU
UmVjdCh4KCksIHkoKSwgcmlnaHQoKSwgYm90dG9tKCkpOworfQorCitUUmVjdCBGbG9hdFJlY3Q6
OnJlY3QoKSBjb25zdAoreworICAgIHJldHVybiBUUmVjdCh4KCksIHkoKSwgcmlnaHQoKSwgYm90
dG9tKCkpOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4vSW50UG9pbnRT
eW1iaWFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4vSW50UG9p
bnRTeW1iaWFuLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU3ltYmlhbi9J
bnRQb2ludFN5bWJpYW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorKiA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKyogICAgQ29weXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jw
b3JhdGlvbgorKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiAgIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiAg
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworKiAgIGFyZSBtZXQ6CisqCisqICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorKiAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKiAgICAgICAgdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiAgICAg
ICAgZGlzdHJpYnV0aW9uLgorKiAgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgTm9raWEg
Q29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogICAgICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorKiAgICAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorKgorKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqICAgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogICAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RQorKiAgIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0gKKyogICBEQU1BR0UuCisqCisqICAgIFBsZWFzZSBzZWUgZmlsZSBwYXRl
bnRsaWNlbnNlLnR4dCBmb3IgZnVydGhlciBncmFudHMuCisqID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5j
bHVkZSA8ZTMyc3RkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50UG9pbnQ6OkludFBv
aW50KGNvbnN0IFRQb2ludCYgcCkKKyAgICA6IG1feChwLmlYKQorICAgICwgbV95KHAuaVkpCit7
Cit9CisKK0ludFBvaW50OjpvcGVyYXRvciBUUG9pbnQoKSBjb25zdAoreworICAgIHJldHVybiBU
UG9pbnQobV94LCBtX3kpOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4v
SW50UmVjdFN5bWJpYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU3ltYmlh
bi9JbnRSZWN0U3ltYmlhbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL1N5
bWJpYW4vSW50UmVjdFN5bWJpYW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisv
KgorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogICAgQ29weXJpZ2h0IChjKSAyMDA2LCBOb2tp
YSBDb3Jwb3JhdGlvbgorKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiAgIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworKiAgIGFyZSBtZXQ6CisqCisqICAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorKiAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKiAgICAgICAgdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
KiAgICAgICAgZGlzdHJpYnV0aW9uLgorKiAgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUg
Tm9raWEgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogICAgICAgIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
KiAgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorKgorKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogICAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqICAgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
KiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiAgIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogICAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRQorKiAgIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0gKKyogICBEQU1BR0UuCisqCisqICAgIFBsZWFzZSBzZWUgZmls
ZSBwYXRlbnRsaWNlbnNlLnR4dCBmb3IgZnVydGhlciBncmFudHMuCisqID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIK
KyNpbmNsdWRlIDxlMzJzdGQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRSZWN0OjpJ
bnRSZWN0KGNvbnN0IFRSZWN0JiByKQorICAgIDogbV9sb2NhdGlvbihJbnRQb2ludChyLmlUbC5p
WCwgci5pVGwuaVkpKQorICAgICwgbV9zaXplKEludFNpemUoci5TaXplKCkuaVdpZHRoLCByLlNp
emUoKS5pSGVpZ2h0KSkKK3sKK30KKworSW50UmVjdDo6b3BlcmF0b3IgVFJlY3QoKSBjb25zdAor
eworICAgIHJldHVybiBUUmVjdCh4KCksIHkoKSwgcmlnaHQoKSwgYm90dG9tKCkpOworfQorCitU
UmVjdCBJbnRSZWN0OjpSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gVFJlY3QoeCgpLCB5KCks
IHJpZ2h0KCksIGJvdHRvbSgpKTsKK30KKworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TeW1i
aWFuL0ludFNpemVTeW1iaWFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1N5
bWJpYW4vSW50U2l6ZVN5bWJpYW4uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9TeW1iaWFuL0ludFNpemVTeW1iaWFuLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqICAgIENvcHlyaWdodCAoYykgMjAwNiwg
Tm9raWEgQ29ycG9yYXRpb24KKyogICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogICBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyogICBhcmUgbWV0OgorKgorKiAgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyogICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyogICAgICAg
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyogICAgICAgIGRpc3RyaWJ1dGlvbi4KKyogICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIE5va2lhIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqICAgICAgICBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyogICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICAgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyogICBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiAgIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogICBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisq
ICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUKKyogICBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisqICAgREFNQUdFLgorKgorKiAgICBQbGVhc2Ugc2Vl
IGZpbGUgcGF0ZW50bGljZW5zZS50eHQgZm9yIGZ1cnRoZXIgZ3JhbnRzLgorKiA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRTaXpl
LmgiCisjaW5jbHVkZSA8ZTMyc3RkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50U2l6
ZTo6SW50U2l6ZShjb25zdCBUU2l6ZSYgcykKKyAgICA6IG1fd2lkdGgocy5pV2lkdGgpCisgICAg
LCBtX2hlaWdodChzLmlIZWlnaHQpCit7Cit9CisKK0ludFNpemU6Om9wZXJhdG9yIFRTaXplKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gVFNpemUobV93aWR0aCwgbV9oZWlnaHQpOworfQorCit9Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4vU3RyaW5nSW1wbFN5bWJpYW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU3ltYmlhbi9TdHJpbmdJbXBsU3ltYmlhbi5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4vU3RyaW5nSW1wbFN5bWJp
YW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorKiA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKyogICAgQ29weXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3JhdGlvbgorKiAg
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiAgIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
KiAgIGFyZSBtZXQ6CisqCisqICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKiAgICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiAgICAgICAgZGlzdHJpYnV0
aW9uLgorKiAgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgTm9raWEgQ29ycG9yYXRpb24g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorKiAgICAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgor
KiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiAgIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
KiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogICAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorKiAgIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0gKKyogICBEQU1BR0UuCisqCisqICAgIFBsZWFzZSBzZWUgZmlsZSBwYXRlbnRsaWNlbnNlLnR4
dCBmb3IgZnVydGhlciBncmFudHMuCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmluZ0ltcGwuaCIKKyNpbmNsdWRlIDxlMzJz
dGQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKGNv
bnN0IFREZXNDJiBkZXMpCit7CisgICAgaW5pdChkZXMuUHRyKCksIGRlcy5MZW5ndGgoKSk7Cit9
CisKK1RQdHJDIFN0cmluZ0ltcGw6OmRlcygpIGNvbnN0Cit7CisgICAgVFB0ckMgdHN0cigoY29u
c3QgVFVpbnQxNiAqKW1fZGF0YSwgbV9sZW5ndGgpOworICAgIHJldHVybiB0c3RyOworfQorCit9
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4vU3RyaW5nU3ltYmlhbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TeW1iaWFuL1N0cmluZ1N5bWJpYW4uY3BwCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TeW1iaWFuL1N0cmluZ1N5bWJpYW4uY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvKgorKiA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
KyogICAgQ29weXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3JhdGlvbgorKiAgICBBbGwgcmln
aHRzIHJlc2VydmVkLgorKgorKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiAgIGFyZSBt
ZXQ6CisqCisqICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbgorKiAgICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiAgICAgICAgZGlzdHJpYnV0aW9uLgorKiAg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgTm9raWEgQ29ycG9yYXRpb24gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyogICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorKiAgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiAgIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiAgIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisq
ICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKiAgIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorKiAgIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyogICBE
QU1BR0UuCisqCisqICAgIFBsZWFzZSBzZWUgZmlsZSBwYXRlbnRsaWNlbnNlLnR4dCBmb3IgZnVy
dGhlciBncmFudHMuCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8ZTMyc3RkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nOjpTdHJpbmcoY29uc3QgVERlc0MmIGRl
cykKK3sKKyAgICBpZiAoIWRlcy5MZW5ndGgoKSkKKyAgICAgICAgbV9pbXBsID0gU3RyaW5nSW1w
bDo6ZW1wdHkoKTsKKyAgICBlbHNlCisgICAgICAgIG1faW1wbCA9IG5ldyBTdHJpbmdJbXBsKGRl
cyk7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJLaXRTNjAv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFM2MC9DaGFuZ2VMb2cJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXRTNjAvQ2hhbmdlTG9nCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzIw
MDYtMTEtMDcgIFphbGFuIEJ1anRhcyAgPHphbGFuLmJ1anRhc0Bub2tpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIE5va2lhIGxp
Y2Vuc2UgdGV4dC4KKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE1NDAKKworICAgICAgICAqIHBhdGVudGxpY2Vuc2UudHh0OiBBZGRlZC4KKwkJKiBDaGFu
Z2VMb2c6IEFkZGVkLgpJbmRleDogV2ViS2l0UzYwL3BhdGVudGxpY2Vuc2UudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFM2MC9wYXRlbnRsaWNlbnNlLnR4dAkocmV2aXNpb24gMCkKKysrIFdlYktp
dFM2MC9wYXRlbnRsaWNlbnNlLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorTm9r
aWEgQ29ycG9yYXRpb24gaGVyZWJ5IGdyYW50cyBZb3UgYSB3b3JsZHdpZGUsIHJveWFsdHktZnJl
ZSwKK25vbi1leGNsdXNpdmUgcGF0ZW50IGxpY2Vuc2UsIHN1YmplY3QgdG8gdGhpcmQgcGFydHkg
aW50ZWxsZWN0dWFsCitwcm9wZXJ0eSBjbGFpbXMsIHVuZGVyIGFueSBwYXRlbnRzIGlzc3VlZCBv
ciBncmFudGVkIHRvIG9yIHBhdGVudAorYXBwbGljYXRpb25zIG1hZGUgYnkgTm9raWEgQ29ycG9y
YXRpb24gdGhhdCBjbGFpbSBwcmlvcml0eSBmcm9tIFVTCitwYXRlbnQgYXBwbGljYXRpb24gbm8u
IFVTMTEvMDY5ODkxIGFuZCBGaW5uaXNoIHBhdGVudCBhcHBsaWNhdGlvbgorbm8uIEZJMjAwNC8w
MDg2LCBhbmQgdGhhdCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IG1ha2luZywgdXNpbmcs
CitzZWxsaW5nLCBvZmZlcmluZyB0byBzZWxsLCBpbXBvcnRpbmcgYW5kIG90aGVyd2lzZSB0cmFu
c2ZlcmluZyB0aGlzCitTb2Z0d2FyZSBpbiBzb3VyY2UgY29kZSBhbmQgb2JqZWN0IGNvZGUgZm9y
bS4gVGhpcyBsaWNlbnNlIHNoYWxsCitpbmNsdWRlIGNoYW5nZXMgdG8gdGhlIFNvZnR3YXJlIHRo
YXQgYXJlIGVycm9yIGNvcnJlY3Rpb25zIG9yIG90aGVyCittaW5vciBjaGFuZ2VzIHRvIHRoZSBT
b2Z0d2FyZSB0aGF0IGRvIG5vdCBhZGQgZnVuY3Rpb25hbGl0eSBvciBmZWF0dXJlcword2hlbiB0
aGUgU29mdHdhcmUgaXMgaW5jb3Jwb3JhdGVkIGluIGFueSB2ZXJzaW9uIG9mIGFuIG9wZXJhdGlu
ZyBzeXN0ZW0KK3RoYXQgaGFzIGJlZW4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIDIuMS4KK1RoaXMgcGF0ZW50IGxpY2Vuc2UgYXBwbGllcyB0byB1c2Ug
b2YgdGhlIFNvZnR3YXJlIGluIGNvbmp1bmN0aW9uIHdpdGgKK2hhcmR3YXJlLCBidXQgbm8gaGFy
ZHdhcmUgcGVyIHNlIGlzIGxpY2Vuc2VkIGhlcmV1bmRlci4gVGhpcyBwYXRlbnQKK2xpY2Vuc2Ug
c2hhbGwgbm90IGFwcGx5IHRvIGFueSBwYXRlbnRzIG90aGVyIHRoYW4gdGhvc2UgbGlzdGVkIGFi
b3ZlLgorWW91IG11c3QgZW5zdXJlIHRoYXQgeW91IGFjcXVpcmUgbGljZW5zZXMgZnJvbSB0aGUg
cmVsZXZhbnQgcGF0ZW50Citwcm9wcmlldG9yIGZvciBhbnkgb3RoZXIgcGF0ZW50cyB0aGF0IG1h
eSBiZSBpbmZyaW5nZWQgYnkgeW91ciBpbnRlbmRlZAordXNlLgorCitJZiBZb3UgaW5zdGl0dXRl
IHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgTm9raWEgQ29ycG9yYXRpb24gb3IgYW55CitlbnRp
dHkgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQp
IGFsbGVnaW5nCit0aGF0IHRoaXMgc29mdHdhcmUgY29uc3RpdHV0ZXMgZGlyZWN0IG9yIGNvbnRy
aWJ1dG9yeSBpbmZyaW5nZW1lbnQgb2YKK2FueSBvdGhlciBwYXRlbnQsIG9yIGNoYWxsZW5naW5n
IHRoZSB2YWxpZGl0eSBvZiBhbnkgcGF0ZW50cyBvciBwYXRlbnQKK2FwcGxpY2F0aW9ucyBsaWNl
bnNlZCBoZXJldW5kZXIsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHRvCitZb3Ug
dW5kZXIgdGhpcyBsaWNlbnNlIGZvciB0aGF0IHNvZnR3YXJlIHNoYWxsIHRlcm1pbmF0ZSBhcyBv
ZiB0aGUgZGF0ZQorc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11418</attachid>
            <date>2006-11-07 15:18:03 -0800</date>
            <delta_ts>2006-11-09 12:15:33 -0800</delta_ts>
            <desc>platform/PlatformString.h changes were missing from the prev patch</desc>
            <filename>basictypes.patch</filename>
            <type>text/plain</type>
            <size>34370</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NjQ3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYtMTEtMDcgIFphbGFuIEJ1
anRhcyAgPHphbGFuLmJ1anRhc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGRpbmcgczYwL3N5bWJpYW4gcGxhdGZv
cm0gZGVmaW5lcy4gCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTQwCisgICAgICAgIAorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDA2LTEx
LTA2ICBLcnp5c3p0b2YgS293YWxjenlrICA8a2tvd2FsY3p5a0BnbWFpbC5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9u
IDE3NjQzKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTk1LDYgKzk1LDE2IEBACiAjZGVmaW5lIFdURl9QTEFURk9STV9DQUlSTyAxCiAjZW5kaWYK
IAorCisjaWZkZWYgX19TNjBfXworLy8gd2UgYXJlIGNyb3NzLWNvbXBpbGluZywgaXQgaXMgbm90
IHJlYWxseSB3aW5kb3dzCisjdW5kZWYgV1RGX1BMQVRGT1JNX1dJTl9PUworI3VuZGVmIFdURl9Q
TEFURk9STV9XSU4KKyN1bmRlZiBXVEZfUExBVEZPUk1fQ0FJUk8KKyNkZWZpbmUgV1RGX1BMQVRG
T1JNX1M2MCAxCisjZGVmaW5lIFdURl9QTEFURk9STV9TWU1CSUFOIDEKKyNlbmRpZgorCiAvKiBD
UFUgKi8KIAogLyogUExBVEZPUk0oUFBDKSAqLwpAQCAtMTY5LDYgKzE3OSw4IEBACiAjaWYgUExB
VEZPUk0oS0RFKQogLyogRklYTUU6IE5vdCB1c2luZyBRdDQgdW5pY29kZSBmb3Igbm93ISAqLwog
I2RlZmluZSBXVEZfVVNFX0lDVV9VTklDT0RFIDEKKyNlbGlmIFBMQVRGT1JNKFNZTUJJQU4pCisj
ZGVmaW5lIFdURl9VU0VfU1lNQklBTl9VTklDT0RFIDEKICNlbHNlCiAjZGVmaW5lIFdURl9VU0Vf
SUNVX1VOSUNPREUgMQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc2NDcpCisrKyBXZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDA2LTExLTA3ICBaYWxhbiBC
dWp0YXMgIDx6YWxhbi5idWp0YXNAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBiYXNpYyB0eXBlcyBmb3Igc3ltYmlhbiBw
bGF0Zm9ybS4KKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE1NDAKKworICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICAqIHBsYXRmb3JtL0F0b21pY1N0
cmluZy5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjpvcGVyYXRvciBUUHRyQyk6CisgICAgICAg
ICogcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0
aWFsaXplSGFuZGxlTm9kZUJsb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EZXByZWNhdGVkU3Ry
aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vRmxvYXRQb2ludC5oOgorICAgICAgICAqIHBsYXRm
b3JtL0Zsb2F0UmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL0ludFBvaW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vSW50UmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL0ludFNpemUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmluZy5oOgorICAgICAgICAoV2ViQ29yZTo6U3Ry
aW5nOjpvcGVyYXRvciBUUHRyQyk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OmRlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL1N5bWJp
YW4vRGVwcmVjYXRlZFN0cmluZ1N5bWJpYW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRlcHJlY2F0ZWRTdHJpbmc6OnNldEJ1ZmZlckZyb21EZXMpOgorICAgICAgICAoV2ViQ29yZTo6
RGVwcmVjYXRlZFN0cmluZzo6ZnJvbURlcyk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVk
U3RyaW5nOjpkZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFN0cmluZzo6ZGVzOCk6
CisgICAgICAgICogcGxhdGZvcm0vU3ltYmlhbi9GbG9hdFBvaW50U3ltYmlhbi5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludDo6RmxvYXRQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpGbG9hdFBvaW50OjpvcGVyYXRvciBUUG9pbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L1N5bWJpYW4vRmxvYXRSZWN0U3ltYmlhbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RmxvYXRSZWN0OjpGbG9hdFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRSZWN0OjpvcGVy
YXRvciBUUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJlY3Q6OnJlY3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL1N5bWJpYW4vSW50UG9pbnRTeW1iaWFuLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbnRQb2ludDo6SW50UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UG9p
bnQ6Om9wZXJhdG9yIFRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vU3ltYmlhbi9JbnRSZWN0
U3ltYmlhbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdDo6SW50UmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0OjpvcGVyYXRvciBUUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRSZWN0OjpSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TeW1iaWFuL0ludFNp
emVTeW1iaWFuLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRTaXplOjpJbnRTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkludFNpemU6Om9wZXJhdG9yIFRTaXplKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TeW1iaWFuL1N0cmluZ0ltcGxTeW1iaWFuLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
cmluZ0ltcGw6OmRlcyk6CisgICAgICAgICogcGxhdGZvcm0vU3ltYmlhbi9TdHJpbmdTeW1iaWFu
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OlN0cmluZyk6CisKIDIwMDYt
MTEtMDcgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEh5YXR0ICh5ZXN0ZXJkYXkpLgpJbmRleDogV2ViQ29yZS9jb25maWcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2NvbmZpZy5oCShyZXZpc2lvbiAxNzY0MykKKysrIFdlYkNvcmUvY29uZmln
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDEwIEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9h
dDsKIAogI2VuZGlmIC8qIFBMQVRGT1JNKFdJTl9PUykgKi8KIAorI2lmICFQTEFURk9STShTWU1C
SUFOKQorI2RlZmluZSBJTVBPUlRfQworI2RlZmluZSBFWFBPUlRfQworI2VuZGlmCiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwogCkBAIC03OCwzICs4MiwyMyBAQCB0eXBlZGVmIGZsb2F0IENHRmxvYXQ7
CiAjZGVmaW5lIFdURl9VU0VfSkFWQVNDUklQVENPUkVfQklORElOR1MgMQogI2RlZmluZSBXVEZf
VVNFX05QT0JKRUNUIDEKICNlbmRpZgorCisjaWYgUExBVEZPUk0oU1lNQklBTikKKyNkZWZpbmUg
V1RGX1VTRV9KQVZBU0NSSVBUQ09SRV9CSU5ESU5HUyAxCisjZGVmaW5lIFdURl9VU0VfTlBPQkpF
Q1QgMQorI3VuZGVmIFhTTFRfU1VQUE9SVAorI3VuZGVmIFdJTjMyCisjdW5kZWYgX1dJTjMyCisj
dW5kZWYgQVZPSURfU1RBVElDX0NPTlNUUlVDVE9SUworI2RlZmluZSBVU0VfU1lTVEVNX01BTExP
QyAxCisjZGVmaW5lIFVfSEFWRV9JTlQ4X1QgMAorI2RlZmluZSBVX0hBVkVfSU5UMTZfVCAwCisj
ZGVmaW5lIFVfSEFWRV9JTlQzMl9UIDAKKyNkZWZpbmUgVV9IQVZFX0lOVDY0X1QgMAorI2RlZmlu
ZSBVX0hBVkVfSU5UVFlQRVNfSCAwCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHNu
cHJpbnRmLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KKyNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9BdG9taWNTdHJpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0F0b21pY1N0cmluZy5oCShyZXZpc2lvbiAxNzY0MykK
KysrIFdlYkNvcmUvcGxhdGZvcm0vQXRvbWljU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDYgKzgyLDEwIEBAIHB1YmxpYzoKICAgICBBdG9taWNTdHJpbmcoTlNTdHJpbmcqIHMpIDogbV9z
dHJpbmcoYWRkKFN0cmluZyhzKS5pbXBsKCkpKSB7IH0KICAgICBvcGVyYXRvciBOU1N0cmluZyoo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogI2VuZGlmCisjaWYgUExBVEZPUk0oU1lNQklB
TikKKyAgICBBdG9taWNTdHJpbmcoY29uc3QgVERlc0MmIHMpIDogbV9zdHJpbmcoYWRkKFN0cmlu
ZyhzKS5pbXBsKCkpKSB7IH0KKyAgICBvcGVyYXRvciBUUHRyQygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nOyB9CisjZW5kaWYKIAogICAgIEF0b21pY1N0cmluZyhjb25zdCBEZXByZWNhdGVkU3Ry
aW5nJik7CiAgICAgRGVwcmVjYXRlZFN0cmluZyBkZXByZWNhdGVkU3RyaW5nKCkgY29uc3Q7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0RlcHJlY2F0ZWRTdHJpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5jcHAJKHJldmlzaW9uIDE3NjQzKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9EZXByZWNhdGVkU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTIsNiArNTIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZGVmaW5lIENIRUNLX0ZP
Ul9IQU5ETEVfTEVBS1MgMAogCisjaWYgUExBVEZPUk0oU1lNQklBTikKKyN1bmRlZiBDSEVDS19G
T1JfSEFORExFX0xFQUtTCisvLyB0b3Q6Zml4bWUgbmVlZCBwYWdlIGFsaWduZWQgYWxsb2NhdGlv
bnMKKyNkZWZpbmUgQ0hFQ0tfRk9SX0hBTkRMRV9MRUFLUyAxCisjZW5kaWYKKwogI2RlZmluZSBB
TExPQ19RQ0hBUl9HT09EX1NJWkUoWCkgKFgpCiAjZGVmaW5lIEFMTE9DX0NIQVJfR09PRF9TSVpF
KFgpIChYKQogCkBAIC0yNDQ3LDYgKzI0NTMsOSBAQCBzdGF0aWMgSGFuZGxlTm9kZSAqaW5pdGlh
bGl6ZUhhbmRsZU5vZGVCCiAKICNpZiBQTEFURk9STShXSU5fT1MpCiAgICAgYmxvY2sgPSAoSGFu
ZGxlTm9kZSopVmlydHVhbEFsbG9jKDAsIHBhZ2VTaXplLCBNRU1fQ09NTUlUIHwgTUVNX1JFU0VS
VkUsIFBBR0VfUkVBRFdSSVRFKTsKKyNlbGlmIFBMQVRGT1JNKFNZTUJJQU4pCisgICAgLy8gZml4
bWUgbmVlZHMgdG8gZG8gcGFnZSBhbGlnbmVkIGFsbG9jYXRpb24KKyAgICBibG9jayA9IE5VTEw7
CiAjZWxzZQogICAgIGJsb2NrID0gKEhhbmRsZU5vZGUqKXZhbGxvYyhwYWdlU2l6ZSk7CiAjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5oCShyZXZpc2lvbiAxNzY0MykK
KysrIFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTUsMTQgKzIxNSwxNiBAQCBzdHJ1Y3QgRGVwcmVjYXRlZFN0cmluZ0RhdGEgIAogICAgIHVu
c2lnbmVkIF9sZW5ndGg7CiAgICAgbXV0YWJsZSBEZXByZWNhdGVkQ2hhciAqX3VuaWNvZGU7CiAg
ICAgbXV0YWJsZSBjaGFyICpfYXNjaWk7CisgICAgLy8gY2hhciBfaW50ZXJuYWxCdWZmZXIgaGFz
IHRvIGJlIGluIGZyb250IG9mIHRoZSBiaXRmaWVsZHMgYXMKKyAgICAvLyBDb2Rld2FycmlvciAo
My4yLjUgYnVpbGQgNDYxKSBjb21waWxlciBjYW5ub3QgY29wZSB3aXRoIGJpdGZpZWxkcyBhbmQg
YnJlYWtzIGJ5dGUgYWxpZ21lbnQKKyAgICBjaGFyIF9pbnRlcm5hbEJ1ZmZlcltXRUJDT1JFX0RT
X0lOVEVSTkFMX0JVRkZFUl9TSVpFXTsgLy8gUGFkIG91dCB0byBhICgoKHNpemUgKyAxKSAmIH4x
NSkgKyAxNCkgc2l6ZQorCiAgICAgdW5zaWduZWQgX21heFVuaWNvZGUgOiAzMDsKICAgICBib29s
IF9pc1VuaWNvZGVWYWxpZCA6IDE7CiAgICAgYm9vbCBfaXNIZWFwQWxsb2NhdGVkIDogMTsgLy8g
RnJhZ2lsZSwgYnV0IHRoZSBvbmx5IHdheSB3ZSBjYW4gYmUgc3VyZSB0aGUgaW5zdGFuY2Ugd2Fz
IGNyZWF0ZWQgd2l0aCAnbmV3Jy4KICAgICB1bnNpZ25lZCBfbWF4QXNjaWkgOiAzMTsKICAgICBi
b29sIF9pc0FzY2lpVmFsaWQgOiAxOwogICAgIAotICAgIGNoYXIgX2ludGVybmFsQnVmZmVyW1dF
QkNPUkVfRFNfSU5URVJOQUxfQlVGRkVSX1NJWkVdOyAvLyBQYWQgb3V0IHRvIGEgKCgoc2l6ZSAr
IDEpICYgfjE1KSArIDE0KSBzaXplCi0KIHByaXZhdGU6CiAgICAgRGVwcmVjYXRlZFN0cmluZ0Rh
dGEoY29uc3QgRGVwcmVjYXRlZFN0cmluZ0RhdGEgJik7CiAgICAgRGVwcmVjYXRlZFN0cmluZ0Rh
dGEgJm9wZXJhdG9yPShjb25zdCBEZXByZWNhdGVkU3RyaW5nRGF0YSAmKTsKQEAgLTI2OCw2ICsy
NzAsMTAgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0aWMgRGVwcmVjYXRl
ZFN0cmluZyBmcm9tTlNTdHJpbmcoTlNTdHJpbmcqKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFNZ
TUJJQU4pCisgICAgc3RhdGljIERlcHJlY2F0ZWRTdHJpbmcgZnJvbURlcyhjb25zdCBURGVzQyYp
OworICAgIHN0YXRpYyBEZXByZWNhdGVkU3RyaW5nIGZyb21EZXMoY29uc3QgVERlc0M4Jik7Cisj
ZW5kaWYKICAgICBEZXByZWNhdGVkU3RyaW5nICZvcGVyYXRvcj0oY2hhcik7CiAgICAgRGVwcmVj
YXRlZFN0cmluZyAmb3BlcmF0b3I9KERlcHJlY2F0ZWRDaGFyKTsKICAgICBEZXByZWNhdGVkU3Ry
aW5nICZvcGVyYXRvcj0oY29uc3QgY2hhciAqKTsKQEAgLTQwNCw2ICs0MTAsMTMgQEAgcHVibGlj
OgogCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFNZTUJJQU4pCisgICAgVFB0ckMgZGVzKCkgY29u
c3Q7CisgICAgVFB0ckM4IGRlczgoKSBjb25zdDsKKyAgICB2b2lkIHNldEJ1ZmZlckZyb21EZXMo
Y29uc3QgVERlc0MmKTsKKyAgICB2b2lkIHNldEJ1ZmZlckZyb21EZXMoY29uc3QgVERlc0M4Jik7
CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICAvLyBVc2VkIGJ5IERlcHJlY2F0ZWRDb25zdFN0cmlu
Zy4KICAgICBEZXByZWNhdGVkU3RyaW5nKERlcHJlY2F0ZWRTdHJpbmdEYXRhICpjb25zdERhdGEs
IGJvb2wgLypkdW1teSovKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRQb2ludC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRQb2ludC5oCShyZXZpc2lvbiAxNzY0
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0NiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBfTlNQb2ludCBOU1BvaW50OwogY2xhc3MgUVBv
aW50RjsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oU1lNQklBTikKK2NsYXNzIFRQb2ludDsKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFBvaW50OwpAQCAtNzgsNiAr
ODIsMTEgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIFFQb2ludEYoKSBjb25zdDsKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oU1lNQklBTikKKyAgICBvcGVyYXRvciBUUG9pbnQoKSBjb25zdDsKKyAg
ICBGbG9hdFBvaW50KGNvbnN0IFRQb2ludCYgKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGZs
b2F0IG1feCwgbV95OwogfTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRSZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdFJlY3QuaAkocmV2aXNpb24gMTc2NDMp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL0Zsb2F0UmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAs
NiArMTIwLDExIEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QoY29uc3QgUVJlY3RGJik7CiAgICAg
b3BlcmF0b3IgUVJlY3RGKCkgY29uc3Q7CiAjZW5kaWYKKyNpZiBQTEFURk9STShTWU1CSUFOKQor
ICAgIEZsb2F0UmVjdChjb25zdCBUUmVjdCYpOworICAgIG9wZXJhdG9yIFRSZWN0KCkgY29uc3Q7
CisgICAgVFJlY3QgcmVjdCgpIGNvbnN0OworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgRmxvYXRQ
b2ludCBtX2xvY2F0aW9uOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9JbnRQb2ludC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vSW50UG9pbnQuaAkocmV2aXNpb24gMTc2NDMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL0ludFBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3
LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgdGFnUE9JTlRTIFBPSU5UUzsKICNlbGlmIFBMQVRGT1JNKFFU
KQogY2xhc3MgUVBvaW50OwogI2VuZGlmCisjaWYgUExBVEZPUk0oU1lNQklBTikKK2NsYXNzIFRQ
b2ludDsKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgyLDYgKzg1LDEwIEBA
IHB1YmxpYzoKICAgICBJbnRQb2ludChjb25zdCBRUG9pbnQmKTsKICAgICBvcGVyYXRvciBRUG9p
bnQoKSBjb25zdDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFNZTUJJQU4pCisgICAgSW50UG9pbnQo
Y29uc3QgVFBvaW50Jik7CisgICAgb3BlcmF0b3IgVFBvaW50KCkgY29uc3Q7CisjZW5kaWYKIAog
cHJpdmF0ZToKICAgICBpbnQgbV94LCBtX3k7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0ludFJl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0ludFJlY3QuaAkocmV2aXNpb24g
MTc2NDMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0ludFJlY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNiArNDYsOSBAQCB0eXBlZGVmIHN0cnVjdCB0YWdSRUNUIFJFQ1Q7CiAjZWxpZiBQTEFURk9S
TShRVCkKIGNsYXNzIFFSZWN0OwogI2VuZGlmCisjaWYgUExBVEZPUk0oU1lNQklBTikKK2NsYXNz
IFRSZWN0OworI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTEzLDYgKzExNiwx
MSBAQCBwdWJsaWM6CiAgICAgSW50UmVjdChjb25zdCBRUmVjdCYpOwogICAgIG9wZXJhdG9yIFFS
ZWN0KCkgY29uc3Q7CiAjZW5kaWYKKyNpZiBQTEFURk9STShTWU1CSUFOKQorICAgIEludFJlY3Qo
Y29uc3QgVFJlY3QmKTsKKyAgICBvcGVyYXRvciBUUmVjdCgpIGNvbnN0OworICAgIFRSZWN0IFJl
Y3QoKSBjb25zdDsKKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgb3BlcmF0b3IgQ0dS
ZWN0KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0ludFNpemUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0ludFNpemUuaAkocmV2aXNpb24gMTc2NDMpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL0ludFNpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOSBAQCB0
eXBlZGVmIHN0cnVjdCB0YWdTSVpFIFNJWkU7CiAjZWxpZiBQTEFURk9STShRVCkKIGNsYXNzIFFT
aXplOwogI2VuZGlmCisjaWYgUExBVEZPUk0oU1lNQklBTikKK2NsYXNzIFRTaXplOworI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTcsNiArMTAwLDEwIEBAIHB1YmxpYzoKICAg
ICBJbnRTaXplKGNvbnN0IFFTaXplJik7CiAgICAgb3BlcmF0b3IgUVNpemUoKSBjb25zdDsKICNl
bmRpZgorI2lmIFBMQVRGT1JNKFNZTUJJQU4pCisgICAgSW50U2l6ZShjb25zdCBUU2l6ZSYpOwor
ICAgIG9wZXJhdG9yIFRTaXplKCkgY29uc3Q7CisjZW5kaWYKIAogCiBwcml2YXRlOgpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TdHJpbmcuaAkocmV2aXNpb24gMTc2NDMpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcsMTIg
QEAgcHVibGljOgogICAgIG9wZXJhdG9yIFFTdHJpbmcoKSBjb25zdDsKICNlbmRpZgogCisjaWYg
UExBVEZPUk0oU1lNQklBTikKKyAgICBTdHJpbmcoY29uc3QgVERlc0MmKTsKKyAgICBvcGVyYXRv
ciBUUHRyQygpIGNvbnN0IHsgcmV0dXJuIGRlcygpOyB9CisgICAgVFB0ckMgZGVzKCkgY29uc3Qg
eyBpZiAoIW1faW1wbCkgcmV0dXJuIEtOdWxsRGVzQygpOyByZXR1cm4gbV9pbXBsLT5kZXMoKTsg
fQorI2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gRm9yIGRlYnVnZ2luZyBvbmx5LCBs
ZWFrcyBtZW1vcnkuCiAgICAgVmVjdG9yPGNoYXI+IGFzY2lpKCkgY29uc3Q7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTc2NDMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1N0cmlu
Z0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0MiwxMCBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nSW1wbChOU1N0cmluZyopOwogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0Owog
I2VuZGlmCisjaWYgUExBVEZPUk0oU1lNQklBTikKKyAgICBTdHJpbmdJbXBsKGNvbnN0IFREZXND
Jik7CisgICAgVFB0ckMgZGVzKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIFN0cmluZ0ltcGwoY29u
c3QgRGVwcmVjYXRlZFN0cmluZyYpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4v
RGVwcmVjYXRlZFN0cmluZ1N5bWJpYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vU3ltYmlhbi9EZXByZWNhdGVkU3RyaW5nU3ltYmlhbi5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4vRGVwcmVjYXRlZFN0cmluZ1N5bWJpYW4uY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisvKgorKiA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyog
ICAgQ29weXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3JhdGlvbgorKiAgICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorKgorKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiAgIGFyZSBtZXQ6
CisqCisqICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbgorKiAgICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiAgICAgICAgZGlzdHJpYnV0aW9uLgorKiAgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgTm9raWEgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyogICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorKiAgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiAgIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiAgIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqICAg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKiAgIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyogICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorKiAgIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyogICBEQU1B
R0UuCisqCisqICAgIFBsZWFzZSBzZWUgZmlsZSBwYXRlbnRsaWNlbnNlLnR4dCBmb3IgZnVydGhl
ciBncmFudHMuCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2b2lkIERlcHJlY2F0ZWRTdHJpbmc6OnNldEJ1ZmZlckZyb21EZXMoY29uc3QgVERlc0Mm
IGRlcykKK3sKKyAgICBzZXRVbmljb2RlKChjb25zdCBEZXByZWNhdGVkQ2hhciAqKWRlcy5QdHIo
KSwgKHVpbnQpZGVzLkxlbmd0aCgpKTsKK30KKwordm9pZCBEZXByZWNhdGVkU3RyaW5nOjpzZXRC
dWZmZXJGcm9tRGVzKGNvbnN0IFREZXNDOCYgZGVzKQoreworICAgIHNldExhdGluMSgoY29uc3Qg
Y2hhciopZGVzLlB0cigpLCAodWludClkZXMuTGVuZ3RoKCkpOworfQorCitEZXByZWNhdGVkU3Ry
aW5nIERlcHJlY2F0ZWRTdHJpbmc6OmZyb21EZXMoY29uc3QgVERlc0MmIGRlcykKK3sKKyAgICBE
ZXByZWNhdGVkU3RyaW5nIHM7CisgICAgcy5zZXRCdWZmZXJGcm9tRGVzKGRlcyk7CisgICAgcmV0
dXJuIHM7Cit9CisKK0RlcHJlY2F0ZWRTdHJpbmcgRGVwcmVjYXRlZFN0cmluZzo6ZnJvbURlcyhj
b25zdCBURGVzQzgmIGRlcykKK3sKKyAgICBEZXByZWNhdGVkU3RyaW5nIHM7CisgICAgcy5zZXRC
dWZmZXJGcm9tRGVzKGRlcyk7CisgICAgcmV0dXJuIHM7Cit9CisKK1RQdHJDIERlcHJlY2F0ZWRT
dHJpbmc6OmRlcygpIGNvbnN0Cit7CisgICAgaWYgKCFkYXRhSGFuZGxlWzBdLT5faXNVbmljb2Rl
VmFsaWQpCisgICAgICAgIGRhdGFIYW5kbGVbMF0tPm1ha2VVbmljb2RlKCk7CisKKyAgICBUUHRy
QyB0c3RyKChjb25zdCBUVWludDE2Kil1bmljb2RlKCksIGxlbmd0aCgpICk7CisKKyAgICByZXR1
cm4gdHN0cjsKK30KKworVFB0ckM4IERlcHJlY2F0ZWRTdHJpbmc6OmRlczgoKSBjb25zdAorewor
ICAgIFRQdHJDOCB0c3RyKChjb25zdCBUVWludDgqKWxhdGluMSgpLCBsZW5ndGgoKSk7CisKKyAg
ICByZXR1cm4gdHN0cjsKK30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vU3ltYmlhbi9GbG9hdFBvaW50U3ltYmlhbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TeW1iaWFuL0Zsb2F0UG9pbnRTeW1iaWFuLmNwcAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU3ltYmlhbi9GbG9hdFBvaW50U3ltYmlhbi5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisqID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorKiAgICBDb3B5cmlnaHQgKGMpIDIwMDYsIE5va2lhIENvcnBvcmF0aW9uCisqICAgIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisqCisqICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqICAgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqICAg
YXJlIG1ldDoKKyoKKyogICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluCisqICAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisqICAgICAgICBkaXN0cmlidXRpb24u
CisqICAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBOb2tpYSBDb3Jwb3JhdGlvbiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworKiAgICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisqICAgICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqICAg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworKiAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisqICAgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyogICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyogICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisqICAgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqICAg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFCisqICAgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAor
KiAgIERBTUFHRS4KKyoKKyogICAgUGxlYXNlIHNlZSBmaWxlIHBhdGVudGxpY2Vuc2UudHh0IGZv
ciBmdXJ0aGVyIGdyYW50cy4KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgPGUzMmNtbi5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Zsb2F0UG9pbnQ6OkZsb2F0UG9pbnQoY29uc3Qg
VFBvaW50JiBwKQorICAgIDogbV94KHAuaVgpCisgICAgLCBtX3kocC5pWSkKK3sKK30KKworRmxv
YXRQb2ludDo6b3BlcmF0b3IgVFBvaW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gVFBvaW50KG1f
eCwgbV95KTsKK30KKworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TeW1iaWFuL0Zsb2F0UmVj
dFN5bWJpYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU3ltYmlhbi9GbG9h
dFJlY3RTeW1iaWFuLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU3ltYmlh
bi9GbG9hdFJlY3RTeW1iaWFuLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisqICAgIENvcHlyaWdodCAoYykgMjAwNiwgTm9raWEg
Q29ycG9yYXRpb24KKyogICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogICBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyogICBhcmUgbWV0OgorKgorKiAgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyogICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyogICAgICAgIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyog
ICAgICAgIGRpc3RyaWJ1dGlvbi4KKyogICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIE5v
a2lhIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqICAgICAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyog
ICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyoKKyogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyogICBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiAgIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyog
ICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyogICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogICBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqICAgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUKKyogICBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNICisqICAgREFNQUdFLgorKgorKiAgICBQbGVhc2Ugc2VlIGZpbGUg
cGF0ZW50bGljZW5zZS50eHQgZm9yIGZ1cnRoZXIgZ3JhbnRzLgorKiA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
KyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlIDxl
MzJzdGQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGbG9hdFJlY3Q6OkZsb2F0UmVjdChj
b25zdCBUUmVjdCYgcikKKyAgICA6IG1fbG9jYXRpb24oSW50UG9pbnQoci5pVGwuaVgsIHIuaVRs
LmlZKSkKKyAgICAsIG1fc2l6ZShJbnRTaXplKHIuU2l6ZSgpLmlXaWR0aCwgci5TaXplKCkuaUhl
aWdodCkpCit7Cit9CisKK0Zsb2F0UmVjdDo6b3BlcmF0b3IgVFJlY3QoKSBjb25zdAoreworICAg
IHJldHVybiBUUmVjdCh4KCksIHkoKSwgcmlnaHQoKSwgYm90dG9tKCkpOworfQorCitUUmVjdCBG
bG9hdFJlY3Q6OnJlY3QoKSBjb25zdAoreworICAgIHJldHVybiBUUmVjdCh4KCksIHkoKSwgcmln
aHQoKSwgYm90dG9tKCkpOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4v
SW50UG9pbnRTeW1iaWFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1N5bWJp
YW4vSW50UG9pbnRTeW1iaWFuLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
U3ltYmlhbi9JbnRQb2ludFN5bWJpYW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBA
CisvKgorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogICAgQ29weXJpZ2h0IChjKSAyMDA2LCBO
b2tpYSBDb3Jwb3JhdGlvbgorKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiAgIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworKiAgIGFyZSBtZXQ6CisqCisqICAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAg
ICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorKiAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKiAgICAgICAg
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorKiAgICAgICAgZGlzdHJpYnV0aW9uLgorKiAgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgTm9raWEgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogICAgICAgIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorKiAgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorKgorKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogICAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqICAgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiAgIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyog
ICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRQorKiAgIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyogICBEQU1BR0UuCisqCisqICAgIFBsZWFzZSBzZWUg
ZmlsZSBwYXRlbnRsaWNlbnNlLnR4dCBmb3IgZnVydGhlciBncmFudHMuCisqID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludFBvaW50
LmgiCisjaW5jbHVkZSA8ZTMyc3RkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50UG9p
bnQ6OkludFBvaW50KGNvbnN0IFRQb2ludCYgcCkKKyAgICA6IG1feChwLmlYKQorICAgICwgbV95
KHAuaVkpCit7Cit9CisKK0ludFBvaW50OjpvcGVyYXRvciBUUG9pbnQoKSBjb25zdAoreworICAg
IHJldHVybiBUUG9pbnQobV94LCBtX3kpOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L1N5bWJpYW4vSW50UmVjdFN5bWJpYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vU3ltYmlhbi9JbnRSZWN0U3ltYmlhbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL1N5bWJpYW4vSW50UmVjdFN5bWJpYW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDU5IEBACisvKgorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogICAgQ29weXJpZ2h0IChjKSAy
MDA2LCBOb2tpYSBDb3Jwb3JhdGlvbgorKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiAg
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiAgIGFyZSBtZXQ6CisqCisqICAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorKiAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKiAg
ICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorKiAgICAgICAgZGlzdHJpYnV0aW9uLgorKiAgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiB0aGUgTm9raWEgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogICAgICAg
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorKiAgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgorKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogICAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
KiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqICAgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqICAg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiAgIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyogICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRQorKiAgIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyogICBEQU1BR0UuCisqCisqICAgIFBsZWFz
ZSBzZWUgZmlsZSBwYXRlbnRsaWNlbnNlLnR4dCBmb3IgZnVydGhlciBncmFudHMuCisqID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklu
dFJlY3QuaCIKKyNpbmNsdWRlIDxlMzJzdGQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJ
bnRSZWN0OjpJbnRSZWN0KGNvbnN0IFRSZWN0JiByKQorICAgIDogbV9sb2NhdGlvbihJbnRQb2lu
dChyLmlUbC5pWCwgci5pVGwuaVkpKQorICAgICwgbV9zaXplKEludFNpemUoci5TaXplKCkuaVdp
ZHRoLCByLlNpemUoKS5pSGVpZ2h0KSkKK3sKK30KKworSW50UmVjdDo6b3BlcmF0b3IgVFJlY3Qo
KSBjb25zdAoreworICAgIHJldHVybiBUUmVjdCh4KCksIHkoKSwgcmlnaHQoKSwgYm90dG9tKCkp
OworfQorCitUUmVjdCBJbnRSZWN0OjpSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gVFJlY3Qo
eCgpLCB5KCksIHJpZ2h0KCksIGJvdHRvbSgpKTsKK30KKworfQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9TeW1iaWFuL0ludFNpemVTeW1iaWFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL1N5bWJpYW4vSW50U2l6ZVN5bWJpYW4uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9TeW1iaWFuL0ludFNpemVTeW1iaWFuLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1NCBAQAorLyoKKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqICAgIENvcHlyaWdodCAo
YykgMjAwNiwgTm9raWEgQ29ycG9yYXRpb24KKyogICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoK
KyogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogICBhcmUgbWV0OgorKgorKiAgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyogICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4K
KyogICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyogICAgICAgIGRpc3RyaWJ1dGlvbi4KKyogICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIE5va2lhIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqICAg
ICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyogICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICAgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiAgIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
KiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogICBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisqICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUKKyogICBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisqICAgREFNQUdFLgorKgorKiAgICBQ
bGVhc2Ugc2VlIGZpbGUgcGF0ZW50bGljZW5zZS50eHQgZm9yIGZ1cnRoZXIgZ3JhbnRzLgorKiA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnRTaXplLmgiCisjaW5jbHVkZSA8ZTMyc3RkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworSW50U2l6ZTo6SW50U2l6ZShjb25zdCBUU2l6ZSYgcykKKyAgICA6IG1fd2lkdGgocy5pV2lk
dGgpCisgICAgLCBtX2hlaWdodChzLmlIZWlnaHQpCit7Cit9CisKK0ludFNpemU6Om9wZXJhdG9y
IFRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gVFNpemUobV93aWR0aCwgbV9oZWlnaHQpOwor
fQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4vU3RyaW5nSW1wbFN5bWJpYW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU3ltYmlhbi9TdHJpbmdJbXBsU3lt
Ymlhbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4vU3RyaW5n
SW1wbFN5bWJpYW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorKiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKyogICAgQ29weXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3Jh
dGlvbgorKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiAgIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiAgIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworKiAgIGFyZSBtZXQ6CisqCisqICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
KiAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKiAgICAgICAgdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiAgICAgICAg
ZGlzdHJpYnV0aW9uLgorKiAgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgTm9raWEgQ29y
cG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorKiAgICAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorKgorKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
KiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqICAgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogICAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQor
KiAgIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0gKKyogICBEQU1BR0UuCisqCisqICAgIFBsZWFzZSBzZWUgZmlsZSBwYXRlbnRs
aWNlbnNlLnR4dCBmb3IgZnVydGhlciBncmFudHMuCisqID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmluZ0ltcGwuaCIKKyNpbmNs
dWRlIDxlMzJzdGQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmdJbXBsOjpTdHJp
bmdJbXBsKGNvbnN0IFREZXNDJiBkZXMpCit7CisgICAgaW5pdChkZXMuUHRyKCksIGRlcy5MZW5n
dGgoKSk7Cit9CisKK1RQdHJDIFN0cmluZ0ltcGw6OmRlcygpIGNvbnN0Cit7CisgICAgVFB0ckMg
dHN0cigoY29uc3QgVFVpbnQxNiAqKW1fZGF0YSwgbV9sZW5ndGgpOworICAgIHJldHVybiB0c3Ry
OworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1N5bWJpYW4vU3RyaW5nU3ltYmlhbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TeW1iaWFuL1N0cmluZ1N5bWJpYW4u
Y3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TeW1iaWFuL1N0cmluZ1N5bWJp
YW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvKgorKiA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKyogICAgQ29weXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3JhdGlvbgorKiAg
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiAgIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
KiAgIGFyZSBtZXQ6CisqCisqICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKiAgICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiAgICAgICAgZGlzdHJpYnV0
aW9uLgorKiAgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgTm9raWEgQ29ycG9yYXRpb24g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorKiAgICAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKgor
KiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiAgIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
KiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogICAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorKiAgIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0gKKyogICBEQU1BR0UuCisqCisqICAgIFBsZWFzZSBzZWUgZmlsZSBwYXRlbnRsaWNlbnNlLnR4
dCBmb3IgZnVydGhlciBncmFudHMuCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8
ZTMyc3RkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nOjpTdHJpbmcoY29uc3Qg
VERlc0MmIGRlcykKK3sKKyAgICBpZiAoIWRlcy5MZW5ndGgoKSkKKyAgICAgICAgbV9pbXBsID0g
U3RyaW5nSW1wbDo6ZW1wdHkoKTsKKyAgICBlbHNlCisgICAgICAgIG1faW1wbCA9IG5ldyBTdHJp
bmdJbXBsKGRlcyk7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBX
ZWJLaXRTNjAvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFM2MC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXRTNjAvQ2hhbmdlTG9nCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEwIEBACisyMDA2LTExLTA3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbi5idWp0YXNAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGlu
ZyBOb2tpYSBsaWNlbnNlIHRleHQuCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNTQwCisKKyAgICAgICAgKiBDaGFuZ2VMb2c6IEFkZGVkLgorICAgICAg
ICAqIHBhdGVudGxpY2Vuc2UudHh0OiBBZGRlZC4KKwpJbmRleDogV2ViS2l0UzYwL3BhdGVudGxp
Y2Vuc2UudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFM2MC9wYXRlbnRsaWNlbnNlLnR4dAkocmV2
aXNpb24gMCkKKysrIFdlYktpdFM2MC9wYXRlbnRsaWNlbnNlLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNiBAQAorTm9raWEgQ29ycG9yYXRpb24gaGVyZWJ5IGdyYW50cyBZb3UgYSB3b3Js
ZHdpZGUsIHJveWFsdHktZnJlZSwKK25vbi1leGNsdXNpdmUgcGF0ZW50IGxpY2Vuc2UsIHN1Ympl
Y3QgdG8gdGhpcmQgcGFydHkgaW50ZWxsZWN0dWFsCitwcm9wZXJ0eSBjbGFpbXMsIHVuZGVyIGFu
eSBwYXRlbnRzIGlzc3VlZCBvciBncmFudGVkIHRvIG9yIHBhdGVudAorYXBwbGljYXRpb25zIG1h
ZGUgYnkgTm9raWEgQ29ycG9yYXRpb24gdGhhdCBjbGFpbSBwcmlvcml0eSBmcm9tIFVTCitwYXRl
bnQgYXBwbGljYXRpb24gbm8uIFVTMTEvMDY5ODkxIGFuZCBGaW5uaXNoIHBhdGVudCBhcHBsaWNh
dGlvbgorbm8uIEZJMjAwNC8wMDg2LCBhbmQgdGhhdCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2Vk
IGJ5IG1ha2luZywgdXNpbmcsCitzZWxsaW5nLCBvZmZlcmluZyB0byBzZWxsLCBpbXBvcnRpbmcg
YW5kIG90aGVyd2lzZSB0cmFuc2ZlcmluZyB0aGlzCitTb2Z0d2FyZSBpbiBzb3VyY2UgY29kZSBh
bmQgb2JqZWN0IGNvZGUgZm9ybS4gVGhpcyBsaWNlbnNlIHNoYWxsCitpbmNsdWRlIGNoYW5nZXMg
dG8gdGhlIFNvZnR3YXJlIHRoYXQgYXJlIGVycm9yIGNvcnJlY3Rpb25zIG9yIG90aGVyCittaW5v
ciBjaGFuZ2VzIHRvIHRoZSBTb2Z0d2FyZSB0aGF0IGRvIG5vdCBhZGQgZnVuY3Rpb25hbGl0eSBv
ciBmZWF0dXJlcword2hlbiB0aGUgU29mdHdhcmUgaXMgaW5jb3Jwb3JhdGVkIGluIGFueSB2ZXJz
aW9uIG9mIGFuIG9wZXJhdGluZyBzeXN0ZW0KK3RoYXQgaGFzIGJlZW4gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIDIuMS4KK1RoaXMgcGF0ZW50IGxpY2Vu
c2UgYXBwbGllcyB0byB1c2Ugb2YgdGhlIFNvZnR3YXJlIGluIGNvbmp1bmN0aW9uIHdpdGgKK2hh
cmR3YXJlLCBidXQgbm8gaGFyZHdhcmUgcGVyIHNlIGlzIGxpY2Vuc2VkIGhlcmV1bmRlci4gVGhp
cyBwYXRlbnQKK2xpY2Vuc2Ugc2hhbGwgbm90IGFwcGx5IHRvIGFueSBwYXRlbnRzIG90aGVyIHRo
YW4gdGhvc2UgbGlzdGVkIGFib3ZlLgorWW91IG11c3QgZW5zdXJlIHRoYXQgeW91IGFjcXVpcmUg
bGljZW5zZXMgZnJvbSB0aGUgcmVsZXZhbnQgcGF0ZW50Citwcm9wcmlldG9yIGZvciBhbnkgb3Ro
ZXIgcGF0ZW50cyB0aGF0IG1heSBiZSBpbmZyaW5nZWQgYnkgeW91ciBpbnRlbmRlZAordXNlLgor
CitJZiBZb3UgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgTm9raWEgQ29ycG9y
YXRpb24gb3IgYW55CitlbnRpdHkgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJj
bGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nCit0aGF0IHRoaXMgc29mdHdhcmUgY29uc3RpdHV0
ZXMgZGlyZWN0IG9yIGNvbnRyaWJ1dG9yeSBpbmZyaW5nZW1lbnQgb2YKK2FueSBvdGhlciBwYXRl
bnQsIG9yIGNoYWxsZW5naW5nIHRoZSB2YWxpZGl0eSBvZiBhbnkgcGF0ZW50cyBvciBwYXRlbnQK
K2FwcGxpY2F0aW9ucyBsaWNlbnNlZCBoZXJldW5kZXIsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNl
cyBncmFudGVkIHRvCitZb3UgdW5kZXIgdGhpcyBsaWNlbnNlIGZvciB0aGF0IHNvZnR3YXJlIHNo
YWxsIHRlcm1pbmF0ZSBhcyBvZiB0aGUgZGF0ZQorc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgo=
</data>
<flag name="review"
          id="4004"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11444</attachid>
            <date>2006-11-09 12:15:33 -0800</date>
            <delta_ts>2006-11-10 14:59:20 -0800</delta_ts>
            <desc>basic types for Symbian platform</desc>
            <filename>basicTypes.patch</filename>
            <type>text/plain</type>
            <size>31784</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Njg5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYtMTEtMDkgIFphbGFuIEJ1
anRhcyAgPHphbGFuLmJ1anRhc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGRlZCBzNjAvc3ltYmlhbiBwbGF0Zm9y
bSBkZWZpbmVzLiAKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE1NDAKKyAgICAgICAgCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMDYtMTEt
MDggIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
ZGFyaW4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTc2NDMpCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsMTYg
QEAKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NBSVJPIDEKICNlbmRpZgogCisKKyNpZmRlZiBfX1M2
MF9fCisvLyB3ZSBhcmUgY3Jvc3MtY29tcGlsaW5nLCBpdCBpcyBub3QgcmVhbGx5IHdpbmRvd3MK
KyN1bmRlZiBXVEZfUExBVEZPUk1fV0lOX09TCisjdW5kZWYgV1RGX1BMQVRGT1JNX1dJTgorI3Vu
ZGVmIFdURl9QTEFURk9STV9DQUlSTworI2RlZmluZSBXVEZfUExBVEZPUk1fUzYwIDEKKyNkZWZp
bmUgV1RGX1BMQVRGT1JNX1NZTUJJQU4gMQorI2VuZGlmCisKIC8qIENQVSAqLwogCiAvKiBQTEFU
Rk9STShQUEMpICovCkBAIC0xNjksNiArMTc5LDggQEAKICNpZiBQTEFURk9STShLREUpCiAvKiBG
SVhNRTogTm90IHVzaW5nIFF0NCB1bmljb2RlIGZvciBub3chICovCiAjZGVmaW5lIFdURl9VU0Vf
SUNVX1VOSUNPREUgMQorI2VsaWYgUExBVEZPUk0oU1lNQklBTikKKyNkZWZpbmUgV1RGX1VTRV9T
WU1CSUFOX1VOSUNPREUgMQogI2Vsc2UKICNkZWZpbmUgV1RGX1VTRV9JQ1VfVU5JQ09ERSAxCiAj
ZW5kaWYKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzY4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNTggQEAKKzIwMDYtMTEtMDkgIFphbGFuIEJ1anRhcyA8emFsYW4uYnVq
dGFzQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBiYXNpYyB0eXBlcyBmb3Igc3ltYmlhbiBwbGF0Zm9ybS4KKyAgICAgICAg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NDAKKyAgICAgICAgCisg
ICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAg
ICogY29uZmlnLmg6CisgICAgICAgICogcGxhdGZvcm0vQXRvbWljU3RyaW5nLmg6CisgICAgICAg
IChXZWJDb3JlOjpBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpBdG9taWNTdHJpbmc6Om9wZXJhdG9yIFRQdHJDKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EZXBy
ZWNhdGVkU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVIYW5kbGVOb2Rl
QmxvY2spOgorICAgICAgICAqIHBsYXRmb3JtL0RlcHJlY2F0ZWRTdHJpbmcuaDogY2hhciBfaW50
ZXJuYWxCdWZmZXIgaGFzIHRvIGJlIGluIGZyb250IG9mCisgICAgICAgICAgdGhlIGJpdGZpZWxk
cyBhcyBDb2Rld2FycmlvciAoMy4yLjUgYnVpbGQgNDYxKSBjb21waWxlciBjYW5ub3QgY29wZSB3
aXRoCisgICAgICAgICAgYml0ZmllbGRzIGFuZCBicmVha3MgYnl0ZSBhbGlnbWVudAorICAgICAg
ICAqIHBsYXRmb3JtL0Zsb2F0UG9pbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GbG9hdFJlY3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9JbnRQb2ludC5oOgorICAgICAgICAqIHBsYXRmb3JtL0lu
dFJlY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9JbnRTaXplLmg6CisgICAgICAgICogcGxhdGZv
cm0vUGxhdGZvcm1TdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6b3BlcmF0b3Ig
VFB0ckMpOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjpkZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zeW1iaWFuL0RlcHJlY2F0ZWRT
dHJpbmdTeW1iaWFuLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkU3Ry
aW5nOjpzZXRCdWZmZXJGcm9tRGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRTdHJp
bmc6OmZyb21EZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFN0cmluZzo6ZGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRTdHJpbmc6OmRlczgpOgorICAgICAgICAqIHBs
YXRmb3JtL3N5bWJpYW4vRmxvYXRQb2ludFN5bWJpYW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0UG9pbnQ6OkZsb2F0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQ
b2ludDo6b3BlcmF0b3IgVFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zeW1iaWFuL0Zsb2F0
UmVjdFN5bWJpYW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6Rmxv
YXRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6b3BlcmF0b3IgVFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RmxvYXRSZWN0OjpyZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9z
eW1iaWFuL0ludFBvaW50U3ltYmlhbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50
UG9pbnQ6OkludFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludFBvaW50OjpvcGVyYXRvciBU
UG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3N5bWJpYW4vSW50UmVjdFN5bWJpYW4uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6OkludFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW50UmVjdDo6b3BlcmF0b3IgVFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVj
dDo6UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vc3ltYmlhbi9JbnRTaXplU3ltYmlhbi5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50U2l6ZTo6SW50U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRTaXplOjpvcGVyYXRvciBUU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vc3lt
Ymlhbi9TdHJpbmdJbXBsU3ltYmlhbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3Ry
aW5nSW1wbDo6U3RyaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdJbXBsOjpkZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL3N5bWJpYW4vU3RyaW5nU3ltYmlhbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjpTdHJpbmcpOgorCiAyMDA2LTExLTA5ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaDogT29wcyEgRml4ZWQgYWNjaWRlbnRhbGx5IGNoZWNrZWQtaW4gaWZkZWYuCkluZGV4OiBX
ZWJDb3JlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9u
IDE3NjQzKQorKysgV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
MTAgQEAgdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwogCiAjZW5kaWYgLyogUExBVEZPUk0oV0lOX09T
KSAqLwogCisjaWYgIVBMQVRGT1JNKFNZTUJJQU4pCisjZGVmaW5lIElNUE9SVF9DCisjZGVmaW5l
IEVYUE9SVF9DCisjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKQEAgLTc4LDMgKzgyLDIz
IEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKICNkZWZpbmUgV1RGX1VTRV9KQVZBU0NSSVBUQ09S
RV9CSU5ESU5HUyAxCiAjZGVmaW5lIFdURl9VU0VfTlBPQkpFQ1QgMQogI2VuZGlmCisKKyNpZiBQ
TEFURk9STShTWU1CSUFOKQorI2RlZmluZSBXVEZfVVNFX0pBVkFTQ1JJUFRDT1JFX0JJTkRJTkdT
IDEKKyNkZWZpbmUgV1RGX1VTRV9OUE9CSkVDVCAxCisjdW5kZWYgWFNMVF9TVVBQT1JUCisjdW5k
ZWYgV0lOMzIKKyN1bmRlZiBfV0lOMzIKKyN1bmRlZiBBVk9JRF9TVEFUSUNfQ09OU1RSVUNUT1JT
CisjZGVmaW5lIFVTRV9TWVNURU1fTUFMTE9DIDEKKyNkZWZpbmUgVV9IQVZFX0lOVDhfVCAwCisj
ZGVmaW5lIFVfSEFWRV9JTlQxNl9UIDAKKyNkZWZpbmUgVV9IQVZFX0lOVDMyX1QgMAorI2RlZmlu
ZSBVX0hBVkVfSU5UNjRfVCAwCisjZGVmaW5lIFVfSEFWRV9JTlRUWVBFU19IIDAKKworI2luY2x1
ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c25wcmludGYuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4K
KyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL0F0b21pY1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vQXRvbWlj
U3RyaW5nLmgJKHJldmlzaW9uIDE3NjQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9BdG9taWNTdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsMTAgQEAgcHVibGljOgogICAgIEF0b21p
Y1N0cmluZyhOU1N0cmluZyogcykgOiBtX3N0cmluZyhhZGQoU3RyaW5nKHMpLmltcGwoKSkpIHsg
fQogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAj
ZW5kaWYKKyNpZiBQTEFURk9STShTWU1CSUFOKQorICAgIEF0b21pY1N0cmluZyhjb25zdCBURGVz
QyYgcykgOiBtX3N0cmluZyhhZGQoU3RyaW5nKHMpLmltcGwoKSkpIHsgfQorICAgIG9wZXJhdG9y
IFRQdHJDKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyNlbmRpZgogCiAgICAgQXRvbWlj
U3RyaW5nKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmKTsKICAgICBEZXByZWNhdGVkU3RyaW5nIGRl
cHJlY2F0ZWRTdHJpbmcoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRl
ZFN0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9EZXByZWNhdGVkU3Ry
aW5nLmNwcAkocmV2aXNpb24gMTc2NDMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0RlcHJlY2F0ZWRT
dHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICNkZWZpbmUgQ0hFQ0tfRk9SX0hBTkRMRV9MRUFLUyAwCiAKKyNpZiBQTEFURk9S
TShTWU1CSUFOKQorI3VuZGVmIENIRUNLX0ZPUl9IQU5ETEVfTEVBS1MKKy8vIHN5bWJpYW46Zml4
bWUgbmVlZCBwYWdlIGFsaWduZWQgYWxsb2NhdGlvbnMgYXMgU3ltYmlhbiBwbGF0Zm9ybSBkb2Vz
IG5vdCBoYXZlIHN1cHBvcnQgZm9yIHZhbGxvYworI2RlZmluZSBDSEVDS19GT1JfSEFORExFX0xF
QUtTIDEKKyNlbmRpZgorCiAjZGVmaW5lIEFMTE9DX1FDSEFSX0dPT0RfU0laRShYKSAoWCkKICNk
ZWZpbmUgQUxMT0NfQ0hBUl9HT09EX1NJWkUoWCkgKFgpCiAKQEAgLTI0NDcsNiArMjQ1Myw5IEBA
IHN0YXRpYyBIYW5kbGVOb2RlICppbml0aWFsaXplSGFuZGxlTm9kZUIKIAogI2lmIFBMQVRGT1JN
KFdJTl9PUykKICAgICBibG9jayA9IChIYW5kbGVOb2RlKilWaXJ0dWFsQWxsb2MoMCwgcGFnZVNp
emUsIE1FTV9DT01NSVQgfCBNRU1fUkVTRVJWRSwgUEFHRV9SRUFEV1JJVEUpOworI2VsaWYgUExB
VEZPUk0oU1lNQklBTikKKyAgICAvLyBzeW1iaWFuOjpmaXhtZSBuZWVkcyB0byBkbyBwYWdlIGFs
aWduZWQgYWxsb2NhdGlvbiBhcyB2YWxsb2MgaXMgbm90IHN1cHBvcnRlZC4KKyAgICBibG9jayA9
IE5VTEw7CiAjZWxzZQogICAgIGJsb2NrID0gKEhhbmRsZU5vZGUqKXZhbGxvYyhwYWdlU2l6ZSk7
CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5oCShyZXZpc2lvbiAx
NzY0MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTUsMTQgKzIxNSwxNCBAQCBzdHJ1Y3QgRGVwcmVjYXRlZFN0cmluZ0RhdGEgIAog
ICAgIHVuc2lnbmVkIF9sZW5ndGg7CiAgICAgbXV0YWJsZSBEZXByZWNhdGVkQ2hhciAqX3VuaWNv
ZGU7CiAgICAgbXV0YWJsZSBjaGFyICpfYXNjaWk7CisgICAgY2hhciBfaW50ZXJuYWxCdWZmZXJb
V0VCQ09SRV9EU19JTlRFUk5BTF9CVUZGRVJfU0laRV07IC8vIFBhZCBvdXQgdG8gYSAoKChzaXpl
ICsgMSkgJiB+MTUpICsgMTQpIHNpemUKKwogICAgIHVuc2lnbmVkIF9tYXhVbmljb2RlIDogMzA7
CiAgICAgYm9vbCBfaXNVbmljb2RlVmFsaWQgOiAxOwogICAgIGJvb2wgX2lzSGVhcEFsbG9jYXRl
ZCA6IDE7IC8vIEZyYWdpbGUsIGJ1dCB0aGUgb25seSB3YXkgd2UgY2FuIGJlIHN1cmUgdGhlIGlu
c3RhbmNlIHdhcyBjcmVhdGVkIHdpdGggJ25ldycuCiAgICAgdW5zaWduZWQgX21heEFzY2lpIDog
MzE7CiAgICAgYm9vbCBfaXNBc2NpaVZhbGlkIDogMTsKICAgICAKLSAgICBjaGFyIF9pbnRlcm5h
bEJ1ZmZlcltXRUJDT1JFX0RTX0lOVEVSTkFMX0JVRkZFUl9TSVpFXTsgLy8gUGFkIG91dCB0byBh
ICgoKHNpemUgKyAxKSAmIH4xNSkgKyAxNCkgc2l6ZQotCiBwcml2YXRlOgogICAgIERlcHJlY2F0
ZWRTdHJpbmdEYXRhKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmdEYXRhICYpOwogICAgIERlcHJlY2F0
ZWRTdHJpbmdEYXRhICZvcGVyYXRvcj0oY29uc3QgRGVwcmVjYXRlZFN0cmluZ0RhdGEgJik7CkBA
IC0yNjgsNiArMjY4LDEwIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGlj
IERlcHJlY2F0ZWRTdHJpbmcgZnJvbU5TU3RyaW5nKE5TU3RyaW5nKik7CiAjZW5kaWYKKyNpZiBQ
TEFURk9STShTWU1CSUFOKQorICAgIHN0YXRpYyBEZXByZWNhdGVkU3RyaW5nIGZyb21EZXMoY29u
c3QgVERlc0MmKTsKKyAgICBzdGF0aWMgRGVwcmVjYXRlZFN0cmluZyBmcm9tRGVzKGNvbnN0IFRE
ZXNDOCYpOworI2VuZGlmCiAgICAgRGVwcmVjYXRlZFN0cmluZyAmb3BlcmF0b3I9KGNoYXIpOwog
ICAgIERlcHJlY2F0ZWRTdHJpbmcgJm9wZXJhdG9yPShEZXByZWNhdGVkQ2hhcik7CiAgICAgRGVw
cmVjYXRlZFN0cmluZyAmb3BlcmF0b3I9KGNvbnN0IGNoYXIgKik7CkBAIC00MDQsNiArNDA4LDEz
IEBAIHB1YmxpYzoKIAogI2VuZGlmCiAKKyNpZiBQTEFURk9STShTWU1CSUFOKQorICAgIFRQdHJD
IGRlcygpIGNvbnN0OworICAgIFRQdHJDOCBkZXM4KCkgY29uc3Q7CisgICAgdm9pZCBzZXRCdWZm
ZXJGcm9tRGVzKGNvbnN0IFREZXNDJik7CisgICAgdm9pZCBzZXRCdWZmZXJGcm9tRGVzKGNvbnN0
IFREZXNDOCYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgLy8gVXNlZCBieSBEZXByZWNhdGVk
Q29uc3RTdHJpbmcuCiAgICAgRGVwcmVjYXRlZFN0cmluZyhEZXByZWNhdGVkU3RyaW5nRGF0YSAq
Y29uc3REYXRhLCBib29sIC8qZHVtbXkqLyk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0Zsb2F0
UG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0Zsb2F0UG9pbnQuaAkocmV2
aXNpb24gMTc2NDMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0Zsb2F0UG9pbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDYsNiArNDYsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX05TUG9pbnQgTlNQb2ludDsK
IGNsYXNzIFFQb2ludEY7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFNZTUJJQU4pCitjbGFzcyBU
UG9pbnQ7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRQb2ludDsK
QEAgLTc4LDYgKzgyLDExIEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBRUG9pbnRGKCkgY29uc3Q7
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFNZTUJJQU4pCisgICAgb3BlcmF0b3IgVFBvaW50KCkg
Y29uc3Q7CisgICAgRmxvYXRQb2ludChjb25zdCBUUG9pbnQmICk7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBmbG9hdCBtX3gsIG1feTsKIH07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0Zsb2F0
UmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRSZWN0LmgJKHJldmlz
aW9uIDE3NjQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdFJlY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMTIwLDYgKzEyMCwxMSBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0KGNvbnN0IFFSZWN0
RiYpOwogICAgIG9wZXJhdG9yIFFSZWN0RigpIGNvbnN0OwogI2VuZGlmCisjaWYgUExBVEZPUk0o
U1lNQklBTikKKyAgICBGbG9hdFJlY3QoY29uc3QgVFJlY3QmKTsKKyAgICBvcGVyYXRvciBUUmVj
dCgpIGNvbnN0OworICAgIFRSZWN0IHJlY3QoKSBjb25zdDsKKyNlbmRpZgogCiBwcml2YXRlOgog
ICAgIEZsb2F0UG9pbnQgbV9sb2NhdGlvbjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vSW50UG9p
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0ludFBvaW50LmgJKHJldmlzaW9u
IDE3NjQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9JbnRQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0Nyw5IEBAIHR5cGVkZWYgc3RydWN0IHRhZ1BPSU5UUyBQT0lOVFM7CiAjZWxpZiBQ
TEFURk9STShRVCkKIGNsYXNzIFFQb2ludDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFNZTUJJQU4p
CitjbGFzcyBUUG9pbnQ7CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Miw2
ICs4NSwxMCBAQCBwdWJsaWM6CiAgICAgSW50UG9pbnQoY29uc3QgUVBvaW50Jik7CiAgICAgb3Bl
cmF0b3IgUVBvaW50KCkgY29uc3Q7CiAjZW5kaWYKKyNpZiBQTEFURk9STShTWU1CSUFOKQorICAg
IEludFBvaW50KGNvbnN0IFRQb2ludCYpOworICAgIG9wZXJhdG9yIFRQb2ludCgpIGNvbnN0Owor
I2VuZGlmCiAKIHByaXZhdGU6CiAgICAgaW50IG1feCwgbV95OwpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9JbnRSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9JbnRSZWN0LmgJ
KHJldmlzaW9uIDE3NjQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9JbnRSZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgdGFnUkVDVCBSRUNUOwogI2Vs
aWYgUExBVEZPUk0oUVQpCiBjbGFzcyBRUmVjdDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFNZTUJJ
QU4pCitjbGFzcyBUUmVjdDsKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEx
Myw2ICsxMTYsMTEgQEAgcHVibGljOgogICAgIEludFJlY3QoY29uc3QgUVJlY3QmKTsKICAgICBv
cGVyYXRvciBRUmVjdCgpIGNvbnN0OwogI2VuZGlmCisjaWYgUExBVEZPUk0oU1lNQklBTikKKyAg
ICBJbnRSZWN0KGNvbnN0IFRSZWN0Jik7CisgICAgb3BlcmF0b3IgVFJlY3QoKSBjb25zdDsKKyAg
ICBUUmVjdCBSZWN0KCkgY29uc3Q7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENHKQogICAgIG9w
ZXJhdG9yIENHUmVjdCgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9JbnRTaXplLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9JbnRTaXplLmgJKHJldmlzaW9uIDE3NjQz
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9JbnRTaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgdGFnU0laRSBTSVpFOwogI2VsaWYgUExBVEZPUk0oUVQp
CiBjbGFzcyBRU2l6ZTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFNZTUJJQU4pCitjbGFzcyBUU2l6
ZTsKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTk3LDYgKzEwMCwxMCBAQCBw
dWJsaWM6CiAgICAgSW50U2l6ZShjb25zdCBRU2l6ZSYpOwogICAgIG9wZXJhdG9yIFFTaXplKCkg
Y29uc3Q7CiAjZW5kaWYKKyNpZiBQTEFURk9STShTWU1CSUFOKQorICAgIEludFNpemUoY29uc3Qg
VFNpemUmKTsKKyAgICBvcGVyYXRvciBUU2l6ZSgpIGNvbnN0OworI2VuZGlmCiAKIAogcHJpdmF0
ZToKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyaW5nLmgJKHJldmlzaW9uIDE3NjQzKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcs
NiArMTY3LDEyIEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBRU3RyaW5nKCkgY29uc3Q7CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKFNZTUJJQU4pCisgICAgU3RyaW5nKGNvbnN0IFREZXNDJik7Cisg
ICAgb3BlcmF0b3IgVFB0ckMoKSBjb25zdCB7IHJldHVybiBkZXMoKTsgfQorICAgIFRQdHJDIGRl
cygpIGNvbnN0IHsgaWYgKCFtX2ltcGwpIHJldHVybiBLTnVsbERlc0MoKTsgcmV0dXJuIG1faW1w
bC0+ZGVzKCk7IH0KKyNlbmRpZgorCiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIEZvciBkZWJ1Z2dp
bmcgb25seSwgbGVha3MgbWVtb3J5LgogICAgIFZlY3RvcjxjaGFyPiBhc2NpaSgpIGNvbnN0OwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDE3NjQzKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIsMTAgQEAgcHVi
bGljOgogICAgIFN0cmluZ0ltcGwoTlNTdHJpbmcqKTsKICAgICBvcGVyYXRvciBOU1N0cmluZyoo
KSBjb25zdDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFNZTUJJQU4pCisgICAgU3RyaW5nSW1wbChj
b25zdCBURGVzQyYpOworICAgIFRQdHJDIGRlcygpIGNvbnN0OworI2VuZGlmCiAKICAgICBTdHJp
bmdJbXBsKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmKTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9zeW1iaWFuL0RlcHJlY2F0ZWRTdHJpbmdTeW1iaWFuLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL3N5bWJpYW4vRGVwcmVjYXRlZFN0cmluZ1N5bWJpYW4uY3BwCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9zeW1iaWFuL0RlcHJlY2F0ZWRTdHJpbmdTeW1iaWFu
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyogPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CisqICAgIENvcHlyaWdodCAoYykgMjAwNiwgTm9raWEgQ29ycG9yYXRpb24KKyogICAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogICBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyog
ICBhcmUgbWV0OgorKgorKiAgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisqICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyogICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogICAgICAgIGRpc3RyaWJ1dGlv
bi4KKyogICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIE5va2lhIENvcnBvcmF0aW9uIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisqICAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyogICAgICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyog
ICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogICBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorKiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogICBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyog
ICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqICAgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKyogICBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
CisqICAgREFNQUdFLgorKgorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXByZWNhdGVkU3RyaW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordm9pZCBEZXByZWNhdGVkU3RyaW5nOjpzZXRCdWZmZXJGcm9tRGVzKGNvbnN0
IFREZXNDJiBkZXMpCit7CisgICAgc2V0VW5pY29kZSgoY29uc3QgRGVwcmVjYXRlZENoYXIgKilk
ZXMuUHRyKCksICh1aW50KWRlcy5MZW5ndGgoKSk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFN0cmlu
Zzo6c2V0QnVmZmVyRnJvbURlcyhjb25zdCBURGVzQzgmIGRlcykKK3sKKyAgICBzZXRMYXRpbjEo
KGNvbnN0IGNoYXIqKWRlcy5QdHIoKSwgKHVpbnQpZGVzLkxlbmd0aCgpKTsKK30KKworRGVwcmVj
YXRlZFN0cmluZyBEZXByZWNhdGVkU3RyaW5nOjpmcm9tRGVzKGNvbnN0IFREZXNDJiBkZXMpCit7
CisgICAgRGVwcmVjYXRlZFN0cmluZyBzOworICAgIHMuc2V0QnVmZmVyRnJvbURlcyhkZXMpOwor
ICAgIHJldHVybiBzOworfQorCitEZXByZWNhdGVkU3RyaW5nIERlcHJlY2F0ZWRTdHJpbmc6OmZy
b21EZXMoY29uc3QgVERlc0M4JiBkZXMpCit7CisgICAgRGVwcmVjYXRlZFN0cmluZyBzOworICAg
IHMuc2V0QnVmZmVyRnJvbURlcyhkZXMpOworICAgIHJldHVybiBzOworfQorCitUUHRyQyBEZXBy
ZWNhdGVkU3RyaW5nOjpkZXMoKSBjb25zdAoreworICAgIGlmICghZGF0YUhhbmRsZVswXS0+X2lz
VW5pY29kZVZhbGlkKQorICAgICAgICBkYXRhSGFuZGxlWzBdLT5tYWtlVW5pY29kZSgpOworCisg
ICAgVFB0ckMgdHN0cigoY29uc3QgVFVpbnQxNiopdW5pY29kZSgpLCBsZW5ndGgoKSApOworCisg
ICAgcmV0dXJuIHRzdHI7Cit9CisKK1RQdHJDOCBEZXByZWNhdGVkU3RyaW5nOjpkZXM4KCkgY29u
c3QKK3sKKyAgICBUUHRyQzggdHN0cigoY29uc3QgVFVpbnQ4KilsYXRpbjEoKSwgbGVuZ3RoKCkp
OworCisgICAgcmV0dXJuIHRzdHI7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3N5bWJpYW4vRmxvYXRQb2ludFN5bWJpYW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vc3ltYmlhbi9GbG9hdFBvaW50U3ltYmlhbi5j
cHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL3N5bWJpYW4vRmxvYXRQb2ludFN5
bWJpYW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorKiA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKyogICAgQ29weXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3JhdGlvbgor
KiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiAgIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworKiAgIGFyZSBtZXQ6CisqCisqICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKiAgICAgICAgdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKiAgICAgICAgZGlzdHJp
YnV0aW9uLgorKiAgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgTm9raWEgQ29ycG9yYXRp
b24gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyogICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorKiAgICAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
KgorKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKiAgIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKiAgIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogICAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorKiAgIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0gKKyogICBEQU1BR0UuCisqCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlIDxlMzJj
bW4uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGbG9hdFBvaW50OjpGbG9hdFBvaW50KGNv
bnN0IFRQb2ludCYgcCkKKyAgICA6IG1feChwLmlYKQorICAgICwgbV95KHAuaVkpCit7Cit9CisK
K0Zsb2F0UG9pbnQ6Om9wZXJhdG9yIFRQb2ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFRQb2lu
dChtX3gsIG1feSk7Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vc3ltYmlhbi9GbG9h
dFJlY3RTeW1iaWFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3N5bWJpYW4v
RmxvYXRSZWN0U3ltYmlhbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL3N5
bWJpYW4vRmxvYXRSZWN0U3ltYmlhbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAK
Ky8qCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKiAgICBDb3B5cmlnaHQgKGMpIDIwMDYsIE5v
a2lhIENvcnBvcmF0aW9uCisqICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqICAgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisqICAgYXJlIG1ldDoKKyoKKyogICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAg
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisqICAgICAgICB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisqICAgICAgICBkaXN0cmlidXRpb24uCisqICAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRo
ZSBOb2tpYSBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiAgICAgICAgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisqICAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisqCisqICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAgICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisqICAgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisqICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogICBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisqICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqICAgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAg
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFCisqICAgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorKiAgIERBTUFHRS4KKyoKKyogPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSA8
ZTMyc3RkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmxvYXRSZWN0OjpGbG9hdFJlY3Qo
Y29uc3QgVFJlY3QmIHIpCisgICAgOiBtX2xvY2F0aW9uKEludFBvaW50KHIuaVRsLmlYLCByLmlU
bC5pWSkpCisgICAgLCBtX3NpemUoSW50U2l6ZShyLlNpemUoKS5pV2lkdGgsIHIuU2l6ZSgpLmlI
ZWlnaHQpKQoreworfQorCitGbG9hdFJlY3Q6Om9wZXJhdG9yIFRSZWN0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gVFJlY3QoeCgpLCB5KCksIHJpZ2h0KCksIGJvdHRvbSgpKTsKK30KKworVFJlY3Qg
RmxvYXRSZWN0OjpyZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gVFJlY3QoeCgpLCB5KCksIHJp
Z2h0KCksIGJvdHRvbSgpKTsKK30KKworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9zeW1iaWFu
L0ludFBvaW50U3ltYmlhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9zeW1i
aWFuL0ludFBvaW50U3ltYmlhbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L3N5bWJpYW4vSW50UG9pbnRTeW1iaWFuLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqICAgIENvcHlyaWdodCAoYykgMjAwNiwg
Tm9raWEgQ29ycG9yYXRpb24KKyogICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogICBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyogICBhcmUgbWV0OgorKgorKiAgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyogICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyogICAgICAg
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyogICAgICAgIGRpc3RyaWJ1dGlvbi4KKyogICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIE5va2lhIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqICAgICAgICBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyogICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICAgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyogICBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiAgIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogICBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisq
ICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUKKyogICBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisqICAgREFNQUdFLgorKgorKiA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5o
IgorI2luY2x1ZGUgPGUzMnN0ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ludFBvaW50
OjpJbnRQb2ludChjb25zdCBUUG9pbnQmIHApCisgICAgOiBtX3gocC5pWCkKKyAgICAsIG1feShw
LmlZKQoreworfQorCitJbnRQb2ludDo6b3BlcmF0b3IgVFBvaW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gVFBvaW50KG1feCwgbV95KTsKK30KKworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9z
eW1iaWFuL0ludFJlY3RTeW1iaWFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L3N5bWJpYW4vSW50UmVjdFN5bWJpYW4uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9zeW1iaWFuL0ludFJlY3RTeW1iaWFuLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqICAgIENvcHlyaWdodCAoYykgMjAw
NiwgTm9raWEgQ29ycG9yYXRpb24KKyogICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogICBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogICBhcmUgbWV0OgorKgorKiAgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyogICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyogICAg
ICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyogICAgICAgIGRpc3RyaWJ1dGlvbi4KKyogICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIE5va2lhIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqICAgICAgICBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyogICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisqICAgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyog
ICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiAgIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogICBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisqICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUKKyogICBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisqICAgREFNQUdFLgorKgorKiA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRSZWN0
LmgiCisjaW5jbHVkZSA8ZTMyc3RkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50UmVj
dDo6SW50UmVjdChjb25zdCBUUmVjdCYgcikKKyAgICA6IG1fbG9jYXRpb24oSW50UG9pbnQoci5p
VGwuaVgsIHIuaVRsLmlZKSkKKyAgICAsIG1fc2l6ZShJbnRTaXplKHIuU2l6ZSgpLmlXaWR0aCwg
ci5TaXplKCkuaUhlaWdodCkpCit7Cit9CisKK0ludFJlY3Q6Om9wZXJhdG9yIFRSZWN0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gVFJlY3QoeCgpLCB5KCksIHJpZ2h0KCksIGJvdHRvbSgpKTsKK30K
KworVFJlY3QgSW50UmVjdDo6UmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFRSZWN0KHgoKSwg
eSgpLCByaWdodCgpLCBib3R0b20oKSk7Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
c3ltYmlhbi9JbnRTaXplU3ltYmlhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9zeW1iaWFuL0ludFNpemVTeW1iaWFuLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vc3ltYmlhbi9JbnRTaXplU3ltYmlhbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTMgQEAKKy8qCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKiAgICBDb3B5cmlnaHQgKGMpIDIw
MDYsIE5va2lhIENvcnBvcmF0aW9uCisqICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqICAg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqICAgYXJlIG1ldDoKKyoKKyogICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisqICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisqICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisqICAg
ICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisqICAgICAgICBkaXN0cmlidXRpb24uCisqICAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIHRoZSBOb2tpYSBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworKiAgICAgICAg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisqICAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKiAgICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisq
ICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisqICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogICBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyogICBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisqICAgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFCisqICAgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorKiAgIERBTUFHRS4KKyoKKyogPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50U2l6
ZS5oIgorI2luY2x1ZGUgPGUzMnN0ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ludFNp
emU6OkludFNpemUoY29uc3QgVFNpemUmIHMpCisgICAgOiBtX3dpZHRoKHMuaVdpZHRoKQorICAg
ICwgbV9oZWlnaHQocy5pSGVpZ2h0KQoreworfQorCitJbnRTaXplOjpvcGVyYXRvciBUU2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFRTaXplKG1fd2lkdGgsIG1faGVpZ2h0KTsKK30KKworfQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9zeW1iaWFuL1N0cmluZ0ltcGxTeW1iaWFuLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3N5bWJpYW4vU3RyaW5nSW1wbFN5bWJpYW4uY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9zeW1iaWFuL1N0cmluZ0ltcGxTeW1i
aWFuLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyogPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CisqICAgIENvcHlyaWdodCAoYykgMjAwNiwgTm9raWEgQ29ycG9yYXRpb24KKyog
ICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogICBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyogICBhcmUgbWV0OgorKgorKiAgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisqICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyogICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogICAgICAgIGRpc3RyaWJ1
dGlvbi4KKyogICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIE5va2lhIENvcnBvcmF0aW9u
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisqICAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyogICAgICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoK
KyogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogICBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogICBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyogICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqICAgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKyogICBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNICisqICAgREFNQUdFLgorKgorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCisjaW5jbHVkZSA8ZTMyc3Rk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChjb25z
dCBURGVzQyYgZGVzKQoreworICAgIGluaXQoZGVzLlB0cigpLCBkZXMuTGVuZ3RoKCkpOworfQor
CitUUHRyQyBTdHJpbmdJbXBsOjpkZXMoKSBjb25zdAoreworICAgIFRQdHJDIHRzdHIoKGNvbnN0
IFRVaW50MTYgKiltX2RhdGEsIG1fbGVuZ3RoKTsKKyAgICByZXR1cm4gdHN0cjsKK30KKworfQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9zeW1iaWFuL1N0cmluZ1N5bWJpYW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vc3ltYmlhbi9TdHJpbmdTeW1iaWFuLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vc3ltYmlhbi9TdHJpbmdTeW1iaWFuLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyogPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisq
ICAgIENvcHlyaWdodCAoYykgMjAwNiwgTm9raWEgQ29ycG9yYXRpb24KKyogICAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyoKKyogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogICBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogICBhcmUgbWV0
OgorKgorKiAgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisq
ICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4KKyogICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogICAgICAgIGRpc3RyaWJ1dGlvbi4KKyogICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIE5va2lhIENvcnBvcmF0aW9uIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisqICAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyogICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyoKKyogICBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogICBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKiAg
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorKiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyogICBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisqICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKyogICBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisqICAgREFN
QUdFLgorKgorKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPGUzMnN0ZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZzo6U3RyaW5nKGNvbnN0IFREZXNDJiBkZXMpCit7
CisgICAgaWYgKCFkZXMuTGVuZ3RoKCkpCisgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmVt
cHR5KCk7CisgICAgZWxzZQorICAgICAgICBtX2ltcGwgPSBuZXcgU3RyaW5nSW1wbChkZXMpOwor
fQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="4027"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>