<?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>206044</bug_id>
          
          <creation_ts>2020-01-09 17:29:27 -0800</creation_ts>
          <short_desc>[bmalloc] Calculate LineMetadata for specific VM page size in compile time</short_desc>
          <delta_ts>2020-01-14 12:52:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>bmalloc</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>basuke</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1604949</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-09 17:29:27 -0800</bug_when>
    <thetext>LineMetadata is dependent only to vm page size. Precalculate them and store it in constexpr array makes benefits as it skips run time calculation and also page allocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604950</commentid>
    <comment_count>1</comment_count>
      <attachid>387296</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-09 17:30:11 -0800</bug_when>
    <thetext>Created attachment 387296
FIRST TRIAL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604959</commentid>
    <comment_count>2</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-09 17:41:05 -0800</bug_when>
    <thetext>size of LineMetadata array is:
  sizeof(LineMetadata) * sizeClass(smallLineSize) * smallLineCount(VMPageSize)
  = 2 * maskSizeClass(256) * vmPageSize / 256
  = 62 * (vmPageSize / 256)

VMPageSize|size of LineMetadata array
----------+---------------
       4k | 62 * 16 = 992
      16k | 62 * 64 = 3968</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604961</commentid>
    <comment_count>3</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-09 17:42:46 -0800</bug_when>
    <thetext>I&apos;m curious about VM page size for watchOS and tvOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605186</commentid>
    <comment_count>4</comment_count>
      <attachid>387351</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-10 10:36:36 -0800</bug_when>
    <thetext>Created attachment 387351
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606131</commentid>
    <comment_count>5</comment_count>
      <attachid>387351</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-13 16:27:33 -0800</bug_when>
    <thetext>Comment on attachment 387351
PATCH

View in context: https://bugs.webkit.org/attachment.cgi?id=387351&amp;action=review

r=me so long as we have fallback mechanism which has dynamic calculation b/c some weird CPU has some weird page size (PowerPC has 64KB).
But I also want to have some comments from Geoff about page size assumption. If we can dynamically change the page size (maybe we don&apos;t especially in macOS / iOS), we should use dynamic calculation version.

&gt; Source/bmalloc/bmalloc/BPlatform.h:270
&gt; +#if BPLATFORM(iOS) || BPLATFORM(PLAYSTATION)

Typo, BPLATFORM(iOS) =&gt; BPLATFORM(IOS). BTW, I&apos;m not sure whether all iOS uses 16KB pages.
@Geoff, do we use 16KB for all iOS (not including watchOS, tvOS and Catalyst)?

For macOS, I think 4KB is OK. Hugepage exists, but from the point of application, anyway unit of page size is 4KB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606147</commentid>
    <comment_count>6</comment_count>
      <attachid>387351</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-01-13 17:02:46 -0800</bug_when>
    <thetext>Comment on attachment 387351
PATCH

View in context: https://bugs.webkit.org/attachment.cgi?id=387351&amp;action=review

Looks great to me -- but perhaps we should remove the #ifdefs.

&gt;&gt; Source/bmalloc/bmalloc/BPlatform.h:270
&gt;&gt; +#if BPLATFORM(iOS) || BPLATFORM(PLAYSTATION)
&gt; 
&gt; Typo, BPLATFORM(iOS) =&gt; BPLATFORM(IOS). BTW, I&apos;m not sure whether all iOS uses 16KB pages.
&gt; @Geoff, do we use 16KB for all iOS (not including watchOS, tvOS and Catalyst)?
&gt; 
&gt; For macOS, I think 4KB is OK. Hugepage exists, but from the point of application, anyway unit of page size is 4KB.

I believe some iOS variants still use 4kB pages. (Certainly they have used 4kB pages in the past.)

&gt; Source/bmalloc/bmalloc/BPlatform.h:271
&gt; +#define BUSE_PRECOMPUTED_CONSTANTS_VMPAGE16K 1

Since some Apple platforms vary page size at boot time or runtime rather than compile time, I think I&apos;d prefer it if all Apple ports compiled in these values, and then selected the right variant to use at runtime. And perhaps that&apos;s the best strategy for all platforms -- unless the compiled size is prohibitive?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606223</commentid>
    <comment_count>7</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-13 20:19:50 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #6)
&gt; Comment on attachment 387351 [details]
&gt; PATCH
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387351&amp;action=review
&gt; 
&gt; Looks great to me -- but perhaps we should remove the #ifdefs.
&gt; 
&gt; &gt;&gt; Source/bmalloc/bmalloc/BPlatform.h:270
&gt; &gt;&gt; +#if BPLATFORM(iOS) || BPLATFORM(PLAYSTATION)
&gt; &gt; 
&gt; &gt; Typo, BPLATFORM(iOS) =&gt; BPLATFORM(IOS). BTW, I&apos;m not sure whether all iOS uses 16KB pages.
&gt; &gt; @Geoff, do we use 16KB for all iOS (not including watchOS, tvOS and Catalyst)?
&gt; &gt; 
&gt; &gt; For macOS, I think 4KB is OK. Hugepage exists, but from the point of application, anyway unit of page size is 4KB.
&gt; 
&gt; I believe some iOS variants still use 4kB pages. (Certainly they have used
&gt; 4kB pages in the past.)
&gt; 
&gt; &gt; Source/bmalloc/bmalloc/BPlatform.h:271
&gt; &gt; +#define BUSE_PRECOMPUTED_CONSTANTS_VMPAGE16K 1
&gt; 
&gt; Since some Apple platforms vary page size at boot time or runtime rather
&gt; than compile time, I think I&apos;d prefer it if all Apple ports compiled in
&gt; these values, and then selected the right variant to use at runtime. And
&gt; perhaps that&apos;s the best strategy for all platforms -- unless the compiled
&gt; size is prohibitive?

Thanks for the review. Okay, I&apos;ll stop defining those macro in BPlatform.h, but define them explicitly in outside code. We want our code size minimum, I will add #if !defined() macro definition to make default precalculated for all page sizes and opt-out by defining them as zero explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606492</commentid>
    <comment_count>8</comment_count>
      <attachid>387679</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-14 11:31:29 -0800</bug_when>
    <thetext>Created attachment 387679
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606503</commentid>
    <comment_count>9</comment_count>
      <attachid>387683</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-14 11:57:06 -0800</bug_when>
    <thetext>Created attachment 387683
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606545</commentid>
    <comment_count>10</comment_count>
      <attachid>387683</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 12:51:36 -0800</bug_when>
    <thetext>Comment on attachment 387683
PATCH

Clearing flags on attachment: 387683

Committed r254527: &lt;https://trac.webkit.org/changeset/254527&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606546</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 12:51:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606548</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-14 12:52:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/58577961&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387296</attachid>
            <date>2020-01-09 17:30:11 -0800</date>
            <delta_ts>2020-01-10 10:36:36 -0800</delta_ts>
            <desc>FIRST TRIAL</desc>
            <filename>bug-206044.diff</filename>
            <type>text/plain</type>
            <size>9013</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmggYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCmluZGV4IGIzODdlZGFhY2M4Li45MGEyNTVhZGI3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCkBAIC0xMjksNyArMTI5LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgZGl2aWRlUm91bmRpbmdVcChUIG51bWVyYXRv
ciwgVCBkZW5vbWluYXRvciwgVCYKICAgICAgICAgcXVvdGllbnQgKz0gMTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgZGl2aWRlUm91bmRpbmdVcChUIG51bWVyYXRvciwgVCBk
ZW5vbWluYXRvcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBUIGRpdmlkZVJvdW5k
aW5nVXAoVCBudW1lcmF0b3IsIFQgZGVub21pbmF0b3IpCiB7CiAgICAgcmV0dXJuIChudW1lcmF0
b3IgKyBkZW5vbWluYXRvciAtIDEpIC8gZGVub21pbmF0b3I7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0JQbGF0Zm9ybS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9C
UGxhdGZvcm0uaAppbmRleCA2YzRmNzAyYWUxMi4uZTZkZTMxNDNlNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9CUGxhdGZvcm0uaApAQCAtMjYyLDMgKzI2MiwxMSBAQAogI2Vsc2UKICNkZWZpbmUgQlVT
RV9QQVJUSUFMX1NDQVZFTkdFIDAKICNlbmRpZgorCisjaWYgQlBMQVRGT1JNKE1BQykKKyNkZWZp
bmUgQlVTRV9QUkVDT01QVVRFRF9DT05TVEFOVFNfVk1QQUdFNEsgMQorI2VuZGlmCisKKyNpZiBC
UExBVEZPUk0oaU9TKSB8fCBCUExBVEZPUk0oUExBWVNUQVRJT04pCisjZGVmaW5lIEJVU0VfUFJF
Q09NUFVURURfQ09OU1RBTlRTX1ZNUEFHRTE2SyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXBDb25zdGFudHMuY3BwCmluZGV4IDU2YjY3YjM2NDk0Li5mY2E5ZmNmNzhkNyAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwCkBAIC0yNCw2ICsyNCw3IEBA
CiAgKi8KIAogI2luY2x1ZGUgIkhlYXBDb25zdGFudHMuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+
CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIApAQCAtMzksMzggKzQwLDczIEBAIEhlYXBDb25zdGFu
dHM6OkhlYXBDb25zdGFudHMoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAgICAgaW5pdGlhbGl6
ZVBhZ2VNZXRhZGF0YSgpOwogfQogCi12b2lkIEhlYXBDb25zdGFudHM6OmluaXRpYWxpemVMaW5l
TWV0YWRhdGEoKQordGVtcGxhdGUgPGNsYXNzIEM+Citjb25zdGV4cHIgdm9pZCBmaWxsTGluZU1l
dGFkYXRhKEMmIGNvbnRhaW5lciwgc2l6ZV90IFZNUGFnZVNpemUpCiB7Ci0gICAgc2l6ZV90IHNp
emVDbGFzc0NvdW50ID0gYm1hbGxvYzo6c2l6ZUNsYXNzKHNtYWxsTGluZVNpemUpOwotICAgIG1f
c21hbGxMaW5lTWV0YWRhdGEuZ3JvdyhzaXplQ2xhc3NDb3VudCAqIHNtYWxsTGluZUNvdW50KCkp
OwotCi0gICAgZm9yIChzaXplX3Qgc2l6ZUNsYXNzID0gMDsgc2l6ZUNsYXNzIDwgc2l6ZUNsYXNz
Q291bnQ7ICsrc2l6ZUNsYXNzKSB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gb2JqZWN0U2l6ZShz
aXplQ2xhc3MpOwotICAgICAgICBMaW5lTWV0YWRhdGEqIHBhZ2VNZXRhZGF0YSA9ICZtX3NtYWxs
TGluZU1ldGFkYXRhW3NpemVDbGFzcyAqIHNtYWxsTGluZUNvdW50KCldOworICAgIGNvbnN0ZXhw
ciBzaXplX3QgY2xzQ291bnQgPSBzaXplQ2xhc3Moc21hbGxMaW5lU2l6ZSk7CisgICAgc2l6ZV90
IGxpbmVDb3VudCA9IHNtYWxsTGluZUNvdW50KFZNUGFnZVNpemUpOwogCisgICAgZm9yIChzaXpl
X3QgY2xzID0gMDsgY2xzIDwgY2xzQ291bnQ7ICsrY2xzKSB7CisgICAgICAgIHNpemVfdCBzaXpl
ID0gb2JqZWN0U2l6ZShjbHMpOworICAgICAgICBzaXplX3QgYmFzZUluZGV4ID0gY2xzICogbGlu
ZUNvdW50OwogICAgICAgICBzaXplX3Qgb2JqZWN0ID0gMDsKLSAgICAgICAgc2l6ZV90IGxpbmUg
PSAwOwotICAgICAgICB3aGlsZSAob2JqZWN0IDwgbV92bVBhZ2VTaXplUGh5c2ljYWwpIHsKLSAg
ICAgICAgICAgIGxpbmUgPSBvYmplY3QgLyBzbWFsbExpbmVTaXplOworICAgICAgICB3aGlsZSAo
b2JqZWN0IDwgVk1QYWdlU2l6ZSkgeworICAgICAgICAgICAgc2l6ZV90IGxpbmUgPSBvYmplY3Qg
LyBzbWFsbExpbmVTaXplOwogICAgICAgICAgICAgc2l6ZV90IGxlZnRvdmVyID0gb2JqZWN0ICUg
c21hbGxMaW5lU2l6ZTsKIAotICAgICAgICAgICAgc2l6ZV90IG9iamVjdENvdW50OwotICAgICAg
ICAgICAgc2l6ZV90IHJlbWFpbmRlcjsKLSAgICAgICAgICAgIGRpdmlkZVJvdW5kaW5nVXAoc21h
bGxMaW5lU2l6ZSAtIGxlZnRvdmVyLCBzaXplLCBvYmplY3RDb3VudCwgcmVtYWluZGVyKTsKLQot
ICAgICAgICAgICAgcGFnZU1ldGFkYXRhW2xpbmVdID0geyBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihsZWZ0b3ZlciksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG9iamVjdENvdW50KSB9
OworICAgICAgICAgICAgYXV0byBvYmplY3RDb3VudCA9IGRpdmlkZVJvdW5kaW5nVXAoc21hbGxM
aW5lU2l6ZSAtIGxlZnRvdmVyLCBzaXplKTsKIAogICAgICAgICAgICAgb2JqZWN0ICs9IG9iamVj
dENvdW50ICogc2l6ZTsKLSAgICAgICAgfQogCi0gICAgICAgIC8vIERvbid0IGFsbG93IHRoZSBs
YXN0IG9iamVjdCBpbiBhIHBhZ2UgdG8gZXNjYXBlIHRoZSBwYWdlLgotICAgICAgICBpZiAob2Jq
ZWN0ID4gbV92bVBhZ2VTaXplUGh5c2ljYWwpIHsKLSAgICAgICAgICAgIEJBU1NFUlQocGFnZU1l
dGFkYXRhW2xpbmVdLm9iamVjdENvdW50KTsKLSAgICAgICAgICAgIC0tcGFnZU1ldGFkYXRhW2xp
bmVdLm9iamVjdENvdW50OworICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGxhc3Qgb2Jq
ZWN0IGluIGEgcGFnZSB0byBlc2NhcGUgdGhlIHBhZ2UuCisgICAgICAgICAgICBpZiAob2JqZWN0
ID4gVk1QYWdlU2l6ZSkgeworICAgICAgICAgICAgICAgIEJBU1NFUlQob2JqZWN0Q291bnQpOwor
ICAgICAgICAgICAgICAgIC0tb2JqZWN0Q291bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGNvbnRhaW5lcltiYXNlSW5kZXggKyBsaW5lXSA9IHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4obGVmdG92ZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihvYmplY3RDb3VudCkg
fTsKICAgICAgICAgfQogICAgIH0KIH0KIAordGVtcGxhdGUgPHNpemVfdCBWTVBhZ2VTaXplPgor
Y29uc3RleHByIGF1dG8gY29tcHV0ZUxpbmVNZXRhZGF0YSgpCit7CisgICAgc3RkOjphcnJheTxM
aW5lTWV0YWRhdGEsIHNpemVDbGFzcyhzbWFsbExpbmVTaXplKSAqIHNtYWxsTGluZUNvdW50KFZN
UGFnZVNpemUpPiByZXN1bHQ7CisgICAgZmlsbExpbmVNZXRhZGF0YShyZXN1bHQsIFZNUGFnZVNp
emUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBCVVNFKFBSRUNPTVBVVEVEX0NPTlNU
QU5UU19WTVBBR0U0SykKK2NvbnN0ZXhwciBhdXRvIGtQcmVjYWxjdXJhdGVkTGluZU1ldGFkYXRh
NGsgPSBjb21wdXRlTGluZU1ldGFkYXRhPDQgKiBrQj4oKTsKKyNlbmRpZgorCisjaWYgQlVTRShQ
UkVDT01QVVRFRF9DT05TVEFOVFNfVk1QQUdFMTZLKQorY29uc3RleHByIGF1dG8ga1ByZWNhbGN1
cmF0ZWRMaW5lTWV0YWRhdGExNmsgPSBjb21wdXRlTGluZU1ldGFkYXRhPDE2ICoga0I+KCk7Cisj
ZW5kaWYKKwordm9pZCBIZWFwQ29uc3RhbnRzOjppbml0aWFsaXplTGluZU1ldGFkYXRhKCkKK3sK
KyNpZiBCVVNFKFBSRUNPTVBVVEVEX0NPTlNUQU5UU19WTVBBR0U0SykKKyAgICBpZiAobV92bVBh
Z2VTaXplUGh5c2ljYWwgPT0gNCAqIGtCKSB7CisgICAgICAgIG1fc21hbGxMaW5lTWV0YWRhdGEg
PSAma1ByZWNhbGN1cmF0ZWRMaW5lTWV0YWRhdGE0a1swXTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorCisjaWYgQlVTRShQUkVDT01QVVRFRF9DT05TVEFOVFNfVk1QQUdFMTZLKQor
ICAgIGlmIChtX3ZtUGFnZVNpemVQaHlzaWNhbCA9PSAxNiAqIGtCKSB7CisgICAgICAgIG1fc21h
bGxMaW5lTWV0YWRhdGEgPSAma1ByZWNhbGN1cmF0ZWRMaW5lTWV0YWRhdGExNmtbMF07CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIHNpemVfdCBzaXplQ2xhc3NDb3VudCA9
IGJtYWxsb2M6OnNpemVDbGFzcyhzbWFsbExpbmVTaXplKTsKKyAgICBtX3NtYWxsTGluZU1ldGFk
YXRhU3RvcmFnZS5ncm93KHNpemVDbGFzc0NvdW50ICogc21hbGxMaW5lQ291bnQoKSk7CisgICAg
ZmlsbExpbmVNZXRhZGF0YShtX3NtYWxsTGluZU1ldGFkYXRhU3RvcmFnZSwgbV92bVBhZ2VTaXpl
UGh5c2ljYWwpOworICAgIG1fc21hbGxMaW5lTWV0YWRhdGEgPSAmbV9zbWFsbExpbmVNZXRhZGF0
YVN0b3JhZ2VbMF07Cit9CisKIHZvaWQgSGVhcENvbnN0YW50czo6aW5pdGlhbGl6ZVBhZ2VNZXRh
ZGF0YSgpCiB7CiAgICAgYXV0byBjb21wdXRlUGFnZVNpemUgPSBbJl0oc2l6ZV90IHNpemVDbGFz
cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmgg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuaAppbmRleCA1YTczNTczOWE2
NS4uMDRlNzNkMGNjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENv
bnN0YW50cy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5oCkBA
IC00MSwyMSArNDEsMjIgQEAgcHVibGljOgogICAgIH5IZWFwQ29uc3RhbnRzKCkgPSBkZWxldGU7
CiAKICAgICBpbmxpbmUgc2l6ZV90IHBhZ2VDbGFzcyhzaXplX3Qgc2l6ZUNsYXNzKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VDbGFzc2VzW3NpemVDbGFzc107IH0KLSAgICBpbmxpbmUgc2l6ZV90IHNt
YWxsTGluZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV92bVBhZ2VTaXplUGh5c2ljYWwgLyBzbWFs
bExpbmVTaXplOyB9Ci0gICAgaW5saW5lIHVuc2lnbmVkIGNoYXIgc3RhcnRPZmZzZXQoc2l6ZV90
IHNpemVDbGFzcywgc2l6ZV90IGxpbmVOdW1iZXIpIHsgcmV0dXJuIGxpbmVNZXRhZGF0YShzaXpl
Q2xhc3MsIGxpbmVOdW1iZXIpLnN0YXJ0T2Zmc2V0OyB9Ci0gICAgaW5saW5lIHVuc2lnbmVkIGNo
YXIgb2JqZWN0Q291bnQoc2l6ZV90IHNpemVDbGFzcywgc2l6ZV90IGxpbmVOdW1iZXIpIHsgcmV0
dXJuIGxpbmVNZXRhZGF0YShzaXplQ2xhc3MsIGxpbmVOdW1iZXIpLm9iamVjdENvdW50OyB9Cisg
ICAgaW5saW5lIHNpemVfdCBzbWFsbExpbmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGJtYWxsb2M6
OnNtYWxsTGluZUNvdW50KG1fdm1QYWdlU2l6ZVBoeXNpY2FsKTsgfQorICAgIGlubGluZSB1bnNp
Z25lZCBjaGFyIHN0YXJ0T2Zmc2V0KHNpemVfdCBzaXplQ2xhc3MsIHNpemVfdCBsaW5lTnVtYmVy
KSBjb25zdCB7IHJldHVybiBsaW5lTWV0YWRhdGEoc2l6ZUNsYXNzLCBsaW5lTnVtYmVyKS5zdGFy
dE9mZnNldDsgfQorICAgIGlubGluZSB1bnNpZ25lZCBjaGFyIG9iamVjdENvdW50KHNpemVfdCBz
aXplQ2xhc3MsIHNpemVfdCBsaW5lTnVtYmVyKSBjb25zdCB7IHJldHVybiBsaW5lTWV0YWRhdGEo
c2l6ZUNsYXNzLCBsaW5lTnVtYmVyKS5vYmplY3RDb3VudDsgfQogCiBwcml2YXRlOgogICAgIHZv
aWQgaW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVBhZ2VNZXRh
ZGF0YSgpOwogCi0gICAgaW5saW5lIExpbmVNZXRhZGF0YSYgbGluZU1ldGFkYXRhKHNpemVfdCBz
aXplQ2xhc3MsIHNpemVfdCBsaW5lTnVtYmVyKQorICAgIGlubGluZSBjb25zdCBMaW5lTWV0YWRh
dGEmIGxpbmVNZXRhZGF0YShzaXplX3Qgc2l6ZUNsYXNzLCBzaXplX3QgbGluZU51bWJlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NtYWxsTGluZU1ldGFkYXRhW3NpemVDbGFzcyAq
IHNtYWxsTGluZUNvdW50KCkgKyBsaW5lTnVtYmVyXTsKICAgICB9CiAKICAgICBzaXplX3QgbV92
bVBhZ2VTaXplUGh5c2ljYWw7Ci0gICAgVmVjdG9yPExpbmVNZXRhZGF0YT4gbV9zbWFsbExpbmVN
ZXRhZGF0YTsKKyAgICBjb25zdCBMaW5lTWV0YWRhdGEqIG1fc21hbGxMaW5lTWV0YWRhdGEgeyB9
OworICAgIFZlY3RvcjxMaW5lTWV0YWRhdGE+IG1fc21hbGxMaW5lTWV0YWRhdGFTdG9yYWdlOwog
ICAgIHN0ZDo6YXJyYXk8c2l6ZV90LCBzaXplQ2xhc3NDb3VudD4gbV9wYWdlQ2xhc3NlczsKIH07
CiBERUNMQVJFX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKEhlYXBDb25zdGFudHMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaW5lTWV0YWRhdGEuaCBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvTGluZU1ldGFkYXRhLmgKaW5kZXggNjM3MGIzNTlmMGEuLjNhMDI0MzA2
YTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpbmVNZXRhZGF0YS5oCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGluZU1ldGFkYXRhLmgKQEAgLTMwLDggKzMwLDgg
QEAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogc3RydWN0IExpbmVNZXRhZGF0YSB7Ci0gICAgdW5z
aWduZWQgY2hhciBzdGFydE9mZnNldDsKLSAgICB1bnNpZ25lZCBjaGFyIG9iamVjdENvdW50Owor
ICAgIHVuc2lnbmVkIGNoYXIgc3RhcnRPZmZzZXQgeyB9OworICAgIHVuc2lnbmVkIGNoYXIgb2Jq
ZWN0Q291bnQgeyB9OwogfTsKIAogc3RhdGljX2Fzc2VydCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvU2l6ZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMuaApp
bmRleCAxYjkyYWIzMjEwYi4uYWMzNWEwYTUwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvU2l6ZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgKQEAg
LTgwLDcgKzgwLDcgQEAgY29uc3RleHByIHNpemVfdCBtYXNrU2l6ZUNsYXNzKHNpemVfdCBzaXpl
KQogICAgIHJldHVybiBtYXNrKChzaXplIC0gMSkgLyBhbGlnbm1lbnQsIG1hc2tTaXplQ2xhc3ND
b3VudCAtIDEpOwogfQogCi1pbmxpbmUgc2l6ZV90IG1hc2tPYmplY3RTaXplKHNpemVfdCBtYXNr
U2l6ZUNsYXNzKQorY29uc3RleHByIHNpemVfdCBtYXNrT2JqZWN0U2l6ZShzaXplX3QgbWFza1Np
emVDbGFzcykKIHsKICAgICByZXR1cm4gKG1hc2tTaXplQ2xhc3MgKyAxKSAqIGFsaWdubWVudDsK
IH0KQEAgLTg5LDE0ICs4OSwxNCBAQCBzdGF0aWMgY29uc3RleHByIHNpemVfdCBsb2dBbGlnbm1l
bnRNaW4gPSBtYXNrU2l6ZUNsYXNzTWF4IC8gbG9nV2FzdGVGYWN0b3I7CiAKIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IGxvZ1NpemVDbGFzc0NvdW50ID0gKGxvZzIoc21hbGxNYXgpIC0gbG9nMiht
YXNrU2l6ZUNsYXNzTWF4KSkgKiBsb2dXYXN0ZUZhY3RvcjsKIAotaW5saW5lIHNpemVfdCBsb2dT
aXplQ2xhc3Moc2l6ZV90IHNpemUpCitjb25zdGV4cHIgc2l6ZV90IGxvZ1NpemVDbGFzcyhzaXpl
X3Qgc2l6ZSkKIHsKICAgICBzaXplX3QgYmFzZSA9IGxvZzIoc2l6ZSAtIDEpIC0gbG9nMihtYXNr
U2l6ZUNsYXNzTWF4KTsKICAgICBzaXplX3Qgb2Zmc2V0ID0gKHNpemUgLSAxIC0gKG1hc2tTaXpl
Q2xhc3NNYXggPDwgYmFzZSkpOwogICAgIHJldHVybiBiYXNlICogbG9nV2FzdGVGYWN0b3IgKyBv
ZmZzZXQgLyAobG9nQWxpZ25tZW50TWluIDw8IGJhc2UpOwogfQogCi1pbmxpbmUgc2l6ZV90IGxv
Z09iamVjdFNpemUoc2l6ZV90IGxvZ1NpemVDbGFzcykKK2NvbnN0ZXhwciBzaXplX3QgbG9nT2Jq
ZWN0U2l6ZShzaXplX3QgbG9nU2l6ZUNsYXNzKQogewogICAgIHNpemVfdCBiYXNlID0gbG9nU2l6
ZUNsYXNzIC8gbG9nV2FzdGVGYWN0b3I7CiAgICAgc2l6ZV90IG9mZnNldCA9IGxvZ1NpemVDbGFz
cyAlIGxvZ1dhc3RlRmFjdG9yOwpAQCAtMTA1LDI0ICsxMDUsMzAgQEAgaW5saW5lIHNpemVfdCBs
b2dPYmplY3RTaXplKHNpemVfdCBsb2dTaXplQ2xhc3MpCiAKIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IHNpemVDbGFzc0NvdW50ID0gbWFza1NpemVDbGFzc0NvdW50ICsgbG9nU2l6ZUNsYXNzQ291
bnQ7CiAKLWlubGluZSBzaXplX3Qgc2l6ZUNsYXNzKHNpemVfdCBzaXplKQorY29uc3RleHByIHNp
emVfdCBzaXplQ2xhc3Moc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKHNpemUgPD0gbWFza1NpemVD
bGFzc01heCkKICAgICAgICAgcmV0dXJuIG1hc2tTaXplQ2xhc3Moc2l6ZSk7CiAgICAgcmV0dXJu
IG1hc2tTaXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFzcyhzaXplKTsKIH0KIAotaW5saW5lIHNp
emVfdCBvYmplY3RTaXplKHNpemVfdCBzaXplQ2xhc3MpCitjb25zdGV4cHIgc2l6ZV90IG9iamVj
dFNpemUoc2l6ZV90IHNpemVDbGFzcykKIHsKICAgICBpZiAoc2l6ZUNsYXNzIDwgbWFza1NpemVD
bGFzc0NvdW50KQogICAgICAgICByZXR1cm4gbWFza09iamVjdFNpemUoc2l6ZUNsYXNzKTsKICAg
ICByZXR1cm4gbG9nT2JqZWN0U2l6ZShzaXplQ2xhc3MgLSBtYXNrU2l6ZUNsYXNzQ291bnQpOwog
fQogCi1pbmxpbmUgc2l6ZV90IHBhZ2VTaXplKHNpemVfdCBwYWdlQ2xhc3MpCitjb25zdGV4cHIg
c2l6ZV90IHBhZ2VTaXplKHNpemVfdCBwYWdlQ2xhc3MpCiB7CiAgICAgcmV0dXJuIChwYWdlQ2xh
c3MgKyAxKSAqIHNtYWxsUGFnZVNpemU7CiB9CisKK2NvbnN0ZXhwciBzaXplX3Qgc21hbGxMaW5l
Q291bnQoc2l6ZV90IHZtUGFnZVNpemUpCit7CisgICAgcmV0dXJuIHZtUGFnZVNpemUgLyBzbWFs
bExpbmVTaXplOworfQorCiB9IC8vIG5hbWVzcGFjZSBTaXplcwogCiB1c2luZyBuYW1lc3BhY2Ug
U2l6ZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387351</attachid>
            <date>2020-01-10 10:36:36 -0800</date>
            <delta_ts>2020-01-14 11:31:29 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>bug-206044.diff</filename>
            <type>text/plain</type>
            <size>10952</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCAzOWNiZjVjMmVhMi4uODkyNTQ1NjliZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0wMS0xMCAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIENhbGN1bGF0ZSBMaW5lTWV0YWRhdGEgZm9yIHNw
ZWNpZmljIFZNIHBhZ2Ugc2l6ZSBpbiBjb21waWxlIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjA0NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpbmVNZXRhZGF0YSBpcyBkZXBlbmRlbnQgb25s
eSBvbiBWTSBwYWdlIHNpemUuIFRoaXMgcGF0Y2ggZW5hYmxlcyB0aGUgcHJlLWNhbGN1bGF0aW9u
IGZvcgorICAgICAgICBzcGVjaWZpYyBWTSBwYWdlIHNpemVzIGJ5IGNvbXBpbGVyIGZsYWdzLiBU
aGUgYmVuZWZpdCBpcyBib3RoIHJ1bnRpbWUgaW5pdGlhbGl6YXRpb24gc3BlZWQKKyAgICAgICAg
dXAgYW5kIGF2b2lkaW5nIGV4dHJhIFZNIGFsbG9jYXRpb24gb24gcnVudGltZS4KKworICAgICAg
ICBGaXJzdCB0YXJnZXRzIGFyZSA0ayAoTWFjKSBhbmQgMTZrIChpT1MsIFBsYXlTdGF0aW9uKSBW
TSBwYWdlIHNpemVzLgorCisgICAgICAgICogYm1hbGxvYy9BbGdvcml0aG0uaDoKKyAgICAgICAg
KGJtYWxsb2M6OmRpdmlkZVJvdW5kaW5nVXApOgorICAgICAgICAqIGJtYWxsb2MvQlBsYXRmb3Jt
Lmg6CisgICAgICAgICogYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKGJtYWxs
b2M6OmZpbGxMaW5lTWV0YWRhdGEpOgorICAgICAgICAoYm1hbGxvYzo6Y29tcHV0ZUxpbmVNZXRh
ZGF0YSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwQ29uc3RhbnRzOjppbml0aWFsaXplTGluZU1l
dGFkYXRhKToKKyAgICAgICAgKiBibWFsbG9jL0hlYXBDb25zdGFudHMuaDoKKyAgICAgICAgKGJt
YWxsb2M6OkhlYXBDb25zdGFudHM6OnNtYWxsTGluZUNvdW50IGNvbnN0KToKKyAgICAgICAgKGJt
YWxsb2M6OkhlYXBDb25zdGFudHM6OnN0YXJ0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKGJtYWxs
b2M6OkhlYXBDb25zdGFudHM6Om9iamVjdENvdW50IGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6
OkhlYXBDb25zdGFudHM6OmxpbmVNZXRhZGF0YSBjb25zdCk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwQ29uc3RhbnRzOjpzdGFydE9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpI
ZWFwQ29uc3RhbnRzOjpvYmplY3RDb3VudCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpI
ZWFwQ29uc3RhbnRzOjpsaW5lTWV0YWRhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGJtYWxsb2Mv
TGluZU1ldGFkYXRhLmg6CisgICAgICAgICogYm1hbGxvYy9TaXplcy5oOgorICAgICAgICAoYm1h
bGxvYzo6U2l6ZXM6Om1hc2tPYmplY3RTaXplKToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjps
b2dTaXplQ2xhc3MpOgorICAgICAgICAoYm1hbGxvYzo6U2l6ZXM6OmxvZ09iamVjdFNpemUpOgor
ICAgICAgICAoYm1hbGxvYzo6U2l6ZXM6OnNpemVDbGFzcyk6CisgICAgICAgIChibWFsbG9jOjpT
aXplczo6b2JqZWN0U2l6ZSk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6cGFnZVNpemUpOgor
ICAgICAgICAoYm1hbGxvYzo6U2l6ZXM6OnNtYWxsTGluZUNvdW50KToKKwogMjAyMC0wMS0wOSAg
QmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW2JtYWxs
b2NdIEV4dHJhY3QgY29uc3RhbnRzIGZyb20gSGVhcCBhbmQgc2hhcmUgaXQgYW1vbmcgSGVhcHMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAppbmRleCBiMzg3ZWRhYWNjOC4uOTBhMjU1YWRi
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKKysrIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaApAQCAtMTI5LDcgKzEyOSw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGRpdmlkZVJvdW5kaW5nVXAoVCBudW1lcmF0
b3IsIFQgZGVub21pbmF0b3IsIFQmCiAgICAgICAgIHF1b3RpZW50ICs9IDE7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGRpdmlkZVJvdW5kaW5nVXAoVCBudW1lcmF0b3IsIFQg
ZGVub21pbmF0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgVCBkaXZpZGVSb3Vu
ZGluZ1VwKFQgbnVtZXJhdG9yLCBUIGRlbm9taW5hdG9yKQogewogICAgIHJldHVybiAobnVtZXJh
dG9yICsgZGVub21pbmF0b3IgLSAxKSAvIGRlbm9taW5hdG9yOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9CUGxhdGZvcm0uaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
QlBsYXRmb3JtLmgKaW5kZXggNmM0ZjcwMmFlMTIuLmU2ZGUzMTQzZTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JQbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvQlBsYXRmb3JtLmgKQEAgLTI2MiwzICsyNjIsMTEgQEAKICNlbHNlCiAjZGVmaW5lIEJV
U0VfUEFSVElBTF9TQ0FWRU5HRSAwCiAjZW5kaWYKKworI2lmIEJQTEFURk9STShNQUMpCisjZGVm
aW5lIEJVU0VfUFJFQ09NUFVURURfQ09OU1RBTlRTX1ZNUEFHRTRLIDEKKyNlbmRpZgorCisjaWYg
QlBMQVRGT1JNKGlPUykgfHwgQlBMQVRGT1JNKFBMQVlTVEFUSU9OKQorI2RlZmluZSBCVVNFX1BS
RUNPTVBVVEVEX0NPTlNUQU5UU19WTVBBR0UxNksgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9IZWFwQ29uc3RhbnRzLmNwcAppbmRleCA1NmI2N2IzNjQ5NC4uZmNhOWZjZjc4ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5jcHAKKysrIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcApAQCAtMjQsNiArMjQsNyBA
QAogICovCiAKICNpbmNsdWRlICJIZWFwQ29uc3RhbnRzLmgiCisjaW5jbHVkZSA8YWxnb3JpdGht
PgogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKQEAgLTM5LDM4ICs0MCw3MyBAQCBIZWFwQ29uc3Rh
bnRzOjpIZWFwQ29uc3RhbnRzKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogICAgIGluaXRpYWxp
emVQYWdlTWV0YWRhdGEoKTsKIH0KIAotdm9pZCBIZWFwQ29uc3RhbnRzOjppbml0aWFsaXplTGlu
ZU1ldGFkYXRhKCkKK3RlbXBsYXRlIDxjbGFzcyBDPgorY29uc3RleHByIHZvaWQgZmlsbExpbmVN
ZXRhZGF0YShDJiBjb250YWluZXIsIHNpemVfdCBWTVBhZ2VTaXplKQogewotICAgIHNpemVfdCBz
aXplQ2xhc3NDb3VudCA9IGJtYWxsb2M6OnNpemVDbGFzcyhzbWFsbExpbmVTaXplKTsKLSAgICBt
X3NtYWxsTGluZU1ldGFkYXRhLmdyb3coc2l6ZUNsYXNzQ291bnQgKiBzbWFsbExpbmVDb3VudCgp
KTsKLQotICAgIGZvciAoc2l6ZV90IHNpemVDbGFzcyA9IDA7IHNpemVDbGFzcyA8IHNpemVDbGFz
c0NvdW50OyArK3NpemVDbGFzcykgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IG9iamVjdFNpemUo
c2l6ZUNsYXNzKTsKLSAgICAgICAgTGluZU1ldGFkYXRhKiBwYWdlTWV0YWRhdGEgPSAmbV9zbWFs
bExpbmVNZXRhZGF0YVtzaXplQ2xhc3MgKiBzbWFsbExpbmVDb3VudCgpXTsKKyAgICBjb25zdGV4
cHIgc2l6ZV90IGNsc0NvdW50ID0gc2l6ZUNsYXNzKHNtYWxsTGluZVNpemUpOworICAgIHNpemVf
dCBsaW5lQ291bnQgPSBzbWFsbExpbmVDb3VudChWTVBhZ2VTaXplKTsKIAorICAgIGZvciAoc2l6
ZV90IGNscyA9IDA7IGNscyA8IGNsc0NvdW50OyArK2NscykgeworICAgICAgICBzaXplX3Qgc2l6
ZSA9IG9iamVjdFNpemUoY2xzKTsKKyAgICAgICAgc2l6ZV90IGJhc2VJbmRleCA9IGNscyAqIGxp
bmVDb3VudDsKICAgICAgICAgc2l6ZV90IG9iamVjdCA9IDA7Ci0gICAgICAgIHNpemVfdCBsaW5l
ID0gMDsKLSAgICAgICAgd2hpbGUgKG9iamVjdCA8IG1fdm1QYWdlU2l6ZVBoeXNpY2FsKSB7Ci0g
ICAgICAgICAgICBsaW5lID0gb2JqZWN0IC8gc21hbGxMaW5lU2l6ZTsKKyAgICAgICAgd2hpbGUg
KG9iamVjdCA8IFZNUGFnZVNpemUpIHsKKyAgICAgICAgICAgIHNpemVfdCBsaW5lID0gb2JqZWN0
IC8gc21hbGxMaW5lU2l6ZTsKICAgICAgICAgICAgIHNpemVfdCBsZWZ0b3ZlciA9IG9iamVjdCAl
IHNtYWxsTGluZVNpemU7CiAKLSAgICAgICAgICAgIHNpemVfdCBvYmplY3RDb3VudDsKLSAgICAg
ICAgICAgIHNpemVfdCByZW1haW5kZXI7Ci0gICAgICAgICAgICBkaXZpZGVSb3VuZGluZ1VwKHNt
YWxsTGluZVNpemUgLSBsZWZ0b3Zlciwgc2l6ZSwgb2JqZWN0Q291bnQsIHJlbWFpbmRlcik7Ci0K
LSAgICAgICAgICAgIHBhZ2VNZXRhZGF0YVtsaW5lXSA9IHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4obGVmdG92ZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihvYmplY3RDb3VudCkg
fTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0Q291bnQgPSBkaXZpZGVSb3VuZGluZ1VwKHNtYWxs
TGluZVNpemUgLSBsZWZ0b3Zlciwgc2l6ZSk7CiAKICAgICAgICAgICAgIG9iamVjdCArPSBvYmpl
Y3RDb3VudCAqIHNpemU7Ci0gICAgICAgIH0KIAotICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGUg
bGFzdCBvYmplY3QgaW4gYSBwYWdlIHRvIGVzY2FwZSB0aGUgcGFnZS4KLSAgICAgICAgaWYgKG9i
amVjdCA+IG1fdm1QYWdlU2l6ZVBoeXNpY2FsKSB7Ci0gICAgICAgICAgICBCQVNTRVJUKHBhZ2VN
ZXRhZGF0YVtsaW5lXS5vYmplY3RDb3VudCk7Ci0gICAgICAgICAgICAtLXBhZ2VNZXRhZGF0YVts
aW5lXS5vYmplY3RDb3VudDsKKyAgICAgICAgICAgIC8vIERvbid0IGFsbG93IHRoZSBsYXN0IG9i
amVjdCBpbiBhIHBhZ2UgdG8gZXNjYXBlIHRoZSBwYWdlLgorICAgICAgICAgICAgaWYgKG9iamVj
dCA+IFZNUGFnZVNpemUpIHsKKyAgICAgICAgICAgICAgICBCQVNTRVJUKG9iamVjdENvdW50KTsK
KyAgICAgICAgICAgICAgICAtLW9iamVjdENvdW50OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBjb250YWluZXJbYmFzZUluZGV4ICsgbGluZV0gPSB7IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KGxlZnRvdmVyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ob2JqZWN0Q291bnQp
IH07CiAgICAgICAgIH0KICAgICB9CiB9CiAKK3RlbXBsYXRlIDxzaXplX3QgVk1QYWdlU2l6ZT4K
K2NvbnN0ZXhwciBhdXRvIGNvbXB1dGVMaW5lTWV0YWRhdGEoKQoreworICAgIHN0ZDo6YXJyYXk8
TGluZU1ldGFkYXRhLCBzaXplQ2xhc3Moc21hbGxMaW5lU2l6ZSkgKiBzbWFsbExpbmVDb3VudChW
TVBhZ2VTaXplKT4gcmVzdWx0OworICAgIGZpbGxMaW5lTWV0YWRhdGEocmVzdWx0LCBWTVBhZ2VT
aXplKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgQlVTRShQUkVDT01QVVRFRF9DT05T
VEFOVFNfVk1QQUdFNEspCitjb25zdGV4cHIgYXV0byBrUHJlY2FsY3VyYXRlZExpbmVNZXRhZGF0
YTRrID0gY29tcHV0ZUxpbmVNZXRhZGF0YTw0ICoga0I+KCk7CisjZW5kaWYKKworI2lmIEJVU0Uo
UFJFQ09NUFVURURfQ09OU1RBTlRTX1ZNUEFHRTE2SykKK2NvbnN0ZXhwciBhdXRvIGtQcmVjYWxj
dXJhdGVkTGluZU1ldGFkYXRhMTZrID0gY29tcHV0ZUxpbmVNZXRhZGF0YTwxNiAqIGtCPigpOwor
I2VuZGlmCisKK3ZvaWQgSGVhcENvbnN0YW50czo6aW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpCit7
CisjaWYgQlVTRShQUkVDT01QVVRFRF9DT05TVEFOVFNfVk1QQUdFNEspCisgICAgaWYgKG1fdm1Q
YWdlU2l6ZVBoeXNpY2FsID09IDQgKiBrQikgeworICAgICAgICBtX3NtYWxsTGluZU1ldGFkYXRh
ID0gJmtQcmVjYWxjdXJhdGVkTGluZU1ldGFkYXRhNGtbMF07CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKworI2lmIEJVU0UoUFJFQ09NUFVURURfQ09OU1RBTlRTX1ZNUEFHRTE2SykK
KyAgICBpZiAobV92bVBhZ2VTaXplUGh5c2ljYWwgPT0gMTYgKiBrQikgeworICAgICAgICBtX3Nt
YWxsTGluZU1ldGFkYXRhID0gJmtQcmVjYWxjdXJhdGVkTGluZU1ldGFkYXRhMTZrWzBdOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBzaXplX3Qgc2l6ZUNsYXNzQ291bnQg
PSBibWFsbG9jOjpzaXplQ2xhc3Moc21hbGxMaW5lU2l6ZSk7CisgICAgbV9zbWFsbExpbmVNZXRh
ZGF0YVN0b3JhZ2UuZ3JvdyhzaXplQ2xhc3NDb3VudCAqIHNtYWxsTGluZUNvdW50KCkpOworICAg
IGZpbGxMaW5lTWV0YWRhdGEobV9zbWFsbExpbmVNZXRhZGF0YVN0b3JhZ2UsIG1fdm1QYWdlU2l6
ZVBoeXNpY2FsKTsKKyAgICBtX3NtYWxsTGluZU1ldGFkYXRhID0gJm1fc21hbGxMaW5lTWV0YWRh
dGFTdG9yYWdlWzBdOworfQorCiB2b2lkIEhlYXBDb25zdGFudHM6OmluaXRpYWxpemVQYWdlTWV0
YWRhdGEoKQogewogICAgIGF1dG8gY29tcHV0ZVBhZ2VTaXplID0gWyZdKHNpemVfdCBzaXplQ2xh
c3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5o
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmgKaW5kZXggNWE3MzU3Mzlh
NjUuLjA0ZTczZDBjYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBD
b25zdGFudHMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuaApA
QCAtNDEsMjEgKzQxLDIyIEBAIHB1YmxpYzoKICAgICB+SGVhcENvbnN0YW50cygpID0gZGVsZXRl
OwogCiAgICAgaW5saW5lIHNpemVfdCBwYWdlQ2xhc3Moc2l6ZV90IHNpemVDbGFzcykgY29uc3Qg
eyByZXR1cm4gbV9wYWdlQ2xhc3Nlc1tzaXplQ2xhc3NdOyB9Ci0gICAgaW5saW5lIHNpemVfdCBz
bWFsbExpbmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdm1QYWdlU2l6ZVBoeXNpY2FsIC8gc21h
bGxMaW5lU2l6ZTsgfQotICAgIGlubGluZSB1bnNpZ25lZCBjaGFyIHN0YXJ0T2Zmc2V0KHNpemVf
dCBzaXplQ2xhc3MsIHNpemVfdCBsaW5lTnVtYmVyKSB7IHJldHVybiBsaW5lTWV0YWRhdGEoc2l6
ZUNsYXNzLCBsaW5lTnVtYmVyKS5zdGFydE9mZnNldDsgfQotICAgIGlubGluZSB1bnNpZ25lZCBj
aGFyIG9iamVjdENvdW50KHNpemVfdCBzaXplQ2xhc3MsIHNpemVfdCBsaW5lTnVtYmVyKSB7IHJl
dHVybiBsaW5lTWV0YWRhdGEoc2l6ZUNsYXNzLCBsaW5lTnVtYmVyKS5vYmplY3RDb3VudDsgfQor
ICAgIGlubGluZSBzaXplX3Qgc21hbGxMaW5lQ291bnQoKSBjb25zdCB7IHJldHVybiBibWFsbG9j
OjpzbWFsbExpbmVDb3VudChtX3ZtUGFnZVNpemVQaHlzaWNhbCk7IH0KKyAgICBpbmxpbmUgdW5z
aWduZWQgY2hhciBzdGFydE9mZnNldChzaXplX3Qgc2l6ZUNsYXNzLCBzaXplX3QgbGluZU51bWJl
cikgY29uc3QgeyByZXR1cm4gbGluZU1ldGFkYXRhKHNpemVDbGFzcywgbGluZU51bWJlcikuc3Rh
cnRPZmZzZXQ7IH0KKyAgICBpbmxpbmUgdW5zaWduZWQgY2hhciBvYmplY3RDb3VudChzaXplX3Qg
c2l6ZUNsYXNzLCBzaXplX3QgbGluZU51bWJlcikgY29uc3QgeyByZXR1cm4gbGluZU1ldGFkYXRh
KHNpemVDbGFzcywgbGluZU51bWJlcikub2JqZWN0Q291bnQ7IH0KIAogcHJpdmF0ZToKICAgICB2
b2lkIGluaXRpYWxpemVMaW5lTWV0YWRhdGEoKTsKICAgICB2b2lkIGluaXRpYWxpemVQYWdlTWV0
YWRhdGEoKTsKIAotICAgIGlubGluZSBMaW5lTWV0YWRhdGEmIGxpbmVNZXRhZGF0YShzaXplX3Qg
c2l6ZUNsYXNzLCBzaXplX3QgbGluZU51bWJlcikKKyAgICBpbmxpbmUgY29uc3QgTGluZU1ldGFk
YXRhJiBsaW5lTWV0YWRhdGEoc2l6ZV90IHNpemVDbGFzcywgc2l6ZV90IGxpbmVOdW1iZXIpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9zbWFsbExpbmVNZXRhZGF0YVtzaXplQ2xhc3Mg
KiBzbWFsbExpbmVDb3VudCgpICsgbGluZU51bWJlcl07CiAgICAgfQogCiAgICAgc2l6ZV90IG1f
dm1QYWdlU2l6ZVBoeXNpY2FsOwotICAgIFZlY3RvcjxMaW5lTWV0YWRhdGE+IG1fc21hbGxMaW5l
TWV0YWRhdGE7CisgICAgY29uc3QgTGluZU1ldGFkYXRhKiBtX3NtYWxsTGluZU1ldGFkYXRhIHsg
fTsKKyAgICBWZWN0b3I8TGluZU1ldGFkYXRhPiBtX3NtYWxsTGluZU1ldGFkYXRhU3RvcmFnZTsK
ICAgICBzdGQ6OmFycmF5PHNpemVfdCwgc2l6ZUNsYXNzQ291bnQ+IG1fcGFnZUNsYXNzZXM7CiB9
OwogREVDTEFSRV9TVEFUSUNfUEVSX1BST0NFU1NfU1RPUkFHRShIZWFwQ29uc3RhbnRzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGluZU1ldGFkYXRhLmggYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0xpbmVNZXRhZGF0YS5oCmluZGV4IDYzNzBiMzU5ZjBhLi4zYTAyNDMw
NmE4MiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaW5lTWV0YWRhdGEuaAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpbmVNZXRhZGF0YS5oCkBAIC0zMCw4ICszMCw4
IEBACiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIHN0cnVjdCBMaW5lTWV0YWRhdGEgewotICAgIHVu
c2lnbmVkIGNoYXIgc3RhcnRPZmZzZXQ7Ci0gICAgdW5zaWduZWQgY2hhciBvYmplY3RDb3VudDsK
KyAgICB1bnNpZ25lZCBjaGFyIHN0YXJ0T2Zmc2V0IHsgfTsKKyAgICB1bnNpZ25lZCBjaGFyIG9i
amVjdENvdW50IHsgfTsKIH07CiAKIHN0YXRpY19hc3NlcnQoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL1NpemVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgK
aW5kZXggMWI5MmFiMzIxMGIuLmFjMzVhMGE1MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1NpemVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCkBA
IC04MCw3ICs4MCw3IEBAIGNvbnN0ZXhwciBzaXplX3QgbWFza1NpemVDbGFzcyhzaXplX3Qgc2l6
ZSkKICAgICByZXR1cm4gbWFzaygoc2l6ZSAtIDEpIC8gYWxpZ25tZW50LCBtYXNrU2l6ZUNsYXNz
Q291bnQgLSAxKTsKIH0KIAotaW5saW5lIHNpemVfdCBtYXNrT2JqZWN0U2l6ZShzaXplX3QgbWFz
a1NpemVDbGFzcykKK2NvbnN0ZXhwciBzaXplX3QgbWFza09iamVjdFNpemUoc2l6ZV90IG1hc2tT
aXplQ2xhc3MpCiB7CiAgICAgcmV0dXJuIChtYXNrU2l6ZUNsYXNzICsgMSkgKiBhbGlnbm1lbnQ7
CiB9CkBAIC04OSwxNCArODksMTQgQEAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbG9nQWxpZ25t
ZW50TWluID0gbWFza1NpemVDbGFzc01heCAvIGxvZ1dhc3RlRmFjdG9yOwogCiBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBsb2dTaXplQ2xhc3NDb3VudCA9IChsb2cyKHNtYWxsTWF4KSAtIGxvZzIo
bWFza1NpemVDbGFzc01heCkpICogbG9nV2FzdGVGYWN0b3I7CiAKLWlubGluZSBzaXplX3QgbG9n
U2l6ZUNsYXNzKHNpemVfdCBzaXplKQorY29uc3RleHByIHNpemVfdCBsb2dTaXplQ2xhc3Moc2l6
ZV90IHNpemUpCiB7CiAgICAgc2l6ZV90IGJhc2UgPSBsb2cyKHNpemUgLSAxKSAtIGxvZzIobWFz
a1NpemVDbGFzc01heCk7CiAgICAgc2l6ZV90IG9mZnNldCA9IChzaXplIC0gMSAtIChtYXNrU2l6
ZUNsYXNzTWF4IDw8IGJhc2UpKTsKICAgICByZXR1cm4gYmFzZSAqIGxvZ1dhc3RlRmFjdG9yICsg
b2Zmc2V0IC8gKGxvZ0FsaWdubWVudE1pbiA8PCBiYXNlKTsKIH0KIAotaW5saW5lIHNpemVfdCBs
b2dPYmplY3RTaXplKHNpemVfdCBsb2dTaXplQ2xhc3MpCitjb25zdGV4cHIgc2l6ZV90IGxvZ09i
amVjdFNpemUoc2l6ZV90IGxvZ1NpemVDbGFzcykKIHsKICAgICBzaXplX3QgYmFzZSA9IGxvZ1Np
emVDbGFzcyAvIGxvZ1dhc3RlRmFjdG9yOwogICAgIHNpemVfdCBvZmZzZXQgPSBsb2dTaXplQ2xh
c3MgJSBsb2dXYXN0ZUZhY3RvcjsKQEAgLTEwNSwyNCArMTA1LDMwIEBAIGlubGluZSBzaXplX3Qg
bG9nT2JqZWN0U2l6ZShzaXplX3QgbG9nU2l6ZUNsYXNzKQogCiBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBzaXplQ2xhc3NDb3VudCA9IG1hc2tTaXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFzc0Nv
dW50OwogCi1pbmxpbmUgc2l6ZV90IHNpemVDbGFzcyhzaXplX3Qgc2l6ZSkKK2NvbnN0ZXhwciBz
aXplX3Qgc2l6ZUNsYXNzKHNpemVfdCBzaXplKQogewogICAgIGlmIChzaXplIDw9IG1hc2tTaXpl
Q2xhc3NNYXgpCiAgICAgICAgIHJldHVybiBtYXNrU2l6ZUNsYXNzKHNpemUpOwogICAgIHJldHVy
biBtYXNrU2l6ZUNsYXNzQ291bnQgKyBsb2dTaXplQ2xhc3Moc2l6ZSk7CiB9CiAKLWlubGluZSBz
aXplX3Qgb2JqZWN0U2l6ZShzaXplX3Qgc2l6ZUNsYXNzKQorY29uc3RleHByIHNpemVfdCBvYmpl
Y3RTaXplKHNpemVfdCBzaXplQ2xhc3MpCiB7CiAgICAgaWYgKHNpemVDbGFzcyA8IG1hc2tTaXpl
Q2xhc3NDb3VudCkKICAgICAgICAgcmV0dXJuIG1hc2tPYmplY3RTaXplKHNpemVDbGFzcyk7CiAg
ICAgcmV0dXJuIGxvZ09iamVjdFNpemUoc2l6ZUNsYXNzIC0gbWFza1NpemVDbGFzc0NvdW50KTsK
IH0KIAotaW5saW5lIHNpemVfdCBwYWdlU2l6ZShzaXplX3QgcGFnZUNsYXNzKQorY29uc3RleHBy
IHNpemVfdCBwYWdlU2l6ZShzaXplX3QgcGFnZUNsYXNzKQogewogICAgIHJldHVybiAocGFnZUNs
YXNzICsgMSkgKiBzbWFsbFBhZ2VTaXplOwogfQorCitjb25zdGV4cHIgc2l6ZV90IHNtYWxsTGlu
ZUNvdW50KHNpemVfdCB2bVBhZ2VTaXplKQoreworICAgIHJldHVybiB2bVBhZ2VTaXplIC8gc21h
bGxMaW5lU2l6ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgU2l6ZXMKIAogdXNpbmcgbmFtZXNwYWNl
IFNpemVzOwo=
</data>
<flag name="review"
          id="403147"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387679</attachid>
            <date>2020-01-14 11:31:29 -0800</date>
            <delta_ts>2020-01-14 11:57:06 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>bug-206044.diff</filename>
            <type>text/plain</type>
            <size>10994</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCAzOWNiZjVjMmVhMi4uMDgxOTA1NjZhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0wMS0xMCAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIENhbGN1bGF0ZSBMaW5lTWV0YWRhdGEgZm9yIHNw
ZWNpZmljIFZNIHBhZ2Ugc2l6ZSBpbiBjb21waWxlIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjA0NAorCisgICAgICAgIFJldmlld2VkIGJ5
IFl1c3VrZSBTdXp1a2kgLgorCisgICAgICAgIExpbmVNZXRhZGF0YSBpcyBkZXBlbmRlbnQgb25s
eSBvbiBWTSBwYWdlIHNpemUuIFRoaXMgcGF0Y2ggZW5hYmxlcyB0aGUgcHJlLWNhbGN1bGF0aW9u
IGZvcgorICAgICAgICBzcGVjaWZpYyBWTSBwYWdlIHNpemVzIGJ5IGNvbXBpbGVyIGZsYWdzLiBU
aGUgYmVuZWZpdCBpcyBib3RoIHJ1bnRpbWUgaW5pdGlhbGl6YXRpb24gc3BlZWQKKyAgICAgICAg
dXAgYW5kIGF2b2lkaW5nIGV4dHJhIFZNIGFsbG9jYXRpb24gb24gcnVudGltZS4KKworICAgICAg
ICBGaXJzdCB0YXJnZXRzIGFyZSA0ayAoTWFjKSBhbmQgMTZrIChzb21lIGlPUywgUGxheVN0YXRp
b24pIFZNIHBhZ2Ugc2l6ZXMuCisKKyAgICAgICAgKiBibWFsbG9jL0FsZ29yaXRobS5oOgorICAg
ICAgICAoYm1hbGxvYzo6ZGl2aWRlUm91bmRpbmdVcCk6CisgICAgICAgICogYm1hbGxvYy9CUGxh
dGZvcm0uaDoKKyAgICAgICAgKiBibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwOgorICAgICAgICAo
Ym1hbGxvYzo6ZmlsbExpbmVNZXRhZGF0YSk6CisgICAgICAgIChibWFsbG9jOjpjb21wdXRlTGlu
ZU1ldGFkYXRhKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXBDb25zdGFudHM6OmluaXRpYWxpemVM
aW5lTWV0YWRhdGEpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcENvbnN0YW50cy5oOgorICAgICAg
ICAoYm1hbGxvYzo6SGVhcENvbnN0YW50czo6c21hbGxMaW5lQ291bnQgY29uc3QpOgorICAgICAg
ICAoYm1hbGxvYzo6SGVhcENvbnN0YW50czo6c3RhcnRPZmZzZXQgY29uc3QpOgorICAgICAgICAo
Ym1hbGxvYzo6SGVhcENvbnN0YW50czo6b2JqZWN0Q291bnQgY29uc3QpOgorICAgICAgICAoYm1h
bGxvYzo6SGVhcENvbnN0YW50czo6bGluZU1ldGFkYXRhIGNvbnN0KToKKyAgICAgICAgKGJtYWxs
b2M6OkhlYXBDb25zdGFudHM6OnN0YXJ0T2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxs
b2M6OkhlYXBDb25zdGFudHM6Om9iamVjdENvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxs
b2M6OkhlYXBDb25zdGFudHM6OmxpbmVNZXRhZGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogYm1h
bGxvYy9MaW5lTWV0YWRhdGEuaDoKKyAgICAgICAgKiBibWFsbG9jL1NpemVzLmg6CisgICAgICAg
IChibWFsbG9jOjpTaXplczo6bWFza09iamVjdFNpemUpOgorICAgICAgICAoYm1hbGxvYzo6U2l6
ZXM6OmxvZ1NpemVDbGFzcyk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bG9nT2JqZWN0U2l6
ZSk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6c2l6ZUNsYXNzKToKKyAgICAgICAgKGJtYWxs
b2M6OlNpemVzOjpvYmplY3RTaXplKToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpwYWdlU2l6
ZSk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6c21hbGxMaW5lQ291bnQpOgorCiAyMDIwLTAx
LTA5ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBzb255LmNvbT4KIAogICAgICAgICBb
Ym1hbGxvY10gRXh0cmFjdCBjb25zdGFudHMgZnJvbSBIZWFwIGFuZCBzaGFyZSBpdCBhbW9uZyBI
ZWFwcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCmluZGV4IGIzODdlZGFhY2M4Li45MGEy
NTVhZGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCkBAIC0xMjksNyArMTI5LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgZGl2aWRlUm91bmRpbmdVcChUIG51
bWVyYXRvciwgVCBkZW5vbWluYXRvciwgVCYKICAgICAgICAgcXVvdGllbnQgKz0gMTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgZGl2aWRlUm91bmRpbmdVcChUIG51bWVyYXRv
ciwgVCBkZW5vbWluYXRvcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBUIGRpdmlk
ZVJvdW5kaW5nVXAoVCBudW1lcmF0b3IsIFQgZGVub21pbmF0b3IpCiB7CiAgICAgcmV0dXJuIChu
dW1lcmF0b3IgKyBkZW5vbWluYXRvciAtIDEpIC8gZGVub21pbmF0b3I7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JQbGF0Zm9ybS5oIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9CUGxhdGZvcm0uaAppbmRleCA2YzRmNzAyYWUxMi4uYWZlOWUyMDM0OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmgKKysrIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9CUGxhdGZvcm0uaApAQCAtMjYyLDMgKzI2MiwxMSBAQAogI2Vsc2UKICNkZWZp
bmUgQlVTRV9QQVJUSUFMX1NDQVZFTkdFIDAKICNlbmRpZgorCisjaWYgIWRlZmluZWQoQlVTRV9Q
UkVDT01QVVRFRF9DT05TVEFOVFNfVk1QQUdFNEspCisjZGVmaW5lIEJVU0VfUFJFQ09NUFVURURf
Q09OU1RBTlRTX1ZNUEFHRTRLIDEKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoQlVTRV9QUkVDT01Q
VVRFRF9DT05TVEFOVFNfVk1QQUdFMTZLKQorI2RlZmluZSBCVVNFX1BSRUNPTVBVVEVEX0NPTlNU
QU5UU19WTVBBR0UxNksgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXBDb25zdGFudHMuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3Rh
bnRzLmNwcAppbmRleCA1NmI2N2IzNjQ5NC4uZmNhOWZjZjc4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5jcHAKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcApAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbmNs
dWRlICJIZWFwQ29uc3RhbnRzLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiBuYW1lc3BhY2Ug
Ym1hbGxvYyB7CiAKQEAgLTM5LDM4ICs0MCw3MyBAQCBIZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3Rh
bnRzKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogICAgIGluaXRpYWxpemVQYWdlTWV0YWRhdGEo
KTsKIH0KIAotdm9pZCBIZWFwQ29uc3RhbnRzOjppbml0aWFsaXplTGluZU1ldGFkYXRhKCkKK3Rl
bXBsYXRlIDxjbGFzcyBDPgorY29uc3RleHByIHZvaWQgZmlsbExpbmVNZXRhZGF0YShDJiBjb250
YWluZXIsIHNpemVfdCBWTVBhZ2VTaXplKQogewotICAgIHNpemVfdCBzaXplQ2xhc3NDb3VudCA9
IGJtYWxsb2M6OnNpemVDbGFzcyhzbWFsbExpbmVTaXplKTsKLSAgICBtX3NtYWxsTGluZU1ldGFk
YXRhLmdyb3coc2l6ZUNsYXNzQ291bnQgKiBzbWFsbExpbmVDb3VudCgpKTsKLQotICAgIGZvciAo
c2l6ZV90IHNpemVDbGFzcyA9IDA7IHNpemVDbGFzcyA8IHNpemVDbGFzc0NvdW50OyArK3NpemVD
bGFzcykgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IG9iamVjdFNpemUoc2l6ZUNsYXNzKTsKLSAg
ICAgICAgTGluZU1ldGFkYXRhKiBwYWdlTWV0YWRhdGEgPSAmbV9zbWFsbExpbmVNZXRhZGF0YVtz
aXplQ2xhc3MgKiBzbWFsbExpbmVDb3VudCgpXTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IGNsc0Nv
dW50ID0gc2l6ZUNsYXNzKHNtYWxsTGluZVNpemUpOworICAgIHNpemVfdCBsaW5lQ291bnQgPSBz
bWFsbExpbmVDb3VudChWTVBhZ2VTaXplKTsKIAorICAgIGZvciAoc2l6ZV90IGNscyA9IDA7IGNs
cyA8IGNsc0NvdW50OyArK2NscykgeworICAgICAgICBzaXplX3Qgc2l6ZSA9IG9iamVjdFNpemUo
Y2xzKTsKKyAgICAgICAgc2l6ZV90IGJhc2VJbmRleCA9IGNscyAqIGxpbmVDb3VudDsKICAgICAg
ICAgc2l6ZV90IG9iamVjdCA9IDA7Ci0gICAgICAgIHNpemVfdCBsaW5lID0gMDsKLSAgICAgICAg
d2hpbGUgKG9iamVjdCA8IG1fdm1QYWdlU2l6ZVBoeXNpY2FsKSB7Ci0gICAgICAgICAgICBsaW5l
ID0gb2JqZWN0IC8gc21hbGxMaW5lU2l6ZTsKKyAgICAgICAgd2hpbGUgKG9iamVjdCA8IFZNUGFn
ZVNpemUpIHsKKyAgICAgICAgICAgIHNpemVfdCBsaW5lID0gb2JqZWN0IC8gc21hbGxMaW5lU2l6
ZTsKICAgICAgICAgICAgIHNpemVfdCBsZWZ0b3ZlciA9IG9iamVjdCAlIHNtYWxsTGluZVNpemU7
CiAKLSAgICAgICAgICAgIHNpemVfdCBvYmplY3RDb3VudDsKLSAgICAgICAgICAgIHNpemVfdCBy
ZW1haW5kZXI7Ci0gICAgICAgICAgICBkaXZpZGVSb3VuZGluZ1VwKHNtYWxsTGluZVNpemUgLSBs
ZWZ0b3Zlciwgc2l6ZSwgb2JqZWN0Q291bnQsIHJlbWFpbmRlcik7Ci0KLSAgICAgICAgICAgIHBh
Z2VNZXRhZGF0YVtsaW5lXSA9IHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obGVmdG92ZXIp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihvYmplY3RDb3VudCkgfTsKKyAgICAgICAgICAg
IGF1dG8gb2JqZWN0Q291bnQgPSBkaXZpZGVSb3VuZGluZ1VwKHNtYWxsTGluZVNpemUgLSBsZWZ0
b3Zlciwgc2l6ZSk7CiAKICAgICAgICAgICAgIG9iamVjdCArPSBvYmplY3RDb3VudCAqIHNpemU7
Ci0gICAgICAgIH0KIAotICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGUgbGFzdCBvYmplY3QgaW4g
YSBwYWdlIHRvIGVzY2FwZSB0aGUgcGFnZS4KLSAgICAgICAgaWYgKG9iamVjdCA+IG1fdm1QYWdl
U2l6ZVBoeXNpY2FsKSB7Ci0gICAgICAgICAgICBCQVNTRVJUKHBhZ2VNZXRhZGF0YVtsaW5lXS5v
YmplY3RDb3VudCk7Ci0gICAgICAgICAgICAtLXBhZ2VNZXRhZGF0YVtsaW5lXS5vYmplY3RDb3Vu
dDsKKyAgICAgICAgICAgIC8vIERvbid0IGFsbG93IHRoZSBsYXN0IG9iamVjdCBpbiBhIHBhZ2Ug
dG8gZXNjYXBlIHRoZSBwYWdlLgorICAgICAgICAgICAgaWYgKG9iamVjdCA+IFZNUGFnZVNpemUp
IHsKKyAgICAgICAgICAgICAgICBCQVNTRVJUKG9iamVjdENvdW50KTsKKyAgICAgICAgICAgICAg
ICAtLW9iamVjdENvdW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb250YWluZXJb
YmFzZUluZGV4ICsgbGluZV0gPSB7IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGxlZnRvdmVy
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ob2JqZWN0Q291bnQpIH07CiAgICAgICAgIH0K
ICAgICB9CiB9CiAKK3RlbXBsYXRlIDxzaXplX3QgVk1QYWdlU2l6ZT4KK2NvbnN0ZXhwciBhdXRv
IGNvbXB1dGVMaW5lTWV0YWRhdGEoKQoreworICAgIHN0ZDo6YXJyYXk8TGluZU1ldGFkYXRhLCBz
aXplQ2xhc3Moc21hbGxMaW5lU2l6ZSkgKiBzbWFsbExpbmVDb3VudChWTVBhZ2VTaXplKT4gcmVz
dWx0OworICAgIGZpbGxMaW5lTWV0YWRhdGEocmVzdWx0LCBWTVBhZ2VTaXplKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCisjaWYgQlVTRShQUkVDT01QVVRFRF9DT05TVEFOVFNfVk1QQUdFNEsp
Citjb25zdGV4cHIgYXV0byBrUHJlY2FsY3VyYXRlZExpbmVNZXRhZGF0YTRrID0gY29tcHV0ZUxp
bmVNZXRhZGF0YTw0ICoga0I+KCk7CisjZW5kaWYKKworI2lmIEJVU0UoUFJFQ09NUFVURURfQ09O
U1RBTlRTX1ZNUEFHRTE2SykKK2NvbnN0ZXhwciBhdXRvIGtQcmVjYWxjdXJhdGVkTGluZU1ldGFk
YXRhMTZrID0gY29tcHV0ZUxpbmVNZXRhZGF0YTwxNiAqIGtCPigpOworI2VuZGlmCisKK3ZvaWQg
SGVhcENvbnN0YW50czo6aW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpCit7CisjaWYgQlVTRShQUkVD
T01QVVRFRF9DT05TVEFOVFNfVk1QQUdFNEspCisgICAgaWYgKG1fdm1QYWdlU2l6ZVBoeXNpY2Fs
ID09IDQgKiBrQikgeworICAgICAgICBtX3NtYWxsTGluZU1ldGFkYXRhID0gJmtQcmVjYWxjdXJh
dGVkTGluZU1ldGFkYXRhNGtbMF07CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwor
I2lmIEJVU0UoUFJFQ09NUFVURURfQ09OU1RBTlRTX1ZNUEFHRTE2SykKKyAgICBpZiAobV92bVBh
Z2VTaXplUGh5c2ljYWwgPT0gMTYgKiBrQikgeworICAgICAgICBtX3NtYWxsTGluZU1ldGFkYXRh
ID0gJmtQcmVjYWxjdXJhdGVkTGluZU1ldGFkYXRhMTZrWzBdOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisKKyAgICBzaXplX3Qgc2l6ZUNsYXNzQ291bnQgPSBibWFsbG9jOjpzaXpl
Q2xhc3Moc21hbGxMaW5lU2l6ZSk7CisgICAgbV9zbWFsbExpbmVNZXRhZGF0YVN0b3JhZ2UuZ3Jv
dyhzaXplQ2xhc3NDb3VudCAqIHNtYWxsTGluZUNvdW50KCkpOworICAgIGZpbGxMaW5lTWV0YWRh
dGEobV9zbWFsbExpbmVNZXRhZGF0YVN0b3JhZ2UsIG1fdm1QYWdlU2l6ZVBoeXNpY2FsKTsKKyAg
ICBtX3NtYWxsTGluZU1ldGFkYXRhID0gJm1fc21hbGxMaW5lTWV0YWRhdGFTdG9yYWdlWzBdOwor
fQorCiB2b2lkIEhlYXBDb25zdGFudHM6OmluaXRpYWxpemVQYWdlTWV0YWRhdGEoKQogewogICAg
IGF1dG8gY29tcHV0ZVBhZ2VTaXplID0gWyZdKHNpemVfdCBzaXplQ2xhc3MpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5oIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmgKaW5kZXggNWE3MzU3MzlhNjUuLjA0ZTczZDBjYzgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuaAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuaApAQCAtNDEsMjEgKzQxLDIy
IEBAIHB1YmxpYzoKICAgICB+SGVhcENvbnN0YW50cygpID0gZGVsZXRlOwogCiAgICAgaW5saW5l
IHNpemVfdCBwYWdlQ2xhc3Moc2l6ZV90IHNpemVDbGFzcykgY29uc3QgeyByZXR1cm4gbV9wYWdl
Q2xhc3Nlc1tzaXplQ2xhc3NdOyB9Ci0gICAgaW5saW5lIHNpemVfdCBzbWFsbExpbmVDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fdm1QYWdlU2l6ZVBoeXNpY2FsIC8gc21hbGxMaW5lU2l6ZTsgfQot
ICAgIGlubGluZSB1bnNpZ25lZCBjaGFyIHN0YXJ0T2Zmc2V0KHNpemVfdCBzaXplQ2xhc3MsIHNp
emVfdCBsaW5lTnVtYmVyKSB7IHJldHVybiBsaW5lTWV0YWRhdGEoc2l6ZUNsYXNzLCBsaW5lTnVt
YmVyKS5zdGFydE9mZnNldDsgfQotICAgIGlubGluZSB1bnNpZ25lZCBjaGFyIG9iamVjdENvdW50
KHNpemVfdCBzaXplQ2xhc3MsIHNpemVfdCBsaW5lTnVtYmVyKSB7IHJldHVybiBsaW5lTWV0YWRh
dGEoc2l6ZUNsYXNzLCBsaW5lTnVtYmVyKS5vYmplY3RDb3VudDsgfQorICAgIGlubGluZSBzaXpl
X3Qgc21hbGxMaW5lQ291bnQoKSBjb25zdCB7IHJldHVybiBibWFsbG9jOjpzbWFsbExpbmVDb3Vu
dChtX3ZtUGFnZVNpemVQaHlzaWNhbCk7IH0KKyAgICBpbmxpbmUgdW5zaWduZWQgY2hhciBzdGFy
dE9mZnNldChzaXplX3Qgc2l6ZUNsYXNzLCBzaXplX3QgbGluZU51bWJlcikgY29uc3QgeyByZXR1
cm4gbGluZU1ldGFkYXRhKHNpemVDbGFzcywgbGluZU51bWJlcikuc3RhcnRPZmZzZXQ7IH0KKyAg
ICBpbmxpbmUgdW5zaWduZWQgY2hhciBvYmplY3RDb3VudChzaXplX3Qgc2l6ZUNsYXNzLCBzaXpl
X3QgbGluZU51bWJlcikgY29uc3QgeyByZXR1cm4gbGluZU1ldGFkYXRhKHNpemVDbGFzcywgbGlu
ZU51bWJlcikub2JqZWN0Q291bnQ7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVM
aW5lTWV0YWRhdGEoKTsKICAgICB2b2lkIGluaXRpYWxpemVQYWdlTWV0YWRhdGEoKTsKIAotICAg
IGlubGluZSBMaW5lTWV0YWRhdGEmIGxpbmVNZXRhZGF0YShzaXplX3Qgc2l6ZUNsYXNzLCBzaXpl
X3QgbGluZU51bWJlcikKKyAgICBpbmxpbmUgY29uc3QgTGluZU1ldGFkYXRhJiBsaW5lTWV0YWRh
dGEoc2l6ZV90IHNpemVDbGFzcywgc2l6ZV90IGxpbmVOdW1iZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9zbWFsbExpbmVNZXRhZGF0YVtzaXplQ2xhc3MgKiBzbWFsbExpbmVDb3Vu
dCgpICsgbGluZU51bWJlcl07CiAgICAgfQogCiAgICAgc2l6ZV90IG1fdm1QYWdlU2l6ZVBoeXNp
Y2FsOwotICAgIFZlY3RvcjxMaW5lTWV0YWRhdGE+IG1fc21hbGxMaW5lTWV0YWRhdGE7CisgICAg
Y29uc3QgTGluZU1ldGFkYXRhKiBtX3NtYWxsTGluZU1ldGFkYXRhIHsgfTsKKyAgICBWZWN0b3I8
TGluZU1ldGFkYXRhPiBtX3NtYWxsTGluZU1ldGFkYXRhU3RvcmFnZTsKICAgICBzdGQ6OmFycmF5
PHNpemVfdCwgc2l6ZUNsYXNzQ291bnQ+IG1fcGFnZUNsYXNzZXM7CiB9OwogREVDTEFSRV9TVEFU
SUNfUEVSX1BST0NFU1NfU1RPUkFHRShIZWFwQ29uc3RhbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvTGluZU1ldGFkYXRhLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0xpbmVNZXRhZGF0YS5oCmluZGV4IDYzNzBiMzU5ZjBhLi4zYTAyNDMwNmE4MiAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaW5lTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0xpbmVNZXRhZGF0YS5oCkBAIC0zMCw4ICszMCw4IEBACiBuYW1lc3BhY2Ug
Ym1hbGxvYyB7CiAKIHN0cnVjdCBMaW5lTWV0YWRhdGEgewotICAgIHVuc2lnbmVkIGNoYXIgc3Rh
cnRPZmZzZXQ7Ci0gICAgdW5zaWduZWQgY2hhciBvYmplY3RDb3VudDsKKyAgICB1bnNpZ25lZCBj
aGFyIHN0YXJ0T2Zmc2V0IHsgfTsKKyAgICB1bnNpZ25lZCBjaGFyIG9iamVjdENvdW50IHsgfTsK
IH07CiAKIHN0YXRpY19hc3NlcnQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1NpemVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgKaW5kZXggMWI5MmFiMzIx
MGIuLmFjMzVhMGE1MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVz
LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCkBAIC04MCw3ICs4MCw3IEBA
IGNvbnN0ZXhwciBzaXplX3QgbWFza1NpemVDbGFzcyhzaXplX3Qgc2l6ZSkKICAgICByZXR1cm4g
bWFzaygoc2l6ZSAtIDEpIC8gYWxpZ25tZW50LCBtYXNrU2l6ZUNsYXNzQ291bnQgLSAxKTsKIH0K
IAotaW5saW5lIHNpemVfdCBtYXNrT2JqZWN0U2l6ZShzaXplX3QgbWFza1NpemVDbGFzcykKK2Nv
bnN0ZXhwciBzaXplX3QgbWFza09iamVjdFNpemUoc2l6ZV90IG1hc2tTaXplQ2xhc3MpCiB7CiAg
ICAgcmV0dXJuIChtYXNrU2l6ZUNsYXNzICsgMSkgKiBhbGlnbm1lbnQ7CiB9CkBAIC04OSwxNCAr
ODksMTQgQEAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbG9nQWxpZ25tZW50TWluID0gbWFza1Np
emVDbGFzc01heCAvIGxvZ1dhc3RlRmFjdG9yOwogCiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBs
b2dTaXplQ2xhc3NDb3VudCA9IChsb2cyKHNtYWxsTWF4KSAtIGxvZzIobWFza1NpemVDbGFzc01h
eCkpICogbG9nV2FzdGVGYWN0b3I7CiAKLWlubGluZSBzaXplX3QgbG9nU2l6ZUNsYXNzKHNpemVf
dCBzaXplKQorY29uc3RleHByIHNpemVfdCBsb2dTaXplQ2xhc3Moc2l6ZV90IHNpemUpCiB7CiAg
ICAgc2l6ZV90IGJhc2UgPSBsb2cyKHNpemUgLSAxKSAtIGxvZzIobWFza1NpemVDbGFzc01heCk7
CiAgICAgc2l6ZV90IG9mZnNldCA9IChzaXplIC0gMSAtIChtYXNrU2l6ZUNsYXNzTWF4IDw8IGJh
c2UpKTsKICAgICByZXR1cm4gYmFzZSAqIGxvZ1dhc3RlRmFjdG9yICsgb2Zmc2V0IC8gKGxvZ0Fs
aWdubWVudE1pbiA8PCBiYXNlKTsKIH0KIAotaW5saW5lIHNpemVfdCBsb2dPYmplY3RTaXplKHNp
emVfdCBsb2dTaXplQ2xhc3MpCitjb25zdGV4cHIgc2l6ZV90IGxvZ09iamVjdFNpemUoc2l6ZV90
IGxvZ1NpemVDbGFzcykKIHsKICAgICBzaXplX3QgYmFzZSA9IGxvZ1NpemVDbGFzcyAvIGxvZ1dh
c3RlRmFjdG9yOwogICAgIHNpemVfdCBvZmZzZXQgPSBsb2dTaXplQ2xhc3MgJSBsb2dXYXN0ZUZh
Y3RvcjsKQEAgLTEwNSwyNCArMTA1LDMwIEBAIGlubGluZSBzaXplX3QgbG9nT2JqZWN0U2l6ZShz
aXplX3QgbG9nU2l6ZUNsYXNzKQogCiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXplQ2xhc3ND
b3VudCA9IG1hc2tTaXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFzc0NvdW50OwogCi1pbmxpbmUg
c2l6ZV90IHNpemVDbGFzcyhzaXplX3Qgc2l6ZSkKK2NvbnN0ZXhwciBzaXplX3Qgc2l6ZUNsYXNz
KHNpemVfdCBzaXplKQogewogICAgIGlmIChzaXplIDw9IG1hc2tTaXplQ2xhc3NNYXgpCiAgICAg
ICAgIHJldHVybiBtYXNrU2l6ZUNsYXNzKHNpemUpOwogICAgIHJldHVybiBtYXNrU2l6ZUNsYXNz
Q291bnQgKyBsb2dTaXplQ2xhc3Moc2l6ZSk7CiB9CiAKLWlubGluZSBzaXplX3Qgb2JqZWN0U2l6
ZShzaXplX3Qgc2l6ZUNsYXNzKQorY29uc3RleHByIHNpemVfdCBvYmplY3RTaXplKHNpemVfdCBz
aXplQ2xhc3MpCiB7CiAgICAgaWYgKHNpemVDbGFzcyA8IG1hc2tTaXplQ2xhc3NDb3VudCkKICAg
ICAgICAgcmV0dXJuIG1hc2tPYmplY3RTaXplKHNpemVDbGFzcyk7CiAgICAgcmV0dXJuIGxvZ09i
amVjdFNpemUoc2l6ZUNsYXNzIC0gbWFza1NpemVDbGFzc0NvdW50KTsKIH0KIAotaW5saW5lIHNp
emVfdCBwYWdlU2l6ZShzaXplX3QgcGFnZUNsYXNzKQorY29uc3RleHByIHNpemVfdCBwYWdlU2l6
ZShzaXplX3QgcGFnZUNsYXNzKQogewogICAgIHJldHVybiAocGFnZUNsYXNzICsgMSkgKiBzbWFs
bFBhZ2VTaXplOwogfQorCitjb25zdGV4cHIgc2l6ZV90IHNtYWxsTGluZUNvdW50KHNpemVfdCB2
bVBhZ2VTaXplKQoreworICAgIHJldHVybiB2bVBhZ2VTaXplIC8gc21hbGxMaW5lU2l6ZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgU2l6ZXMKIAogdXNpbmcgbmFtZXNwYWNlIFNpemVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387683</attachid>
            <date>2020-01-14 11:57:06 -0800</date>
            <delta_ts>2020-01-14 12:51:36 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>bug-206044.diff</filename>
            <type>text/plain</type>
            <size>10993</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCAzOWNiZjVjMmVhMi4uY2E5YWZkMWM1NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0wMS0xMCAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW2JtYWxsb2NdIENhbGN1bGF0ZSBMaW5lTWV0YWRhdGEgZm9yIHNw
ZWNpZmljIFZNIHBhZ2Ugc2l6ZSBpbiBjb21waWxlIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjA0NAorCisgICAgICAgIFJldmlld2VkIGJ5
IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgTGluZU1ldGFkYXRhIGlzIGRlcGVuZGVudCBvbmx5
IG9uIFZNIHBhZ2Ugc2l6ZS4gVGhpcyBwYXRjaCBlbmFibGVzIHRoZSBwcmUtY2FsY3VsYXRpb24g
Zm9yCisgICAgICAgIHNwZWNpZmljIFZNIHBhZ2Ugc2l6ZXMgYnkgY29tcGlsZXIgZmxhZ3MuIFRo
ZSBiZW5lZml0IGlzIGJvdGggcnVudGltZSBpbml0aWFsaXphdGlvbiBzcGVlZAorICAgICAgICB1
cCBhbmQgYXZvaWRpbmcgZXh0cmEgVk0gYWxsb2NhdGlvbiBvbiBydW50aW1lLgorCisgICAgICAg
IEZpcnN0IHRhcmdldHMgYXJlIDRrIChNYWMpIGFuZCAxNmsgKHNvbWUgaU9TLCBQbGF5U3RhdGlv
bikgVk0gcGFnZSBzaXplcy4KKworICAgICAgICAqIGJtYWxsb2MvQWxnb3JpdGhtLmg6CisgICAg
ICAgIChibWFsbG9jOjpkaXZpZGVSb3VuZGluZ1VwKToKKyAgICAgICAgKiBibWFsbG9jL0JQbGF0
Zm9ybS5oOgorICAgICAgICAqIGJtYWxsb2MvSGVhcENvbnN0YW50cy5jcHA6CisgICAgICAgIChi
bWFsbG9jOjpmaWxsTGluZU1ldGFkYXRhKToKKyAgICAgICAgKGJtYWxsb2M6OmNvbXB1dGVMaW5l
TWV0YWRhdGEpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcENvbnN0YW50czo6aW5pdGlhbGl6ZUxp
bmVNZXRhZGF0YSk6CisgICAgICAgICogYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmg6CisgICAgICAg
IChibWFsbG9jOjpIZWFwQ29uc3RhbnRzOjpzbWFsbExpbmVDb3VudCBjb25zdCk6CisgICAgICAg
IChibWFsbG9jOjpIZWFwQ29uc3RhbnRzOjpzdGFydE9mZnNldCBjb25zdCk6CisgICAgICAgIChi
bWFsbG9jOjpIZWFwQ29uc3RhbnRzOjpvYmplY3RDb3VudCBjb25zdCk6CisgICAgICAgIChibWFs
bG9jOjpIZWFwQ29uc3RhbnRzOjpsaW5lTWV0YWRhdGEgY29uc3QpOgorICAgICAgICAoYm1hbGxv
Yzo6SGVhcENvbnN0YW50czo6c3RhcnRPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxv
Yzo6SGVhcENvbnN0YW50czo6b2JqZWN0Q291bnQpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxv
Yzo6SGVhcENvbnN0YW50czo6bGluZU1ldGFkYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFs
bG9jL0xpbmVNZXRhZGF0YS5oOgorICAgICAgICAqIGJtYWxsb2MvU2l6ZXMuaDoKKyAgICAgICAg
KGJtYWxsb2M6OlNpemVzOjptYXNrT2JqZWN0U2l6ZSk6CisgICAgICAgIChibWFsbG9jOjpTaXpl
czo6bG9nU2l6ZUNsYXNzKToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpsb2dPYmplY3RTaXpl
KToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpzaXplQ2xhc3MpOgorICAgICAgICAoYm1hbGxv
Yzo6U2l6ZXM6Om9iamVjdFNpemUpOgorICAgICAgICAoYm1hbGxvYzo6U2l6ZXM6OnBhZ2VTaXpl
KToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpzbWFsbExpbmVDb3VudCk6CisKIDIwMjAtMDEt
MDkgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFti
bWFsbG9jXSBFeHRyYWN0IGNvbnN0YW50cyBmcm9tIEhlYXAgYW5kIHNoYXJlIGl0IGFtb25nIEhl
YXBzLgpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaCBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKaW5kZXggYjM4N2VkYWFjYzguLjkwYTI1
NWFkYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsZ29yaXRobS5oCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgKQEAgLTEyOSw3ICsxMjksNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBkaXZpZGVSb3VuZGluZ1VwKFQgbnVt
ZXJhdG9yLCBUIGRlbm9taW5hdG9yLCBUJgogICAgICAgICBxdW90aWVudCArPSAxOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCBkaXZpZGVSb3VuZGluZ1VwKFQgbnVtZXJhdG9y
LCBUIGRlbm9taW5hdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIFQgZGl2aWRl
Um91bmRpbmdVcChUIG51bWVyYXRvciwgVCBkZW5vbWluYXRvcikKIHsKICAgICByZXR1cm4gKG51
bWVyYXRvciArIGRlbm9taW5hdG9yIC0gMSkgLyBkZW5vbWluYXRvcjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0JQbGF0Zm9ybS5oCmluZGV4IDZjNGY3MDJhZTEyLi5hZmU5ZTIwMzQ5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0JQbGF0Zm9ybS5oCkBAIC0yNjIsMyArMjYyLDExIEBACiAjZWxzZQogI2RlZmlu
ZSBCVVNFX1BBUlRJQUxfU0NBVkVOR0UgMAogI2VuZGlmCisKKyNpZiAhZGVmaW5lZChCVVNFX1BS
RUNPTVBVVEVEX0NPTlNUQU5UU19WTVBBR0U0SykKKyNkZWZpbmUgQlVTRV9QUkVDT01QVVRFRF9D
T05TVEFOVFNfVk1QQUdFNEsgMQorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChCVVNFX1BSRUNPTVBV
VEVEX0NPTlNUQU5UU19WTVBBR0UxNkspCisjZGVmaW5lIEJVU0VfUFJFQ09NUFVURURfQ09OU1RB
TlRTX1ZNUEFHRTE2SyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcENvbnN0YW50cy5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFu
dHMuY3BwCmluZGV4IDU2YjY3YjM2NDk0Li5mY2E5ZmNmNzhkNyAxMDA2NDQKLS0tIGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0hlYXBDb25zdGFudHMuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAgKi8KIAogI2luY2x1
ZGUgIkhlYXBDb25zdGFudHMuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAKIG5hbWVzcGFjZSBi
bWFsbG9jIHsKIApAQCAtMzksMzggKzQwLDczIEBAIEhlYXBDb25zdGFudHM6OkhlYXBDb25zdGFu
dHMoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAgICAgaW5pdGlhbGl6ZVBhZ2VNZXRhZGF0YSgp
OwogfQogCi12b2lkIEhlYXBDb25zdGFudHM6OmluaXRpYWxpemVMaW5lTWV0YWRhdGEoKQordGVt
cGxhdGUgPGNsYXNzIEM+Citjb25zdGV4cHIgdm9pZCBmaWxsTGluZU1ldGFkYXRhKEMmIGNvbnRh
aW5lciwgc2l6ZV90IFZNUGFnZVNpemUpCiB7Ci0gICAgc2l6ZV90IHNpemVDbGFzc0NvdW50ID0g
Ym1hbGxvYzo6c2l6ZUNsYXNzKHNtYWxsTGluZVNpemUpOwotICAgIG1fc21hbGxMaW5lTWV0YWRh
dGEuZ3JvdyhzaXplQ2xhc3NDb3VudCAqIHNtYWxsTGluZUNvdW50KCkpOwotCi0gICAgZm9yIChz
aXplX3Qgc2l6ZUNsYXNzID0gMDsgc2l6ZUNsYXNzIDwgc2l6ZUNsYXNzQ291bnQ7ICsrc2l6ZUNs
YXNzKSB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gb2JqZWN0U2l6ZShzaXplQ2xhc3MpOwotICAg
ICAgICBMaW5lTWV0YWRhdGEqIHBhZ2VNZXRhZGF0YSA9ICZtX3NtYWxsTGluZU1ldGFkYXRhW3Np
emVDbGFzcyAqIHNtYWxsTGluZUNvdW50KCldOworICAgIGNvbnN0ZXhwciBzaXplX3QgY2xzQ291
bnQgPSBzaXplQ2xhc3Moc21hbGxMaW5lU2l6ZSk7CisgICAgc2l6ZV90IGxpbmVDb3VudCA9IHNt
YWxsTGluZUNvdW50KFZNUGFnZVNpemUpOwogCisgICAgZm9yIChzaXplX3QgY2xzID0gMDsgY2xz
IDwgY2xzQ291bnQ7ICsrY2xzKSB7CisgICAgICAgIHNpemVfdCBzaXplID0gb2JqZWN0U2l6ZShj
bHMpOworICAgICAgICBzaXplX3QgYmFzZUluZGV4ID0gY2xzICogbGluZUNvdW50OwogICAgICAg
ICBzaXplX3Qgb2JqZWN0ID0gMDsKLSAgICAgICAgc2l6ZV90IGxpbmUgPSAwOwotICAgICAgICB3
aGlsZSAob2JqZWN0IDwgbV92bVBhZ2VTaXplUGh5c2ljYWwpIHsKLSAgICAgICAgICAgIGxpbmUg
PSBvYmplY3QgLyBzbWFsbExpbmVTaXplOworICAgICAgICB3aGlsZSAob2JqZWN0IDwgVk1QYWdl
U2l6ZSkgeworICAgICAgICAgICAgc2l6ZV90IGxpbmUgPSBvYmplY3QgLyBzbWFsbExpbmVTaXpl
OwogICAgICAgICAgICAgc2l6ZV90IGxlZnRvdmVyID0gb2JqZWN0ICUgc21hbGxMaW5lU2l6ZTsK
IAotICAgICAgICAgICAgc2l6ZV90IG9iamVjdENvdW50OwotICAgICAgICAgICAgc2l6ZV90IHJl
bWFpbmRlcjsKLSAgICAgICAgICAgIGRpdmlkZVJvdW5kaW5nVXAoc21hbGxMaW5lU2l6ZSAtIGxl
ZnRvdmVyLCBzaXplLCBvYmplY3RDb3VudCwgcmVtYWluZGVyKTsKLQotICAgICAgICAgICAgcGFn
ZU1ldGFkYXRhW2xpbmVdID0geyBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihsZWZ0b3Zlciks
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG9iamVjdENvdW50KSB9OworICAgICAgICAgICAg
YXV0byBvYmplY3RDb3VudCA9IGRpdmlkZVJvdW5kaW5nVXAoc21hbGxMaW5lU2l6ZSAtIGxlZnRv
dmVyLCBzaXplKTsKIAogICAgICAgICAgICAgb2JqZWN0ICs9IG9iamVjdENvdW50ICogc2l6ZTsK
LSAgICAgICAgfQogCi0gICAgICAgIC8vIERvbid0IGFsbG93IHRoZSBsYXN0IG9iamVjdCBpbiBh
IHBhZ2UgdG8gZXNjYXBlIHRoZSBwYWdlLgotICAgICAgICBpZiAob2JqZWN0ID4gbV92bVBhZ2VT
aXplUGh5c2ljYWwpIHsKLSAgICAgICAgICAgIEJBU1NFUlQocGFnZU1ldGFkYXRhW2xpbmVdLm9i
amVjdENvdW50KTsKLSAgICAgICAgICAgIC0tcGFnZU1ldGFkYXRhW2xpbmVdLm9iamVjdENvdW50
OworICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGxhc3Qgb2JqZWN0IGluIGEgcGFnZSB0
byBlc2NhcGUgdGhlIHBhZ2UuCisgICAgICAgICAgICBpZiAob2JqZWN0ID4gVk1QYWdlU2l6ZSkg
eworICAgICAgICAgICAgICAgIEJBU1NFUlQob2JqZWN0Q291bnQpOworICAgICAgICAgICAgICAg
IC0tb2JqZWN0Q291bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRhaW5lclti
YXNlSW5kZXggKyBsaW5lXSA9IHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obGVmdG92ZXIp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihvYmplY3RDb3VudCkgfTsKICAgICAgICAgfQog
ICAgIH0KIH0KIAordGVtcGxhdGUgPHNpemVfdCBWTVBhZ2VTaXplPgorY29uc3RleHByIGF1dG8g
Y29tcHV0ZUxpbmVNZXRhZGF0YSgpCit7CisgICAgc3RkOjphcnJheTxMaW5lTWV0YWRhdGEsIHNp
emVDbGFzcyhzbWFsbExpbmVTaXplKSAqIHNtYWxsTGluZUNvdW50KFZNUGFnZVNpemUpPiByZXN1
bHQ7CisgICAgZmlsbExpbmVNZXRhZGF0YShyZXN1bHQsIFZNUGFnZVNpemUpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKKyNpZiBCVVNFKFBSRUNPTVBVVEVEX0NPTlNUQU5UU19WTVBBR0U0SykK
K2NvbnN0ZXhwciBhdXRvIGtQcmVjYWxjdXJhdGVkTGluZU1ldGFkYXRhNGsgPSBjb21wdXRlTGlu
ZU1ldGFkYXRhPDQgKiBrQj4oKTsKKyNlbmRpZgorCisjaWYgQlVTRShQUkVDT01QVVRFRF9DT05T
VEFOVFNfVk1QQUdFMTZLKQorY29uc3RleHByIGF1dG8ga1ByZWNhbGN1cmF0ZWRMaW5lTWV0YWRh
dGExNmsgPSBjb21wdXRlTGluZU1ldGFkYXRhPDE2ICoga0I+KCk7CisjZW5kaWYKKwordm9pZCBI
ZWFwQ29uc3RhbnRzOjppbml0aWFsaXplTGluZU1ldGFkYXRhKCkKK3sKKyNpZiBCVVNFKFBSRUNP
TVBVVEVEX0NPTlNUQU5UU19WTVBBR0U0SykKKyAgICBpZiAobV92bVBhZ2VTaXplUGh5c2ljYWwg
PT0gNCAqIGtCKSB7CisgICAgICAgIG1fc21hbGxMaW5lTWV0YWRhdGEgPSAma1ByZWNhbGN1cmF0
ZWRMaW5lTWV0YWRhdGE0a1swXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisj
aWYgQlVTRShQUkVDT01QVVRFRF9DT05TVEFOVFNfVk1QQUdFMTZLKQorICAgIGlmIChtX3ZtUGFn
ZVNpemVQaHlzaWNhbCA9PSAxNiAqIGtCKSB7CisgICAgICAgIG1fc21hbGxMaW5lTWV0YWRhdGEg
PSAma1ByZWNhbGN1cmF0ZWRMaW5lTWV0YWRhdGExNmtbMF07CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKworICAgIHNpemVfdCBzaXplQ2xhc3NDb3VudCA9IGJtYWxsb2M6OnNpemVD
bGFzcyhzbWFsbExpbmVTaXplKTsKKyAgICBtX3NtYWxsTGluZU1ldGFkYXRhU3RvcmFnZS5ncm93
KHNpemVDbGFzc0NvdW50ICogc21hbGxMaW5lQ291bnQoKSk7CisgICAgZmlsbExpbmVNZXRhZGF0
YShtX3NtYWxsTGluZU1ldGFkYXRhU3RvcmFnZSwgbV92bVBhZ2VTaXplUGh5c2ljYWwpOworICAg
IG1fc21hbGxMaW5lTWV0YWRhdGEgPSAmbV9zbWFsbExpbmVNZXRhZGF0YVN0b3JhZ2VbMF07Cit9
CisKIHZvaWQgSGVhcENvbnN0YW50czo6aW5pdGlhbGl6ZVBhZ2VNZXRhZGF0YSgpCiB7CiAgICAg
YXV0byBjb21wdXRlUGFnZVNpemUgPSBbJl0oc2l6ZV90IHNpemVDbGFzcykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmggYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0hlYXBDb25zdGFudHMuaAppbmRleCA1YTczNTczOWE2NS4uMDRlNzNkMGNjODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5oCisrKyBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5oCkBAIC00MSwyMSArNDEsMjIg
QEAgcHVibGljOgogICAgIH5IZWFwQ29uc3RhbnRzKCkgPSBkZWxldGU7CiAKICAgICBpbmxpbmUg
c2l6ZV90IHBhZ2VDbGFzcyhzaXplX3Qgc2l6ZUNsYXNzKSBjb25zdCB7IHJldHVybiBtX3BhZ2VD
bGFzc2VzW3NpemVDbGFzc107IH0KLSAgICBpbmxpbmUgc2l6ZV90IHNtYWxsTGluZUNvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV92bVBhZ2VTaXplUGh5c2ljYWwgLyBzbWFsbExpbmVTaXplOyB9Ci0g
ICAgaW5saW5lIHVuc2lnbmVkIGNoYXIgc3RhcnRPZmZzZXQoc2l6ZV90IHNpemVDbGFzcywgc2l6
ZV90IGxpbmVOdW1iZXIpIHsgcmV0dXJuIGxpbmVNZXRhZGF0YShzaXplQ2xhc3MsIGxpbmVOdW1i
ZXIpLnN0YXJ0T2Zmc2V0OyB9Ci0gICAgaW5saW5lIHVuc2lnbmVkIGNoYXIgb2JqZWN0Q291bnQo
c2l6ZV90IHNpemVDbGFzcywgc2l6ZV90IGxpbmVOdW1iZXIpIHsgcmV0dXJuIGxpbmVNZXRhZGF0
YShzaXplQ2xhc3MsIGxpbmVOdW1iZXIpLm9iamVjdENvdW50OyB9CisgICAgaW5saW5lIHNpemVf
dCBzbWFsbExpbmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIGJtYWxsb2M6OnNtYWxsTGluZUNvdW50
KG1fdm1QYWdlU2l6ZVBoeXNpY2FsKTsgfQorICAgIGlubGluZSB1bnNpZ25lZCBjaGFyIHN0YXJ0
T2Zmc2V0KHNpemVfdCBzaXplQ2xhc3MsIHNpemVfdCBsaW5lTnVtYmVyKSBjb25zdCB7IHJldHVy
biBsaW5lTWV0YWRhdGEoc2l6ZUNsYXNzLCBsaW5lTnVtYmVyKS5zdGFydE9mZnNldDsgfQorICAg
IGlubGluZSB1bnNpZ25lZCBjaGFyIG9iamVjdENvdW50KHNpemVfdCBzaXplQ2xhc3MsIHNpemVf
dCBsaW5lTnVtYmVyKSBjb25zdCB7IHJldHVybiBsaW5lTWV0YWRhdGEoc2l6ZUNsYXNzLCBsaW5l
TnVtYmVyKS5vYmplY3RDb3VudDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZUxp
bmVNZXRhZGF0YSgpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVBhZ2VNZXRhZGF0YSgpOwogCi0gICAg
aW5saW5lIExpbmVNZXRhZGF0YSYgbGluZU1ldGFkYXRhKHNpemVfdCBzaXplQ2xhc3MsIHNpemVf
dCBsaW5lTnVtYmVyKQorICAgIGlubGluZSBjb25zdCBMaW5lTWV0YWRhdGEmIGxpbmVNZXRhZGF0
YShzaXplX3Qgc2l6ZUNsYXNzLCBzaXplX3QgbGluZU51bWJlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX3NtYWxsTGluZU1ldGFkYXRhW3NpemVDbGFzcyAqIHNtYWxsTGluZUNvdW50
KCkgKyBsaW5lTnVtYmVyXTsKICAgICB9CiAKICAgICBzaXplX3QgbV92bVBhZ2VTaXplUGh5c2lj
YWw7Ci0gICAgVmVjdG9yPExpbmVNZXRhZGF0YT4gbV9zbWFsbExpbmVNZXRhZGF0YTsKKyAgICBj
b25zdCBMaW5lTWV0YWRhdGEqIG1fc21hbGxMaW5lTWV0YWRhdGEgeyB9OworICAgIFZlY3RvcjxM
aW5lTWV0YWRhdGE+IG1fc21hbGxMaW5lTWV0YWRhdGFTdG9yYWdlOwogICAgIHN0ZDo6YXJyYXk8
c2l6ZV90LCBzaXplQ2xhc3NDb3VudD4gbV9wYWdlQ2xhc3NlczsKIH07CiBERUNMQVJFX1NUQVRJ
Q19QRVJfUFJPQ0VTU19TVE9SQUdFKEhlYXBDb25zdGFudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9MaW5lTWV0YWRhdGEuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
TGluZU1ldGFkYXRhLmgKaW5kZXggNjM3MGIzNTlmMGEuLjNhMDI0MzA2YTgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpbmVNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvTGluZU1ldGFkYXRhLmgKQEAgLTMwLDggKzMwLDggQEAKIG5hbWVzcGFjZSBi
bWFsbG9jIHsKIAogc3RydWN0IExpbmVNZXRhZGF0YSB7Ci0gICAgdW5zaWduZWQgY2hhciBzdGFy
dE9mZnNldDsKLSAgICB1bnNpZ25lZCBjaGFyIG9iamVjdENvdW50OworICAgIHVuc2lnbmVkIGNo
YXIgc3RhcnRPZmZzZXQgeyB9OworICAgIHVuc2lnbmVkIGNoYXIgb2JqZWN0Q291bnQgeyB9Owog
fTsKIAogc3RhdGljX2Fzc2VydCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U2l6ZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMuaAppbmRleCAxYjkyYWIzMjEw
Yi4uYWMzNWEwYTUwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMu
aAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgKQEAgLTgwLDcgKzgwLDcgQEAg
Y29uc3RleHByIHNpemVfdCBtYXNrU2l6ZUNsYXNzKHNpemVfdCBzaXplKQogICAgIHJldHVybiBt
YXNrKChzaXplIC0gMSkgLyBhbGlnbm1lbnQsIG1hc2tTaXplQ2xhc3NDb3VudCAtIDEpOwogfQog
Ci1pbmxpbmUgc2l6ZV90IG1hc2tPYmplY3RTaXplKHNpemVfdCBtYXNrU2l6ZUNsYXNzKQorY29u
c3RleHByIHNpemVfdCBtYXNrT2JqZWN0U2l6ZShzaXplX3QgbWFza1NpemVDbGFzcykKIHsKICAg
ICByZXR1cm4gKG1hc2tTaXplQ2xhc3MgKyAxKSAqIGFsaWdubWVudDsKIH0KQEAgLTg5LDE0ICs4
OSwxNCBAQCBzdGF0aWMgY29uc3RleHByIHNpemVfdCBsb2dBbGlnbm1lbnRNaW4gPSBtYXNrU2l6
ZUNsYXNzTWF4IC8gbG9nV2FzdGVGYWN0b3I7CiAKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGxv
Z1NpemVDbGFzc0NvdW50ID0gKGxvZzIoc21hbGxNYXgpIC0gbG9nMihtYXNrU2l6ZUNsYXNzTWF4
KSkgKiBsb2dXYXN0ZUZhY3RvcjsKIAotaW5saW5lIHNpemVfdCBsb2dTaXplQ2xhc3Moc2l6ZV90
IHNpemUpCitjb25zdGV4cHIgc2l6ZV90IGxvZ1NpemVDbGFzcyhzaXplX3Qgc2l6ZSkKIHsKICAg
ICBzaXplX3QgYmFzZSA9IGxvZzIoc2l6ZSAtIDEpIC0gbG9nMihtYXNrU2l6ZUNsYXNzTWF4KTsK
ICAgICBzaXplX3Qgb2Zmc2V0ID0gKHNpemUgLSAxIC0gKG1hc2tTaXplQ2xhc3NNYXggPDwgYmFz
ZSkpOwogICAgIHJldHVybiBiYXNlICogbG9nV2FzdGVGYWN0b3IgKyBvZmZzZXQgLyAobG9nQWxp
Z25tZW50TWluIDw8IGJhc2UpOwogfQogCi1pbmxpbmUgc2l6ZV90IGxvZ09iamVjdFNpemUoc2l6
ZV90IGxvZ1NpemVDbGFzcykKK2NvbnN0ZXhwciBzaXplX3QgbG9nT2JqZWN0U2l6ZShzaXplX3Qg
bG9nU2l6ZUNsYXNzKQogewogICAgIHNpemVfdCBiYXNlID0gbG9nU2l6ZUNsYXNzIC8gbG9nV2Fz
dGVGYWN0b3I7CiAgICAgc2l6ZV90IG9mZnNldCA9IGxvZ1NpemVDbGFzcyAlIGxvZ1dhc3RlRmFj
dG9yOwpAQCAtMTA1LDI0ICsxMDUsMzAgQEAgaW5saW5lIHNpemVfdCBsb2dPYmplY3RTaXplKHNp
emVfdCBsb2dTaXplQ2xhc3MpCiAKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNpemVDbGFzc0Nv
dW50ID0gbWFza1NpemVDbGFzc0NvdW50ICsgbG9nU2l6ZUNsYXNzQ291bnQ7CiAKLWlubGluZSBz
aXplX3Qgc2l6ZUNsYXNzKHNpemVfdCBzaXplKQorY29uc3RleHByIHNpemVfdCBzaXplQ2xhc3Mo
c2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKHNpemUgPD0gbWFza1NpemVDbGFzc01heCkKICAgICAg
ICAgcmV0dXJuIG1hc2tTaXplQ2xhc3Moc2l6ZSk7CiAgICAgcmV0dXJuIG1hc2tTaXplQ2xhc3ND
b3VudCArIGxvZ1NpemVDbGFzcyhzaXplKTsKIH0KIAotaW5saW5lIHNpemVfdCBvYmplY3RTaXpl
KHNpemVfdCBzaXplQ2xhc3MpCitjb25zdGV4cHIgc2l6ZV90IG9iamVjdFNpemUoc2l6ZV90IHNp
emVDbGFzcykKIHsKICAgICBpZiAoc2l6ZUNsYXNzIDwgbWFza1NpemVDbGFzc0NvdW50KQogICAg
ICAgICByZXR1cm4gbWFza09iamVjdFNpemUoc2l6ZUNsYXNzKTsKICAgICByZXR1cm4gbG9nT2Jq
ZWN0U2l6ZShzaXplQ2xhc3MgLSBtYXNrU2l6ZUNsYXNzQ291bnQpOwogfQogCi1pbmxpbmUgc2l6
ZV90IHBhZ2VTaXplKHNpemVfdCBwYWdlQ2xhc3MpCitjb25zdGV4cHIgc2l6ZV90IHBhZ2VTaXpl
KHNpemVfdCBwYWdlQ2xhc3MpCiB7CiAgICAgcmV0dXJuIChwYWdlQ2xhc3MgKyAxKSAqIHNtYWxs
UGFnZVNpemU7CiB9CisKK2NvbnN0ZXhwciBzaXplX3Qgc21hbGxMaW5lQ291bnQoc2l6ZV90IHZt
UGFnZVNpemUpCit7CisgICAgcmV0dXJuIHZtUGFnZVNpemUgLyBzbWFsbExpbmVTaXplOworfQor
CiB9IC8vIG5hbWVzcGFjZSBTaXplcwogCiB1c2luZyBuYW1lc3BhY2UgU2l6ZXM7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>