<?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>144450</bug_id>
          
          <creation_ts>2015-04-30 08:19:47 -0700</creation_ts>
          <short_desc>NeverDestroyed&lt;T&gt; objects should always use direct initialization</short_desc>
          <delta_ts>2015-05-02 13:23:53 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1090440</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-04-30 08:19:47 -0700</bug_when>
    <thetext>NeverDestroyed&lt;T&gt; objects should always use direct initialization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090443</commentid>
    <comment_count>1</comment_count>
      <attachid>252059</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-04-30 08:43:00 -0700</bug_when>
    <thetext>Created attachment 252059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091079</commentid>
    <comment_count>2</comment_count>
      <attachid>252059</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-02 07:31:44 -0700</bug_when>
    <thetext>Comment on attachment 252059
Patch

I don’t think we should make this change. Is there one case you can point to here where the different syntax results in different code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091080</commentid>
    <comment_count>3</comment_count>
      <attachid>252059</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-02 07:34:22 -0700</bug_when>
    <thetext>Comment on attachment 252059
Patch

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

/Volumes/Data/EWS/WebKit/Source/WebCore/platform/network/ios/QuickLook.mm:62:45: error: no viable conversion from &apos;NSSet *&apos; to &apos;NeverDestroyed&lt;RetainPtr&lt;NSSet&gt; &gt;&apos;
    static NeverDestroyed&lt;RetainPtr&lt;NSSet&gt;&gt; set = QLPreviewGetSupportedMIMETypes();
                                            ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

&gt; Source/WTF/wtf/Noncopyable.h:33
&gt; +// FIXME: Move to a more generic place together with WTF_MAKE_NONCOPYABLE.
&gt; +#define WTF_MAKE_NONMOVABLE(ClassName) \
&gt; +    private: \
&gt; +        ClassName(ClassName&amp;&amp;) = delete; \
&gt; +        ClassName&amp; operator=(ClassName&amp;&amp;) = delete; \

I think we should just write out the &quot;= delete&quot; for both this and non copyable. The macros date back to when this was much trickier to do in the language.

&gt; Source/WebCore/html/HTMLBodyElement.cpp:143
&gt; +    static NeverDestroyed&lt;EventHandlerNameMap&gt; map(createWindowEventHandlerNameMap());

This syntax looks like a function call to me. I prefer the modern syntax with { } if we insist on not using initialization style. But I think I don’t agree with the overall mission here. Have we ever had a real problem with this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091130</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-02 13:23:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 252059 [details]
&gt; Patch
&gt; 
&gt; I don’t think we should make this change. Is there one case you can point to
&gt; here where the different syntax results in different code?

There&apos;s apparently a guarantee that the copy initialization of a NeverDestroyed object with a to-be-wrapped object is optimized into a direct initialization as long as it&apos;s possible to convert the to-be-wrapped object into a NeverDestroyed object (which it is, due to the non-explicit NeverDestroyed constructor) and the NeverDestroyed class has a usable move constructor (which it does, since it&apos;s not deleted). Despite this optimisation, the move constructor actually requires for the to-be-wrapped object to be copyable, making it impossible to use such initialization with non-copyable classes.

I&apos;d like to disable both of those conditions because that would enforce a uniform way of NeverDestroyed initialization. Given that NeverDestroyed is already non-copyable, there&apos;s no reason for it to be movable either. I can&apos;t see how a NeverDestroyed object could be ever moved around, but I&apos;d prefer a compile-time prevention than relying on reviews to spot such oddities. The explicit constructor would just ensure there&apos;s no way of implicitly constructing NeverDestroyed objects.

So while there&apos;s no difference in the generated code, I propose the change for the sake of clarity and for preventive measures. This would require a broader cleanup, from making both NeverDestroyed and LazyNeverDestroyed non-movable to using braced initialization wherever NeverDestroyed is used.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252059</attachid>
            <date>2015-04-30 08:43:00 -0700</date>
            <delta_ts>2015-05-02 07:34:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144450-20150430174148.patch</filename>
            <type>text/plain</type>
            <size>17715</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MTYzYWQwMWU1MWVhNmJjZGE5ZTFlZDNlNGUyODhhNjAwYzQ1MGYxLi5lZGFlNDRjNzRiYWQyNTQw
MjA1ZTc3NGVkNTUxNDgyZjIxNWQ5NzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNS0wNC0zMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgTmV2ZXJEZXN0cm95ZWQ8VD4gb2JqZWN0cyBzaG91bGQgYWx3YXlzIHVz
ZSBkaXJlY3QgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NDQ1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2ZXI6OmdldEFjdGlvbnNGb3JCcmVha3BvaW50
KTogVXNlIGRpcmVjdAorICAgICAgICBpbml0aWFsaXphdGlvbiBmb3IgdGhlIE5ldmVyRGVzdHJv
eWVkIG9iamVjdC4KKwogMjAxNS0wNC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KIAogICAgICAgICBVc2UgdGhlIGRlZmF1bHQgaGFzaCB2YWx1ZSBmb3IgU3ltYm9s
aXplZCBTdHJpbmdJbXBsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQwOTQwMmJmNTM4NjNjYmNlOGM3OWQzOTc3Y2M2YmM4ZjIz
ZTcwMGUuLmIzMjU2NzkwOWM1NTUwYTMwYThiNjhhMzYyNjFiNWM2ZTQzODBjMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTUtMDQtMzAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIE5ldmVyRGVzdHJveWVkPFQ+IG9iamVjdHMgc2hvdWxkIGFsd2F5cyB1
c2UgZGlyZWN0IGluaXRpYWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDQ0NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTb21lIHVzZXMgb2YgTmV2ZXJEZXN0cm95ZWQgdXRpbGl6ZSBjb3B5
IGluaXRpYWxpemF0aW9uIHRvIGluaXRpYWxpemUKKyAgICAgICAgdGhlIHN0YXRpYyBvYmplY3Q6
CisKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxpbnQ+IGV4YW1wbGUgPSA0MjsK
KworICAgICAgICBJbnN0ZWFkIG9mIGRpcmVjdGx5IGNvbnN0cnVjdGluZyB0aGUgYGV4YW1wbGVg
IG9iamVjdCwgdGhpcyBmaXJzdCBpbXBsaWNpdGx5IGNyZWF0ZXMKKyAgICAgICAgYSB0ZW1wb3Jh
cnkgTmV2ZXJEZXN0cm95ZWQ8aW50PiBvYmplY3QgZm9yIHRoZSBgNDJgIHZhbHVlLCBhbmQgdGhl
biBjb25zdHJ1Y3RzIHRoZQorICAgICAgICBgZXhhbXBsZWAgb2JqZWN0IHRocm91Z2ggdGhlIG1v
dmUgY29uc3RydWN0b3IuCisKKyAgICAgICAgRGVzcGl0ZSB1c2luZyB0aGUgbW92ZSBjb25zdHJ1
Y3RvciwgdGhlIHdyYXBwZWQgb2JqZWN0IGlzIGFjdHVhbGx5IGNvcGllZC4gRm9yIGluc3RhbmNl
LAorICAgICAgICB3cmFwcGluZyBhIHN0ZDo6dW5pcXVlX3B0cjw+IHdvdWxkIG5vdCBjb21waWxl
OgorCisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPGlu
dD4+IGV4YW1wbGUgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNDIpOyAvLyBCdWlsZCBmYWlsdXJl
IQorCisgICAgICAgIFRvIGF2b2lkIHN1Y2ggdXNlLCB0aGUgTmV2ZXJEZXN0cm95ZWQgY29uc3Ry
dWN0b3IgaXMgbWFkZSBleHBsaWNpdCwgYW5kIHRoZSBtb3ZlIGNvbnN0cnVjdG9yCisgICAgICAg
IGFuZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IgYXJlIGRlbGV0ZWQgdGhyb3VnaCB0aGUgbmV3
IFdURl9NQUtFX05PTk1PVkFCTEUgbWFjcm8uCisKKyAgICAgICAgKiB3dGYvTmV2ZXJEZXN0cm95
ZWQuaDoKKyAgICAgICAgKiB3dGYvTm9uY29weWFibGUuaDoKKwogMjAxNS0wNC0zMCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBVc2UgdGhlIGRlZmF1
bHQgaGFzaCB2YWx1ZSBmb3IgU3ltYm9saXplZCBTdHJpbmdJbXBsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMw
OWUwZjJmYTRmOWQyMmQxZDNjOGYwMzYzNmI1NWEwMzdhZjVhNC4uZGQ2NWNkMmQ3YWEyYjZjOWM0
NTZkNDMyYTEyZWJkNjJjNWE5NjFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE1
LTA0LTMwICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBO
ZXZlckRlc3Ryb3llZDxUPiBvYmplY3RzIHNob3VsZCBhbHdheXMgdXNlIGRpcmVjdCBpbml0aWFs
aXphdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ0NDUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlIGRpcmVjdCBpbml0aWFsaXphdGlvbiBmb3IgTmV2ZXJEZXN0cm95ZWQgb2JqZWN0IHRoYXQK
KyAgICAgICAgZG9uJ3QgdXNlIGl0IHlldC4KKworICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6ZXZlbnROYW1lRm9y
V2luZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpldmVudE5hbWVGb3JFdmVudEhh
bmRsZXJBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RTVkdUYWdOYW1lQ2FzZSk6CisgICAgICAgIChX
ZWJDb3JlOjphZGp1c3RBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEZvcmVp
Z25BdHRyaWJ1dGVzKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmJyb2tlbkltYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFZl
cnRpY2FsRGF0YUNhY2hlS2V5VHJhaXRzOjplbXB0eVZhbHVlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmltYWdl
U291cmNlT3B0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OmV2ZW50TmFtZUFsbCk6CisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNWR1RleHRBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKToKKyAg
ICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0Rpc2Fs
bG93ZWRFbGVtZW50KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5i
bG9ja1JlcXVlc3RVUkwpOgorCiAyMDE1LTA0LTI5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIE1ha2UgR2VuZXJpY1Rhc2tRdWV1ZSBldmVuIG1vcmUgZ2VuZXJp
YyAoYW5kIHVzYWJsZSBpbnNpZGUgcGxhdGZvcm0vKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDRkNzJj
NmY2MmE5Y2I3YmE5NDY1ODBhZTZlNmE3NDU2YjY0YWIxODguLjJiMWU3NGVmYTY2MWU1NzI4YWM4
OGVlNDYxNzBhOTdjYjYzNmRjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNS0wNC0zMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgTmV2ZXJEZXN0cm95ZWQ8VD4gb2JqZWN0cyBzaG91bGQgYWx3YXlzIHVzZSBkaXJlY3QgaW5p
dGlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0NDQ1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW06CisgICAgICAgICgrW1dlYlN0cmluZ1Ry
dW5jYXRvciBjZW50ZXJUcnVuY2F0ZVN0cmluZzp0b1dpZHRoOl0pOiBVc2UgZGlyZWN0CisgICAg
ICAgIGluaXRpYWxpemF0aW9uIGZvciB0aGUgTmV2ZXJEZXN0cm95ZWQgb2JqZWN0LgorCiAyMDE1
LTA0LTI5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW09TIFhdIFVzZSBDVEZvbnRDcmVhdGVGb3JDU1MgaW5zdGVhZCBvZiBkb2luZyBmb250IHNl
YXJjaCBvdXJzZWx2ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMjM1ZjBlMGYxNWQ2Y2NjYWM0MmNkODgyMjBh
MmMwNjdiNDc2MTM4Mi4uYWMxNzgzODgzYjlhNzEzMmVlYjkyZDBkYWY3ZGIwOWVmNjMwMjBiOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1
Z1NlcnZlci5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBjb25zdCBCcmVha3BvaW50QWN0aW9ucyYg
U2NyaXB0RGVidWdTZXJ2ZXI6OmdldEFjdGlvbnNGb3JCcmVha3BvaW50KEpTQzo6QnJlYWtwbwog
ICAgIGlmIChtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5jb250YWlucyhicmVha3BvaW50SUQpKQog
ICAgICAgICByZXR1cm4gbV9icmVha3BvaW50SURUb0FjdGlvbnMuZmluZChicmVha3BvaW50SUQp
LT52YWx1ZTsKICAgICAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QnJlYWtwb2ludEFjdGlv
bnM+IGVtcHR5QWN0aW9uVmVjdG9yID0gQnJlYWtwb2ludEFjdGlvbnMoKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QnJlYWtwb2ludEFjdGlvbnM+IGVtcHR5QWN0aW9uVmVjdG9yOwogICAg
IHJldHVybiBlbXB0eUFjdGlvblZlY3RvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvTmV2ZXJEZXN0cm95ZWQuaCBiL1NvdXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKaW5k
ZXggYzdmNzZkOTgwN2RmMjA1ZTRlZDMwNGEwZDg4NDIxNTY1MjYxNzQ1ZS4uNTg3NjdjMzE3NzJi
ZGFkNmRhMjA1NjdiNGRiYmRlYTZkZDZhYjAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
TmV2ZXJEZXN0cm95ZWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oCkBA
IC00NSwxMCArNDUsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGNsYXNzIE5ldmVyRGVzdHJveWVkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXZlckRl
c3Ryb3llZCk7CisgICAgV1RGX01BS0VfTk9OTU9WQUJMRShOZXZlckRlc3Ryb3llZCk7CiAKIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgotICAgIE5ldmVyRGVzdHJveWVk
KEFyZ3MmJi4uLiBhcmdzKQorICAgIGV4cGxpY2l0IE5ldmVyRGVzdHJveWVkKEFyZ3MmJi4uLiBh
cmdzKQogICAgIHsKICAgICAgICAgTWF5YmVSZWxheDxUPihuZXcgKGFzUHRyKCkpIFQoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgfQpAQCAtNzUsNiArNzYsNyBAQCBwcml2YXRl
OgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95ZWQgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKExhenlOZXZlckRlc3Ryb3llZCk7CisgICAgV1RGX01BS0Vf
Tk9OTU9WQUJMRShMYXp5TmV2ZXJEZXN0cm95ZWQpOwogCiBwdWJsaWM6CiAgICAgTGF6eU5ldmVy
RGVzdHJveWVkKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTm9uY29w
eWFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL05vbmNvcHlhYmxlLmgKaW5kZXggMjM3YjUzYmNiMTY5
YWE0YjU0ZTYzYTE0ZjM3NGIyMTIzMWZhZmZhOS4uZjQyNGI2MTY2ZGJlMzJlYTM5MDBmODFhYWE2
ZDYwZmUyZTdmOGMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTm9uY29weWFibGUuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9Ob25jb3B5YWJsZS5oCkBAIC0yNiw0ICsyNiwxMCBAQAogICAg
ICAgICBDbGFzc05hbWUoY29uc3QgQ2xhc3NOYW1lJikgPSBkZWxldGU7IFwKICAgICAgICAgQ2xh
c3NOYW1lJiBvcGVyYXRvcj0oY29uc3QgQ2xhc3NOYW1lJikgPSBkZWxldGU7IFwKIAorLy8gRklY
TUU6IE1vdmUgdG8gYSBtb3JlIGdlbmVyaWMgcGxhY2UgdG9nZXRoZXIgd2l0aCBXVEZfTUFLRV9O
T05DT1BZQUJMRS4KKyNkZWZpbmUgV1RGX01BS0VfTk9OTU9WQUJMRShDbGFzc05hbWUpIFwKKyAg
ICBwcml2YXRlOiBcCisgICAgICAgIENsYXNzTmFtZShDbGFzc05hbWUmJikgPSBkZWxldGU7IFwK
KyAgICAgICAgQ2xhc3NOYW1lJiBvcGVyYXRvcj0oQ2xhc3NOYW1lJiYpID0gZGVsZXRlOyBcCisK
ICNlbmRpZiAvLyBXVEZfTm9uY29weWFibGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVs
ZW1lbnQuY3BwCmluZGV4IDRkZjZlMmIwMzJiNWQ4MmRlNDBjOGM0NzdiNWQzZTQ2NjgzNjA1NmIu
LjBiYjhjNjViNzE3NGM4MWNjM2Y0MDIzYWE3ZDhhOTkwNTkxODlkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBIVE1MRWxlbWVu
dDo6RXZlbnRIYW5kbGVyTmFtZU1hcCBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZVdpbmRvd0V2ZW50
SGFuZGxlck5hbWVNYQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxCb2R5RWxlbWVudDo6ZXZl
bnROYW1lRm9yV2luZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEV2ZW50SGFuZGxl
ck5hbWVNYXA+IG1hcCA9IGNyZWF0ZVdpbmRvd0V2ZW50SGFuZGxlck5hbWVNYXAoKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RXZlbnRIYW5kbGVyTmFtZU1hcD4gbWFwKGNyZWF0ZVdpbmRv
d0V2ZW50SGFuZGxlck5hbWVNYXAoKSk7CiAgICAgcmV0dXJuIGV2ZW50TmFtZUZvckV2ZW50SGFu
ZGxlckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBtYXAuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDgwZGRlNmJhMTY1MjQ2MGExOGZhODcwZWY4YzRjZThk
M2EyMmE4MDAuLjcyZDQ2MWUwNTMxMmJlM2QxZmM0ODg5MDg2YTBjZjk1NjllZTdlNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC00MDcsNyArNDA3LDcgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBIVE1MRWxlbWVudDo6ZXZlbnROYW1lRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRWxlbWVudDo6ZXZlbnRO
YW1lRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEV2ZW50SGFuZGxlck5hbWVNYXA+
IG1hcCA9IGNyZWF0ZUV2ZW50SGFuZGxlck5hbWVNYXAoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8RXZlbnRIYW5kbGVyTmFtZU1hcD4gbWFwKGNyZWF0ZUV2ZW50SGFuZGxlck5hbWVNYXAo
KSk7CiAgICAgcmV0dXJuIGV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lLCBtYXAuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCA2M2IyYzM3MGJlMmRjOGJkYTllZjNjOTRmYjY4YjFh
OGI5Yzc3MGU4Li5iYTA5Yjk3MzEzMjQwZDIzODFhN2ViNDAyZDAwNTIxZDllYTU5Y2Y1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTUy
MCw3ICs1MjAsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFibGVRdWFsaWZpZWROYW1lPiBzdGF0
aWMgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFF1YWxpZmllZE5hbQogCiBzdGF0aWMgdm9pZCBhZGp1
c3RTVkdUYWdOYW1lQ2FzZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoTWFwPEF0b21pY1N0cmluZywgUXVhbGlmaWVkTmFtZT4+IG1hcCA9
IGNyZWF0ZUNhc2VNYXAoU1ZHTmFtZXM6OmdldFNWR1RhZ3MoKSwgU1ZHTmFtZXM6OlNWR1RhZ3ND
b3VudCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QXRvbWljU3RyaW5nLCBR
dWFsaWZpZWROYW1lPj4gbWFwKGNyZWF0ZUNhc2VNYXAoU1ZHTmFtZXM6OmdldFNWR1RhZ3MoKSwg
U1ZHTmFtZXM6OlNWR1RhZ3NDb3VudCkpOwogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGNhc2Vk
TmFtZSA9IG1hcC5nZXQoKS5nZXQodG9rZW4ubmFtZSgpKTsKICAgICBpZiAoY2FzZWROYW1lLmxv
Y2FsTmFtZSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC01MzgsNyArNTM4LDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIGFkanVzdEF0dHJpYnV0ZXMoSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFF1YWxpZmllZE5hbWU+JiBtYXAsIEEKIAogdGVtcGxhdGU8Y29uc3QgUXVhbGlmaWVkTmFtZSog
Y29uc3QqIGF0dHJpYnV0ZXNUYWJsZSgpLCB1bnNpZ25lZCBhdHRyaWJ1dGVzVGFibGVMZW5ndGg+
IHN0YXRpYyB2b2lkIGFkanVzdEF0dHJpYnV0ZXMoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxBdG9taWNTdHJpbmcsIFF1YWxpZmll
ZE5hbWU+PiBtYXAgPSBjcmVhdGVDYXNlTWFwKGF0dHJpYnV0ZXNUYWJsZSgpLCBhdHRyaWJ1dGVz
VGFibGVMZW5ndGgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEF0b21pY1N0
cmluZywgUXVhbGlmaWVkTmFtZT4+IG1hcChjcmVhdGVDYXNlTWFwKGF0dHJpYnV0ZXNUYWJsZSgp
LCBhdHRyaWJ1dGVzVGFibGVMZW5ndGgpKTsKICAgICBhZGp1c3RBdHRyaWJ1dGVzKG1hcCwgdG9r
ZW4pOwogfQogCkBAIC01NzYsNyArNTc2LDcgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBRdWFsaWZpZWROYW1lPiBjcmVhdGVGb3JlaWduQXR0cmlidXRlc01hcCgpCiAKIHN0YXRpYyB2
b2lkIGFkanVzdEZvcmVpZ25BdHRyaWJ1dGVzKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QXRvbWljU3RyaW5nLCBRdWFsaWZpZWRO
YW1lPj4gbWFwID0gY3JlYXRlRm9yZWlnbkF0dHJpYnV0ZXNNYXAoKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDxBdG9taWNTdHJpbmcsIFF1YWxpZmllZE5hbWU+PiBtYXAoY3Jl
YXRlRm9yZWlnbkF0dHJpYnV0ZXNNYXAoKSk7CiAgICAgYWRqdXN0QXR0cmlidXRlcyhtYXAsIHRv
a2VuKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
aW5kZXggY2Q1OWY2MzFlYzU1MDUyZTBjOTE1MzkwZTZlYmQ4NmRhNDc3Y2MwMS4uYjllNDcyMzkx
OTc1ZTdhNTI0OWFlODRmNzI0MmNiYTYyNzZhNzgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0xNzIsMTYgKzE3MiwxNiBAQCBzdGQ6OnBhaXI8
SW1hZ2UqLCBmbG9hdD4gQ2FjaGVkSW1hZ2U6OmJyb2tlbkltYWdlKGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yKSBjb25zdAogewogICAgIGlmIChkZXZpY2VTY2FsZUZhY3RvciA+PSAzKSB7CiAgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJbWFnZSo+IGJyb2tlbkltYWdlVmVyeUhpUmVzKElt
YWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibWlzc2luZ0ltYWdlQDN4IikubGVha1JlZigpKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlVmVyeUhpUmVzLCAzKTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlVmVyeUhpUmVzLmdldCgp
LCAzKTsKICAgICB9CiAKICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMikgewogICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SW1hZ2UqPiBicm9rZW5JbWFnZUhpUmVzKEltYWdlOjps
b2FkUGxhdGZvcm1SZXNvdXJjZSgibWlzc2luZ0ltYWdlQDJ4IikubGVha1JlZigpKTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlSGlSZXMsIDIpOworICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIoYnJva2VuSW1hZ2VIaVJlcy5nZXQoKSwgMik7CiAgICAgfQog
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEltYWdlKj4gYnJva2VuSW1hZ2VMb1JlcyhJbWFn
ZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZSIpLmxlYWtSZWYoKSk7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGJyb2tlbkltYWdlTG9SZXMsIDEpOworICAgIHJldHVybiBz
dGQ6Om1ha2VfcGFpcihicm9rZW5JbWFnZUxvUmVzLmdldCgpLCAxKTsKIH0KIAogYm9vbCBDYWNo
ZWRJbWFnZTo6d2lsbFBhaW50QnJva2VuSW1hZ2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMzFiOWNmNjNlMGI3NjUyZTk1
MzgwNGQ3ZDAzNzhlM2U1YWY4NWMyZS4uOTBiNDQ1ZDU3MGZmOGVkYjFhMjI2OGZlMTgyYjk3MTEy
MGE5NGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgc3RydWN0IEZvbnRWZXJ0aWNhbERhdGFDYWNoZUtl
eVRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8Rm9udENhY2hlOjpGb250RmkKICAgICBz
dGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgY29u
c3QgRm9udENhY2hlOjpGb250RmlsZUtleSYgZW1wdHlWYWx1ZSgpCiAgICAgewotICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhY2hlOjpGb250RmlsZUtleT4ga2V5ID0gbnVsbEF0
b207CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250Q2FjaGU6OkZvbnRGaWxlS2V5
PiBrZXkobnVsbEF0b20pOwogICAgICAgICByZXR1cm4ga2V5OwogICAgIH0KICAgICBzdGF0aWMg
dm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRm9udENhY2hlOjpGb250RmlsZUtleSYgc2xvdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3Vy
Y2VDRy5jcHAKaW5kZXggOTUzZmFlYTc5MzBhYWZjOTBjNDk2YzhiZWZkYjY1ZWQ2YjUzNTMzYi4u
ZDk5ZTFhNjIxZDJiZjBiZWMyOGUwMWQwNDczYTVkYzNjM2ZkMjJkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKQEAg
LTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaW1hZ2VT
b3VyY2VPcHRpb25zKFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbgogICAgIGlmIChzdWJzYW1w
bGluZ0xldmVsKQogICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25zKHN1YnNh
bXBsaW5nTGV2ZWwpOwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+PiBvcHRpb25zID0gY3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25zKDApOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gb3B0aW9u
cyhjcmVhdGVJbWFnZVNvdXJjZU9wdGlvbnMoMCkpOwogICAgIHJldHVybiBvcHRpb25zOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggMzViNTEzN2E0ZjViYmY0
YmQxOWY4ZmYwMGQ4ZjY1MzY3ZTNlMWNjYi4uNGYxYTVmOTg5ZjljYmM0ZTM2MmVkYTIyZjA5M2E2
OThmNGNmZmZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtNDQ4
LDcgKzQ0OCw3IEBAIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hCiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmV2ZW50TmFtZUFsbCgpCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gc0V2ZW50TmFtZUFsbCA9
ICJhbGxFdmVudHMiOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHNF
dmVudE5hbWVBbGwoImFsbEV2ZW50cyIpOwogICAgIHJldHVybiBzRXZlbnROYW1lQWxsOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAppbmRleCBlYzJmMjRkZTdjNTkzMTVlMzFlYzc5NWI1NGVl
NzczOGQyY2UwZWI2Li41MjA0NTU3NWVmZjQxNTYzNGI5N2FmZGZjYjAyY2U0M2UxYjJlY2VkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKQEAgLTU2LDEzICs1NiwxMyBAQCBzdGF0aWMgU1ZHQXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCBjcmVhdGVTVkdUZXh0QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgp
CiAKICAgICBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwIG1hcDsKIAotICAgIHN0YXRpYyBJbmZv
IHJlcXVpcmVkRmVhdHVyZXMgPSBjcmVhdGVTVkdUZXN0UHJvcGVydHlJbmZvKHJlcXVpcmVkRmVh
dHVyZXNBdHRyLCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOworICAg
IHN0YXRpYyBJbmZvIHJlcXVpcmVkRmVhdHVyZXMoY3JlYXRlU1ZHVGVzdFByb3BlcnR5SW5mbyhy
ZXF1aXJlZEZlYXR1cmVzQXR0ciwgU1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1
cmVzKSk7CiAgICAgbWFwLmFkZFByb3BlcnR5KHJlcXVpcmVkRmVhdHVyZXMuZ2V0KCkpOwogCi0g
ICAgc3RhdGljIEluZm8gcmVxdWlyZWRFeHRlbnNpb25zID0gY3JlYXRlU1ZHVGVzdFByb3BlcnR5
SW5mbyhyZXF1aXJlZEV4dGVuc2lvbnNBdHRyLCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyk7CisgICAgc3RhdGljIEluZm8gcmVxdWlyZWRFeHRlbnNpb25zKGNyZWF0
ZVNWR1Rlc3RQcm9wZXJ0eUluZm8ocmVxdWlyZWRFeHRlbnNpb25zQXR0ciwgU1ZHRWxlbWVudDo6
c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpKTsKICAgICBtYXAuYWRkUHJvcGVydHkocmVx
dWlyZWRFeHRlbnNpb25zLmdldCgpKTsKIAotICAgIHN0YXRpYyBJbmZvIHN5c3RlbUxhbmd1YWdl
ID0gY3JlYXRlU1ZHVGVzdFByb3BlcnR5SW5mbyhzeXN0ZW1MYW5ndWFnZUF0dHIsIFNWR0VsZW1l
bnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOworICAgIHN0YXRpYyBJbmZvIHN5c3RlbUxh
bmd1YWdlKGNyZWF0ZVNWR1Rlc3RQcm9wZXJ0eUluZm8oc3lzdGVtTGFuZ3VhZ2VBdHRyLCBTVkdF
bGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKSk7CiAgICAgbWFwLmFkZFByb3BlcnR5
KHN5c3RlbUxhbmd1YWdlLmdldCgpKTsKIAogICAgIHJldHVybiBtYXA7CkBAIC03MCw3ICs3MCw3
IEBAIHN0YXRpYyBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwIGNyZWF0ZVNWR1RleHRBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwKCkKIAogY29uc3QgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgU1ZH
VGVzdHM6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwPiBtYXAgPSBjcmVhdGVTVkdUZXh0QXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwPiBtYXAoY3JlYXRlU1ZHVGV4dEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAo
KSk7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
CmluZGV4IDZjYTQzZTY1NDhkYzMwMjg2OTA5YWU2OTZkYjU4YTU2MGVjMWJjYjkuLjJhNDI4Yjky
ZTQ0ZmM5NWFhZWVmNDAwOTdjYWZiZWE0NWY5ZmQ2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJp
bmc+IGNyZWF0ZUFsbG93ZWRFbGVtZW50U2V0KCkKIAogc3RhdGljIGlubGluZSBib29sIGlzRGlz
YWxsb3dlZEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmc+PiBzZXQgPSBjcmVhdGVBbGxvd2Vk
RWxlbWVudFNldCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0
cmluZz4+IHNldChjcmVhdGVBbGxvd2VkRWxlbWVudFNldCgpKTsKICAgICByZXR1cm4gIXNldC5n
ZXQoKS5jb250YWlucyhlbGVtZW50LmxvY2FsTmFtZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAKaW5kZXggNWUw
YTBiOTJmYWQwNTcyMzZkNzcxMzY2Yzk2MjcyOGY3ZGYyZDEzOS4uMDhhNmYzNjM2ZTBmMTM3MjQy
YmRkYTRjNmI1Mzg3ODIyMjMzMGRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6cmVzZXQoKQogCiBjb25zdCBTdHJpbmcmIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OnVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3QKIHsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB1bmJsb2NrUmVxdWVzdFVSTCA9IG1ha2VTdHJp
bmcoQ29udGVudEZpbHRlcjo6dXJsU2NoZW1lKCksICI6Ly8iLCB1bmJsb2NrVVJMSG9zdCgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB1bmJsb2NrUmVxdWVzdFVSTChtYWtl
U3RyaW5nKENvbnRlbnRGaWx0ZXI6OnVybFNjaGVtZSgpLCAiOi8vIiwgdW5ibG9ja1VSTEhvc3Qo
KSkpOwogICAgIHJldHVybiB1bmJsb2NrUmVxdWVzdFVSTDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRvci5tbQppbmRleCBjNmFiMTU0MDdhYzA3NGY4MWQw
YTllMTkyYjMxNzIwZTUxZDhiMjU5Li5mYjg1MDNlMmQxYjJlYzI3MTI1ZWUyOGI3OTI5MDUyNjlk
ZjFmZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlN0cmluZ1RydW5j
YXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRvci5t
bQpAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgV2ViQ29yZTo6Rm9udENhc2NhZGUmIGZvbnRGcm9t
TlNGb250KE5TRm9udCAqZm9udCkKIAogKyAoTlNTdHJpbmcgKiljZW50ZXJUcnVuY2F0ZVN0cmlu
ZzooTlNTdHJpbmcgKilzdHJpbmcgdG9XaWR0aDooZmxvYXQpbWF4V2lkdGgKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TRm9udD4+IG1lbnVGb250ID0gW05TRm9udCBt
ZW51Rm9udE9mU2l6ZTowXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5T
Rm9udD4+IG1lbnVGb250KFtOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF0pOwogICAgIHJldHVybiBX
ZWJDb3JlOjpTdHJpbmdUcnVuY2F0b3I6OmNlbnRlclRydW5jYXRlKHN0cmluZywgbWF4V2lkdGgs
IGZvbnRGcm9tTlNGb250KG1lbnVGb250LmdldCgpLmdldCgpKSk7CiB9CiAK
</data>
<flag name="review"
          id="276890"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>