<?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>196392</bug_id>
          
          <creation_ts>2019-03-28 23:58:03 -0700</creation_ts>
          <short_desc>[JSC] JSWrapperMap should not use Objective-C Weak map (NSMapTable with NSPointerFunctionsWeakMemory) for m_cachedObjCWrappers</short_desc>
          <delta_ts>2019-04-15 19:17:29 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></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>
          <dependson>196952</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1522387</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-28 23:58:03 -0700</bug_when>
    <thetext>We do not use Objective-C weak semantics here. Objective-C JSValue has a dealloc function, and JSValue is tightly coupled to JSContext (it has _context field).
So JSValue is only stored in one wrapper map held by JSContext (JSWrapperMap). So, we can manage lifetime just unregistering itself from JSWrapperMap in [JSValue dealloc].
Why we would like to avoid Objective-C weak semantics is that it allocates much memory. In very simple hello_world case, we create 4 JSValue wrappers, and it consumes 10KB for weak semantics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522390</commentid>
    <comment_count>1</comment_count>
      <attachid>366254</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-29 00:06:27 -0700</bug_when>
    <thetext>Created attachment 366254
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522637</commentid>
    <comment_count>2</comment_count>
      <attachid>366320</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-29 16:12:35 -0700</bug_when>
    <thetext>Created attachment 366320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522648</commentid>
    <comment_count>3</comment_count>
      <attachid>366320</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-29 16:35:49 -0700</bug_when>
    <thetext>Comment on attachment 366320
Patch

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

&gt; Source/JavaScriptCore/API/JSContext.mm:374
&gt; +    JSC::JSLockHolder locker(toJS(m_context));

It is not necessary since we just drop Hash table entry, which contains a pointer, and do nothing on this pointer. I&apos;ll remove this lock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522656</commentid>
    <comment_count>4</comment_count>
      <attachid>366320</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-29 16:55:01 -0700</bug_when>
    <thetext>Comment on attachment 366320
Patch

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

&gt; Source/JavaScriptCore/API/JSWrapperMap.mm:604
&gt; +    void* m_wrapper { nullptr };

As you mentioned, let&apos;s use __unsafe_unretained</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522695</commentid>
    <comment_count>5</comment_count>
      <attachid>366320</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-29 18:29:13 -0700</bug_when>
    <thetext>Comment on attachment 366320
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/API/JSWrapperMap.mm:604
&gt;&gt; +    void* m_wrapper { nullptr };
&gt; 
&gt; As you mentioned, let&apos;s use __unsafe_unretained

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522697</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-29 18:30:37 -0700</bug_when>
    <thetext>Committed r243672: &lt;https://trac.webkit.org/changeset/243672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522701</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-29 18:36:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/49443020&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527575</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-15 19:09:01 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 196952</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527582</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-04-15 19:17:29 -0700</bug_when>
    <thetext>I rolled out this patch for now. The problem was this patch does not account that JSC.framework is thread-safe. JSC VM can be used multiple threads, and JSC framework takes appropriate lock internally. And [JSValue release] can be called in one thread while the other thread uses it. So the problem happens when,

1. Thread A calls [JSValue release].
2. Thread A is now in [JSValue dealloc], and about to unregister JSValue from wrapper map.
3. Thread B gets the JSValue from the wrapper map.
4. Thread A unregisters the JSValue, and destroy it.
5. Thread B uses the destroyed JSValue.

Appropriate fix in this patch&apos;s direction would be like, defining custom [JSValue release] and unregister it from wrapper map and destroy it in an atomic manner.
But since this introduces a lot of complexity, for now, I&apos;ve just reverted this patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366254</attachid>
            <date>2019-03-29 00:06:27 -0700</date>
            <delta_ts>2019-03-29 16:12:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196392-20190329000626.patch</filename>
            <type>text/plain</type>
            <size>8602</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZmY1ZGFhMjFjOGQ1ZWE1MmExZjRjODJmNzJjZTczZDY2NzJmNzVhLi5iNmFjYmQ3MjY2OTBjMzY0
ODhmMDQyZjJjZjczYjBhNWVlMWM0MjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxOS0wMy0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEpTV3JhcHBlck1hcCBzaG91bGQgbm90IHVzZSBPYmplY3RpdmUt
QyBXZWFrIG1hcCAoTlNNYXBUYWJsZSB3aXRoIE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkp
IGZvciBtX2NhY2hlZE9iakNXcmFwcGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAoLVtKU0NvbnRl
eHQgcmVtb3ZlV3JhcHBlcjpdKToKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0SW50ZXJuYWwuaDoK
KyAgICAgICAgKiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKC1bSlNWYWx1ZSBkZWFsbG9jXSk6
CisgICAgICAgICgtW0pTVmFsdWUgaW5pdFdpdGhWYWx1ZTppbkNvbnRleHQ6XSk6CisgICAgICAg
ICogQVBJL0pTV3JhcHBlck1hcC5oOgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAubW06Cisg
ICAgICAgIChXcmFwcGVyS2V5OjpoYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoV3Jh
cHBlcktleTo6V3JhcHBlcktleSk6CisgICAgICAgIChXcmFwcGVyS2V5Ojppc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXcmFwcGVyS2V5OjpIYXNoOjpoYXNoKToKKyAg
ICAgICAgKFdyYXBwZXJLZXk6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdyYXBwZXJLZXk6OlRy
YWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdyYXBwZXJLZXk6OlRyYW5zbGF0b3I6Omhh
c2gpOgorICAgICAgICAoV3JhcHBlcktleTo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAo
V3JhcHBlcktleTo6VHJhbnNsYXRvcjo6dHJhbnNsYXRlKToKKyAgICAgICAgKC1bSlNXcmFwcGVy
TWFwIGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpdKToKKyAgICAgICAgKC1bSlNXcmFwcGVyTWFw
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bSlNXcmFwcGVyTWFwIG9iamNXcmFwcGVyRm9ySlNWYWx1
ZVJlZjppbkNvbnRleHQ6XSk6CisgICAgICAgICgtW0pTV3JhcHBlck1hcCByZW1vdmVXcmFwcGVy
Ol0pOgorCiAyMDE5LTAzLTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gRHJvcCBWTSBhbmQgQ29udGV4dCBjYWNoZSBtYXAgaW4gSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCmluZGV4
IDA5NGM5MzcxYThiNWY4YWU3NDFhYWRiOWFkY2I1NjQ4ZjRlMGJhZmUuLjA1MGI5Yzc5ZjcyOWZm
NWQwZjViN2UzZDQyZGVmZDBiMDFhZmFmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0Lm1tCkBAIC0zNjksNiArMzY5LDEyIEBAIC0gKEpTVmFsdWUgKil3cmFwcGVyRm9ySlNP
YmplY3Q6KEpTVmFsdWVSZWYpdmFsdWUKICAgICByZXR1cm4gW1tzZWxmIHdyYXBwZXJNYXBdIG9i
amNXcmFwcGVyRm9ySlNWYWx1ZVJlZjp2YWx1ZSBpbkNvbnRleHQ6c2VsZl07CiB9CiAKKy0gKHZv
aWQpcmVtb3ZlV3JhcHBlcjoodm9pZCopdmFsdWUKK3sKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIodG9KUyhtX2NvbnRleHQpKTsKKyAgICByZXR1cm4gW1tzZWxmIHdyYXBwZXJNYXBdIHJl
bW92ZVdyYXBwZXI6dmFsdWVdOworfQorCiArIChKU0NvbnRleHQgKiljb250ZXh0V2l0aEpTR2xv
YmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWdsb2JhbENvbnRleHQKIHsKICAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSAoX19icmlkZ2UgSlNDb250ZXh0ICopdG9KU0dsb2JhbE9iamVj
dChnbG9iYWxDb250ZXh0KS0+YXBpV3JhcHBlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRJbnRlcm5hbC5oCmluZGV4IDk1OGM0NzlmNDFjZTg0MTNmYzY5NGFjMTIz
ZDc5NGViM2Q3ZjRkNGQuLmQzZjY2MWY2YWYyNmVlMWFhNmJhMTg3MGE3OTEzMDE4YmU0MTk5Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0SW50ZXJuYWwu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgKQEAg
LTU0LDYgKzU0LDcgQEAgc3RydWN0IENhbGxiYWNrRGF0YSB7CiAtIChKU1dyYXBwZXJNYXAgKil3
cmFwcGVyTWFwOwogLSAoSlNWYWx1ZSAqKXdyYXBwZXJGb3JPYmpDT2JqZWN0OihpZClvYmplY3Q7
CiAtIChKU1ZhbHVlICopd3JhcHBlckZvckpTT2JqZWN0OihKU1ZhbHVlUmVmKXZhbHVlOworLSAo
dm9pZClyZW1vdmVXcmFwcGVyOih2b2lkKil2YWx1ZTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUubW0KaW5kZXggODZlMTBjZmM5NDBjZjA5ZTA0ZDk4MzBhY2FiMmQwMzA4
NGRmYWFkZS4uMzNiZjU4OWFhNDNhYzQ0OTZjY2ZlN2M2OTc4M2Y5MjlkOTUzMDJkOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtNzEsNiArNzEsNyBAQCBAaW1wbGVtZW50
YXRpb24gSlNWYWx1ZSB7CiAKIC0gKHZvaWQpZGVhbGxvYwogeworICAgIFtfY29udGV4dCByZW1v
dmVXcmFwcGVyOihfX2JyaWRnZSB2b2lkKilzZWxmXTsKICAgICBKU1ZhbHVlVW5wcm90ZWN0KFtf
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKICAgICBbX2NvbnRleHQgcmVs
ZWFzZV07CiAgICAgX2NvbnRleHQgPSBuaWw7CkBAIC0xMDc1LDYgKzEwNzYsNyBAQCAtIChKU1Zh
bHVlICopaW5pdFdpdGhWYWx1ZTooSlNWYWx1ZVJlZil2YWx1ZSBpbkNvbnRleHQ6KEpTQ29udGV4
dCAqKWNvbnRleHQKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBB
U1NFUlQoY29udGV4dCk7CiAgICAgX2NvbnRleHQgPSBbY29udGV4dCByZXRhaW5dOwogICAgIG1f
dmFsdWUgPSB2YWx1ZTsKICAgICBKU1ZhbHVlUHJvdGVjdChbX2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgbV92YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV3JhcHBlck1hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
aAppbmRleCA2YzE4YzY0YjRjNzk1ZjNiNjhkYWFmODAzYzI0MTFmYTMzNWU0YTUxLi5jYjRkYTVm
YWI4Mjc1ZDQ1NjlhZTEyNTNjMTM0NDQwNjJhMTZiZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNXcmFwcGVyTWFwLmgKQEAgLTM3LDYgKzM3LDggQEAKIAogLSAoSlNWYWx1ZSAqKW9i
amNXcmFwcGVyRm9ySlNWYWx1ZVJlZjooSlNWYWx1ZVJlZil2YWx1ZSBpbkNvbnRleHQ6KEpTQ29u
dGV4dCAqKWNvbnRleHQ7CiAKKy0gKHZvaWQpcmVtb3ZlV3JhcHBlcjoodm9pZCopd3JhcHBlcjsK
KwogQGVuZAogCiBpZCB0cnlVbndyYXBPYmpjT2JqZWN0KEpTR2xvYmFsQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBl
ck1hcC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCmluZGV4
IDIwMWNiMWRmOWM1ZjMzM2ZjMjk4NGI1NGUyNjZjMjFkNDliZWU5Y2IuLjcxMDRiMzU1MjFhMGVj
MTY5N2NiNWRhNTMyNzIwYzU0MTNmYzA2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXcmFwcGVyTWFwLm1tCkBAIC01ODEsMTAgKzU4MSw3NyBAQCAtIChKU0M6OlN0cnVjdHVyZSop
c3RydWN0dXJlSW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CiAKIEBlbmQKIAorc3RydWN0
IFdyYXBwZXJLZXkgeworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIDE7IH0KKworICAgIFdyYXBwZXJLZXkoKSA9IGRlZmF1bHQ7
CisKKyAgICBleHBsaWNpdCBXcmFwcGVyS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkKKyAgICAgICAgOiBtX3dyYXBwZXIoYml0d2lzZV9jYXN0PHZvaWQqPihoYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSkpCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IFdyYXBwZXJLZXkodm9p
ZCogd3JhcHBlcikKKyAgICAgICAgOiBtX3dyYXBwZXIod3JhcHBlcikKKyAgICB7CisgICAgfQor
CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obV93cmFwcGVyKSA9PSBoYXNoVGFibGVE
ZWxldGVkVmFsdWUoKTsKKyAgICB9CisKKyAgICB2b2lkKiBtX3dyYXBwZXIgeyBudWxscHRyIH07
CisKKyAgICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IFdyYXBwZXJLZXkmIGtleSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIERlZmF1bHRI
YXNoPEpTVmFsdWVSZWY+OjpIYXNoOjpoYXNoKFsoX19icmlkZ2UgSlNWYWx1ZSopa2V5Lm1fd3Jh
cHBlciBKU1ZhbHVlUmVmXSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBXcmFwcGVyS2V5JiBsaHMsIGNvbnN0IFdyYXBwZXJLZXkmIHJocykKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGxocy5tX3dyYXBwZXIgPT0gcmhzLm1fd3JhcHBlcjsKKyAg
ICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gZmFsc2U7CisgICAgfTsKKworICAgIHN0cnVjdCBUcmFpdHMgOiBwdWJsaWMg
U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdyYXBwZXJLZXk+IHsKKyAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOworICAgICAgICBzdGF0aWMgYm9v
bCBpc0VtcHR5VmFsdWUoY29uc3QgV3JhcHBlcktleSYga2V5KQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4ga2V5Lm1fd3JhcHBlciA9PSBudWxscHRyOworICAgICAgICB9CisgICAgfTsK
KworICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKKyAgICAgICAgc3RydWN0IFZhbHVlQW5kQ29udGV4
dCB7CisgICAgICAgICAgICB2b2lkKiBtX2NvbnRleHQ7CisgICAgICAgICAgICBKU1ZhbHVlUmVm
IG1fdmFsdWU7CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgVmFsdWVBbmRDb250ZXh0JiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IERlZmF1bHRIYXNoPEpTVmFsdWVSZWY+OjpIYXNoOjpoYXNoKHZhbHVlLm1fdmFsdWUpOworICAg
ICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV3JhcHBlcktleSYgbGhz
LCBjb25zdCBWYWx1ZUFuZENvbnRleHQmIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gWyhfX2JyaWRnZSBKU1ZhbHVlKilsaHMubV93cmFwcGVyIEpTVmFsdWVSZWZdID09IHZh
bHVlLm1fdmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUo
V3JhcHBlcktleSYgcmVzdWx0LCBjb25zdCBWYWx1ZUFuZENvbnRleHQmIHZhbHVlLCB1bnNpZ25l
ZCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0ID0gV3JhcHBlcktleSgoX19icmlkZ2Ug
dm9pZCopW1tbSlNWYWx1ZSBhbGxvY10gaW5pdFdpdGhWYWx1ZTp2YWx1ZS5tX3ZhbHVlIGluQ29u
dGV4dDooX19icmlkZ2UgSlNDb250ZXh0ICopdmFsdWUubV9jb250ZXh0XSBhdXRvcmVsZWFzZV0p
OworICAgICAgICB9CisgICAgfTsKK307CisKIEBpbXBsZW1lbnRhdGlvbiBKU1dyYXBwZXJNYXAg
ewogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKm1fY2xhc3NNYXA7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEpTQzo6V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+
PiBtX2NhY2hlZEpTV3JhcHBlcnM7Ci0gICAgTlNNYXBUYWJsZSAqbV9jYWNoZWRPYmpDV3JhcHBl
cnM7CisgICAgSGFzaFNldDxXcmFwcGVyS2V5LCBXcmFwcGVyS2V5OjpIYXNoLCBXcmFwcGVyS2V5
OjpUcmFpdHM+IG1fY2FjaGVkT2JqQ1dyYXBwZXJzOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYpY29udGV4dApAQCAtNTkz
LDEwICs2NjAsNiBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOihK
U0dsb2JhbENvbnRleHRSZWYpY29udGV4dAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9p
bnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNv
bmFsaXR5OwotICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQ
b2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNv
bmFsaXR5OwotICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tOU01hcFRhYmxlIGFsbG9jXSBp
bml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNh
cGFjaXR5OjBdOwotCiAgICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxK
U0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBKU0M6OkpTT2JqZWN0Pj4odG9K
Uyhjb250ZXh0KS0+dm0oKSk7CiAKICAgICBBU1NFUlQoIXRvSlNHbG9iYWxPYmplY3QoY29udGV4
dCktPndyYXBwZXJNYXAoKSk7CkBAIC02MDcsNyArNjcwLDYgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQKIAogLSAo
dm9pZClkZWFsbG9jCiB7Ci0gICAgW21fY2FjaGVkT2JqQ1dyYXBwZXJzIHJlbGVhc2VdOwogICAg
IFttX2NsYXNzTWFwIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTY2Miwx
MiArNzI0LDE0IEBAIC0gKEpTVmFsdWUgKilqc1dyYXBwZXJGb3JPYmplY3Q6KGlkKW9iamVjdCBp
bkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKIC0gKEpTVmFsdWUgKilvYmpjV3JhcHBlckZv
ckpTVmFsdWVSZWY6KEpTVmFsdWVSZWYpdmFsdWUgaW5Db250ZXh0OmNvbnRleHQKIHsKICAgICBB
U1NFUlQodG9KU0dsb2JhbE9iamVjdChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKS0+d3Jh
cHBlck1hcCgpID09IHNlbGYpOwotICAgIEpTVmFsdWUgKndyYXBwZXIgPSAoX19icmlkZ2UgSlNW
YWx1ZSAqKU5TTWFwR2V0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLCB2YWx1ZSk7Ci0gICAgaWYgKCF3
cmFwcGVyKSB7Ci0gICAgICAgIHdyYXBwZXIgPSBbW1tKU1ZhbHVlIGFsbG9jXSBpbml0V2l0aFZh
bHVlOnZhbHVlIGluQ29udGV4dDpjb250ZXh0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIE5TTWFw
SW5zZXJ0KG1fY2FjaGVkT2JqQ1dyYXBwZXJzLCB2YWx1ZSwgKF9fYnJpZGdlIHZvaWQqKXdyYXBw
ZXIpOwotICAgIH0KLSAgICByZXR1cm4gd3JhcHBlcjsKKyAgICBXcmFwcGVyS2V5OjpUcmFuc2xh
dG9yOjpWYWx1ZUFuZENvbnRleHQgdmFsdWVBbmRDb250ZXh0IHsgKF9fYnJpZGdlIHZvaWQqKWNv
bnRleHQsIHZhbHVlIH07CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2NhY2hlZE9iakNXcmFwcGVy
cy5hZGQ8V3JhcHBlcktleTo6VHJhbnNsYXRvcj4odmFsdWVBbmRDb250ZXh0KTsKKyAgICByZXR1
cm4gKF9fYnJpZGdlIEpTVmFsdWUgKilhZGRSZXN1bHQuaXRlcmF0b3ItPm1fd3JhcHBlcjsKK30K
KworLSAodm9pZClyZW1vdmVXcmFwcGVyOih2b2lkKil3cmFwcGVyCit7CisgICAgbV9jYWNoZWRP
YmpDV3JhcHBlcnMucmVtb3ZlKFdyYXBwZXJLZXkod3JhcHBlcikpOwogfQogCiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366320</attachid>
            <date>2019-03-29 16:12:35 -0700</date>
            <delta_ts>2019-03-29 16:55:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196392-20190329161234.patch</filename>
            <type>text/plain</type>
            <size>11445</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NDFiNTk2YThiODgxZGZmMDAxM2NjYjYzMmNmMTU1MGZjMjQwYmE3Li43NGRkYzljMTllZGY2MWI1
NjM3ZGUxMWIyZGM1NzQxMmEwMTczNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxOS0wMy0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEpTV3JhcHBlck1hcCBzaG91bGQgbm90IHVzZSBPYmplY3RpdmUt
QyBXZWFrIG1hcCAoTlNNYXBUYWJsZSB3aXRoIE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkp
IGZvciBtX2NhY2hlZE9iakNXcmFwcGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2VhayByZXByZXNlbnRhdGlvbiBpbiBPYmplY3RpdmUtQyBpcyBz
dXJwcmlzaW5nbHkgY29zdGx5IGluIHRlcm1zIG9mIG1lbW9yeS4gV2UgY2FuIHNlZSB0aGF0IHZl
cnkgZWFzeSBwcm9ncmFtIHNob3dzIDEwS0IgbWVtb3J5IGNvbnN1bXB0aW9uIGR1ZSB0bworICAg
ICAgICB0aGlzIHdlYWsgd3JhcHBlciBtYXAgaW4gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrLiBC
dXQgd2UgZG8gbm90IG5lZWQgdGhpcyB3ZWFrIG1hcCBzaW5jZSBPYmplY3RpdmUtQyBKU1ZhbHVl
IGhhcyBhIGRlYWxsb2MuIFdlIGNhbiB1bnJlZ2lzdGVyIGl0c2VsZgorICAgICAgICBmcm9tIHRo
ZSBtYXAgd2hlbiBpdCBpcyBkZWFsbG9jYXRlZCB3aXRob3V0IHVzaW5nIE9iamVjdGl2ZS1DIHdl
YWsgbWVjaGFuaXNtLiBBbmQgc2luY2UgT2JqZWN0aXZlLUMgSlNWYWx1ZSBpcyB0aWdodGx5IGNv
dXBsZWQgdG8gYSBzcGVjaWZpYyBKU0NvbnRleHQsCisgICAgICAgIGFuZCB3cmFwcGVyIG1hcCBp
cyBjcmVhdGVkIHBlciBKU0NvbnRleHQsIEpTVmFsdWUgd3JhcHBlciBhbmQgYWN0dWFsIEphdmFT
Y3JpcHRDb3JlIHZhbHVlIGlzIG9uZS1vbi1vbmUsIGFuZCBbSlNWYWx1ZSBkZWFsbG9jXSBrbm93
cyB3aGljaCBKU0NvbnRleHQncworICAgICAgICB3cmFwcGVyIG1hcCBob2xkcyBpdHNlbGYuCisK
KyAgICAgICAgMS4gV2UgZG8gbm90IHVzZSBPYmplY3RpdmUtQyB3ZWFrIG1lY2hhbmlzbS4gV2Ug
dXNlIFdURjo6SGFzaFNldCBpbnN0ZWFkLiBXaGVuIEpTVmFsdWUgaXMgYWxsb2NhdGVkLCB3ZSBy
ZWdpc3RlciBpdCB0byBKU1dyYXBwZXJNYXAncyBIYXNoU2V0LiBBbmQgdW5yZWdpc3RlcgorICAg
ICAgICAgICBKU1ZhbHVlIGZyb20gdGhpcyBtYXAgd2hlbiBKU1ZhbHVlIGlzIGRlYWxsb2NhdGVk
LgorICAgICAgICAyLiBXZSB1c2UgSGFzaFNldDxKU1ZhbHVlPiAobG9naWNhbGx5KSBpbnN0ZWFk
IG9mIEhhc2hNYXA8SlNWYWx1ZVJlZiwgSlNWYWx1ZT4gdG8ga2VlcCBKU1ZhbHVlUmVmIGFuZCBK
U1ZhbHVlIHJlbGF0aW9uc2hpcC4gV2UgY2FuIGFjaGlldmUgaXQgYmVjYXVzZSBKU1ZhbHVlCisg
ICAgICAgICAgIGhvbGRzIEpTVmFsdWVSZWYgaW5zaWRlIGl0LgorCisgICAgICAgICogQVBJL0pT
Q29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IHJlbW92ZVdyYXBwZXI6XSk6CisgICAg
ICAgICogQVBJL0pTQ29udGV4dEludGVybmFsLmg6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06
CisgICAgICAgICgtW0pTVmFsdWUgZGVhbGxvY10pOgorICAgICAgICAoLVtKU1ZhbHVlIGluaXRX
aXRoVmFsdWU6aW5Db250ZXh0Ol0pOgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAuaDoKKyAg
ICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAoV3JhcHBlcktleTo6aGFzaFRh
YmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdyYXBwZXJLZXk6OldyYXBwZXJLZXkpOgorICAg
ICAgICAoV3JhcHBlcktleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAg
ICAoV3JhcHBlcktleTo6SGFzaDo6aGFzaCk6CisgICAgICAgIChXcmFwcGVyS2V5OjpIYXNoOjpl
cXVhbCk6CisgICAgICAgIChXcmFwcGVyS2V5OjpUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAg
ICAgIChXcmFwcGVyS2V5OjpUcmFuc2xhdG9yOjpoYXNoKToKKyAgICAgICAgKFdyYXBwZXJLZXk6
OlRyYW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAgKFdyYXBwZXJLZXk6OlRyYW5zbGF0b3I6OnRy
YW5zbGF0ZSk6CisgICAgICAgICgtW0pTV3JhcHBlck1hcCBpbml0V2l0aEdsb2JhbENvbnRleHRS
ZWY6XSk6CisgICAgICAgICgtW0pTV3JhcHBlck1hcCBkZWFsbG9jXSk6CisgICAgICAgICgtW0pT
V3JhcHBlck1hcCBvYmpjV3JhcHBlckZvckpTVmFsdWVSZWY6aW5Db250ZXh0Ol0pOgorICAgICAg
ICAoLVtKU1dyYXBwZXJNYXAgcmVtb3ZlV3JhcHBlcjpdKToKKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaS5tbToKKyAgICAgICAgKHRlc3RPYmplY3RpdmVDQVBJTWFpbik6CisKIDIwMTktMDMt
MjkgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcGxl
bWVudCBSZXNpemVPYnNlcnZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
aW5kZXggMDk0YzkzNzFhOGI1ZjhhZTc0MWFhZGI5YWRjYjU2NDhmNGUwYmFmZS4uMDUwYjljNzlm
NzI5ZmY1ZDBmNWI3ZTNkNDJkZWZkMGIwMWFmYWZiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQubW0KQEAgLTM2OSw2ICszNjksMTIgQEAgLSAoSlNWYWx1ZSAqKXdyYXBwZXJG
b3JKU09iamVjdDooSlNWYWx1ZVJlZil2YWx1ZQogICAgIHJldHVybiBbW3NlbGYgd3JhcHBlck1h
cF0gb2JqY1dyYXBwZXJGb3JKU1ZhbHVlUmVmOnZhbHVlIGluQ29udGV4dDpzZWxmXTsKIH0KIAor
LSAodm9pZClyZW1vdmVXcmFwcGVyOih2b2lkKil2YWx1ZQoreworICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcih0b0pTKG1fY29udGV4dCkpOworICAgIHJldHVybiBbW3NlbGYgd3JhcHBlck1h
cF0gcmVtb3ZlV3JhcHBlcjp2YWx1ZV07Cit9CisKICsgKEpTQ29udGV4dCAqKWNvbnRleHRXaXRo
SlNHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29udGV4dAogewog
ICAgIEpTQ29udGV4dCAqY29udGV4dCA9IChfX2JyaWRnZSBKU0NvbnRleHQgKil0b0pTR2xvYmFs
T2JqZWN0KGdsb2JhbENvbnRleHQpLT5hcGlXcmFwcGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgKaW5kZXggOTU4YzQ3OWY0MWNlODQxM2ZjNjk0
YWMxMjNkNzk0ZWIzZDdmNGQ0ZC4uZDNmNjYxZjZhZjI2ZWUxYWE2YmExODcwYTc5MTMwMThiZTQx
OTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRJbnRl
cm5hbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0SW50ZXJuYWwu
aApAQCAtNTQsNiArNTQsNyBAQCBzdHJ1Y3QgQ2FsbGJhY2tEYXRhIHsKIC0gKEpTV3JhcHBlck1h
cCAqKXdyYXBwZXJNYXA7CiAtIChKU1ZhbHVlICopd3JhcHBlckZvck9iakNPYmplY3Q6KGlkKW9i
amVjdDsKIC0gKEpTVmFsdWUgKil3cmFwcGVyRm9ySlNPYmplY3Q6KEpTVmFsdWVSZWYpdmFsdWU7
CistICh2b2lkKXJlbW92ZVdyYXBwZXI6KHZvaWQqKXZhbHVlOwogCiBAZW5kCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQppbmRleCA4NmUxMGNmYzk0MGNmMDllMDRkOTgzMGFjYWIy
ZDAzMDg0ZGZhYWRlLi4zM2JmNTg5YWE0M2FjNDQ5NmNjZmU3YzY5NzgzZjkyOWQ5NTMwMmQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCkBAIC03MSw2ICs3MSw3IEBAIEBpbXBs
ZW1lbnRhdGlvbiBKU1ZhbHVlIHsKIAogLSAodm9pZClkZWFsbG9jCiB7CisgICAgW19jb250ZXh0
IHJlbW92ZVdyYXBwZXI6KF9fYnJpZGdlIHZvaWQqKXNlbGZdOwogICAgIEpTVmFsdWVVbnByb3Rl
Y3QoW19jb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIG1fdmFsdWUpOwogICAgIFtfY29udGV4
dCByZWxlYXNlXTsKICAgICBfY29udGV4dCA9IG5pbDsKQEAgLTEwNzUsNiArMTA3Niw3IEBAIC0g
KEpTVmFsdWUgKilpbml0V2l0aFZhbHVlOihKU1ZhbHVlUmVmKXZhbHVlIGluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAor
ICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBfY29udGV4dCA9IFtjb250ZXh0IHJldGFpbl07CiAg
ICAgbV92YWx1ZSA9IHZhbHVlOwogICAgIEpTVmFsdWVQcm90ZWN0KFtfY29udGV4dCBKU0dsb2Jh
bENvbnRleHRSZWZdLCBtX3ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNXcmFwcGVyTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBl
ck1hcC5oCmluZGV4IDZjMThjNjRiNGM3OTVmM2I2OGRhYWY4MDNjMjQxMWZhMzM1ZTRhNTEuLmNi
NGRhNWZhYjgyNzVkNDU2OWFlMTI1M2MxMzQ0NDA2MmExNmJlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAuaApAQCAtMzcsNiArMzcsOCBAQAogCiAtIChKU1ZhbHVl
ICopb2JqY1dyYXBwZXJGb3JKU1ZhbHVlUmVmOihKU1ZhbHVlUmVmKXZhbHVlIGluQ29udGV4dDoo
SlNDb250ZXh0ICopY29udGV4dDsKIAorLSAodm9pZClyZW1vdmVXcmFwcGVyOih2b2lkKil3cmFw
cGVyOworCiBAZW5kCiAKIGlkIHRyeVVud3JhcE9iamNPYmplY3QoSlNHbG9iYWxDb250ZXh0UmVm
LCBKU1ZhbHVlUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNX
cmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0K
aW5kZXggMjAxY2IxZGY5YzVmMzMzZmMyOTg0YjU0ZTI2NmMyMWQ0OWJlZTljYi4uNzEwNGIzNTUy
MWEwZWMxNjk3Y2I1ZGE1MzI3MjBjNTQxM2ZjMDYzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTU4MSwxMCArNTgxLDc3IEBAIC0gKEpTQzo6U3RydWN0
dXJlKilzdHJ1Y3R1cmVJbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKIAogQGVuZAogCitz
dHJ1Y3QgV3JhcHBlcktleSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgaGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gMTsgfQorCisgICAgV3JhcHBlcktleSgpID0gZGVm
YXVsdDsKKworICAgIGV4cGxpY2l0IFdyYXBwZXJLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKQorICAgICAgICA6IG1fd3JhcHBlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpKSkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgV3JhcHBlcktl
eSh2b2lkKiB3cmFwcGVyKQorICAgICAgICA6IG1fd3JhcHBlcih3cmFwcGVyKQorICAgIHsKKyAg
ICB9CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihtX3dyYXBwZXIpID09IGhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpOworICAgIH0KKworICAgIHZvaWQqIG1fd3JhcHBlciB7IG51bGxw
dHIgfTsKKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgV3JhcHBlcktleSYga2V5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRGVm
YXVsdEhhc2g8SlNWYWx1ZVJlZj46Okhhc2g6Omhhc2goWyhfX2JyaWRnZSBKU1ZhbHVlKilrZXku
bV93cmFwcGVyIEpTVmFsdWVSZWZdKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFdyYXBwZXJLZXkmIGxocywgY29uc3QgV3JhcHBlcktleSYgcmhzKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gbGhzLm1fd3JhcHBlciA9PSByaHMubV93cmFwcGVy
OworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICB9OworCisgICAgc3RydWN0IFRyYWl0cyA6IHB1
YmxpYyBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8V3JhcHBlcktleT4geworICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7CisgICAgICAgIHN0YXRp
YyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBXcmFwcGVyS2V5JiBrZXkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBrZXkubV93cmFwcGVyID09IG51bGxwdHI7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgc3RydWN0IFRyYW5zbGF0b3IgeworICAgICAgICBzdHJ1Y3QgVmFsdWVBbmRD
b250ZXh0IHsKKyAgICAgICAgICAgIHZvaWQqIG1fY29udGV4dDsKKyAgICAgICAgICAgIEpTVmFs
dWVSZWYgbV92YWx1ZTsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBWYWx1ZUFuZENvbnRleHQmIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gRGVmYXVsdEhhc2g8SlNWYWx1ZVJlZj46Okhhc2g6Omhhc2godmFsdWUubV92YWx1ZSk7
CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXcmFwcGVyS2V5
JiBsaHMsIGNvbnN0IFZhbHVlQW5kQ29udGV4dCYgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBbKF9fYnJpZGdlIEpTVmFsdWUqKWxocy5tX3dyYXBwZXIgSlNWYWx1ZVJlZl0g
PT0gdmFsdWUubV92YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyB2b2lkIHRyYW5z
bGF0ZShXcmFwcGVyS2V5JiByZXN1bHQsIGNvbnN0IFZhbHVlQW5kQ29udGV4dCYgdmFsdWUsIHVu
c2lnbmVkKQorICAgICAgICB7CisgICAgICAgICAgICByZXN1bHQgPSBXcmFwcGVyS2V5KChfX2Jy
aWRnZSB2b2lkKilbW1tKU1ZhbHVlIGFsbG9jXSBpbml0V2l0aFZhbHVlOnZhbHVlLm1fdmFsdWUg
aW5Db250ZXh0OihfX2JyaWRnZSBKU0NvbnRleHQgKil2YWx1ZS5tX2NvbnRleHRdIGF1dG9yZWxl
YXNlXSk7CisgICAgICAgIH0KKyAgICB9OworfTsKKwogQGltcGxlbWVudGF0aW9uIEpTV3JhcHBl
ck1hcCB7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqbV9jbGFzc01hcDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SlNDOjpXZWFrR0NNYXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09i
amVjdD4+IG1fY2FjaGVkSlNXcmFwcGVyczsKLSAgICBOU01hcFRhYmxlICptX2NhY2hlZE9iakNX
cmFwcGVyczsKKyAgICBIYXNoU2V0PFdyYXBwZXJLZXksIFdyYXBwZXJLZXk6Okhhc2gsIFdyYXBw
ZXJLZXk6OlRyYWl0cz4gbV9jYWNoZWRPYmpDV3JhcHBlcnM7CiB9CiAKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4dFJlZiljb250ZXh0CkBA
IC01OTMsMTAgKzY2MCw2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEdsb2JhbENvbnRleHRS
ZWY6KEpTR2xvYmFsQ29udGV4dFJlZiljb250ZXh0CiAgICAgaWYgKCFzZWxmKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBrZXlPcHRpb25zID0g
TlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVl
UGVyc29uYWxpdHk7Ci0gICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0
UGVyc29uYWxpdHk7Ci0gICAgbV9jYWNoZWRPYmpDV3JhcHBlcnMgPSBbW05TTWFwVGFibGUgYWxs
b2NdIGluaXRXaXRoS2V5T3B0aW9uczprZXlPcHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlv
bnMgY2FwYWNpdHk6MF07Ci0KICAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEpTQzo6V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+
Pih0b0pTKGNvbnRleHQpLT52bSgpKTsKIAogICAgIEFTU0VSVCghdG9KU0dsb2JhbE9iamVjdChj
b250ZXh0KS0+d3JhcHBlck1hcCgpKTsKQEAgLTYwNyw3ICs2NzAsNiBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYpY29udGV4dAog
CiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbbV9jYWNoZWRPYmpDV3JhcHBlcnMgcmVsZWFzZV07
CiAgICAgW21fY2xhc3NNYXAgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAt
NjYyLDEyICs3MjQsMTQgQEAgLSAoSlNWYWx1ZSAqKWpzV3JhcHBlckZvck9iamVjdDooaWQpb2Jq
ZWN0IGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogLSAoSlNWYWx1ZSAqKW9iamNXcmFw
cGVyRm9ySlNWYWx1ZVJlZjooSlNWYWx1ZVJlZil2YWx1ZSBpbkNvbnRleHQ6Y29udGV4dAogewog
ICAgIEFTU0VSVCh0b0pTR2xvYmFsT2JqZWN0KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0p
LT53cmFwcGVyTWFwKCkgPT0gc2VsZik7Ci0gICAgSlNWYWx1ZSAqd3JhcHBlciA9IChfX2JyaWRn
ZSBKU1ZhbHVlICopTlNNYXBHZXQobV9jYWNoZWRPYmpDV3JhcHBlcnMsIHZhbHVlKTsKLSAgICBp
ZiAoIXdyYXBwZXIpIHsKLSAgICAgICAgd3JhcHBlciA9IFtbW0pTVmFsdWUgYWxsb2NdIGluaXRX
aXRoVmFsdWU6dmFsdWUgaW5Db250ZXh0OmNvbnRleHRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAg
TlNNYXBJbnNlcnQobV9jYWNoZWRPYmpDV3JhcHBlcnMsIHZhbHVlLCAoX19icmlkZ2Ugdm9pZCop
d3JhcHBlcik7Ci0gICAgfQotICAgIHJldHVybiB3cmFwcGVyOworICAgIFdyYXBwZXJLZXk6OlRy
YW5zbGF0b3I6OlZhbHVlQW5kQ29udGV4dCB2YWx1ZUFuZENvbnRleHQgeyAoX19icmlkZ2Ugdm9p
ZCopY29udGV4dCwgdmFsdWUgfTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fY2FjaGVkT2JqQ1dy
YXBwZXJzLmFkZDxXcmFwcGVyS2V5OjpUcmFuc2xhdG9yPih2YWx1ZUFuZENvbnRleHQpOworICAg
IHJldHVybiAoX19icmlkZ2UgSlNWYWx1ZSAqKWFkZFJlc3VsdC5pdGVyYXRvci0+bV93cmFwcGVy
OworfQorCistICh2b2lkKXJlbW92ZVdyYXBwZXI6KHZvaWQqKXdyYXBwZXIKK3sKKyAgICBtX2Nh
Y2hlZE9iakNXcmFwcGVycy5yZW1vdmUoV3JhcHBlcktleSh3cmFwcGVyKSk7CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQppbmRleCA1YWQ0ODZm
ZmMwYzI5M2UxOGVhNDI3Y2Y1M2QyMjQwZWNkMjM2ODg0Li5hYzZkYzE5NzcwNWI4NDEzZmM1NzVk
NWU3ZWVmOTY3ZTA2ZGJkMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGkubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLm1tCkBAIC01NjUsMTEgKzU2NSwyNyBAQCBzdGF0aWMgdm9pZCBydW5KSVRUaHJlYWRM
aW1pdFRlc3RzKCkKIHN0YXRpYyB2b2lkIHRlc3RPYmplY3RpdmVDQVBJTWFpbigpCiB7CiAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTVmlydHVhbE1hY2hpbmUqIHZtID0gW1tKU1Zp
cnR1YWxNYWNoaW5lIGFsbG9jXSBpbml0XTsKLSAgICAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0g
W1tKU0NvbnRleHQgYWxsb2NdIGluaXRXaXRoVmlydHVhbE1hY2hpbmU6dm1dOworICAgICAgICBK
U1ZpcnR1YWxNYWNoaW5lICp2bSA9IFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxvY10gaW5pdF07Cisg
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0V2l0aFZp
cnR1YWxNYWNoaW5lOnZtXTsKICAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJiYWQi
XTsKICAgICB9CiAKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNWaXJ0dWFsTWFj
aGluZSAqdm0gPSBbW0pTVmlydHVhbE1hY2hpbmUgYWxsb2NdIGluaXRdOworICAgICAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdFdpdGhWaXJ0dWFsTWFjaGlu
ZTp2bV07CisgICAgICAgIEpTVmFsdWUgKm51bWJlcjEgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlw
dDpAIjQyMDkyMzg5Il07CisgICAgICAgIEpTVmFsdWUgKm51bWJlcjIgPSBbY29udGV4dCBldmFs
dWF0ZVNjcmlwdDpAIjQyMDkyMzg5Il07CisgICAgICAgIGNoZWNrUmVzdWx0KEAid3JhcHBlciBj
YWNoZSBmb3IgbnVtYmVycyIsIG51bWJlcjEgPT0gbnVtYmVyMiAmJiBudW1iZXIxLmlzTnVtYmVy
ICYmIFtudW1iZXIxIHRvSW50MzJdID09IDQyMDkyMzg5KTsKKyAgICB9CisKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdm0gPSBbW0pTVmlydHVhbE1h
Y2hpbmUgYWxsb2NdIGluaXRdOworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdFdpdGhWaXJ0dWFsTWFjaGluZTp2bV07CisgICAgICAgIEpTVmFsdWUg
Km9iamVjdDEgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIih7fSkiXTsKKyAgICAgICAgSlNW
YWx1ZSAqb2JqZWN0MiA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiKHt9KSJdOworICAgICAg
ICBjaGVja1Jlc3VsdChAIndyYXBwZXIgY2FjaGUgZm9yIG9iamVjdHMiLCBvYmplY3QxICE9IG9i
amVjdDIpOworICAgIH0KKwogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU0NvbnRl
eHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CiAgICAgICAgIEpTVmFsdWUg
KnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiMiArIDIiXTsK
</data>
<flag name="review"
          id="382703"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>