<?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>237513</bug_id>
          
          <creation_ts>2022-03-07 01:49:08 -0800</creation_ts>
          <short_desc>[GTK][WPE] Add initial support for PDF documents using PDF.js</short_desc>
          <delta_ts>2022-05-17 15:43:58 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=235969</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=238023</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ntim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1848642</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-07 01:49:08 -0800</bug_when>
    <thetext>Use PDF.js from third party.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848646</commentid>
    <comment_count>1</comment_count>
      <attachid>453949</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-07 01:58:24 -0800</bug_when>
    <thetext>Created attachment 453949
Patch

This is an initial patch, loading PDF documents works, but there are a few things to fix in follow up patches:

 - Figure out a way to load platform styles. style-cocoa.css is currently added unconditionally (we just get a 404 now and default style is used).
 - I&apos;m seeing a couple of cross-origin errors in the console, even though I don&apos;t see anything broken.
 - Add a style for GTK/WPE (adwaita), to remove UI elements we don&apos;t want, like the open button, and customize the UI a bit too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848769</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-03-07 08:43:42 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #1)
&gt;  - I&apos;m seeing a couple of cross-origin errors in the console, even though I
&gt; don&apos;t see anything broken.

Epiphany has a pretty gross hack to avoid these, but it&apos;s bad and you don&apos;t want to use it. For us, these errors indicated that stuff really was broken. Jan-Michael would probably remember for sure what it was.

(In reply to Carlos Garcia Campos from comment #1)
&gt;  - Add a style for GTK/WPE (adwaita), to remove UI elements we don&apos;t want,
&gt; like the open button, and customize the UI a bit too.

I think we removed the open button because it didn&apos;t work, not because we didn&apos;t want it. Should probably hook it up to a WebKitFileChooserRequest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848779</commentid>
    <comment_count>3</comment_count>
      <attachid>453949</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-07 08:56:58 -0800</bug_when>
    <thetext>Comment on attachment 453949
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1915
&gt; +        return true;

@ntim: Should we have done this for our port? Will this break something for Cocoa ports if we choose not to ship with it enabled by default yet?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6460
&gt; +        return true;

Ditto:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848793</commentid>
    <comment_count>4</comment_count>
      <attachid>453949</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-03-07 09:26:09 -0800</bug_when>
    <thetext>Comment on attachment 453949
Patch

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

Do you plan to investigate adapting Epiphany for this? We&apos;ll be able to remove a lot of code there....

&gt; Source/WebCore/loader/ResourceLoader.cpp:872
&gt; -#if PLATFORM(COCOA)
&gt; +#if PLATFORM(COCOA) || PLATFORM(GTK) || PLATFORM(WPE)

No need for #if here: we have a runtime setting PdfJSViewerEnabled, so should check that instead.

&gt; Source/WebCore/page/SecurityOrigin.cpp:124
&gt; +        || url.protocolIs(&quot;webkit-pdfjs-viewer&quot;)

This is surely required for all ports using PDF.js, not just GTK and WPE. Better check PdfJSViewerEnabled instead of using #if.

&gt; Source/WebCore/platform/LegacySchemeRegistry.cpp:148
&gt; -#if PLATFORM(COCOA)
&gt; +#if PLATFORM(COCOA) || PLATFORM(GTK) || PLATFORM(WPE)
&gt;          &quot;webkit-pdfjs-viewer&quot;_s,
&gt;  #endif

If you change this from std::array to std::vector, then you can check the runtime setting PdfJSViewerEnabled here too.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1915
&gt; +    if (m_preferences-&gt;pdfJSViewerEnabled() &amp;&amp; MIMETypeRegistry::isPDFMIMEType(mimeType))
&gt; +        return true;

Note: this requires owner approval to land.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6460
&gt; +    if (m_page-&gt;settings().pdfJSViewerEnabled() &amp;&amp; MIMETypeRegistry::isPDFMIMEType(mimeType))
&gt; +        return true;

This too.

&gt; Tools/glib/generate-pdfjs-gresource-manifest.py:35
&gt; +        if os.path.splitext(resource)[1] not in VALID_EXTENSIONS:
&gt; +            return True

Hm, I don&apos;t like this: we&apos;ll likely drop desired files by mistake during future updates of PDF.js. I&apos;d either (a) drop this altogether and just include everything, or (b) use a denylist containing just &apos;.map&apos; as a sanity-check to ensure we don&apos;t include those pre-generated map files by mistake.

&gt; Tools/glib/generate-pdfjs-gresource-manifest.py:54
&gt; +            # separator, is properly replaced

Nit: no comma here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848795</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-03-07 09:28:28 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #3)
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1915
&gt; &gt; +        return true;
&gt; 
&gt; @ntim: Should we have done this for our port? Will this break something for
&gt; Cocoa ports if we choose not to ship with it enabled by default yet?

Note the runtime setting defaults to off for Cocoa ports, so that shouldn&apos;t affect you unless the runtime setting is toggled. (GTK/WPE do not actually have any way to toggle these runtime settings. I guess you probably do have a way, though?)

BTW: we need owner approval for these lines, hint hint. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848797</commentid>
    <comment_count>6</comment_count>
      <attachid>453949</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-03-07 09:29:56 -0800</bug_when>
    <thetext>Comment on attachment 453949
Patch

Also there&apos;s three test failures to deal with before landing:

fast/replaced/encrypted-pdf-as-object-and-embed.html
http/tests/cache/disk-cache/shattered-deduplication.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox_004.htm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849137</commentid>
    <comment_count>7</comment_count>
      <attachid>453949</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-08 00:29:47 -0800</bug_when>
    <thetext>Comment on attachment 453949
Patch

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

&gt;&gt; Source/WebCore/page/SecurityOrigin.cpp:124
&gt;&gt; +        || url.protocolIs(&quot;webkit-pdfjs-viewer&quot;)
&gt; 
&gt; This is surely required for all ports using PDF.js, not just GTK and WPE. Better check PdfJSViewerEnabled instead of using #if.

It&apos;s enabled unconditionally for GTK and WPE. We can discuss if we want to add api to enable/disable it, though. But for now, I think it&apos;s easier this way. Cocoa doesn&apos;t do this because they have :

// Allow images to load.
response.addHTTPHeaderField(HTTPHeaderName::AccessControlAllowOrigin, &quot;*&quot;);

in the bundle resource loader. I  did it this way for consistency with gresources, since webkit-pdfjs-viewer are gresources too in the end.

&gt;&gt; Source/WebCore/platform/LegacySchemeRegistry.cpp:148
&gt;&gt;  #endif
&gt; 
&gt; If you change this from std::array to std::vector, then you can check the runtime setting PdfJSViewerEnabled here too.

And same here.

&gt;&gt; Tools/glib/generate-pdfjs-gresource-manifest.py:35
&gt;&gt; +            return True
&gt; 
&gt; Hm, I don&apos;t like this: we&apos;ll likely drop desired files by mistake during future updates of PDF.js. I&apos;d either (a) drop this altogether and just include everything, or (b) use a denylist containing just &apos;.map&apos; as a sanity-check to ensure we don&apos;t include those pre-generated map files by mistake.

I think it&apos;s unlikely new file types are added in new versions. I&apos;ve tried hard to not add any file we don&apos;t need to the bundle, because it&apos;s already big enough. If it breaks after an upgrade we can easily fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849138</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-08 00:31:00 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #6)
&gt; Comment on attachment 453949 [details]
&gt; Patch
&gt; 
&gt; Also there&apos;s three test failures to deal with before landing:
&gt; 
&gt; fast/replaced/encrypted-pdf-as-object-and-embed.html
&gt; http/tests/cache/disk-cache/shattered-deduplication.html
&gt; imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-
&gt; element/sandbox_004.htm

Yes, I&apos;ll check. Maybe we can just disable pdf support in WTR for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849155</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-08 01:17:54 -0800</bug_when>
    <thetext>Rather than API to enable/disable it, maybe we want a build option to allow embedders who don&apos;t need pdf support to opt-out, because pdfjs adds a few MB to the library.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849226</commentid>
    <comment_count>10</comment_count>
      <attachid>453949</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-03-08 06:02:46 -0800</bug_when>
    <thetext>Comment on attachment 453949
Patch

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

&gt;&gt; Source/WebCore/loader/ResourceLoader.cpp:872
&gt;&gt; +#if PLATFORM(COCOA) || PLATFORM(GTK) || PLATFORM(WPE)
&gt; 
&gt; No need for #if here: we have a runtime setting PdfJSViewerEnabled, so should check that instead.

The goal here is to target platforms that implement the webkit-pdfjs-viewer scheme, which may be correlated to PdfJSViewerEnabled, but not necessarily. Perhaps we should have a WEBKIT-PDFJS-VIEWER-SCHEME macro?

&gt;&gt;&gt; Source/WebCore/page/SecurityOrigin.cpp:124
&gt;&gt;&gt; +        || url.protocolIs(&quot;webkit-pdfjs-viewer&quot;)
&gt;&gt; 
&gt;&gt; This is surely required for all ports using PDF.js, not just GTK and WPE. Better check PdfJSViewerEnabled instead of using #if.
&gt; 
&gt; It&apos;s enabled unconditionally for GTK and WPE. We can discuss if we want to add api to enable/disable it, though. But for now, I think it&apos;s easier this way. Cocoa doesn&apos;t do this because they have :
&gt; 
&gt; // Allow images to load.
&gt; response.addHTTPHeaderField(HTTPHeaderName::AccessControlAllowOrigin, &quot;*&quot;);
&gt; 
&gt; in the bundle resource loader. I  did it this way for consistency with gresources, since webkit-pdfjs-viewer are gresources too in the end.

If we can make this consistent across platforms, that would be great. I&apos;m open to removing response.addHTTPHeaderField(HTTPHeaderName::AccessControlAllowOrigin, &quot;*&quot;); too.

Can you add a comment either way to explain why PDF.js needs this?

&gt;&gt;&gt; Source/WebCore/platform/LegacySchemeRegistry.cpp:148
&gt;&gt;&gt;  #endif
&gt;&gt; 
&gt;&gt; If you change this from std::array to std::vector, then you can check the runtime setting PdfJSViewerEnabled here too.
&gt; 
&gt; And same here.

ditto here, maybe a macro type thing.

&gt;&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1915
&gt;&gt;&gt; +        return true;
&gt;&gt; 
&gt;&gt; @ntim: Should we have done this for our port? Will this break something for Cocoa ports if we choose not to ship with it enabled by default yet?
&gt; 
&gt; Note: this requires owner approval to land.

Brent, Cocoa is covered by the 5 lines above:

#if PLATFORM(COCOA)
// On Mac, we can show PDFs.
if (MIMETypeRegistry::isPDFOrPostScriptMIMEType(mimeType) &amp;&amp; !WebProcessPool::omitPDFSupport()
  return true;
#endif // PLATFORM(COCOA)

I think we should add this, but put it above the Cocoa check, although I&apos;m not sure if respecting the `WebProcessPool::omitPDFSupport()` pref is important in the context of PDF.js.

&gt;&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6460
&gt;&gt;&gt; +        return true;
&gt;&gt; 
&gt;&gt; Ditto:
&gt; 
&gt; This too.

I&apos;m not sure what this adds? Can you describe why you&apos;re adding this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849230</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-03-08 06:19:01 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #7)
&gt; It&apos;s enabled unconditionally for GTK and WPE. We can discuss if we want to
&gt; add api to enable/disable it, though. But for now, I think it&apos;s easier this
&gt; way. Cocoa doesn&apos;t do this because they have :
&gt; 
&gt; // Allow images to load.
&gt; response.addHTTPHeaderField(HTTPHeaderName::AccessControlAllowOrigin, &quot;*&quot;);
&gt; 
&gt; in the bundle resource loader. I  did it this way for consistency with
&gt; gresources, since webkit-pdfjs-viewer are gresources too in the end.

Hmmm, OK, I see why you did this. I&apos;m not actually certain, but I *suspect* this wasn&apos;t the best approach. There are a few other considerations:

 * A webkit-pdf-viewer: URI has a host component and therefore it should probably not be treated as a unique origin, i.e. shouldTreatAsUniqueOrigin should return false (...right?). Your change accomplishes this only for GTK and WPE, but leaves Cocoa ports with the opposite result. Understanding that Cocoa ports don&apos;t *need* it for PDF.js to work, I think they still *want* this. (I assume LegacySchemeRegistry::schemeIsHandledBySchemeHandler will always return true for webkit-pdf-viewer, causing shouldTreatAsUniqueOrigin to return false if we don&apos;t have a special case for webkit-pdfjs-viewer URIs.)

 * Matching the Cocoa port behavior allows us to share the same set of bugs between ports, which is valuable.

 * You mention you are seeing CORS errors in the console, but surely those will go away if we add AccessControlAllowOrigin=* to match Cocoa ports, so we should probably do that too, right? In fact, I wonder if maybe we should do that for all GResources. We spent ages trying to make PDF.js dodge CORS, and even wound up adding new public API webkit_web_view_set_cors_allowlist() to facilitate it. None of that would have been needed if GResources just did the right thing. Resource content should be trusted and allowed to embed content from any origin it wants, right?

So even if your way works, I think it&apos;d be nice to match behavior between ports anyway. Normally we use #if only when something either *has* to be different between ports, or at least really *wants* to be different. I don&apos;t think that&apos;s the case here. I won&apos;t block you on this, though (you still have r+ regardless).

&gt; I think it&apos;s unlikely new file types are added in new versions. I&apos;ve tried
&gt; hard to not add any file we don&apos;t need to the bundle, because it&apos;s already
&gt; big enough. If it breaks after an upgrade we can easily fix it.

What files do we not need besides the *.map and the example PDF? If you want to maintain an allowlist of file extensions, then please maintain a denylist as well, and fail the build if a file doesn&apos;t match one list or the other, so we&apos;ll be sure to notice when something is wrong. It&apos;s not much extra code now, but will make things easier for us in the future if it&apos;s really needed.

I&apos;m sure whoever winds up updating PDF.js now that it has moved to WebKit is not going to want to deal with important files discarded with no warning... *especially* as that will only happen for GTK/WPE, so someone from Apple would really have to chance to avoid breaking us if there is no build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849236</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-08 06:41:19 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #11)
&gt; (In reply to Carlos Garcia Campos from comment #7)
&gt; &gt; It&apos;s enabled unconditionally for GTK and WPE. We can discuss if we want to
&gt; &gt; add api to enable/disable it, though. But for now, I think it&apos;s easier this
&gt; &gt; way. Cocoa doesn&apos;t do this because they have :
&gt; &gt; 
&gt; &gt; // Allow images to load.
&gt; &gt; response.addHTTPHeaderField(HTTPHeaderName::AccessControlAllowOrigin, &quot;*&quot;);
&gt; &gt; 
&gt; &gt; in the bundle resource loader. I  did it this way for consistency with
&gt; &gt; gresources, since webkit-pdfjs-viewer are gresources too in the end.
&gt; 
&gt; Hmmm, OK, I see why you did this. I&apos;m not actually certain, but I *suspect*
&gt; this wasn&apos;t the best approach. There are a few other considerations:
&gt; 
&gt;  * A webkit-pdf-viewer: URI has a host component and therefore it should
&gt; probably not be treated as a unique origin, i.e. shouldTreatAsUniqueOrigin
&gt; should return false (...right?). Your change accomplishes this only for GTK
&gt; and WPE, but leaves Cocoa ports with the opposite result. Understanding that
&gt; Cocoa ports don&apos;t *need* it for PDF.js to work, I think they still *want*
&gt; this. (I assume LegacySchemeRegistry::schemeIsHandledBySchemeHandler will
&gt; always return true for webkit-pdf-viewer, causing shouldTreatAsUniqueOrigin
&gt; to return false if we don&apos;t have a special case for webkit-pdfjs-viewer
&gt; URIs.)
&gt; 
&gt;  * Matching the Cocoa port behavior allows us to share the same set of bugs
&gt; between ports, which is valuable.
&gt; 
&gt;  * You mention you are seeing CORS errors in the console, but surely those
&gt; will go away if we add AccessControlAllowOrigin=* to match Cocoa ports, so
&gt; we should probably do that too, right? In fact, I wonder if maybe we should
&gt; do that for all GResources. We spent ages trying to make PDF.js dodge CORS,
&gt; and even wound up adding new public API webkit_web_view_set_cors_allowlist()
&gt; to facilitate it. None of that would have been needed if GResources just did
&gt; the right thing. Resource content should be trusted and allowed to embed
&gt; content from any origin it wants, right?

No, the initial CORS errors prevented the resourced from being loaded, those are fixed either adding the HTTP header or making the scheme as not unique. The errors I&apos;0m still seeing happen with the HTTP header too. I&apos;ll submit a new bug for those.

&gt; So even if your way works, I think it&apos;d be nice to match behavior between
&gt; ports anyway. Normally we use #if only when something either *has* to be
&gt; different between ports, or at least really *wants* to be different. I don&apos;t
&gt; think that&apos;s the case here. I won&apos;t block you on this, though (you still
&gt; have r+ regardless).

I&apos;m fine switching to cocoa behavior, I haver to check it also works for the inspector resources.

&gt; &gt; I think it&apos;s unlikely new file types are added in new versions. I&apos;ve tried
&gt; &gt; hard to not add any file we don&apos;t need to the bundle, because it&apos;s already
&gt; &gt; big enough. If it breaks after an upgrade we can easily fix it.
&gt; 
&gt; What files do we not need besides the *.map and the example PDF? If you want
&gt; to maintain an allowlist of file extensions, then please maintain a denylist
&gt; as well, and fail the build if a file doesn&apos;t match one list or the other,
&gt; so we&apos;ll be sure to notice when something is wrong. It&apos;s not much extra code
&gt; now, but will make things easier for us in the future if it&apos;s really needed.
&gt; 
&gt; I&apos;m sure whoever winds up updating PDF.js now that it has moved to WebKit is
&gt; not going to want to deal with important files discarded with no warning...
&gt; *especially* as that will only happen for GTK/WPE, so someone from Apple
&gt; would really have to chance to avoid breaking us if there is no build
&gt; failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849253</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-03-08 07:23:21 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #12)
&gt; I&apos;m fine switching to cocoa behavior, I haver to check it also works for the
&gt; inspector resources.

Please read my last comment again: I think we want both behaviors for all ports, not one or the other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849336</commentid>
    <comment_count>14</comment_count>
      <attachid>453949</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-03-08 11:05:51 -0800</bug_when>
    <thetext>Comment on attachment 453949
Patch

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

&gt; Tools/glib/generate-pdfjs-gresource-manifest.py:88
&gt; +        if not filename.startswith(&apos;build/&apos;) and not filename.startswith(&apos;web/&apos;):
&gt; +            alias = &apos;extras/&apos; + filename
&gt; +            line += &apos; alias=&quot;%s&quot;&apos; % alias
&gt; +        line += &apos;&gt;%s&lt;/file&gt;\n&apos; % filename

fwiw, pdfjs-extras is copied as as subfolder of the pdfjs folder called &quot;extras&quot; in the bundle. We don&apos;t do this type of aliasing based on the folder name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849594</commentid>
    <comment_count>15</comment_count>
      <attachid>454213</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-09 02:57:36 -0800</bug_when>
    <thetext>Created attachment 454213
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849987</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-10 01:00:34 -0800</bug_when>
    <thetext>Committed r291094 (248256@trunk): &lt;https://commits.webkit.org/248256@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869832</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-05-17 15:43:58 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #11)
&gt; What files do we not need besides the *.map and the example PDF? If you want
&gt; to maintain an allowlist of file extensions, then please maintain a denylist
&gt; as well, and fail the build if a file doesn&apos;t match one list or the other,
&gt; so we&apos;ll be sure to notice when something is wrong. It&apos;s not much extra code
&gt; now, but will make things easier for us in the future if it&apos;s really needed.
&gt; 
&gt; I&apos;m sure whoever winds up updating PDF.js now that it has moved to WebKit is
&gt; not going to want to deal with important files discarded with no warning...
&gt; *especially* as that will only happen for GTK/WPE, so someone from Apple
&gt; would really have to chance to avoid breaking us if there is no build
&gt; failure.

Followed up on this in bug #240536.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453949</attachid>
            <date>2022-03-07 01:58:24 -0800</date>
            <delta_ts>2022-03-09 02:57:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-pdfjs.diff</filename>
            <type>text/plain</type>
            <size>15287</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZjJkYzQ4MzM1MDYzLi5jYzg5NGVlZWEwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjItMDMtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdW1dQRV0gQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgUERGIGRvY3VtZW50cyB1
c2luZyBQREYuanMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNzUxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEVuYWJsZSBQREYuanMgZm9yIEdUSyBhbmQgV1BFIHBvcnRzLgorCisgICAgICAgICogU2Ny
aXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWw6CisKIDIwMjItMDMt
MDQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG51bGwg
Y2hlY2sgZm9yIHBhdGggaW4gbWFrZUFsbERpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291
cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbApp
bmRleCA4M2JlYTFmN2RmNmQuLmM1ZjMwYzUxNTY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9T
Y3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAorKysgYi9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCkBA
IC02OTgsNiArNjk4LDcgQEAgUGRmSlNWaWV3ZXJFbmFibGVkOgogICAgIFdlYktpdExlZ2FjeToK
ICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICAgV2ViS2l0OgorICAgICAgIlBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oV1BFKSI6IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICAgV2ViQ29y
ZToKICAgICAgIGRlZmF1bHQ6IGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVhYmQ3ZDZiZWYxLi4xYzZl
NThkN2I1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMi0wMy0wNyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBBZGQgaW5pdGlhbCBzdXBwb3J0IGZvciBQREYgZG9jdW1lbnRzIHVzaW5nIFBERi5qcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIGxvYWRpbmcgUERGIGRvY3VtZW50cyB1c2luZyBQREYuanMuCisKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjppc1BERkpTUmVzb3Vy
Y2VMb2FkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UpOgor
ICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkVHJlYXRBc1VuaXF1ZU9yaWdpbik6CisgICAgICAgICogcGxhdGZvcm0vTGVnYWN5U2NoZW1l
UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbHRpblNlY3VyZVNjaGVtZXMpOgor
CiAyMDIyLTAzLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlcGxhY2UgSW50UmVjdEV4dGVudCB3aXRoIFJlY3RFZGdlczxpbnQ+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYWRjM2MzY2RiOWIuLmJhMjU4
MjhjMjlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0y
NDcsNyArMjQ3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogI2VuZGlmCiAKICNp
ZiBVU0UoU09VUCkKLSAgICBpZiAobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoInJlc291cmNl
IikpIHsKKyAgICBpZiAobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoInJlc291cmNlIikgfHwg
aXNQREZKU1Jlc291cmNlTG9hZCgpKSB7CiAgICAgICAgIGxvYWRHUmVzb3VyY2UoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTg2OSw3ICs4NjksNyBAQCBib29sIFJlc291cmNlTG9hZGVy
Ojppc1F1aWNrTG9va1Jlc291cmNlKCkgY29uc3QKIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNQ
REZKU1Jlc291cmNlTG9hZCgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIGlmICgh
bV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoIndlYmtpdC1wZGZqcy12aWV3ZXIiKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291
cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVz
b3VyY2VMb2FkZXJTb3VwLmNwcAppbmRleCAwYWUzMTVjNDI1YmUuLjEyNjMyZDZlNjdkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3Bw
CkBAIC03Nyw3ICs3Nyw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQog
ICAgIGdfdGFza19ydW5faW5fdGhyZWFkKHRhc2suZ2V0KCksIFtdKEdUYXNrKiB0YXNrLCBncG9p
bnRlciwgZ3BvaW50ZXIgdGFza0RhdGEsIEdDYW5jZWxsYWJsZSopIHsKICAgICAgICAgVVJMIHVy
bCh7IH0sIFN0cmluZzo6ZnJvbVVURjgoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHRhc2tEYXRh
KSkpOwogICAgICAgICBHRXJyb3IqIGVycm9yID0gbnVsbHB0cjsKLSAgICAgICAgR0J5dGVzKiBi
eXRlcyA9IGdfcmVzb3VyY2VzX2xvb2t1cF9kYXRhKHVybC5wYXRoKCkudXRmOCgpLmRhdGEoKSwg
R19SRVNPVVJDRV9MT09LVVBfRkxBR1NfTk9ORSwgJmVycm9yKTsKKyAgICAgICAgR0J5dGVzKiBi
eXRlcyA9IGdfcmVzb3VyY2VzX2xvb2t1cF9kYXRhKHVybC5wcm90b2NvbElzKCJ3ZWJraXQtcGRm
anMtdmlld2VyIikgPyBtYWtlU3RyaW5nKCIvb3JnL3dlYmtpdC9wZGZqcyIsIHVybC5wYXRoKCku
dG9TdHJpbmcoKSkudXRmOCgpLmRhdGEoKSA6IHVybC5wYXRoKCkudXRmOCgpLmRhdGEoKSwKKyAg
ICAgICAgICAgIEdfUkVTT1VSQ0VfTE9PS1VQX0ZMQUdTX05PTkUsICZlcnJvcik7CiAgICAgICAg
IGlmICghYnl0ZXMpCiAgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX2Vycm9yKHRhc2ssIGVycm9y
KTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRl
eCBiNDIwNGZjZGFlMmIuLjYxNmVjOWI5NDU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAKQEAgLTEyMSw2ICsxMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdEFz
VW5pcXVlT3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShXUEUpCiAgICAgICAgIHx8IHVybC5wcm90b2NvbElzKCJyZXNvdXJjZSIpCisg
ICAgICAgIHx8IHVybC5wcm90b2NvbElzKCJ3ZWJraXQtcGRmanMtdmlld2VyIikKICNlbmRpZgog
ICAgICAgICB8fCB1cmwucHJvdG9jb2xJcygiYmxvYiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAK
aW5kZXggYzkyMjNmZDg5ZGFlLi5lYmVmM2ZmMjU5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBz
dGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkKICNp
ZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICAgICAgInJlc291cmNlIl9zLAog
I2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgICAgICAid2Via2l0LXBkZmpzLXZpZXdlciJf
cywKICNlbmRpZgogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY0NTgwZDZiNGVkMS4uZmFlOGE2NTI3NGE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAzLTA3ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBpbml0
aWFsIHN1cHBvcnQgZm9yIFBERiBkb2N1bWVudHMgdXNpbmcgUERGLmpzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc1MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWlsZCBQREYuanMgcmVzb3VyY2Vz
IGludG8gdGhlIGxpYnJhcnkuCisKKyAgICAgICAgKiBQZGZKU0dSZXNvdXJjZXMuY21ha2U6IEFk
ZGVkLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV1BF
LmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhblNob3dNSU1FVHlwZSk6IENsYWltIHRvIHN1cHBvcnQg
UERGIGRvY3VtZW50cyB3aGVuIFBERi5qcyBpcyBlbmFibGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuU2hv
d01JTUVUeXBlIGNvbnN0KTogRGl0dG8uCisKIDIwMjItMDMtMDQgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCBzZXR0aW5nIE5TVVJMSXNFeGNsdWRlZEZy
b21CYWNrdXBLZXkgYXR0cmlidXRlIGZvciBsb2NhbFNvcmFnZURpcmVjdG9yeSBpbiBVSSBwcm9j
ZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BkZkpTR1Jlc291cmNlcy5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQvUGRmSlNHUmVzb3VyY2VzLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNDA1Zjg2ZDY3ZWU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9QZGZKU0dSZXNvdXJjZXMuY21ha2UKQEAgLTAsMCArMSwyOSBAQAorbWFjcm8oV0VC
S0lUX0JVSUxEX1BERkpTX0dSRVNPVVJDRVMgX2Rlcml2ZWRfc291cmNlc19kaXIpCisgICAgYWRk
X2N1c3RvbV9jb21tYW5kKAorICAgICAgICBPVVRQVVQgJHtfZGVyaXZlZF9zb3VyY2VzX2Rpcn0v
UGRmSlNHUmVzb3VyY2VCdW5kbGUueG1sCisgICAgICAgIERFUEVORFMgJHtUT09MU19ESVJ9L2ds
aWIvZ2VuZXJhdGUtcGRmanMtZ3Jlc291cmNlLW1hbmlmZXN0LnB5CisgICAgICAgIENPTU1BTkQg
JHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtUT09MU19ESVJ9L2dsaWIvZ2VuZXJhdGUtcGRmanMtZ3Jl
c291cmNlLW1hbmlmZXN0LnB5IC0taW5wdXQ9JHtUSElSRFBBUlRZX0RJUn0vcGRmanMgLS1vdXRw
dXQ9JHtfZGVyaXZlZF9zb3VyY2VzX2Rpcn0vUGRmSlNHUmVzb3VyY2VCdW5kbGUueG1sCisgICAg
ICAgIFZFUkJBVElNCisgICAgKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBP
VVRQVVQgJHtfZGVyaXZlZF9zb3VyY2VzX2Rpcn0vUGRmSlNHUmVzb3VyY2VCdW5kbGUuYworICAg
ICAgICBERVBFTkRTICR7X2Rlcml2ZWRfc291cmNlc19kaXJ9L1BkZkpTR1Jlc291cmNlQnVuZGxl
LnhtbAorICAgICAgICBDT01NQU5EIGdsaWItY29tcGlsZS1yZXNvdXJjZXMgLS1nZW5lcmF0ZSAt
LXNvdXJjZWRpcj0ke1RISVJEUEFSVFlfRElSfS9wZGZqcyAtLXRhcmdldD0ke19kZXJpdmVkX3Nv
dXJjZXNfZGlyfS9QZGZKU0dSZXNvdXJjZUJ1bmRsZS5jICR7X2Rlcml2ZWRfc291cmNlc19kaXJ9
L1BkZkpTR1Jlc291cmNlQnVuZGxlLnhtbAorICAgICAgICBWRVJCQVRJTQorICAgICkKKworICAg
IGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgT1VUUFVUICR7X2Rlcml2ZWRfc291cmNlc19k
aXJ9L1BkZkpTR1Jlc291cmNlQnVuZGxlRXh0cmFzLnhtbAorICAgICAgICBERVBFTkRTICR7VE9P
TFNfRElSfS9nbGliL2dlbmVyYXRlLXBkZmpzLWdyZXNvdXJjZS1tYW5pZmVzdC5weQorICAgICAg
ICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7VE9PTFNfRElSfS9nbGliL2dlbmVyYXRl
LXBkZmpzLWdyZXNvdXJjZS1tYW5pZmVzdC5weSAtLWlucHV0PSR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvcGRmanMtZXh0cmFzIC0tb3V0cHV0PSR7X2Rlcml2ZWRfc291cmNlc19kaXJ9L1BkZkpTR1Jl
c291cmNlQnVuZGxlRXh0cmFzLnhtbAorICAgICAgICBWRVJCQVRJTQorICAgICkKKworICAgIGFk
ZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgT1VUUFVUICR7X2Rlcml2ZWRfc291cmNlc19kaXJ9
L1BkZkpTR1Jlc291cmNlQnVuZGxlRXh0cmFzLmMKKyAgICAgICAgREVQRU5EUyAke19kZXJpdmVk
X3NvdXJjZXNfZGlyfS9QZGZKU0dSZXNvdXJjZUJ1bmRsZUV4dHJhcy54bWwKKyAgICAgICAgQ09N
TUFORCBnbGliLWNvbXBpbGUtcmVzb3VyY2VzIC0tZ2VuZXJhdGUgLS1zb3VyY2VkaXI9JHtXRUJD
T1JFX0RJUn0vTW9kdWxlcy9wZGZqcy1leHRyYXMgLS10YXJnZXQ9JHtfZGVyaXZlZF9zb3VyY2Vz
X2Rpcn0vUGRmSlNHUmVzb3VyY2VCdW5kbGVFeHRyYXMuYyAke19kZXJpdmVkX3NvdXJjZXNfZGly
fS9QZGZKU0dSZXNvdXJjZUJ1bmRsZUV4dHJhcy54bWwKKyAgICAgICAgVkVSQkFUSU0KKyAgICAp
CitlbmRtYWNybygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA0OGQxODIwZGRhZjAuLmE2
MjRlM2UzOTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xLDQgKzEsNSBAQAogaW5j
bHVkZShJbnNwZWN0b3JHUmVzb3VyY2VzLmNtYWtlKQoraW5jbHVkZShQZGZKU0dSZXNvdXJjZXMu
Y21ha2UpCiAKIHNldChXZWJLaXRfT1VUUFVUX05BTUUgd2Via2l0Mmd0ay0ke1dFQktJVEdUS19B
UElfVkVSU0lPTn0pCiBzZXQoV2ViUHJvY2Vzc19PVVRQVVRfTkFNRSBXZWJLaXRXZWJQcm9jZXNz
KQpAQCAtNTMsNiArNTQsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMK
IAogbGlzdChBUFBFTkQgV2ViS2l0X0RFUklWRURfU09VUkNFUwogICAgICR7V2ViS2l0Mkd0a19E
RVJJVkVEX1NPVVJDRVNfRElSfS9JbnNwZWN0b3JHUmVzb3VyY2VCdW5kbGUuYworICAgICR7V2Vi
S2l0Mkd0a19ERVJJVkVEX1NPVVJDRVNfRElSfS9QZGZKU0dSZXNvdXJjZUJ1bmRsZS5jCisgICAg
JHtXZWJLaXQyR3RrX0RFUklWRURfU09VUkNFU19ESVJ9L1BkZkpTR1Jlc291cmNlQnVuZGxlRXh0
cmFzLmMKICAgICAke1dlYktpdDJHdGtfREVSSVZFRF9TT1VSQ0VTX0RJUn0vV2ViS2l0RGlyZWN0
b3J5SW5wdXRTdHJlYW1EYXRhLmNwcAogICAgICR7V2ViS2l0Mkd0a19ERVJJVkVEX1NPVVJDRVNf
RElSfS9XZWJLaXRSZXNvdXJjZXNHUmVzb3VyY2VCdW5kbGUuYwogCkBAIC01NjAsNiArNTYzLDcg
QEAgYWRkX2N1c3RvbV9jb21tYW5kKAogKQogCiBXRUJLSVRfQlVJTERfSU5TUEVDVE9SX0dSRVNP
VVJDRVMoJHtXZWJLaXQyR3RrX0RFUklWRURfU09VUkNFU19ESVJ9KQorV0VCS0lUX0JVSUxEX1BE
RkpTX0dSRVNPVVJDRVMoJHtXZWJLaXQyR3RrX0RFUklWRURfU09VUkNFU19ESVJ9KQogCiBzZXQo
V2ViS2l0UmVzb3VyY2VzICIiKQogbGlzdChBUFBFTkQgV2ViS2l0UmVzb3VyY2VzICI8ZmlsZSBh
bGlhcz1cImNzcy9ndGstdGhlbWUuY3NzXCI+Z3RrLXRoZW1lLmNzczwvZmlsZT5cbiIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybVdQRS5jbWFrZQppbmRleCA1Mjk2NDQ2NTVlMDEuLmU3YWEzN2RhOGMyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xLDQgKzEsNSBAQAogaW5jbHVkZShJbnNwZWN0b3JHUmVz
b3VyY2VzLmNtYWtlKQoraW5jbHVkZShQZGZKU0dSZXNvdXJjZXMuY21ha2UpCiBpbmNsdWRlKEdO
VUluc3RhbGxEaXJzKQogCiBzZXQoV2ViS2l0X09VVFBVVF9OQU1FIFdQRVdlYktpdC0ke1dQRV9B
UElfVkVSU0lPTn0pCkBAIC0xMDksNiArMTEwLDggQEAgbGlzdChBUFBFTkQgV2ViS2l0X1VOSUZJ
RURfU09VUkNFX0xJU1RfRklMRVMKICkKIAogbGlzdChBUFBFTkQgV2ViS2l0X0RFUklWRURfU09V
UkNFUworICAgICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9L1BkZkpTR1Jlc291cmNlQnVu
ZGxlLmMKKyAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS9QZGZKU0dSZXNvdXJjZUJ1
bmRsZUV4dHJhcy5jCiAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vV2ViS2l0UmVz
b3VyY2VzR1Jlc291cmNlQnVuZGxlLmMKICAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElS
fS9XZWJLaXREaXJlY3RvcnlJbnB1dFN0cmVhbURhdGEuY3BwCiAKQEAgLTExNiw2ICsxMTksOCBA
QCBsaXN0KEFQUEVORCBXZWJLaXRfREVSSVZFRF9TT1VSQ0VTCiAgICAgJHtERVJJVkVEX1NPVVJD
RVNfV1BFX0FQSV9ESVJ9L1dlYktpdFdlYlByb2Nlc3NFbnVtVHlwZXMuY3BwCiApCiAKK1dFQktJ
VF9CVUlMRF9QREZKU19HUkVTT1VSQ0VTKCR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9KQor
CiBzZXQoV2ViS2l0X0RpcmVjdG9yeUlucHV0U3RyZWFtX0RBVEEKICAgICAke1dFQktJVF9ESVJ9
L05ldHdvcmtQcm9jZXNzL3NvdXAvUmVzb3VyY2VzL2RpcmVjdG9yeS5jc3MKICAgICAke1dFQktJ
VF9ESVJ9L05ldHdvcmtQcm9jZXNzL3NvdXAvUmVzb3VyY2VzL2RpcmVjdG9yeS5qcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMmZkZGI4NDk1MmQwLi41ZDli
ODE1Y2JkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MTkxMSw2ICsxOTExLDkgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmNhblNob3dNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZiAvLyBQTEFU
Rk9STShDT0NPQSkKIAorICAgIGlmIChtX3ByZWZlcmVuY2VzLT5wZGZKU1ZpZXdlckVuYWJsZWQo
KSAmJiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKG1pbWVUeXBlKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDlkYmFlOGUzMTA1Li5hMGVkZjQz
ZTZhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC02NDU2LDYgKzY0NTYsOSBAQCBib29sIFdlYlBhZ2U6OmNhblNob3dNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0CiAgICAgaWYgKHBs
dWdpbnNTdXBwb3J0KG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRpb25QbHVnaW5z
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBpZiAobV9wYWdlLT5zZXR0aW5ncygpLnBk
ZkpTVmlld2VyRW5hYmxlZCgpICYmIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUobWlt
ZVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRiY2Jj
ZjQ1MTdiZi4uOTAxMTI3M2U1ZjQwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDMtMDcgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRk
IGluaXRpYWwgc3VwcG9ydCBmb3IgUERGIGRvY3VtZW50cyB1c2luZyBQREYuanMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzUxMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHNjcmlwdCB0byBn
ZW5lcmF0ZSB0aGUgR1Jlc291cmNlIG1hbmlmZXN0IGZvciBQREYuanMgc291cmNlcy4KKworICAg
ICAgICAqIGdsaWIvZ2VuZXJhdGUtcGRmanMtZ3Jlc291cmNlLW1hbmlmZXN0LnB5OiBBZGRlZC4K
KyAgICAgICAgKGdldF9maWxlbmFtZXMpOgorICAgICAgICAoZ2V0X2ZpbGVuYW1lcy5zaG91bGRf
aWdub3JlX3Jlc291cmNlKToKKyAgICAgICAgKGdldF9maWxlbmFtZXMucmVzb3VyY2VfbmFtZSk6
CisgICAgICAgIChpc19jb21wcmVzc2libGUpOgorCiAyMDIyLTAzLTA0ICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBudWxsIGNoZWNrIGZvciBwYXRoIGlu
IG1ha2VBbGxEaXJlY3RvcmllcwpkaWZmIC0tZ2l0IGEvVG9vbHMvZ2xpYi9nZW5lcmF0ZS1wZGZq
cy1ncmVzb3VyY2UtbWFuaWZlc3QucHkgYi9Ub29scy9nbGliL2dlbmVyYXRlLXBkZmpzLWdyZXNv
dXJjZS1tYW5pZmVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAu
LmZiNGQwNzU1M2ZjZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2dsaWIvZ2VuZXJhdGUtcGRm
anMtZ3Jlc291cmNlLW1hbmlmZXN0LnB5CkBAIC0wLDAgKzEsOTQgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbjMKKyMgQ29weXJpZ2h0IChDKSAyMDIyIElnYWxpYSBTLkwuCisjCisjIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorCitpbXBvcnQgYXJn
cGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitWQUxJRF9FWFRFTlNJT05TID0gWycuaHRt
bCcsICcuanMnLCAnLmNzcycsICcuc3ZnJywgJy5wbmcnLCAnLmdpZicsICcuY3VyJywgJy5iY21h
cCcsICcucHJvcGVydGllcycsICcucGZiJywgJy50dGYnXQorQ09NUFJFU1NJQkxFX0VYVEVOU0lP
TlMgPSBbJy5odG1sJywgJy5qcycsICcuY3NzJywgJy5zdmcnLCAnLnByb3BlcnRpZXMnXQorQkFT
RV9ESVJTID0gWydwZGZqcy8nLCAncGRmanMtZXh0cmFzLyddCisKKworZGVmIGdldF9maWxlbmFt
ZXMoZGlyZWN0b3J5KToKKyAgICBmaWxlbmFtZXMgPSBbXQorCisgICAgZGVmIHNob3VsZF9pZ25v
cmVfcmVzb3VyY2UocmVzb3VyY2UpOgorICAgICAgICBpZiByZXNvdXJjZSA9PSAnc3R5bGUtY29j
b2EuY3NzJzoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgaWYgb3MucGF0aC5z
cGxpdGV4dChyZXNvdXJjZSlbMV0gbm90IGluIFZBTElEX0VYVEVOU0lPTlM6CisgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHJlc291cmNlX25hbWUoZmlsZW5hbWUpOgorICAgICAg
ICBmb3IgYmFzZV9kaXJlY3RvcnkgaW4gQkFTRV9ESVJTOgorICAgICAgICAgICAgYmFzZV9kaXJf
aW5kZXggPSBmaWxlbmFtZS5yZmluZChiYXNlX2RpcmVjdG9yeSkKKyAgICAgICAgICAgIGlmIGJh
c2VfZGlyX2luZGV4ICE9IC0xOgorICAgICAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZVtiYXNl
X2Rpcl9pbmRleCArIGxlbihiYXNlX2RpcmVjdG9yeSk6XQorICAgICAgICByZXR1cm4gTm9uZQor
CisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToKKyAgICAg
ICAgZGlycy5zb3J0KCkKKyAgICAgICAgZmlsZXMuc29ydCgpCisgICAgICAgIGZvciBmaWxlIGlu
IGZpbGVzOgorICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZSkK
KyAgICAgICAgICAgIG5hbWUgPSByZXNvdXJjZV9uYW1lKGZpbGVuYW1lKQorICAgICAgICAgICAg
aWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAg
ICMgVGhlIHJlc3VsdCBzaG91bGQgdXNlIGZvcndhcmQgc2xhc2hlcywgdGh1cyBtYWtlIHN1cmUg
YW55IG9zLXNwZWNpZmljCisgICAgICAgICAgICAjIHNlcGFyYXRvciwgaXMgcHJvcGVybHkgcmVw
bGFjZWQKKyAgICAgICAgICAgIGlmIG9zLnNlcCAhPSAnLyc6CisgICAgICAgICAgICAgICAgbmFt
ZSA9IG5hbWUucmVwbGFjZShvcy5zZXAsICcvJykKKyAgICAgICAgICAgIGlmIG5vdCBzaG91bGRf
aWdub3JlX3Jlc291cmNlKG5hbWUpOgorICAgICAgICAgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQo
bmFtZSkKKworICAgIHJldHVybiBmaWxlbmFtZXMKKworCitkZWYgaXNfY29tcHJlc3NpYmxlKGZp
bGVuYW1lKToKKyAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0gaW4gQ09N
UFJFU1NJQkxFX0VYVEVOU0lPTlMKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAg
IHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdHZW5lcmF0ZSBh
IEdSZXNvdXJjZXMgZmlsZSBmb3IgcGRmanMuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCct
LWlucHV0JywgdHlwZT1zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0aGUgaW5w
dXQgZGlyZWN0b3J5JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dCcsIG5hcmdz
PSc/JywgdHlwZT1hcmdwYXJzZS5GaWxlVHlwZSgndycpLCBkZWZhdWx0PXN5cy5zdGRvdXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0aGUgb3V0cHV0IGZpbGUnKQorCisgICAgYXJn
cyA9IHBhcnNlci5wYXJzZV9hcmdzKHN5cy5hcmd2WzE6XSkKKworICAgIGFyZ3Mub3V0cHV0Lndy
aXRlKCIiIjw/eG1sIHZlcnNpb249MS4wIGVuY29kaW5nPVVURi04Pz4KKzxncmVzb3VyY2VzPgor
ICAgIDxncmVzb3VyY2UgcHJlZml4PSIvb3JnL3dlYmtpdC9wZGZqcyI+CisiIiIpCisKKyAgICBm
b3IgZmlsZW5hbWUgaW4gZ2V0X2ZpbGVuYW1lcyhhcmdzLmlucHV0KToKKyAgICAgICAgbGluZSA9
ICcgICAgICAgIDxmaWxlJworICAgICAgICBpZiBpc19jb21wcmVzc2libGUoZmlsZW5hbWUpOgor
ICAgICAgICAgICAgbGluZSArPSAnIGNvbXByZXNzZWQ9InRydWUiJworICAgICAgICBpZiBub3Qg
ZmlsZW5hbWUuc3RhcnRzd2l0aCgnYnVpbGQvJykgYW5kIG5vdCBmaWxlbmFtZS5zdGFydHN3aXRo
KCd3ZWIvJyk6CisgICAgICAgICAgICBhbGlhcyA9ICdleHRyYXMvJyArIGZpbGVuYW1lCisgICAg
ICAgICAgICBsaW5lICs9ICcgYWxpYXM9IiVzIicgJSBhbGlhcworICAgICAgICBsaW5lICs9ICc+
JXM8L2ZpbGU+XG4nICUgZmlsZW5hbWUKKworICAgICAgICBhcmdzLm91dHB1dC53cml0ZShsaW5l
KQorCisgICAgYXJncy5vdXRwdXQud3JpdGUoIiIiICAgIDwvZ3Jlc291cmNlPgorPC9ncmVzb3Vy
Y2VzPgorIiIiKQo=
</data>
<flag name="review"
          id="481478"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
    <flag name="commit-queue"
          id="481490"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454213</attachid>
            <date>2022-03-09 02:57:36 -0800</date>
            <delta_ts>2022-03-09 02:57:36 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk-pdfjs.diff</filename>
            <type>text/plain</type>
            <size>17336</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZmFlZTY0MmMxOGMxLi40MzFlNDJkZjY5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjItMDMtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdW1dQRV0gQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgUERGIGRvY3VtZW50cyB1
c2luZyBQREYuanMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNzUxMworCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgQ2F0YW56YXJvLgorCisg
ICAgICAgIEVuYWJsZSBQREYuanMgZm9yIEdUSyBhbmQgV1BFIHBvcnRzLgorCisgICAgICAgICog
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWw6CisKIDIwMjIt
MDMtMDggIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGVh
cmx5IHJldHVybiBmb3IgZW1wdHkgcGF0aCBpbiBtYWtlQWxsRGlyZWN0b3JpZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFs
LnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sCmluZGV4IDgzYmVhMWY3ZGY2ZC4uYzVmMzBjNTE1Njk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1s
CisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVy
bmFsLnlhbWwKQEAgLTY5OCw2ICs2OTgsNyBAQCBQZGZKU1ZpZXdlckVuYWJsZWQ6CiAgICAgV2Vi
S2l0TGVnYWN5OgogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJLaXQ6CisgICAgICAiUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpIjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UK
ICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YzRhZDVh
NTdiY2MuLmRjYmQ1Y2Y4ODczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAz
LTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXVtXUEVdIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIFBERiBkb2N1bWVudHMgdXNpbmcg
UERGLmpzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzc1MTMKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIENhdGFuemFyby4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgbG9hZGluZyBQREYgZG9jdW1lbnRzIHVzaW5nIFBERi5qcy4KKwor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmlzUERGSlNSZXNvdXJjZUxvYWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9zb3VwL1Jlc291
cmNlTG9hZGVyU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6bG9h
ZEdSZXNvdXJjZSk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsdGluU2Vj
dXJlU2NoZW1lcyk6CisKIDIwMjItMDMtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFBERi5qcyBjb250ZW50IHNjcmlwdCBpcyBhZGRpbmcg
Y3VzdG9tIGNvY29hIHN0eWxlIHVuY29uZGl0aW9uYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWFkYzNjM2NkYjliLi5iYTI1ODI4YzI5ZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjQ3LDcgKzI0Nyw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICNlbmRpZgogCiAjaWYgVVNFKFNPVVApCi0g
ICAgaWYgKG1fcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJyZXNvdXJjZSIpKSB7CisgICAgaWYg
KG1fcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJyZXNvdXJjZSIpIHx8IGlzUERGSlNSZXNvdXJj
ZUxvYWQoKSkgewogICAgICAgICBsb2FkR1Jlc291cmNlKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC04NjksNyArODY5LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNRdWlja0xvb2tS
ZXNvdXJjZSgpIGNvbnN0CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzUERGSlNSZXNvdXJjZUxv
YWQoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8
fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICBpZiAoIW1fcmVxdWVzdC51cmwo
KS5wcm90b2NvbElzKCJ3ZWJraXQtcGRmanMtdmlld2VyIikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2Fk
ZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291
cC5jcHAKaW5kZXggMGFlMzE1YzQyNWJlLi4xMjYzMmQ2ZTY3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNzcsNyArNzcs
OCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICBnX3Rhc2tfcnVu
X2luX3RocmVhZCh0YXNrLmdldCgpLCBbXShHVGFzayogdGFzaywgZ3BvaW50ZXIsIGdwb2ludGVy
IHRhc2tEYXRhLCBHQ2FuY2VsbGFibGUqKSB7CiAgICAgICAgIFVSTCB1cmwoeyB9LCBTdHJpbmc6
OmZyb21VVEY4KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih0YXNrRGF0YSkpKTsKICAgICAgICAg
R0Vycm9yKiBlcnJvciA9IG51bGxwdHI7Ci0gICAgICAgIEdCeXRlcyogYnl0ZXMgPSBnX3Jlc291
cmNlc19sb29rdXBfZGF0YSh1cmwucGF0aCgpLnV0ZjgoKS5kYXRhKCksIEdfUkVTT1VSQ0VfTE9P
S1VQX0ZMQUdTX05PTkUsICZlcnJvcik7CisgICAgICAgIEdCeXRlcyogYnl0ZXMgPSBnX3Jlc291
cmNlc19sb29rdXBfZGF0YSh1cmwucHJvdG9jb2xJcygid2Via2l0LXBkZmpzLXZpZXdlciIpID8g
bWFrZVN0cmluZygiL29yZy93ZWJraXQvcGRmanMiLCB1cmwucGF0aCgpLnRvU3RyaW5nKCkpLnV0
ZjgoKS5kYXRhKCkgOiB1cmwucGF0aCgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICBHX1JF
U09VUkNFX0xPT0tVUF9GTEFHU19OT05FLCAmZXJyb3IpOwogICAgICAgICBpZiAoIWJ5dGVzKQog
ICAgICAgICAgICAgZ190YXNrX3JldHVybl9lcnJvcih0YXNrLCBlcnJvcik7CiAgICAgICAgIGVs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggYjQyMDRmY2RhZTJi
Li42MTZlYzliOTQ1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBA
IC0xMjEsNiArMTIxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbihj
b25zdCBVUkwmIHVybCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BF
KQogICAgICAgICB8fCB1cmwucHJvdG9jb2xJcygicmVzb3VyY2UiKQorICAgICAgICB8fCB1cmwu
cHJvdG9jb2xJcygid2Via2l0LXBkZmpzLXZpZXdlciIpCiAjZW5kaWYKICAgICAgICAgfHwgdXJs
LnByb3RvY29sSXMoImJsb2IiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCmluZGV4IGM5MjIzZmQ4
OWRhZS4uZWJlZjNmZjI1OTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVn
YWN5U2NoZW1lUmVnaXN0cnkuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIFNwYW48Y29u
c3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2VjdXJlU2NoZW1lcygpCiAjaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXUEUpCiAgICAgICAgICJyZXNvdXJjZSJfcywKICNlbmRpZgotI2lmIFBM
QVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKFdQRSkKICAgICAgICAgIndlYmtpdC1wZGZqcy12aWV3ZXIiX3MsCiAjZW5kaWYKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBjMTI4MTdlYzY4ZWMuLjA5YzlmOGU1OTcyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAyMi0wMy0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgaW5pdGlhbCBzdXBwb3J0IGZv
ciBQREYgZG9jdW1lbnRzIHVzaW5nIFBERi5qcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFl
bCBDYXRhbnphcm8uCisKKyAgICAgICAgQnVpbGQgUERGLmpzIHJlc291cmNlcyBpbnRvIHRoZSBs
aWJyYXJ5LgorCisgICAgICAgICogUGRmSlNHUmVzb3VyY2VzLmNtYWtlOiBBZGRlZC4KKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpjYW5TaG93TUlNRVR5cGUpOiBDbGFpbSB0byBzdXBwb3J0IFBERiBkb2N1bWVu
dHMgd2hlbiBQREYuanMgaXMgZW5hYmxlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhblNob3dNSU1FVHlwZSBj
b25zdCk6IERpdHRvLgorCiAyMDIyLTAzLTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBWb2xhdGlsaXR5U3RhdGUgdG8gU2V0Tm9uVm9s
YXRpbGVSZXN1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGRmSlNHUmVzb3VyY2VzLmNt
YWtlIGIvU291cmNlL1dlYktpdC9QZGZKU0dSZXNvdXJjZXMuY21ha2UKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jMWU2NDk1ODVhZjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BkZkpTR1Jlc291cmNlcy5jbWFrZQpAQCAtMCwwICsxLDM3IEBACitm
aWxlKEdMT0JfUkVDVVJTRSBQZGZKU0ZpbGVzICR7VEhJUkRQQVJUWV9ESVJ9L3BkZmpzLyopCisK
K3NldChQZGZKU0V4dHJhRmlsZXMKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3BkZmpzLWV4
dHJhcy9jb250ZW50LXNjcmlwdC5qcworKQorCittYWNybyhXRUJLSVRfQlVJTERfUERGSlNfR1JF
U09VUkNFUyBfZGVyaXZlZF9zb3VyY2VzX2RpcikKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisg
ICAgICAgIE9VVFBVVCAke19kZXJpdmVkX3NvdXJjZXNfZGlyfS9QZGZKU0dSZXNvdXJjZUJ1bmRs
ZS54bWwKKyAgICAgICAgREVQRU5EUyAke1RPT0xTX0RJUn0vZ2xpYi9nZW5lcmF0ZS1wZGZqcy1n
cmVzb3VyY2UtbWFuaWZlc3QucHkKKyAgICAgICAgICAgICAgICAke1BkZkpTRmlsZXN9CisgICAg
ICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtUT09MU19ESVJ9L2dsaWIvZ2VuZXJh
dGUtcGRmanMtZ3Jlc291cmNlLW1hbmlmZXN0LnB5IC0taW5wdXQ9JHtUSElSRFBBUlRZX0RJUn0v
cGRmanMgLS1vdXRwdXQ9JHtfZGVyaXZlZF9zb3VyY2VzX2Rpcn0vUGRmSlNHUmVzb3VyY2VCdW5k
bGUueG1sCisgICAgICAgIFZFUkJBVElNCisgICAgKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5k
KAorICAgICAgICBPVVRQVVQgJHtfZGVyaXZlZF9zb3VyY2VzX2Rpcn0vUGRmSlNHUmVzb3VyY2VC
dW5kbGUuYworICAgICAgICBERVBFTkRTICR7X2Rlcml2ZWRfc291cmNlc19kaXJ9L1BkZkpTR1Jl
c291cmNlQnVuZGxlLnhtbAorICAgICAgICBDT01NQU5EIGdsaWItY29tcGlsZS1yZXNvdXJjZXMg
LS1nZW5lcmF0ZSAtLXNvdXJjZWRpcj0ke1RISVJEUEFSVFlfRElSfS9wZGZqcyAtLXRhcmdldD0k
e19kZXJpdmVkX3NvdXJjZXNfZGlyfS9QZGZKU0dSZXNvdXJjZUJ1bmRsZS5jICR7X2Rlcml2ZWRf
c291cmNlc19kaXJ9L1BkZkpTR1Jlc291cmNlQnVuZGxlLnhtbAorICAgICAgICBWRVJCQVRJTQor
ICAgICkKKworICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgT1VUUFVUICR7X2Rlcml2
ZWRfc291cmNlc19kaXJ9L1BkZkpTR1Jlc291cmNlQnVuZGxlRXh0cmFzLnhtbAorICAgICAgICBE
RVBFTkRTICR7VE9PTFNfRElSfS9nbGliL2dlbmVyYXRlLXBkZmpzLWdyZXNvdXJjZS1tYW5pZmVz
dC5weQorICAgICAgICAgICAgICAgICR7UGRmSlNFeHRyYUZpbGVzfQorICAgICAgICBDT01NQU5E
ICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7VE9PTFNfRElSfS9nbGliL2dlbmVyYXRlLXBkZmpzLWdy
ZXNvdXJjZS1tYW5pZmVzdC5weSAtLWlucHV0PSR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvcGRmanMt
ZXh0cmFzIC0tb3V0cHV0PSR7X2Rlcml2ZWRfc291cmNlc19kaXJ9L1BkZkpTR1Jlc291cmNlQnVu
ZGxlRXh0cmFzLnhtbAorICAgICAgICBWRVJCQVRJTQorICAgICkKKworICAgIGFkZF9jdXN0b21f
Y29tbWFuZCgKKyAgICAgICAgT1VUUFVUICR7X2Rlcml2ZWRfc291cmNlc19kaXJ9L1BkZkpTR1Jl
c291cmNlQnVuZGxlRXh0cmFzLmMKKyAgICAgICAgREVQRU5EUyAke19kZXJpdmVkX3NvdXJjZXNf
ZGlyfS9QZGZKU0dSZXNvdXJjZUJ1bmRsZUV4dHJhcy54bWwKKyAgICAgICAgQ09NTUFORCBnbGli
LWNvbXBpbGUtcmVzb3VyY2VzIC0tZ2VuZXJhdGUgLS1zb3VyY2VkaXI9JHtXRUJDT1JFX0RJUn0v
TW9kdWxlcy9wZGZqcy1leHRyYXMgLS10YXJnZXQ9JHtfZGVyaXZlZF9zb3VyY2VzX2Rpcn0vUGRm
SlNHUmVzb3VyY2VCdW5kbGVFeHRyYXMuYyAke19kZXJpdmVkX3NvdXJjZXNfZGlyfS9QZGZKU0dS
ZXNvdXJjZUJ1bmRsZUV4dHJhcy54bWwKKyAgICAgICAgVkVSQkFUSU0KKyAgICApCitlbmRtYWNy
bygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA0OGQxODIwZGRhZjAuLmE2MjRlM2UzOTJi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xLDQgKzEsNSBAQAogaW5jbHVkZShJbnNw
ZWN0b3JHUmVzb3VyY2VzLmNtYWtlKQoraW5jbHVkZShQZGZKU0dSZXNvdXJjZXMuY21ha2UpCiAK
IHNldChXZWJLaXRfT1VUUFVUX05BTUUgd2Via2l0Mmd0ay0ke1dFQktJVEdUS19BUElfVkVSU0lP
Tn0pCiBzZXQoV2ViUHJvY2Vzc19PVVRQVVRfTkFNRSBXZWJLaXRXZWJQcm9jZXNzKQpAQCAtNTMs
NiArNTQsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogbGlzdChB
UFBFTkQgV2ViS2l0X0RFUklWRURfU09VUkNFUwogICAgICR7V2ViS2l0Mkd0a19ERVJJVkVEX1NP
VVJDRVNfRElSfS9JbnNwZWN0b3JHUmVzb3VyY2VCdW5kbGUuYworICAgICR7V2ViS2l0Mkd0a19E
RVJJVkVEX1NPVVJDRVNfRElSfS9QZGZKU0dSZXNvdXJjZUJ1bmRsZS5jCisgICAgJHtXZWJLaXQy
R3RrX0RFUklWRURfU09VUkNFU19ESVJ9L1BkZkpTR1Jlc291cmNlQnVuZGxlRXh0cmFzLmMKICAg
ICAke1dlYktpdDJHdGtfREVSSVZFRF9TT1VSQ0VTX0RJUn0vV2ViS2l0RGlyZWN0b3J5SW5wdXRT
dHJlYW1EYXRhLmNwcAogICAgICR7V2ViS2l0Mkd0a19ERVJJVkVEX1NPVVJDRVNfRElSfS9XZWJL
aXRSZXNvdXJjZXNHUmVzb3VyY2VCdW5kbGUuYwogCkBAIC01NjAsNiArNTYzLDcgQEAgYWRkX2N1
c3RvbV9jb21tYW5kKAogKQogCiBXRUJLSVRfQlVJTERfSU5TUEVDVE9SX0dSRVNPVVJDRVMoJHtX
ZWJLaXQyR3RrX0RFUklWRURfU09VUkNFU19ESVJ9KQorV0VCS0lUX0JVSUxEX1BERkpTX0dSRVNP
VVJDRVMoJHtXZWJLaXQyR3RrX0RFUklWRURfU09VUkNFU19ESVJ9KQogCiBzZXQoV2ViS2l0UmVz
b3VyY2VzICIiKQogbGlzdChBUFBFTkQgV2ViS2l0UmVzb3VyY2VzICI8ZmlsZSBhbGlhcz1cImNz
cy9ndGstdGhlbWUuY3NzXCI+Z3RrLXRoZW1lLmNzczwvZmlsZT5cbiIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQ
RS5jbWFrZQppbmRleCA1Mjk2NDQ2NTVlMDEuLmU3YWEzN2RhOGMyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
V1BFLmNtYWtlCkBAIC0xLDQgKzEsNSBAQAogaW5jbHVkZShJbnNwZWN0b3JHUmVzb3VyY2VzLmNt
YWtlKQoraW5jbHVkZShQZGZKU0dSZXNvdXJjZXMuY21ha2UpCiBpbmNsdWRlKEdOVUluc3RhbGxE
aXJzKQogCiBzZXQoV2ViS2l0X09VVFBVVF9OQU1FIFdQRVdlYktpdC0ke1dQRV9BUElfVkVSU0lP
Tn0pCkBAIC0xMDksNiArMTEwLDggQEAgbGlzdChBUFBFTkQgV2ViS2l0X1VOSUZJRURfU09VUkNF
X0xJU1RfRklMRVMKICkKIAogbGlzdChBUFBFTkQgV2ViS2l0X0RFUklWRURfU09VUkNFUworICAg
ICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9L1BkZkpTR1Jlc291cmNlQnVuZGxlLmMKKyAg
ICAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS9QZGZKU0dSZXNvdXJjZUJ1bmRsZUV4dHJh
cy5jCiAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vV2ViS2l0UmVzb3VyY2VzR1Jl
c291cmNlQnVuZGxlLmMKICAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS9XZWJLaXRE
aXJlY3RvcnlJbnB1dFN0cmVhbURhdGEuY3BwCiAKQEAgLTExNiw2ICsxMTksOCBAQCBsaXN0KEFQ
UEVORCBXZWJLaXRfREVSSVZFRF9TT1VSQ0VTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV1BFX0FQ
SV9ESVJ9L1dlYktpdFdlYlByb2Nlc3NFbnVtVHlwZXMuY3BwCiApCiAKK1dFQktJVF9CVUlMRF9Q
REZKU19HUkVTT1VSQ0VTKCR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9KQorCiBzZXQoV2Vi
S2l0X0RpcmVjdG9yeUlucHV0U3RyZWFtX0RBVEEKICAgICAke1dFQktJVF9ESVJ9L05ldHdvcmtQ
cm9jZXNzL3NvdXAvUmVzb3VyY2VzL2RpcmVjdG9yeS5jc3MKICAgICAke1dFQktJVF9ESVJ9L05l
dHdvcmtQcm9jZXNzL3NvdXAvUmVzb3VyY2VzL2RpcmVjdG9yeS5qcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODIyODZkMmZlMGQ1Li41YjM2ZjNiZmM4N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTkwNSw2ICsx
OTA1LDkgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUobWlt
ZVR5cGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIGlmIChtX3ByZWZlcmVuY2VzLT5w
ZGZKU1ZpZXdlckVuYWJsZWQoKSAmJiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKG1p
bWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAvLyBPbiBNYWMsIHdlIGNhbiBzaG93IFBERnMuCiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6
OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUobWltZVR5cGUpICYmICFXZWJQcm9jZXNzUG9vbDo6
b21pdFBERlN1cHBvcnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggMDlkYmFlOGUzMTA1Li5hMGVkZjQzZTZhYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02NDU2LDYgKzY0NTYsOSBA
QCBib29sIFdlYlBhZ2U6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBGdW5jdGlvbjxib29sKGNvbnN0CiAgICAgaWYgKHBsdWdpbnNTdXBwb3J0KG1pbWVUeXBl
LCBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRpb25QbHVnaW5zKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKKyAgICBpZiAobV9wYWdlLT5zZXR0aW5ncygpLnBkZkpTVmlld2VyRW5hYmxlZCgpICYm
IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUobWltZVR5cGUpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDUxYzE0MmZjMzc4Ni4uY2M3NThiZGFlZTkw
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMjItMDMtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIGluaXRpYWwgc3VwcG9ydCBmb3Ig
UERGIGRvY3VtZW50cyB1c2luZyBQREYuanMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNzUxMworCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwg
Q2F0YW56YXJvLgorCisgICAgICAgIEFkZCBhIHNjcmlwdCB0byBnZW5lcmF0ZSB0aGUgR1Jlc291
cmNlIG1hbmlmZXN0IGZvciBQREYuanMgc291cmNlcy4KKworICAgICAgICAqIGdsaWIvZ2VuZXJh
dGUtcGRmanMtZ3Jlc291cmNlLW1hbmlmZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKGdldF9maWxl
bmFtZXMpOgorICAgICAgICAoZ2V0X2ZpbGVuYW1lcy5zaG91bGRfaWdub3JlX3Jlc291cmNlKToK
KyAgICAgICAgKGdldF9maWxlbmFtZXMucmVzb3VyY2VfbmFtZSk6CisgICAgICAgIChpc19jb21w
cmVzc2libGUpOgorICAgICAgICAqIGd0ay9tYW5pZmVzdC50eHQuaW46IEFkZCBwZGZqcyB0byB0
YXJiYWxscy4KKyAgICAgICAgKiB3cGUvbWFuaWZlc3QudHh0LmluOiBEaXR0by4KKwogMjAyMi0w
My0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS11bV1BFXSBEbyBub3QgYWRkIG5ldyBtb2R1bGVzIHVuZGVyIFRoaXJkUGFydHkgdG8g
dGhlIHRhcmJhbGwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlv
bnMuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAKaW5kZXggZGUw
OTI2MzE2Mzk3Li5jYjA4MzViZTg1ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdE9wdGlvbnMuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlv
bnMuY3BwCkBAIC0xMTYsNiArMTE2LDcgQEAgY29uc3QgVGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9u
czo6ZGVmYXVsdHMoKQogICAgICAgICAgICAgeyAiT2Zmc2NyZWVuQ2FudmFzRW5hYmxlZCIsIHRy
dWUgfSwKICAgICAgICAgICAgIHsgIk9mZnNjcmVlbkNhbnZhc0luV29ya2Vyc0VuYWJsZWQiLCB0
cnVlIH0sCiAgICAgICAgICAgICB7ICJQYWdlVmlzaWJpbGl0eUJhc2VkUHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJQZGZKU1ZpZXdlckVuYWJsZWQi
LCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiUGx1Z2luc0VuYWJsZWQiLCB0cnVlIH0sCiAgICAg
ICAgICAgICB7ICJSZXF1aXJlc1VzZXJHZXN0dXJlRm9yQXVkaW9QbGF5YmFjayIsIGZhbHNlIH0s
CiAgICAgICAgICAgICB7ICJSZXF1aXJlc1VzZXJHZXN0dXJlRm9yTWVkaWFQbGF5YmFjayIsIGZh
bHNlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9nbGliL2dlbmVyYXRlLXBkZmpzLWdyZXNvdXJjZS1t
YW5pZmVzdC5weSBiL1Rvb2xzL2dsaWIvZ2VuZXJhdGUtcGRmanMtZ3Jlc291cmNlLW1hbmlmZXN0
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMC4uN2MzZGMyMWQ1MWYx
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvZ2xpYi9nZW5lcmF0ZS1wZGZqcy1ncmVzb3VyY2Ut
bWFuaWZlc3QucHkKQEAgLTAsMCArMSw5MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyBD
b3B5cmlnaHQgKEMpIDIwMjIgSWdhbGlhIFMuTC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0
IG9zCitpbXBvcnQgc3lzCisKK1ZBTElEX0VYVEVOU0lPTlMgPSBbJy5odG1sJywgJy5qcycsICcu
Y3NzJywgJy5zdmcnLCAnLnBuZycsICcuZ2lmJywgJy5jdXInLCAnLmJjbWFwJywgJy5wcm9wZXJ0
aWVzJywgJy5wZmInLCAnLnR0ZiddCitDT01QUkVTU0lCTEVfRVhURU5TSU9OUyA9IFsnLmh0bWwn
LCAnLmpzJywgJy5jc3MnLCAnLnN2ZycsICcucHJvcGVydGllcyddCitCQVNFX0RJUlMgPSBbJ3Bk
ZmpzLycsICdwZGZqcy1leHRyYXMvJ10KKworCitkZWYgZ2V0X2ZpbGVuYW1lcyhkaXJlY3Rvcnkp
OgorICAgIGZpbGVuYW1lcyA9IFtdCisKKyAgICBkZWYgc2hvdWxkX2lnbm9yZV9yZXNvdXJjZShy
ZXNvdXJjZSk6CisgICAgICAgIGlmIG9zLnBhdGguc3BsaXRleHQocmVzb3VyY2UpWzFdIG5vdCBp
biBWQUxJRF9FWFRFTlNJT05TOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBy
ZXNvdXJjZV9uYW1lKGZpbGVuYW1lKToKKyAgICAgICAgZm9yIGJhc2VfZGlyZWN0b3J5IGluIEJB
U0VfRElSUzoKKyAgICAgICAgICAgIGJhc2VfZGlyX2luZGV4ID0gZmlsZW5hbWUucmZpbmQoYmFz
ZV9kaXJlY3RvcnkpCisgICAgICAgICAgICBpZiBiYXNlX2Rpcl9pbmRleCAhPSAtMToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmlsZW5hbWVbYmFzZV9kaXJfaW5kZXggKyBsZW4oYmFzZV9kaXJl
Y3RvcnkpOl0KKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGZvciByb290LCBkaXJzLCBmaWxl
cyBpbiBvcy53YWxrKGRpcmVjdG9yeSk6CisgICAgICAgIGRpcnMuc29ydCgpCisgICAgICAgIGZp
bGVzLnNvcnQoKQorICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgIGlmIG9z
LnBhdGguYmFzZW5hbWUocm9vdCkgPT0gJ2NvY29hJzoKKyAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZSkKKyAgICAg
ICAgICAgIG5hbWUgPSByZXNvdXJjZV9uYW1lKGZpbGVuYW1lKQorICAgICAgICAgICAgaWYgbmFt
ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgVGhl
IHJlc3VsdCBzaG91bGQgdXNlIGZvcndhcmQgc2xhc2hlcywgdGh1cyBtYWtlIHN1cmUgYW55IG9z
LXNwZWNpZmljCisgICAgICAgICAgICAjIHNlcGFyYXRvciBpcyBwcm9wZXJseSByZXBsYWNlZC4K
KyAgICAgICAgICAgIGlmIG9zLnNlcCAhPSAnLyc6CisgICAgICAgICAgICAgICAgbmFtZSA9IG5h
bWUucmVwbGFjZShvcy5zZXAsICcvJykKKyAgICAgICAgICAgIGlmIG5vdCBzaG91bGRfaWdub3Jl
X3Jlc291cmNlKG5hbWUpOgorICAgICAgICAgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQobmFtZSkK
KworICAgIHJldHVybiBmaWxlbmFtZXMKKworCitkZWYgaXNfY29tcHJlc3NpYmxlKGZpbGVuYW1l
KToKKyAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0gaW4gQ09NUFJFU1NJ
QkxFX0VYVEVOU0lPTlMKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHBhcnNl
ciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdHZW5lcmF0ZSBhIEdSZXNv
dXJjZXMgZmlsZSBmb3IgcGRmanMuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWlucHV0
JywgdHlwZT1zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0aGUgaW5wdXQgZGly
ZWN0b3J5JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dCcsIG5hcmdzPSc/Jywg
dHlwZT1hcmdwYXJzZS5GaWxlVHlwZSgndycpLCBkZWZhdWx0PXN5cy5zdGRvdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSd0aGUgb3V0cHV0IGZpbGUnKQorCisgICAgYXJncyA9IHBh
cnNlci5wYXJzZV9hcmdzKHN5cy5hcmd2WzE6XSkKKworICAgIGFyZ3Mub3V0cHV0LndyaXRlKCIi
Ijw/eG1sIHZlcnNpb249MS4wIGVuY29kaW5nPVVURi04Pz4KKzxncmVzb3VyY2VzPgorICAgIDxn
cmVzb3VyY2UgcHJlZml4PSIvb3JnL3dlYmtpdC9wZGZqcyI+CisiIiIpCisKKyAgICBmb3IgZmls
ZW5hbWUgaW4gZ2V0X2ZpbGVuYW1lcyhhcmdzLmlucHV0KToKKyAgICAgICAgbGluZSA9ICcgICAg
ICAgIDxmaWxlJworICAgICAgICBpZiBpc19jb21wcmVzc2libGUoZmlsZW5hbWUpOgorICAgICAg
ICAgICAgbGluZSArPSAnIGNvbXByZXNzZWQ9InRydWUiJworICAgICAgICBpZiBub3QgZmlsZW5h
bWUuc3RhcnRzd2l0aCgnYnVpbGQvJykgYW5kIG5vdCBmaWxlbmFtZS5zdGFydHN3aXRoKCd3ZWIv
Jyk6CisgICAgICAgICAgICBhbGlhcyA9ICdleHRyYXMvJyArIGZpbGVuYW1lCisgICAgICAgICAg
ICBsaW5lICs9ICcgYWxpYXM9IiVzIicgJSBhbGlhcworICAgICAgICBsaW5lICs9ICc+JXM8L2Zp
bGU+XG4nICUgZmlsZW5hbWUKKworICAgICAgICBhcmdzLm91dHB1dC53cml0ZShsaW5lKQorCisg
ICAgYXJncy5vdXRwdXQud3JpdGUoIiIiICAgIDwvZ3Jlc291cmNlPgorPC9ncmVzb3VyY2VzPgor
IiIiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL21hbmlmZXN0LnR4dC5pbiBiL1Rvb2xzL2d0ay9t
YW5pZmVzdC50eHQuaW4KaW5kZXggMjc4ZDJlZGI2Yzg3Li5mOTcyMTcwZmI3ODggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL2d0ay9tYW5pZmVzdC50eHQuaW4KKysrIGIvVG9vbHMvZ3RrL21hbmlmZXN0LnR4
dC5pbgpAQCAtNjAsNiArNjAsNyBAQCBleGNsdWRlIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29s
cwogZXhjbHVkZSBTb3VyY2UvVGhpcmRQYXJ0eQogZGlyZWN0b3J5IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFCiBkaXJlY3RvcnkgU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QKK2RpcmVjdG9yeSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9wZGZqcwogZGlyZWN0b3J5IFNvdXJjZS9UaGlyZFBhcnR5L3hkZ21pbWUK
IAogZXhjbHVkZSBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvd3Bl
L21hbmlmZXN0LnR4dC5pbiBiL1Rvb2xzL3dwZS9tYW5pZmVzdC50eHQuaW4KaW5kZXggMzk2YTI0
MDc4NGQxLi4xMTA5MTMyMTk2YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9tYW5pZmVzdC50eHQu
aW4KKysrIGIvVG9vbHMvd3BlL21hbmlmZXN0LnR4dC5pbgpAQCAtNjAsNiArNjAsNyBAQCBleGNs
dWRlIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scwogZXhjbHVkZSBTb3VyY2UvVGhpcmRQYXJ0
eQogZGlyZWN0b3J5IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFCiBkaXJlY3RvcnkgU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QKK2RpcmVjdG9yeSBTb3VyY2UvVGhpcmRQYXJ0eS9wZGZqcwogZGlyZWN0
b3J5IFNvdXJjZS9UaGlyZFBhcnR5L3hkZ21pbWUKIAogZXhjbHVkZSBTb3VyY2UvV2ViS2l0L1Jl
c291cmNlcwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>