<?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>115487</bug_id>
          
          <creation_ts>2013-05-01 13:12:50 -0700</creation_ts>
          <short_desc>Move knowledge of PDF/PostScript MIME types into MIMETypeRegistry</short_desc>
          <delta_ts>2013-05-01 17:39:36 -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>WebCore Misc.</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>75790</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>883505</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 13:12:50 -0700</bug_when>
    <thetext>Right now we have this list of MIME types ineffectively and incorrectly duplicated in multiple places, and it&apos;s only going to get worse.

WebCore has a place to put this knowledge, so let&apos;s do it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883507</commentid>
    <comment_count>1</comment_count>
      <attachid>200237</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 13:17:32 -0700</bug_when>
    <thetext>Created attachment 200237
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883518</commentid>
    <comment_count>2</comment_count>
      <attachid>200237</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-01 13:43:58 -0700</bug_when>
    <thetext>Comment on attachment 200237
patch

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

&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:361
&gt; +    static const char* types[] = {
&gt; +        &quot;application/pdf&quot;,
&gt; +        &quot;text/pdf&quot;,
&gt; +        &quot;application/postscript&quot;,
&gt; +    };

Why is this marked static? Since the function is called only once, I don’t know if that’s beneficial. Also could make this more const, const char* const, but that probably doesn’t matter; it’s usually not important if a local variable is const.

&gt; Source/WebKit2/UIProcess/WebFrameProxy.cpp:118
&gt; -    return WebContext::pdfAndPostScriptMIMETypes().contains(m_MIMEType);
&gt; +    return MIMETypeRegistry::isPDFOrPostScriptMIMEType(m_MIMEType);

Old code was case folding, but the new function is not case folding. Is that OK? Does something ensure that the letters in m_MIMEType are lowercase?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:559
&gt; -        if ((parameters.mimeType == &quot;application/pdf&quot; || parameters.mimeType == &quot;application/postscript&quot;)
&gt; -            || (parameters.mimeType.isEmpty() &amp;&amp; (path.endsWith(&quot;.pdf&quot;, false) || path.endsWith(&quot;.ps&quot;, false)))) {
&gt; +        if (MIMETypeRegistry::isPDFOrPostScriptMIMEType(parameters.mimeType) || (parameters.mimeType.isEmpty() &amp;&amp; (path.endsWith(&quot;.pdf&quot;, false) || path.endsWith(&quot;.ps&quot;, false)))) {

Old code was case folding, but the new function is not case folding. Is that OK? Can someone pass WebPage::createPlugin a MIME type that contains uppercase letters?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883558</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 15:46:30 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 200237 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200237&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/MIMETypeRegistry.cpp:361
&gt; &gt; +    static const char* types[] = {
&gt; &gt; +        &quot;application/pdf&quot;,
&gt; &gt; +        &quot;text/pdf&quot;,
&gt; &gt; +        &quot;application/postscript&quot;,
&gt; &gt; +    };
&gt; 
&gt; Why is this marked static? Since the function is called only once, I don’t know if that’s beneficial. Also could make this more const, const char* const, but that probably doesn’t matter; it’s usually not important if a local variable is const.

Good points.

&gt; &gt; Source/WebKit2/UIProcess/WebFrameProxy.cpp:118
&gt; &gt; -    return WebContext::pdfAndPostScriptMIMETypes().contains(m_MIMEType);
&gt; &gt; +    return MIMETypeRegistry::isPDFOrPostScriptMIMEType(m_MIMEType);
&gt; 
&gt; Old code was case folding, but the new function is not case folding. Is that OK? Does something ensure that the letters in m_MIMEType are lowercase?

I *think* it&apos;s OK. I don&apos;t think anything guarantees that m_MIMEType is lowercase -- in our case, it comes straight from NSURLResponse, never getting lowercased along the way. I have no idea if NSURLResponse guarantees lower-casing, but even if it did, I can&apos;t make a guarantee about other platforms.

Here&apos;s why I&apos;m not horribly worried, though: everything else that compares against m_MIMEType compares in a case sensitive way (isDisplayingStandaloneImageDocument and isDisplayingMarkupDocument, specifically).

Do you think we should explicitly lowercase the characters earlier on?

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:559
&gt; &gt; -        if ((parameters.mimeType == &quot;application/pdf&quot; || parameters.mimeType == &quot;application/postscript&quot;)
&gt; &gt; -            || (parameters.mimeType.isEmpty() &amp;&amp; (path.endsWith(&quot;.pdf&quot;, false) || path.endsWith(&quot;.ps&quot;, false)))) {
&gt; &gt; +        if (MIMETypeRegistry::isPDFOrPostScriptMIMEType(parameters.mimeType) || (parameters.mimeType.isEmpty() &amp;&amp; (path.endsWith(&quot;.pdf&quot;, false) || path.endsWith(&quot;.ps&quot;, false)))) {
&gt; 
&gt; Old code was case folding, but the new function is not case folding. Is that OK? Can someone pass WebPage::createPlugin a MIME type that contains uppercase letters?

WebPageProxy::FindPlugin (called from WebPage::createPlugin and handed that same MIME type) also compares in a case-sensitive way, so I think things would already be broken. In addition, before it gets to WebPage::createPlugin, it&apos;s compared in a case-sensitive way (in various places in SubframeLoader).

It looks like createPlugin eventually gets its mimeType argument from HTMLEmbedElement and HTMLObjectElement. HTMLEmbedElement explicitly lower-cases the MIME type. HTMLObjectElement appears to also lower case its MIMETypes *except* if they come from a data-URL. So that case might be broken, but it&apos;s already broken.

But, again, maybe we should improve the existing situation? Or maybe that should be a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883564</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 15:57:03 -0700</bug_when>
    <thetext>I think I&apos;ll make mine continue to be case-folding just to be safe, and file a fix me to investigate the other cases (especially the object-data-url case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883565</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 15:57:14 -0700</bug_when>
    <thetext>Err, leave a fixme and file a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883588</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 16:27:33 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I think I&apos;ll make mine continue to be case-folding just to be safe, and file a fix me to investigate the other cases (especially the object-data-url case).

I&apos;m actually just going to fix that, since it&apos;s easy (and is actually broken).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883589</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 16:27:41 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; I think I&apos;ll make mine continue to be case-folding just to be safe, and file a fix me to investigate the other cases (especially the object-data-url case).
&gt; 
&gt; I&apos;m actually just going to fix that, since it&apos;s easy (and is actually broken).

https://bugs.webkit.org/show_bug.cgi?id=115494</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883593</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 16:34:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I think I&apos;ll make mine continue to be case-folding just to be safe

Actually, I think this is wrong. We should fix cases where case-insensitive MIME types make it into WebCore, because there fewer of those than there are places that do The Wrong Thing(TM) and compare to lower-case strings.

I&apos;m going to leave the patch as is, but we should keep looking out for things like https://bugs.webkit.org/show_bug.cgi?id=115494.

Thanks, Darin!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883594</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 16:34:43 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #4)
&gt; &gt; I think I&apos;ll make mine continue to be case-folding just to be safe
&gt; 
&gt; Actually, I think this is wrong. We should fix cases where case-insensitive MIME types make it into

s/case-insensitive/non-lower-cased/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883596</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 16:46:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/149464</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883605</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-01 17:07:11 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; We should fix cases where case-insensitive MIME types make it into WebCore, because there fewer of those than there are places that do The Wrong Thing(TM) and compare to lower-case strings.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883606</commentid>
    <comment_count>12</comment_count>
      <attachid>200237</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-01 17:08:05 -0700</bug_when>
    <thetext>Comment on attachment 200237
patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/WebFrameProxy.cpp:118
&gt;&gt;&gt; +    return MIMETypeRegistry::isPDFOrPostScriptMIMEType(m_MIMEType);
&gt;&gt; 
&gt;&gt; Old code was case folding, but the new function is not case folding. Is that OK? Does something ensure that the letters in m_MIMEType are lowercase?
&gt; 
&gt; I *think* it&apos;s OK. I don&apos;t think anything guarantees that m_MIMEType is lowercase -- in our case, it comes straight from NSURLResponse, never getting lowercased along the way. I have no idea if NSURLResponse guarantees lower-casing, but even if it did, I can&apos;t make a guarantee about other platforms.
&gt; 
&gt; Here&apos;s why I&apos;m not horribly worried, though: everything else that compares against m_MIMEType compares in a case sensitive way (isDisplayingStandaloneImageDocument and isDisplayingMarkupDocument, specifically).
&gt; 
&gt; Do you think we should explicitly lowercase the characters earlier on?

I do not think that NSURLResponse guarantees lower-casing. We should figure out where to put the call to lower() to fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883607</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 17:09:11 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 200237 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200237&amp;action=review
&gt; &gt; Do you think we should explicitly lowercase the characters earlier on?
&gt; 
&gt; I do not think that NSURLResponse guarantees lower-casing. We should figure out where to put the call to lower() to fix that.

Agreed. Ideally, somewhere far enough away from NSURLResponse that it works for other platforms too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883685</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-01 17:39:36 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 200237 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200237&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/WebFrameProxy.cpp:118
&gt; &gt;&gt;&gt; +    return MIMETypeRegistry::isPDFOrPostScriptMIMEType(m_MIMEType);
&gt; &gt;&gt; 
&gt; &gt;&gt; Old code was case folding, but the new function is not case folding. Is that OK? Does something ensure that the letters in m_MIMEType are lowercase?
&gt; &gt; 
&gt; &gt; I *think* it&apos;s OK. I don&apos;t think anything guarantees that m_MIMEType is lowercase -- in our case, it comes straight from NSURLResponse, never getting lowercased along the way. I have no idea if NSURLResponse guarantees lower-casing, but even if it did, I can&apos;t make a guarantee about other platforms.
&gt; &gt; 
&gt; &gt; Here&apos;s why I&apos;m not horribly worried, though: everything else that compares against m_MIMEType compares in a case sensitive way (isDisplayingStandaloneImageDocument and isDisplayingMarkupDocument, specifically).
&gt; &gt; 
&gt; &gt; Do you think we should explicitly lowercase the characters earlier on?
&gt; 
&gt; I do not think that NSURLResponse guarantees lower-casing. We should figure out where to put the call to lower() to fix that.

Filed https://bugs.webkit.org/show_bug.cgi?id=115501.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200237</attachid>
            <date>2013-05-01 13:17:32 -0700</date>
            <delta_ts>2013-05-01 17:08:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>mimetyperegistry.diff</filename>
            <type>text/plain</type>
            <size>17217</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzMxMzA1Li5jMDI3NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTMtMDUtMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZSBrbm93bGVkZ2Ugb2YgUERGL1Bvc3RTY3JpcHQgTUlNRSB0eXBlcyBpbnRv
IE1JTUVUeXBlUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTQ4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgIEV4cG9ydCBuZXdseS1hZGRlZCBpc1BERk9yUG9zdFNj
cmlwdE1JTUVUeXBlIGFuZCBnZXRQREZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzLgorCisgICAgICAg
ICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxl
bWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudCk6CisgICAgICAgIEFkb3B0IE1JTUVUeXBlUmVnaXN0
cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUgaW5zdGVhZCBvZiBkdXBsaWNhdGluZworICAg
ICAgICB0aGUgbGlzdCBvZiBNSU1FIHR5cGVzLiBUaGUgcHJldmlvdXMgbGlzdCBkaWQgbm90IGlu
Y2x1ZGUgUG9zdFNjcmlwdCwgYnV0CisgICAgICAgIGl0IHNlZW1zIHJlYXNvbmFibGUgdG8gcHV0
IHBsdWdpbnMgYWhlYWQgb2YgYnVpbHQtaW4gc3VwcG9ydCBmb3IgaXQgaW4gYWRkaXRpb24gdG8g
UERGLgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppbml0aWFsaXplUERGQW5kUG9zdFNjcmlwdE1JTUVUeXBlcyk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU1JTUVUeXBlUmVnaXN0cnkpOiBDYWxsIGluaXRp
YWxpemVQREZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZSk6CisgICAgICAgIENvbnN1bHQg
b3VyIG5ldyBIYXNoU2V0IHRvIHNlZSBpZiB0aGUgZ2l2ZW4gTUlNRSB0eXBlIGlzIG9uZSBvZiB0
aG9zZSB1c2VkIGZvciBQREYgb3IgUFMuCisKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVn
aXN0cnk6OmdldFBERkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMpOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5Lmg6CisgICAgICAgIChNSU1FVHlwZVJlZ2lzdHJ5KTog
QWRkIGlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUgYW5kIGdldFBERkFuZFBvc3RTY3JpcHRNSU1F
VHlwZXMuCisKIDIwMTMtMDQtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtNYWNdIFJlbW92ZSBhZG9wdE5TL3JldGFpbiBwYWlycywgc2luY2UgdGhlIHR3byBj
YW5jZWwgZWFjaCBvdGhlciBvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMTlhM2ZjMC4uZjg3
NWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTUxNyw5ICs1MTcsMTEgQEAgX19aTjdXZWJD
b3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MTVjYW5TaG93TUlNRVR5cGVFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyMGlzSmF2YUFwcGxldE1JTUVUeXBlRVJLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MjNnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbkVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3Ry
eTI0aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3Jl
MTZNSU1FVHlwZVJlZ2lzdHJ5MjVpc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlRVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MjZnZXRTdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc0V2CiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyN2dldFVuc3VwcG9ydGVk
VGV4dE1JTUVUeXBlc0V2CiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyN2lzU3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE2TUlNRVR5
cGVSZWdpc3RyeTI4Z2V0UERGQW5kUG9zdFNjcmlwdE1JTUVUeXBlc0V2CiBfX1pON1dlYkNvcmUx
Nk1JTUVUeXBlUmVnaXN0cnkyOWdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzRXYKIF9fWk43
V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTMyaXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5
cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05T
XzE1UmVzb3VyY2VSZXF1ZXN0RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5j
cHAKaW5kZXggNTM3OThmMS4uOTcwYzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RPTUltcGxlbWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVt
ZW50YXRpb24uY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gRE9N
SW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUK
IAogICAgIC8vIFBERiBpcyBvbmUgaW1hZ2UgdHlwZSBmb3Igd2hpY2ggYSBwbHVnaW4gY2FuIG92
ZXJyaWRlIGJ1aWx0LWluIHN1cHBvcnQuCiAgICAgLy8gV2UgZG8gbm90IHdhbnQgUXVpY2tUaW1l
IHRvIHRha2Ugb3ZlciBhbGwgaW1hZ2UgdHlwZXMsIG9idmlvdXNseS4KLSAgICBpZiAoKHR5cGUg
PT0gImFwcGxpY2F0aW9uL3BkZiIgfHwgdHlwZSA9PSAidGV4dC9wZGYiKSAmJiBwbHVnaW5EYXRh
ICYmIHBsdWdpbkRhdGEtPnN1cHBvcnRzTWltZVR5cGUodHlwZSkpCisgICAgaWYgKChNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHR5cGUpKSAmJiBwbHVnaW5EYXRh
ICYmIHBsdWdpbkRhdGEtPnN1cHBvcnRzTWltZVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBQ
bHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogICAgIGlmIChJbWFnZTo6c3VwcG9y
dHNUeXBlKHR5cGUpKQogICAgICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKGZyYW1l
LCB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApp
bmRleCAxNmQ0N2VhLi4yYTQ0NTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmNwcApAQCAtMTg4LDYgKzE4OCw3IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmlu
Zz4qIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rpbmc7CiBzdGF0aWMgSGFzaFNldDxT
dHJpbmc+KiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzOwogc3RhdGljIEhhc2hTZXQ8U3Ry
aW5nPiogc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXM7CiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+
KiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlczsKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4qIHBkZkFu
ZFBvc3RTY3JpcHRNSU1FVHlwZXM7CiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+KiB1bnN1cHBvcnRl
ZFRleHRNSU1FVHlwZXM7CiAKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+
KiwgQ2FzZUZvbGRpbmdIYXNoPiBNZWRpYU1JTUVUeXBlTWFwOwpAQCAtMzUxLDYgKzM1MiwxNyBA
QCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcygpCiAg
ICAgICBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzLT5hZGQodHlwZXNbaV0pOwogfQogCitz
dGF0aWMgdm9pZCBpbml0aWFsaXplUERGQW5kUG9zdFNjcmlwdE1JTUVUeXBlcygpCit7CisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIHR5cGVzW10gPSB7CisgICAgICAgICJhcHBsaWNhdGlvbi9wZGYi
LAorICAgICAgICAidGV4dC9wZGYiLAorICAgICAgICAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIs
CisgICAgfTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodHlw
ZXMpOyArK2kpCisgICAgICAgIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMtPmFkZCh0eXBlc1tp
XSk7Cit9CisKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWROb25JbWFnZU1pbWVUeXBl
cygpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHR5cGVzW10gPSB7CkBAIC00ODgsNiArNTAw
LDkgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU1JTUVUeXBlUmVnaXN0cnkoKQogICAgIHN1cHBv
cnRlZEltYWdlTUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nPjsKICAgICBpbml0aWFsaXpl
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKIAorICAgIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlw
ZXMgPSBuZXcgSGFzaFNldDxTdHJpbmc+OworICAgIGluaXRpYWxpemVQREZBbmRQb3N0U2NyaXB0
TUlNRVR5cGVzKCk7CisKICAgICB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBuZXcgSGFzaFNl
dDxTdHJpbmc+OwogICAgIGluaXRpYWxpemVVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKIH0K
QEAgLTYwMiw2ICs2MTcsMTUgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgICAgICB8fCBtaW1lVHlwZS5zdGFy
dHNXaXRoKCJhcHBsaWNhdGlvbi94LWphdmEtdm0iLCBmYWxzZSk7CiB9CiAKK2Jvb2wgTUlNRVR5
cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQoreworICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIXBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMpCisgICAgICAgIGluaXRpYWxp
emVNSU1FVHlwZVJlZ2lzdHJ5KCk7CisgICAgcmV0dXJuIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlw
ZXMtPmNvbnRhaW5zKG1pbWVUeXBlKTsKK30KKwogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5T
aG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoaXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSB8fCBpc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUo
bWltZVR5cGUpIHx8IGlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZShtaW1lVHlwZSkpCkBAIC02NDgs
NiArNjcyLDEzIEBAIEhhc2hTZXQ8U3RyaW5nPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9y
dGVkTWVkaWFNSU1FVHlwZXMoKQogICAgIHJldHVybiAqc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7
CiB9CiAKK0hhc2hTZXQ8U3RyaW5nPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UERGQW5kUG9zdFNj
cmlwdE1JTUVUeXBlcygpCit7CisgICAgaWYgKCFwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKQor
ICAgICAgICBpbml0aWFsaXplTUlNRVR5cGVSZWdpc3RyeSgpOworICAgIHJldHVybiAqcGRmQW5k
UG9zdFNjcmlwdE1JTUVUeXBlczsKK30KKwogSGFzaFNldDxTdHJpbmc+JiBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKQogewogICAgIGlmICghdW5zdXBwb3J0
ZWRUZXh0TUlNRVR5cGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5oCmluZGV4IGNmOTc2ZDEuLmVjYzc2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTgzLDYgKzgzLDkgQEAgcHVibGljOgogICAgIC8vIGJyb3dz
ZXIgKGUuZy4gYSBRdCBQbHVnaW4pLgogICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25QbHVn
aW5NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAorICAgIC8vIENoZWNrIHRvIHNl
ZSBpZiBhIG1pbWUgdHlwZSBpcyBvbmUgb2YgdGhlIGNvbW1vbiBQREYvUFMgdHlwZXMuCisgICAg
c3RhdGljIGJvb2wgaXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKTsKKwogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIG1pbWUgdHlwZSBpcyBzdWl0YWJsZSBm
b3IgYmVpbmcgc2hvd24gaW5zaWRlIGEgcGFnZS4KICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW55
IG9mIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSgpLCBpc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5
cGUoKSwgaXNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlKCkgcmV0dXJucyB0cnVlCiAgICAgLy8gb3Ig
aWYgZ2l2ZW4gbWltZSB0eXBlIGJlZ2lucyB3aXRoICJ0ZXh0LyIgYW5kIGlzVW5zdXBwb3J0ZWRU
ZXh0TUlNRVR5cGUoKSByZXR1cm5zIGZhbHNlLgpAQCAtOTMsNiArOTYsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZygpOwogICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGdldFN1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGVzKCk7CiAgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0U3VwcG9ydGVk
TWVkaWFNSU1FVHlwZXMoKTsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBnZXRQREZBbmRQ
b3N0U2NyaXB0TUlNRVR5cGVzKCk7CiAgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0VW5z
dXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCk7CiAKICAgICBzdGF0aWMgU3RyaW5nIGdldE5vcm1hbGl6
ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5NzQ0MTM5Li4yYTQ1MTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTMtMDUtMDEgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBrbm93bGVkZ2Ugb2YgUERG
L1Bvc3RTY3JpcHQgTUlNRSB0eXBlcyBpbnRvIE1JTUVUeXBlUmVnaXN0cnkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTQ4NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIFJlbW92
ZSBwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpjYW5TaG93TUlN
RVR5cGUpOiBNb3ZlIFBERiBiaXRzIHRvIFdlYlBhZ2VQcm94eS4KKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQpOgorICAgICAgICBNYWtlIHVz
ZSBvZiBXZWJDb3JlJ3MgbmV3Zm91bmQga25vd2xlZGdlIG9mIFBERiBhbmQgUG9zdFNjcmlwdCBN
SU1FIHR5cGVzLAorICAgICAgICBzbyB3ZSBkb24ndCBoYXZlIHRvIGR1cGxpY2F0ZSBpdCB1bm5l
Y2Vzc2FyaWx5IGluIFdlYktpdDIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjYW5TaG93TUlNRVR5cGUpOgor
ICAgICAgICBBZGQgY29kZSB3aGljaCB1c2VkIHRvIGJlIGluIFdlYkZyYW1lUHJveHk6OmNhblNo
b3dNSU1FVHlwZSwgYW5kIGFkYXB0IGl0CisgICAgICAgIHRvIHVzZSBXZWJDb3JlJ3Mga25vd2xl
ZGdlIG9mIFBERiBhbmQgUG9zdFNjcmlwdCBNSU1FIHR5cGVzLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlNp
bXBsZVBERlBsdWdpbjo6cGx1Z2luSW5mbyk6CisgICAgICAgIFdlIHByZXZpb3VzbHkgc3VwcG9y
dGVkIHRoZSAidGV4dC9wZGYiIE1JTUUgdHlwZSBmb3IgUERGVmlld0NvbnRyb2xsZXIsCisgICAg
ICAgIHNvIFNpbXBsZVBERlBsdWdpbiBhbmQgUERGUGx1Z2luIHNob3VsZCBzdXBwb3J0IGl0IGFz
IHdlbGwuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgIEFkb3B0IE1JTUVU
eXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgIFJl
bW92ZSBwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0
Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgQWRvcHQgZ2V0UERGQW5kUG9zdFNj
cmlwdE1JTUVUeXBlcyBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBsaXN0IGluIFdlYktpdDIu
CisKIDIwMTMtMDQtMzAgIERvbmd3b28gSm9zaHVhIEltICA8ZHcuaW1Ac2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW0VGTF0gVW5yZXZpZXdlZCwgRUZMIGJ1aWxkIGZpeCBhZnRlciByMTQ5NDE2CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggZGM5ODI1YS4uM2NmOTgx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtOTAxLDE4ICs5
MDEsNiBAQCBEb3dubG9hZFByb3h5KiBXZWJDb250ZXh0OjpjcmVhdGVEb3dubG9hZFByb3h5KCkK
ICAgICByZXR1cm4gZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpLT5jcmVhdGVEb3dubG9hZFByb3h5
KCk7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIGlzIG5vdCB0aGUgaWRlYWwgcGxhY2UgZm9yIHRoaXMg
ZnVuY3Rpb24uCi1IYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBXZWJDb250ZXh0Ojpw
ZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKCkKLXsKLSAgICBIYXNoU2V0PFN0cmluZywgQ2FzZUZv
bGRpbmdIYXNoPiBtaW1lVHlwZXM7Ci0KLSAgICBtaW1lVHlwZXMuYWRkKCJhcHBsaWNhdGlvbi9w
ZGYiKTsKLSAgICBtaW1lVHlwZXMuYWRkKCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Iik7Ci0gICAg
bWltZVR5cGVzLmFkZCgidGV4dC9wZGYiKTsKLSAgICAKLSAgICByZXR1cm4gbWltZVR5cGVzOwot
fQotCiB2b2lkIFdlYkNvbnRleHQ6OmFkZE1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKiBt
ZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJl
Y2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VSZWNlaXZlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCA4Njc1ODhkLi5iNmUwMjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTIxMiw4ICsyMTIsNiBAQCBwdWJsaWM6CiAg
ICAgV2ViSGlzdG9yeUNsaWVudCYgaGlzdG9yeUNsaWVudCgpIHsgcmV0dXJuIG1faGlzdG9yeUNs
aWVudDsgfQogICAgIFdlYkNvbnRleHRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50
OyB9CiAKLSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gcGRmQW5k
UG9zdFNjcmlwdE1JTUVUeXBlcygpOwotCiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogICAg
IFdlYkJhdHRlcnlNYW5hZ2VyUHJveHkqIGJhdHRlcnlNYW5hZ2VyUHJveHkoKSBjb25zdCB7IHJl
dHVybiBtX2JhdHRlcnlNYW5hZ2VyUHJveHkuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IDM1OTBmZmQuLmJlN2Y2MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RPTUlt
cGxlbWVudGF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTk1LDE2ICs5Niw3IEBAIGJvb2wgV2ViRnJhbWVQ
cm94eTo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0CiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtX3BhZ2UtPmNh
blNob3dNSU1FVHlwZShtaW1lVHlwZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0jaWYgUExB
VEZPUk0oTUFDKQotICAgIC8vIE9uIE1hYywgd2UgY2FuIHNob3cgUERGcy4KLSAgICBpZiAoIW1p
bWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdlYkNvbnRleHQ6OnBkZkFuZFBvc3RT
Y3JpcHRNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSkgJiYgIVdlYkNvbnRleHQ6Om9taXRQ
REZTdXBwb3J0KCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9w
YWdlLT5jYW5TaG93TUlNRVR5cGUobWltZVR5cGUpOwogfQogCiBib29sIFdlYkZyYW1lUHJveHk6
OmlzRGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZURvY3VtZW50KCkgY29uc3QKQEAgLTEyMyw3ICsx
MTUsNyBAQCBib29sIFdlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ1BERkRvY3VtZW50KCkgY29u
c3QKICAgICBpZiAobV9NSU1FVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBXZWJDb250ZXh0OjpwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKCkuY29u
dGFpbnMobV9NSU1FVHlwZSk7CisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQ
b3N0U2NyaXB0TUlNRVR5cGUobV9NSU1FVHlwZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDk1YTYzNWMuLjk1N2ZiNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05MzMsNiArOTMzLDEz
IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgY29uc3QKICAgICBpZiAoIXBsdWdpbi5wYXRoLmlzTnVsbCgpICYmIG1fcGFnZUdyb3Vw
LT5wcmVmZXJlbmNlcygpLT5wbHVnaW5zRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKworI2lmIFBMQVRGT1JNKE1B
QykKKyAgICAvLyBPbiBNYWMsIHdlIGNhbiBzaG93IFBERnMuCisgICAgaWYgKE1JTUVUeXBlUmVn
aXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUobWltZVR5cGUpICYmICFXZWJDb250ZXh0
OjpvbWl0UERGU3VwcG9ydCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KaW5kZXgg
MjEzMjVjMi4uOTM4ZTA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KQEAgLTE4NCw2ICsxODQsMTIgQEAg
UGx1Z2luSW5mbyBTaW1wbGVQREZQbHVnaW46OnBsdWdpbkluZm8oKQogICAgIHBkZk1pbWVDbGFz
c0luZm8uZGVzYyA9IHBkZkRvY3VtZW50VHlwZURlc2NyaXB0aW9uKCk7CiAgICAgcGRmTWltZUNs
YXNzSW5mby5leHRlbnNpb25zLmFwcGVuZCgicGRmIik7CiAgICAgaW5mby5taW1lcy5hcHBlbmQo
cGRmTWltZUNsYXNzSW5mbyk7CisgICAgCisgICAgTWltZUNsYXNzSW5mbyB0ZXh0UERGTWltZUNs
YXNzSW5mbzsKKyAgICB0ZXh0UERGTWltZUNsYXNzSW5mby50eXBlID0gInRleHQvcGRmIjsKKyAg
ICB0ZXh0UERGTWltZUNsYXNzSW5mby5kZXNjID0gcGRmRG9jdW1lbnRUeXBlRGVzY3JpcHRpb24o
KTsKKyAgICB0ZXh0UERGTWltZUNsYXNzSW5mby5leHRlbnNpb25zLmFwcGVuZCgicGRmIik7Cisg
ICAgaW5mby5taW1lcy5hcHBlbmQodGV4dFBERk1pbWVDbGFzc0luZm8pOwogCiAgICAgTWltZUNs
YXNzSW5mbyBwb3N0U2NyaXB0TWltZUNsYXNzSW5mbzsKICAgICBwb3N0U2NyaXB0TWltZUNsYXNz
SW5mby50eXBlID0gcG9zdFNjcmlwdE1JTUVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDk4YjU5ODUuLmQ2NzY3YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU1Niw4ICs1
NTYsNyBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKFdlYkZyYW1l
KiBmcmFtZSwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdQogICAgIGlmIChwbHVnaW5QYXRoLmlzTnVs
bCgpKSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBTdHJpbmcgcGF0aCA9IHBhcmFtZXRl
cnMudXJsLnBhdGgoKTsKLSAgICAgICAgaWYgKChwYXJhbWV0ZXJzLm1pbWVUeXBlID09ICJhcHBs
aWNhdGlvbi9wZGYiIHx8IHBhcmFtZXRlcnMubWltZVR5cGUgPT0gImFwcGxpY2F0aW9uL3Bvc3Rz
Y3JpcHQiKQotICAgICAgICAgICAgfHwgKHBhcmFtZXRlcnMubWltZVR5cGUuaXNFbXB0eSgpICYm
IChwYXRoLmVuZHNXaXRoKCIucGRmIiwgZmFsc2UpIHx8IHBhdGguZW5kc1dpdGgoIi5wcyIsIGZh
bHNlKSkpKSB7CisgICAgICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlw
dE1JTUVUeXBlKHBhcmFtZXRlcnMubWltZVR5cGUpIHx8IChwYXJhbWV0ZXJzLm1pbWVUeXBlLmlz
RW1wdHkoKSAmJiAocGF0aC5lbmRzV2l0aCgiLnBkZiIsIGZhbHNlKSB8fCBwYXRoLmVuZHNXaXRo
KCIucHMiLCBmYWxzZSkpKSkgewogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQogICAgICAgICAg
ICAgaWYgKHNob3VsZFVzZVBERlBsdWdpbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBQREZQ
bHVnaW46OmNyZWF0ZShmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCAzMmY0MWQ4Li42MDcxNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTYzMywxMCArNjMzLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UERGUGx1Z2luRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9wZGZQbHVnaW5F
bmFibGVkID0gZW5hYmxlZDsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgc3Rh
dGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IHBkZkFuZFBvc3RTY3JpcHRNSU1F
VHlwZXMoKTsKLSNlbmRpZgotCiAgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
dGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRP
cGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBk
NGJjNThjLi43NDM3NzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NCw2ICs1NCw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxDb252ZXJ0ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL01JTUVU
eXBlUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJk
RXZlbnQuaD4KQEAgLTEwNCw5ICsxMDUsOSBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVy
ZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAKICAgICBC
T09MIG9taXRQREZTdXBwb3J0ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0
c10gYm9vbEZvcktleTpAIldlYktpdE9taXRQREZTdXBwb3J0Il07CiAgICAgaWYgKCFzaG91bGRV
c2VQREZQbHVnaW4oKSAmJiAhb21pdFBERlN1cHBvcnQpIHsKLSAgICAgICAgLy8gV2Ugd2FudCB0
byB1c2UgYSBQREYgdmlldyBpbiB0aGUgVUkgcHJvY2VzcyBmb3IgUERGIE1JTUUgdHlwZXMuCi0g
ICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IG1pbWVUeXBlcyA9IHBkZkFu
ZFBvc3RTY3JpcHRNSU1FVHlwZXMoKTsKLSAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZywgQ2Fz
ZUZvbGRpbmdIYXNoPjo6aXRlcmF0b3IgaXQgPSBtaW1lVHlwZXMuYmVnaW4oKTsgaXQgIT0gbWlt
ZVR5cGVzLmVuZCgpOyArK2l0KQorICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIFBERlBsdWdp
biwgd2Ugd2lsbCB1c2UgYSBQREYgdmlldyBpbiB0aGUgVUkgcHJvY2VzcyBmb3IgUERGIGFuZCBQ
b3N0U2NyaXB0IE1JTUUgdHlwZXMuCisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtaW1lVHlwZXMg
PSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQREZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKCk7CisgICAg
ICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdCA9IG1pbWVUeXBlcy5iZWdpbigp
OyBpdCAhPSBtaW1lVHlwZXMuZW5kKCk7ICsraXQpCiAgICAgICAgICAgICBtX21pbWVUeXBlc1dp
dGhDdXN0b21SZXByZXNlbnRhdGlvbnMuYWRkKCppdCk7CiAgICAgfQogfQpAQCAtMTAwMiwxNiAr
MTAwMyw0IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZGcm9tUERGRG9jdW1lbnQoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIFBERkRvY3VtZW50ICpwCiAgICAgfQogfQogCi0vLyBGSVhNRTog
VGhpcyBpcyBub3QgdGhlIGlkZWFsIHBsYWNlIGZvciB0aGlzIGZ1bmN0aW9uIChhbmQgbm93IGl0
J3MgZHVwbGljYXRlZCBoZXJlIGFuZCBpbiBXZWJDb250ZXh0TWFjKS4KLUhhc2hTZXQ8U3RyaW5n
LCBDYXNlRm9sZGluZ0hhc2g+IFdlYlBhZ2U6OnBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMoKQot
ewotICAgIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IG1pbWVUeXBlczsKLSAgICAK
LSAgICBtaW1lVHlwZXMuYWRkKCJhcHBsaWNhdGlvbi9wZGYiKTsKLSAgICBtaW1lVHlwZXMuYWRk
KCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Iik7Ci0gICAgbWltZVR5cGVzLmFkZCgidGV4dC9wZGYi
KTsKLSAgICAKLSAgICByZXR1cm4gbWltZVR5cGVzOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQK
</data>
<flag name="review"
          id="221732"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>