<?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>100287</bug_id>
          
          <creation_ts>2012-10-24 14:17:40 -0700</creation_ts>
          <short_desc>REGRESSION(r132303): Triggering crashes on many popular websites (Requested by leviw|gardening on #webkit).</short_desc>
          <delta_ts>2012-10-24 18:45:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>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>88606</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>leviw</cc>
    
    <cc>morrita</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>750035</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 14:17:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/132303 broke the build:
Triggering crashes on many popular websites (Requested by leviw|gardening on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750038</commentid>
    <comment_count>1</comment_count>
      <attachid>170470</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 14:18:27 -0700</bug_when>
    <thetext>Created attachment 170470
ROLLOUT of r132303

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750041</commentid>
    <comment_count>2</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-10-24 14:22:43 -0700</bug_when>
    <thetext>Apologies if this isn&apos;t the right fix, but some major sites are crashing in style calculation in this window and this is the most likely culprit.

Regression window: http://trac.webkit.org/log?action=stop_on_copy&amp;mode=stop_on_copy&amp;rev=132314&amp;stop_rev=132252&amp;limit=300&amp;verbose=on

Internal link for details: http://chromegw/chromebot/?action=buildsummary&amp;id=4002

Example backtrace:
eax=00000000 ebx=003dd518 ecx=00000016 edx=00000000 esi=00000002 edi=003dd538
eip=77e6013d esp=003dd4c8 ebp=003dd564 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll - 
ntdll!ZwWaitForMultipleObjects+0x15:
77e6013d 83c404          add     esp,4
0:000&gt; .ecxr;k50;.logclose;q
eax=00000000 ebx=00000000 ecx=00000016 edx=00000000 esi=00000004 edi=02a8ba00
eip=6ace66ba esp=003ddb18 ebp=003ddb44 iopl=0         nv up ei pl nz na po nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010202
chrome_6a1d0000!WebCore::Element::recalcStyle+0xda:
6ace66ba 8b7328          mov     esi,dword ptr [ebx+28h] ds:002b:00000028=????????
ChildEBP RetAddr  
003ddb44 6ace6ab6 chrome_6a1d0000!WebCore::Element::recalcStyle+0xda [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\dom\element.cpp @ 1125]
003ddb78 6acdad62 chrome_6a1d0000!WebCore::Element::recalcStyle+0x4d6 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\dom\element.cpp @ 1222]
003ddba4 6acdaec4 chrome_6a1d0000!WebCore::Document::recalcStyle+0x1e2 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\dom\document.cpp @ 1851]
003ddbb4 6b1a51b3 chrome_6a1d0000!WebCore::Document::updateStyleIfNeeded+0x44 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\dom\document.cpp @ 1905]
003de418 6b1ac563 chrome_6a1d0000!WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue+0xe3 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\css\csscomputedstyledeclaration.cpp @ 1441]
003de430 6c22a901 chrome_6a1d0000!WebCore::CSSComputedStyleDeclaration::getPropertyCSSValueInternal+0x13 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\css\csscomputedstyledeclaration.cpp @ 1179]
003de454 6adb5cdb chrome_6a1d0000!WebCore::V8CSSStyleDeclaration::namedPropertyGetter+0x91 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\bindings\v8\custom\v8cssstyledeclarationcustom.cpp @ 207]
003de4b8 6adb6959 chrome_6a1d0000!v8::internal::JSObject::GetPropertyWithInterceptor+0x1ab [c:\b\build\slave\win\build\src\v8\src\objects.cc @ 10505]
003de4d8 6adb88d6 chrome_6a1d0000!v8::internal::Object::GetProperty+0x189 [c:\b\build\slave\win\build\src\v8\src\objects.cc @ 656]
003de500 6ae5405c chrome_6a1d0000!v8::internal::Object::GetProperty+0x66 [c:\b\build\slave\win\build\src\v8\src\objects.cc @ 586]
003de57c 6ae54fd9 chrome_6a1d0000!v8::internal::LoadIC::Load+0x4ac [c:\b\build\slave\win\build\src\v8\src\ic.cc @ 923]
003de5b0 0c80a376 chrome_6a1d0000!v8::internal::LoadIC_Miss+0x79 [c:\b\build\slave\win\build\src\v8\src\ic.cc @ 2088]
WARNING: Frame IP not in any known module. Following frames may be wrong.
003de5d0 0c847df9 0xc80a376
003de5fc 0c84848b 0xc847df9
003de6fc 6adcd007 0xc84848b
003de73c 6adcdc8b chrome_6a1d0000!v8::internal::Invoke+0xf7 [c:\b\build\slave\win\build\src\v8\src\execution.cc @ 118]
003de778 6ad903ed chrome_6a1d0000!v8::internal::Execution::Call+0x17b [c:\b\build\slave\win\build\src\v8\src\execution.cc @ 179]
003de7cc 6b20d8a6 chrome_6a1d0000!v8::Script::Run+0x1bd [c:\b\build\slave\win\build\src\v8\src\api.cc @ 1621]
003de7e4 6b0ca9f8 chrome_6a1d0000!WebCore::ScriptRunner::runCompiledScript+0x76 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\bindings\v8\scriptrunner.cpp @ 52]
003de83c 6b0cab3b chrome_6a1d0000!WebCore::ScriptController::compileAndRunScript+0x2a8 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\bindings\v8\scriptcontroller.cpp @ 282]
003de870 6ad1c940 chrome_6a1d0000!WebCore::ScriptController::evaluate+0xab [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\bindings\v8\scriptcontroller.cpp @ 308]
003de8ec 6afbe97d chrome_6a1d0000!WebCore::ScriptElement::executeScript+0x100 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\dom\scriptelement.cpp @ 303]
003de978 6afbed7c chrome_6a1d0000!WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent+0xbd [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\html\parser\htmlscriptrunner.cpp @ 140]
003de9e0 6afbf0c1 chrome_6a1d0000!WebCore::HTMLScriptRunner::executeParsingBlockingScripts+0x6c [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\html\parser\htmlscriptrunner.cpp @ 190]
003de9f0 6af8ca59 chrome_6a1d0000!WebCore::HTMLScriptRunner::execute+0x51 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\html\parser\htmlscriptrunner.cpp @ 180]
003dea18 6af8cad3 chrome_6a1d0000!WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder+0x69 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\html\parser\htmldocumentparser.cpp @ 201]
003dea2c 6af8d818 chrome_6a1d0000!WebCore::HTMLDocumentParser::canTakeNextToken+0x43 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\html\parser\htmldocumentparser.cpp @ 218]
003dea6c 6af8dc42 chrome_6a1d0000!WebCore::HTMLDocumentParser::pumpTokenizer+0xf8 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\html\parser\htmldocumentparser.cpp @ 269]
003dea7c 6af8dd41 chrome_6a1d0000!WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution+0x62 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\html\parser\htmldocumentparser.cpp @ 477]
003dea84 6acdc0ef chrome_6a1d0000!WebCore::HTMLDocumentParser::executeScriptsWaitingForStylesheets+0x31 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\html\parser\htmldocumentparser.cpp @ 536]
003dea8c 6acde9c3 chrome_6a1d0000!WebCore::Document::didRemoveAllPendingStylesheet+0x2f [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\dom\document.cpp @ 2889]
003dea94 6af7bc47 chrome_6a1d0000!WebCore::DocumentStyleSheetCollection::removePendingSheet+0x23 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\dom\documentstylesheetcollection.cpp @ 222]
003deaa0 6b08c28f chrome_6a1d0000!WebCore::HTMLLinkElement::sheetLoaded+0x57 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\html\htmllinkelement.cpp @ 363]
003deaac 6af7c55f chrome_6a1d0000!WebCore::StyleSheetContents::checkLoaded+0x6f [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\css\stylesheetcontents.cpp @ 347]
003deb2c 6b1c0ea4 chrome_6a1d0000!WebCore::HTMLLinkElement::setCSSStyleSheet+0x33f [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\html\htmllinkelement.cpp @ 335]
003deb6c 6b1c0aaf chrome_6a1d0000!WebCore::CachedCSSStyleSheet::checkNotify+0x74 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\loader\cache\cachedcssstylesheet.cpp @ 122]
003deb7c 6b2d33d7 chrome_6a1d0000!WebCore::CachedCSSStyleSheet::data+0x13f [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\loader\cache\cachedcssstylesheet.cpp @ 112]
003deb98 6b1c2393 chrome_6a1d0000!WebCore::SubresourceLoader::didFinishLoading+0x67 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\loader\subresourceloader.cpp @ 272]
003deba8 6c1f9cfd chrome_6a1d0000!WebCore::ResourceLoader::didFinishLoading+0x13 [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\loader\resourceloader.cpp @ 443]
003debbc 6bd34a3c chrome_6a1d0000!WebCore::ResourceHandleInternal::didFinishLoading+0x3d [c:\b\build\slave\win\build\src\third_party\webkit\source\webcore\platform\network\chromium\resourcehandle.cpp @ 157]
003dece0 6aae7de4 chrome_6a1d0000!webkit_glue::WebURLLoaderImpl::Context::OnCompletedRequest+0x1fc [c:\b\build\slave\win\build\src\webkit\glue\weburlloader_impl.cc @ 680]
003ded14 6aae7239 chrome_6a1d0000!content::ResourceDispatcher::OnRequestComplete+0xb4 [c:\b\build\slave\win\build\src\content\common\resource_dispatcher.cc @ 465]
003ded6c 6aae995d chrome_6a1d0000!ResourceMsg_RequestComplete::Dispatch,std::allocator &gt; const &amp;,base::TimeTicks const &amp;)&gt;+0x59 [c:\b\build\slave\win\build\src\content\common\resource_messages.h @ 250]
003dee14 6aae9e5b chrome_6a1d0000!content::ResourceDispatcher::DispatchMessageW+0x25d [c:\b\build\slave\win\build\src\content\common\resource_dispatcher.cc @ 557]
003deef0 6aad582e chrome_6a1d0000!content::ResourceDispatcher::OnMessageReceived+0x23b [c:\b\build\slave\win\build\src\content\common\resource_dispatcher.cc @ 272]
003def5c 6aa872f0 chrome_6a1d0000!content::ChildThread::OnMessageReceived+0x1e [c:\b\build\slave\win\build\src\content\common\child_thread.cc @ 242]
003defa0 6b61be96 chrome_6a1d0000!IPC::ChannelProxy::Context::OnDispatchMessage+0xe0 [c:\b\build\slave\win\build\src\ipc\ipc_channel_proxy.cc @ 267]
003defb0 6a6ba187 chrome_6a1d0000!base::internal::Invoker&lt;2,base::internal::BindState,void __cdecl(content::UtilityProcessHostClient *,IPC::Message const &amp;),void __cdecl(content::UtilityProcessHostClient *,IPC::Message)&gt;,void __cdecl(content::UtilityProcessHostClient *,IPC::Message const &amp;)&gt;::Run+0x16 [c:\b\build\slave\win\build\src\base\bind_internal.h @ 1256]
003df244 6a6bc49a chrome_6a1d0000!MessageLoop::RunTask+0x317 [c:\b\build\slave\win\build\src\base\message_loop.cc @ 472]
003df2e0 6a6f406d chrome_6a1d0000!MessageLoop::DoWork+0x4ba [c:\b\build\slave\win\build\src\base\message_loop.cc @ 662]
003df3b4 6a6bb5fd chrome_6a1d0000!base::MessagePumpDefault::Run+0x11d [c:\b\build\slave\win\build\src\base\message_pump_default.cc @ 29]
003df47c 6a6dfd23 chrome_6a1d0000!MessageLoop::RunInternal+0x9d [c:\b\build\slave\win\build\src\base\message_loop.cc @ 427]
003df484 6a6b99b6 chrome_6a1d0000!base::RunLoop::Run+0x13 [c:\b\build\slave\win\build\src\base\run_loop.cc @ 46]
003df4a8 6bad9c55 chrome_6a1d0000!MessageLoop::Run+0x16 [c:\b\build\slave\win\build\src\base\message_loop.cc @ 308]
003df878 6a6244ca chrome_6a1d0000!content::RendererMain+0x385 [c:\b\build\slave\win\build\src\content\renderer\renderer_main.cc @ 242]
003df954 6a6246bd chrome_6a1d0000!content::RunNamedProcessTypeMain+0xca [c:\b\build\slave\win\build\src\content\app\content_main_runner.cc @ 448]
003dfa70 6a621590 chrome_6a1d0000!content::ContentMainRunnerImpl::Run+0x14d [c:\b\build\slave\win\build\src\content\app\content_main_runner.cc @ 741]
003dfa80 6a1d6540 chrome_6a1d0000!content::ContentMain+0x30 [c:\b\build\slave\win\build\src\content\app\content_main.cc @ 35]
003dfab4 012aab2b chrome_6a1d0000!ChromeMain+0x20 [c:\b\build\slave\win\build\src\chrome\app\chrome_main.cc @ 28]
003dfb30 012aac18 chrome!MainDllLoader::Launch+0x16b [c:\b\build\slave\win\build\src\chrome\app\client_util.cc @ 441]
003dfb54 012aac96 chrome!RunChrome+0x68 [c:\b\build\slave\win\build\src\chrome\app\chrome_exe_main_win.cc @ 77]
003dfb9c 01333bce chrome!wWinMain+0x56 [c:\b\build\slave\win\build\src\chrome\app\chrome_exe_main_win.cc @ 92]
003dfc2c 75b1339a chrome!__tmainCRTStartup+0x11a [f:\dd\vctools\crt_bld\self_x86\crt\src\crt0.c @ 275]
003dfc38 77e79ef2 kernel32!BaseThreadInitThunk+0x12
003dfc78 77e79ec5 ntdll!RtlInitializeExceptionChain+0x63
003dfc90 00000000 ntdll!RtlInitializeExceptionChain+0x36</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750062</commentid>
    <comment_count>3</comment_count>
      <attachid>170470</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 14:41:59 -0700</bug_when>
    <thetext>Comment on attachment 170470
ROLLOUT of r132303

Clearing flags on attachment: 170470

Committed r132403: &lt;http://trac.webkit.org/changeset/132403&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750063</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 14:42:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750288</commentid>
    <comment_count>5</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-10-24 18:45:04 -0700</bug_when>
    <thetext>Thanks for taking care of this. I and tasak@ is taking a look.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170470</attachid>
            <date>2012-10-24 14:18:27 -0700</date>
            <delta_ts>2012-10-24 14:41:59 -0700</delta_ts>
            <desc>ROLLOUT of r132303</desc>
            <filename>bug-100287-20121024212452.patch</filename>
            <type>text/plain</type>
            <size>40547</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY0M2YxMTY5YmNlZjVh
NjZkNGRiZTRhOGVkNzYwZWVjOGVhMjBkMS4uYmYzYmFhOTdhMzgyZjVmZTI0ODc3YzgxN2M0OTEy
Yjc0YmRmOWViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTEwLTI0ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTMyMzAzIGFuZCByMTMyMzEyLgorICAgICAgICBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzIzMDMKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMTMyMzEyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDAyODcKKworICAgICAgICBUcmlnZ2VyaW5nIGNyYXNoZXMgb24gbWFu
eSBwb3B1bGFyIHdlYnNpdGVzIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgbGV2aXd8Z2FyZGVuaW5n
IG9uICN3ZWJraXQpLgorCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6ZGV0ZWN0
QXRUb2tlbik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9DU1NQ
cm9wZXJ0eVNvdXJjZURhdGEuaDoKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSdWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNl
dDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRSZWdpb25SdWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFN0eWxlUnVsZSk6CisgICAgICAgICogY3NzL1J1bGVTZXQu
aDoKKyAgICAgICAgKFJ1bGVEYXRhKToKKyAgICAgICAgKFJ1bGVTZXQpOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VSdWxlU2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bG9jYXRlU2hhcmVkU3R5bGUpOgor
ICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUJhc2U6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUJh
c2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6Y29weSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIpOgorICAg
ICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2NvcGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5
VXNhZ2UpOgorICAgICAgICAqIGNzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoU3R5bGVTY29wZVJlc29sdmVyKToKKyAgICAgICAgKiBjc3MvU3R5
bGVTaGVldENvbnRlbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkUnVsZXNIYXZlRmFp
bGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyk6CisKIDIwMTItMTAtMjQgIEFtaSBGaXNjaG1hbiAg
PGZpc2NobWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBjYWxsIHRvIHNldE5lZWRzTGF5b3V0
IGR1cmluZyBSZW5kZXJWaWRlbzo6cGFpbnRSZXBsYWNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkuaW4KaW5kZXggNDA0NTExMzVjY2MwODUyYWZhNGUzOTliMTUxMTUzMGZkNDZlMWRiYy4uNGI4
OTRmYjk1OTdkZWY1MmEyNGI5M2ZkNTRlZjc0MzI0MGE1Yzc2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55LmluCkBAIC05NSw5ICs5NSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJy
b3Iodm9pZCosIGNvbnN0IGNoYXIqKQogJXRva2VuIFNVUFBPUlRTX1NZTQogI2VuZGlmCiAldG9r
ZW4gRk9OVF9GQUNFX1NZTQotI2lmIEVOQUJMRV9TSEFET1dfRE9NCi0ldG9rZW4gSE9TVF9TWU0K
LSNlbmRpZgogJXRva2VuIENIQVJTRVRfU1lNCiAldG9rZW4gTkFNRVNQQUNFX1NZTQogJXRva2Vu
IFZBUkZVTkNUSU9OCkBAIC0xOTAsOSArMTg3LDYgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXll
cnJvcih2b2lkKiwgY29uc3QgY2hhciopCiAldHlwZSA8cnVsZT4gcGFnZQogJXR5cGUgPHJ1bGU+
IG1hcmdpbl9ib3gKICV0eXBlIDxydWxlPiBmb250X2ZhY2UKLSNpZiBFTkFCTEVfU0hBRE9XX0RP
TQotJXR5cGUgPHJ1bGU+IGhvc3QKLSNlbmRpZgogJXR5cGUgPHJ1bGU+IGtleWZyYW1lcwogJXR5
cGUgPHJ1bGU+IGludmFsaWRfcnVsZQogJXR5cGUgPHJ1bGU+IHNhdmVfYmxvY2sKQEAgLTQwOCw5
ICs0MDIsNiBAQCB2YWxpZF9ydWxlOgogI2lmIEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVT
CiAgIHwgc3VwcG9ydHMKICNlbmRpZgotI2lmIEVOQUJMRV9TSEFET1dfRE9NCi0gIHwgaG9zdAot
I2VuZGlmCiAgIDsKIAogcnVsZToKQEAgLTkxMCwyNSArOTAxLDYgQEAgZm9udF9mYWNlOgogICAg
IH0KIDsKIAotI2lmIEVOQUJMRV9TSEFET1dfRE9NCi1iZWZvcmVfaG9zdF9ydWxlOgotICAgIC8q
IGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVT
b3VyY2VEYXRhOjpIT1NUX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLWhvc3Q6Ci0gICAgYmVmb3Jl
X2hvc3RfcnVsZSBIT1NUX1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UKLSAgICAn
eycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Js
b2NrIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUhvc3RSdWxlKCQ3KTsKLSAgICB9Ci0g
ICAgfCBiZWZvcmVfaG9zdF9ydWxlIEhPU1RfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9z
cGFjZSAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEo
KTsKLSAgICB9Ci0gICAgOwotI2VuZGlmCi0KIHJlZ2lvbl9zZWxlY3RvcjoKICAgICBzZWxlY3Rv
cl9saXN0IHsKICAgICAgICAgaWYgKCQxKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4
IDk1MzkyZTliODhmNmYyNGRmODAyNWQwZGIwMTM3YjA3OWZlMjMxOGEuLjBmMDg4NmYzNDNiYTdl
MzNiZTJhN2RiMWNkN2RlZmFkMTlmZmVhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBA
IC05MTg1LDEzICs5MTg1LDYgQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjpkZXRlY3RBdFRva2Vu
KGludCBsZW5ndGgsIGJvb2wgaGFzRXNjYXBlKQogICAgICAgICAgICAgbV90b2tlbiA9IEZPTlRf
RkFDRV9TWU07CiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAg
IGNhc2UgJ2gnOgotICAgICAgICBpZiAobGVuZ3RoID09IDUgJiYgaXNFcXVhbFRvQ1NTSWRlbnRp
ZmllcihuYW1lICsgMiwgIm9zdCIpKQotICAgICAgICAgICAgbV90b2tlbiA9IEhPU1RfU1lNOwot
ICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQogICAgIGNhc2UgJ2knOgogICAgICAgICBpZiAobGVu
Z3RoID09IDcgJiYgaXNFcXVhbFRvQ1NTSWRlbnRpZmllcihuYW1lICsgMiwgIm1wb3J0IikpIHsK
ICAgICAgICAgICAgIG1fcGFyc2luZ01vZGUgPSBNZWRpYVF1ZXJ5TW9kZTsKQEAgLTEwMDI0LDI0
ICsxMDAxNyw2IEBAIFN0eWxlUnVsZUJhc2UqIENTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxl
KCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0jaWYgRU5BQkxFKFNIQURPV19ET00pCi1TdHls
ZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNyZWF0ZUhvc3RSdWxlKFJ1bGVMaXN0KiBydWxlcykKLXsK
LSAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0g
ZmFsc2U7Ci0gICAgUmVmUHRyPFN0eWxlUnVsZUhvc3Q+IHJ1bGU7Ci0gICAgaWYgKHJ1bGVzKQot
ICAgICAgICBydWxlID0gU3R5bGVSdWxlSG9zdDo6Y3JlYXRlKCpydWxlcyk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIFJ1bGVMaXN0IGVtcHR5UnVsZXM7Ci0gICAgICAgIHJ1bGUgPSBTdHlsZVJ1bGVI
b3N0OjpjcmVhdGUoZW1wdHlSdWxlcyk7Ci0gICAgfQotICAgIFN0eWxlUnVsZUhvc3QqIHJlc3Vs
dCA9IHJ1bGUuZ2V0KCk7Ci0gICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkp
OwotICAgIHByb2Nlc3NBbmRBZGROZXdSdWxlVG9Tb3VyY2VUcmVlSWZOZWVkZWQoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmCi0KIHZvaWQgQ1NTUGFyc2VyOjphZGROYW1lc3BhY2Uo
Y29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgdXJpKQogewog
ICAgIGlmICghbV9zdHlsZVNoZWV0IHx8ICFtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDhiMDk2N2E4ZjZhN2E0NTNlMjNmZjJkNTY2MjIwMmQ3
ODRmOWUzZjIuLjVmOTllNjIyNmUwYzNiZTc3MzYyNDUxNWJmMWFjYmYwYjMxOGRmZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTI4Miw5ICsyODIsNiBAQCBwdWJsaWM6CiAgICAgU3R5bGVS
dWxlQmFzZSogY3JlYXRlUGFnZVJ1bGUoUGFzc093blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFn
ZVNlbGVjdG9yKTsKICAgICBTdHlsZVJ1bGVCYXNlKiBjcmVhdGVSZWdpb25SdWxlKENTU1NlbGVj
dG9yVmVjdG9yKiByZWdpb25TZWxlY3RvciwgUnVsZUxpc3QqIHJ1bGVzKTsKICAgICBTdHlsZVJ1
bGVCYXNlKiBjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2VsZWN0b3I6Ok1hcmdpbkJveFR5cGUpOwot
I2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIFN0eWxlUnVsZUJhc2UqIGNyZWF0ZUhvc3RSdWxl
KFJ1bGVMaXN0KiBydWxlcyk7Ci0jZW5kaWYKICAgICB2b2lkIHN0YXJ0RGVjbGFyYXRpb25zRm9y
TWFyZ2luQm94KCk7CiAgICAgdm9pZCBlbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oCmluZGV4IDA3OWVjMzM2
MjQ5NWMwNzk3OWI0NzVhZmRlNzc2MDIzODRjOTk5NmYuLjQ2OWJkYjYzMGMxYTVjNWRiYTk5M2Zk
MWFkNTllZDA3NDQ5YTU1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3Vy
Y2VEYXRhLmgKQEAgLTk0LDggKzk0LDcgQEAgc3RydWN0IENTU1J1bGVTb3VyY2VEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8Q1NTUnVsZVNvdXJjZURhdGE+IHsKICAgICAgICAgRk9OVF9GQUNFX1JV
TEUsCiAgICAgICAgIFBBR0VfUlVMRSwKICAgICAgICAgS0VZRlJBTUVTX1JVTEUsCi0gICAgICAg
IFJFR0lPTl9SVUxFLAotICAgICAgICBIT1NUX1JVTEUKKyAgICAgICAgUkVHSU9OX1JVTEUKICAg
ICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IGNyZWF0ZShU
eXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggYjNmMGZkZWUxZmNiYzMzNmQ3ZTRi
ZmU3OGMzMzNiNDNiZDQwMDgwOC4uZTJiZTU3NzFlMDI1ZjE0Y2Y5YTg1ZGU3ZTUxY2Q5YzVhMTMw
OTA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcApAQCAtMTA3LDE4ICsxMDcsMTggQEAgc3RhdGlj
IGlubGluZSBib29sIGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBDU1NT
ZWxlY3Rvciogc2VsZWN0b3IKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJ1bGVEYXRhOjpSdWxl
RGF0YShTdHlsZVJ1bGUqIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHBv
c2l0aW9uLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzKQorUnVsZURhdGE6OlJ1bGVEYXRhKFN0
eWxlUnVsZSogcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgcG9zaXRpb24s
IGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgYm9vbCBjYW5Vc2VGYXN0Q2hlY2tTZWxl
Y3RvciwgYm9vbCBpblJlZ2lvblJ1bGUpCiAgICAgOiBtX3J1bGUocnVsZSkKICAgICAsIG1fc2Vs
ZWN0b3JJbmRleChzZWxlY3RvckluZGV4KQogICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKICAg
ICAsIG1fc3BlY2lmaWNpdHkoc2VsZWN0b3IoKS0+c3BlY2lmaWNpdHkoKSkKLSAgICAsIG1faGFz
RmFzdENoZWNrYWJsZVNlbGVjdG9yKChhZGRSdWxlRmxhZ3MgJiBSdWxlQ2FuVXNlRmFzdENoZWNr
U2VsZWN0b3IpICYmIFNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3Ioc2Vs
ZWN0b3IoKSkpCisgICAgLCBtX2hhc0Zhc3RDaGVja2FibGVTZWxlY3RvcihjYW5Vc2VGYXN0Q2hl
Y2tTZWxlY3RvciAmJiBTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKHNl
bGVjdG9yKCkpKQogICAgICwgbV9oYXNNdWx0aXBhcnRTZWxlY3RvcighIXNlbGVjdG9yKCktPnRh
Z0hpc3RvcnkoKSkKICAgICAsIG1faGFzUmlnaHRtb3N0U2VsZWN0b3JNYXRjaGluZ0hUTUxCYXNl
ZE9uUnVsZUhhc2goaXNTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25SdWxlSGFzaChzZWxlY3Rv
cigpKSkKICAgICAsIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKFdlYkNvcmU6
OmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcihzZWxlY3RvcigpKSkKICAgICAsIG1f
bGlua01hdGNoVHlwZShTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtNYXRjaFR5cGUoc2Vs
ZWN0b3IoKSkpCi0gICAgLCBtX2hhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oYWRkUnVsZUZsYWdz
ICYgUnVsZUhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4pCi0gICAgLCBtX2lzSW5SZWdpb25SdWxl
KGFkZFJ1bGVGbGFncyAmIFJ1bGVJc0luUmVnaW9uUnVsZSkKKyAgICAsIG1faGFzRG9jdW1lbnRT
ZWN1cml0eU9yaWdpbihoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luKQorICAgICwgbV9pc0luUmVn
aW9uUnVsZShpblJlZ2lvblJ1bGUpCiB7CiAgICAgQVNTRVJUKG1fcG9zaXRpb24gPT0gcG9zaXRp
b24pOwogICAgIEFTU0VSVChtX3NlbGVjdG9ySW5kZXggPT0gc2VsZWN0b3JJbmRleCk7CkBAIC0y
MDcsMTQgKzIwNyw5IEBAIHZvaWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KEF0b21pY1N0cmluZ0lt
cGwqIGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3QgUnVsZURhCiAgICAgcnVsZXMtPmFwcGVu
ZChydWxlRGF0YSk7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1bGUs
IHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIEFkZFJ1bGVGbGFncyBhZGRSdWxlRmxhZ3MpCit2b2lk
IFJ1bGVTZXQ6OmFkZFJ1bGUoU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4
LCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2Vs
ZWN0b3IsIGJvb2wgaW5SZWdpb25SdWxlKQogewotICAgIFJ1bGVEYXRhIHJ1bGVEYXRhKHJ1bGUs
IHNlbGVjdG9ySW5kZXgsIG1fcnVsZUNvdW50KyssIGFkZFJ1bGVGbGFncyk7Ci0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGF0aG9zdFJ1bGVTcGVjaWZpY2l0eSA9IDB4MTAwMDAwOwotCi0gICAg
aWYgKGFkZFJ1bGVGbGFncyAmIFJ1bGVJc0hvc3RSdWxlKQotICAgICAgICBydWxlRGF0YS5pbmNy
ZWFzZVNwZWNpZmljaXR5KGF0aG9zdFJ1bGVTcGVjaWZpY2l0eSk7Ci0KKyAgICBSdWxlRGF0YSBy
dWxlRGF0YShydWxlLCBzZWxlY3RvckluZGV4LCBtX3J1bGVDb3VudCsrLCBoYXNEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luLCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvciwgaW5SZWdpb25SdWxlKTsKICAg
ICBjb2xsZWN0RmVhdHVyZXNGcm9tUnVsZURhdGEobV9mZWF0dXJlcywgcnVsZURhdGEpOwogCiAg
ICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gcnVsZURhdGEuc2VsZWN0b3IoKTsKQEAgLTI2OSwx
MiArMjY0LDEwIEBAIHZvaWQgUnVsZVNldDo6YWRkUmVnaW9uUnVsZShTdHlsZVJ1bGVSZWdpb24q
IHJlZ2lvblJ1bGUsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0CiAKICAgICAvLyBDb2xsZWN0IHRo
ZSByZWdpb24gcnVsZXMgaW50byBhIHJ1bGUgc2V0CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxT
dHlsZVJ1bGVCYXNlPiA+JiBjaGlsZFJ1bGVzID0gcmVnaW9uUnVsZS0+Y2hpbGRSdWxlcygpOwot
ICAgIEFkZFJ1bGVGbGFncyBhZGRSdWxlRmxhZ3MgPSBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
ID8gUnVsZUhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gOiBSdWxlSGFzTm9TcGVjaWFsU3RhdGU7
Ci0gICAgYWRkUnVsZUZsYWdzID0gc3RhdGljX2Nhc3Q8QWRkUnVsZUZsYWdzPihhZGRSdWxlRmxh
Z3MgfCBSdWxlQ2FuVXNlRmFzdENoZWNrU2VsZWN0b3IgfCBSdWxlSXNJblJlZ2lvblJ1bGUpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGlsZFJ1bGVzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIFN0eWxlUnVsZUJhc2UqIHJlZ2lvblN0eWxpbmdSdWxlID0gY2hpbGRSdWxlc1tpXS5n
ZXQoKTsKICAgICAgICAgaWYgKHJlZ2lvblN0eWxpbmdSdWxlLT5pc1N0eWxlUnVsZSgpKQotICAg
ICAgICAgICAgcmVnaW9uUnVsZVNldC0+YWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVs
ZSo+KHJlZ2lvblN0eWxpbmdSdWxlKSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgICAgIHJlZ2lv
blJ1bGVTZXQtPmFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihyZWdpb25TdHls
aW5nUnVsZSksIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIHRydWUsIHRydWUpOwogICAgIH0K
ICAgICAvLyBVcGRhdGUgdGhlICJnbG9iYWwiIHJ1bGUgY291bnQgc28gdGhhdCBwcm9wZXIgb3Jk
ZXIgaXMgbWFpbnRhaW5lZAogICAgIG1fcnVsZUNvdW50ID0gcmVnaW9uUnVsZVNldC0+bV9ydWxl
Q291bnQ7CkBAIC0yOTMsNyArMjg2LDYgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVl
dChTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHUKICAgICAg
ICAgICAgIGFkZFJ1bGVzRnJvbVNoZWV0KGltcG9ydFJ1bGUtPnN0eWxlU2hlZXQoKSwgbWVkaXVt
LCByZXNvbHZlciwgc2NvcGUpOwogICAgIH0KICAgICBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlP
cmlnaW4gPSByZXNvbHZlciAmJiByZXNvbHZlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+Y2FuUmVxdWVzdChzaGVldC0+YmFzZVVSTCgpKTsKLSAgICBBZGRSdWxlRmxhZ3MgYWRkUnVs
ZUZsYWdzID0gc3RhdGljX2Nhc3Q8QWRkUnVsZUZsYWdzPigoaGFzRG9jdW1lbnRTZWN1cml0eU9y
aWdpbiA/IFJ1bGVIYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luIDogMCkgfCAoIXNjb3BlID8gUnVs
ZUNhblVzZUZhc3RDaGVja1NlbGVjdG9yIDogMCkpOwogCiAgICAgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPiA+JiBydWxlcyA9IHNoZWV0LT5jaGlsZFJ1bGVzKCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVzLnNpemUoKTsgKytpKSB7CkBAIC0zMDEsNyArMjkz
LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMq
IHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHUKIAogICAgICAgICBBU1NFUlQoIXJ1bGUtPmlz
SW1wb3J0UnVsZSgpKTsKICAgICAgICAgaWYgKHJ1bGUtPmlzU3R5bGVSdWxlKCkpCi0gICAgICAg
ICAgICBhZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4ocnVsZSksIGFkZFJ1bGVG
bGFncyk7CisgICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4o
cnVsZSksIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sICFzY29wZSk7CiAgICAgICAgIGVsc2Ug
aWYgKHJ1bGUtPmlzUGFnZVJ1bGUoKSkKICAgICAgICAgICAgIGFkZFBhZ2VSdWxlKHN0YXRpY19j
YXN0PFN0eWxlUnVsZVBhZ2UqPihydWxlKSk7CiAgICAgICAgIGVsc2UgaWYgKHJ1bGUtPmlzTWVk
aWFSdWxlKCkpIHsKQEAgLTMxMyw3ICszMDUsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJv
bVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdQog
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBjaGlsZFJ1bGVzLnNpemUo
KTsgKytqKSB7CiAgICAgICAgICAgICAgICAgICAgIFN0eWxlUnVsZUJhc2UqIGNoaWxkUnVsZSA9
IGNoaWxkUnVsZXNbal0uZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFJ1bGUt
PmlzU3R5bGVSdWxlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRTdHlsZVJ1bGUoc3Rh
dGljX2Nhc3Q8U3R5bGVSdWxlKj4oY2hpbGRSdWxlKSwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihjaGls
ZFJ1bGUpLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCAhc2NvcGUpOwogICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChjaGlsZFJ1bGUtPmlzUGFnZVJ1bGUoKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZFBhZ2VSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZVBhZ2UqPihjaGlsZFJ1
bGUpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGRSdWxlLT5pc0ZvbnRGYWNl
UnVsZSgpICYmIHJlc29sdmVyKSB7CkBAIC0zNTUsMTkgKzM0NywxNSBAQCB2b2lkIFJ1bGVTZXQ6
OmFkZFJ1bGVzRnJvbVNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IE1lZGlh
UXVlcnlFdmFsdQogICAgICAgICAgICAgYWRkUmVnaW9uUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1
bGVSZWdpb24qPihydWxlKSwgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbik7CiAgICAgICAgIH0K
ICNlbmRpZgotI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgICAgICBlbHNlIGlmIChydWxlLT5p
c0hvc3RSdWxlKCkpCi0gICAgICAgICAgICByZXNvbHZlci0+YWRkSG9zdFJ1bGUoc3RhdGljX2Nh
c3Q8U3R5bGVSdWxlSG9zdCo+KHJ1bGUpLCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBzY29w
ZSk7Ci0jZW5kaWYKICAgICB9CiAgICAgaWYgKG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCkKICAg
ICAgICAgc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBSdWxlU2V0OjphZGRTdHlsZVJ1bGUoU3R5
bGVSdWxlKiBydWxlLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzKQordm9pZCBSdWxlU2V0Ojph
ZGRTdHlsZVJ1bGUoU3R5bGVSdWxlKiBydWxlLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmln
aW4sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IsIGJvb2wgaXNJblJlZ2lvblJ1bGUpCiB7
CiAgICAgZm9yIChzaXplX3Qgc2VsZWN0b3JJbmRleCA9IDA7IHNlbGVjdG9ySW5kZXggIT0gbm90
Rm91bmQ7IHNlbGVjdG9ySW5kZXggPSBydWxlLT5zZWxlY3Rvckxpc3QoKS5pbmRleE9mTmV4dFNl
bGVjdG9yQWZ0ZXIoc2VsZWN0b3JJbmRleCkpCi0gICAgICAgIGFkZFJ1bGUocnVsZSwgc2VsZWN0
b3JJbmRleCwgYWRkUnVsZUZsYWdzKTsKKyAgICAgICAgYWRkUnVsZShydWxlLCBzZWxlY3Rvcklu
ZGV4LCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBjYW5Vc2VGYXN0Q2hlY2tTZWxlY3Rvciwg
aXNJblJlZ2lvblJ1bGUpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgc2hyaW5rTWFwVmVjdG9y
c1RvRml0KFJ1bGVTZXQ6OkF0b21SdWxlTWFwJiBtYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAppbmRleCBh
MmZiZWNiYzAwYjJjYTFiNTMyZjQ5NmE5NWMwOTM1MDI2ZmE0ZjdkLi42NTc3MjM4YmE5MjM2YTlk
NjgxMDM5MTk1YTBkZDQzYTJlODA4MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKQEAgLTMxLDE0ICsz
MSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBBZGRSdWxlRmxhZ3MgewotICAg
IFJ1bGVIYXNOb1NwZWNpYWxTdGF0ZSAgICAgICAgID0gMCwKLSAgICBSdWxlSGFzRG9jdW1lbnRT
ZWN1cml0eU9yaWdpbiA9IDEsCi0gICAgUnVsZUNhblVzZUZhc3RDaGVja1NlbGVjdG9yICAgPSAx
IDw8IDEsCi0gICAgUnVsZUlzSW5SZWdpb25SdWxlICAgICAgICAgICAgPSAxIDw8IDIsCi0gICAg
UnVsZUlzSG9zdFJ1bGUgICAgICAgICAgICAgICAgPSAxIDw8IDMsCi19OwotCiBjbGFzcyBDU1NT
ZWxlY3RvcjsKIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9y
OwpAQCAtNDgsNyArNDAsNyBAQCBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CiAKIGNsYXNzIFJ1
bGVEYXRhIHsKIHB1YmxpYzoKLSAgICBSdWxlRGF0YShTdHlsZVJ1bGUqLCB1bnNpZ25lZCBzZWxl
Y3RvckluZGV4LCB1bnNpZ25lZCBwb3NpdGlvbiwgQWRkUnVsZUZsYWdzKTsKKyAgICBSdWxlRGF0
YShTdHlsZVJ1bGUqLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBwb3NpdGlvbiwg
Ym9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBib29sIGNhblVzZUZhc3RDaGVja1NlbGVj
dG9yLCBib29sIGluUmVnaW9uUnVsZSk7CiAKICAgICB1bnNpZ25lZCBwb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KICAgICBTdHlsZVJ1bGUqIHJ1bGUoKSBjb25zdCB7IHJl
dHVybiBtX3J1bGU7IH0KQEAgLTYzLDcgKzU1LDYgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxp
bmtNYXRjaFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2xpbmtNYXRjaFR5cGU7IH0KICAgICBib29s
IGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2hhc0RvY3VtZW50
U2VjdXJpdHlPcmlnaW47IH0KICAgICBib29sIGlzSW5SZWdpb25SdWxlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0luUmVnaW9uUnVsZTsgfQotICAgIHZvaWQgaW5jcmVhc2VTcGVjaWZpY2l0eSh1bnNp
Z25lZCB2YWx1ZSkgeyBtX3NwZWNpZmljaXR5ICs9IHZhbHVlOyB9CiAKICAgICAvLyBUcnkgdG8g
YmFsYW5jZSBiZXR3ZWVuIG1lbW9yeSB1c2FnZSAodGhlcmUgY2FuIGJlIGxvdHMgb2YgUnVsZURh
dGEgb2JqZWN0cykgYW5kIGdvb2QgZmlsdGVyaW5nIHBlcmZvcm1hbmNlLgogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBtYXhpbXVtSWRlbnRpZmllckNvdW50ID0gNDsKQEAgLTEwNyw4ICs5OCw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRl
bnRzKiwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYsIFN0eWxlUmVzb2x2ZXIqID0gMCwgY29u
c3QgQ29udGFpbmVyTm9kZSogPSAwKTsKIAotICAgIHZvaWQgYWRkU3R5bGVSdWxlKFN0eWxlUnVs
ZSosIEFkZFJ1bGVGbGFncyk7Ci0gICAgdm9pZCBhZGRSdWxlKFN0eWxlUnVsZSosIHVuc2lnbmVk
IHNlbGVjdG9ySW5kZXgsIEFkZFJ1bGVGbGFncyk7CisgICAgdm9pZCBhZGRTdHlsZVJ1bGUoU3R5
bGVSdWxlKiwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBib29sIGNhblVzZUZhc3RD
aGVja1NlbGVjdG9yLCBib29sIGlzSW5SZWdpb25SdWxlID0gZmFsc2UpOworICAgIHZvaWQgYWRk
UnVsZShTdHlsZVJ1bGUqLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCBib29sIGhhc0RvY3VtZW50
U2VjdXJpdHlPcmlnaW4sIGJvb2wgY2FuVXNlRmFzdENoZWNrU2VsZWN0b3IsIGJvb2wgaXNJblJl
Z2lvblJ1bGUgPSBmYWxzZSk7CiAgICAgdm9pZCBhZGRQYWdlUnVsZShTdHlsZVJ1bGVQYWdlKik7
CiAgICAgdm9pZCBhZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1h
cCYsIGNvbnN0IFJ1bGVEYXRhJik7CiAgICAgdm9pZCBhZGRSZWdpb25SdWxlKFN0eWxlUnVsZVJl
Z2lvbiosIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKaW5kZXggNGFkNTkzOWY0NzlhYTAzMzM3ODY5ZjkxNTVjNGM3N2EwZDVk
MjRlMy4uYWQ4ZGRjYjNjZDE4OGRhNzcwYzNjOTY1YmI1ZjU1MjE5OGIwMjk1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVkZSAi
U3R5bGVQZW5kaW5nSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJT
dHlsZVJ1bGVJbXBvcnQuaCIKKyNpbmNsdWRlICJTdHlsZVNjb3BlUmVzb2x2ZXIuaCIKICNpbmNs
dWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgog
I2luY2x1ZGUgIlRleHQuaCIKQEAgLTM3MSw3ICszNzIsNyBAQCBzdGF0aWMgUGFzc093blB0cjxS
dWxlU2V0PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVsZUZlYXR1cmU+JiBydWxlcykKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgT3duUHRyPFJ1bGVTZXQ+IHJ1bGVTZXQgPSBSdWxl
U2V0OjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlc1tpXS5ydWxlLCBydWxlc1tpXS5zZWxlY3Rvcklu
ZGV4LCBydWxlc1tpXS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luID8gUnVsZUhhc0RvY3VtZW50
U2VjdXJpdHlPcmlnaW4gOiBSdWxlSGFzTm9TcGVjaWFsU3RhdGUpOworICAgICAgICBydWxlU2V0
LT5hZGRSdWxlKHJ1bGVzW2ldLnJ1bGUsIHJ1bGVzW2ldLnNlbGVjdG9ySW5kZXgsIHJ1bGVzW2ld
Lmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGZhbHNlKTsKICAgICBydWxlU2V0LT5zaHJpbmtU
b0ZpdCgpOwogICAgIHJldHVybiBydWxlU2V0LnJlbGVhc2UoKTsKIH0KQEAgLTQxMCwxMiArNDEx
LDEyIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWdu
ZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQCiAgICAgICAgIGlmIChjc3NTaGVldC0+bWVk
aWFRdWVyaWVzKCkgJiYgIW1fbWVkaXVtLT5ldmFsKGNzc1NoZWV0LT5tZWRpYVF1ZXJpZXMoKSwg
dGhpcykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgU3R5bGVTaGVldENvbnRlbnRz
KiBzaGVldCA9IGNzc1NoZWV0LT5jb250ZW50cygpOwotI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQp
CiAgICAgICAgIGlmIChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IFN0eWxlU2NvcGVSZXNv
bHZlcjo6c2NvcGVGb3IoY3NzU2hlZXQpKSB7Ci0gICAgICAgICAgICBlbnN1cmVTY29wZVJlc29s
dmVyKCktPmVuc3VyZVJ1bGVTZXRGb3Ioc2NvcGUpLT5hZGRSdWxlc0Zyb21TaGVldChzaGVldCwg
Km1fbWVkaXVtLCB0aGlzLCBzY29wZSk7CisgICAgICAgICAgICBpZiAoIW1fc2NvcGVSZXNvbHZl
cikKKyAgICAgICAgICAgICAgICBtX3Njb3BlUmVzb2x2ZXIgPSBhZG9wdFB0cihuZXcgU3R5bGVT
Y29wZVJlc29sdmVyKCkpOworICAgICAgICAgICAgbV9zY29wZVJlc29sdmVyLT5lbnN1cmVSdWxl
U2V0Rm9yKHNjb3BlKS0+YWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsICptX21lZGl1bSwgdGhpcywg
c2NvcGUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAg
ICAgIG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHNoZWV0LCAqbV9tZWRpdW0sIHRo
aXMpOwogICAgICAgICBpZiAoIW1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuaXNFbXB0eSgp
KQpAQCAtNzA5LDEyICs3MTAsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnNvcnRBbmRUcmFuc2Zl
ck1hdGNoZWRSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0KQogdm9pZCBTdHlsZVJlc29sdmVyOjpt
YXRjaFNjb3BlZEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVt
cHR5UnVsZXMpCiB7CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkgfHwgRU5BQkxFKFNIQURPV19E
T00pCi0gICAgaWYgKCFtX3Njb3BlUmVzb2x2ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1h
dGNoSG9zdFJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVtcHR5UnVsZXMpOwotCi0gICAgaWYgKCFtX3Nj
b3BlUmVzb2x2ZXItPmhhc1Njb3BlZFN0eWxlcygpKQorICAgIGlmICghbV9zY29wZVJlc29sdmVy
IHx8ICFtX3Njb3BlUmVzb2x2ZXItPmhhc1Njb3BlZFN0eWxlcygpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBNYXRjaCBzY29wZWQgYXV0aG9yIHJ1bGVzIGJ5IHRyYXZlcnNpbmcgdGhlIHNj
b3BlZCBlbGVtZW50IHN0YWNrIChyZWJ1aWxkIGl0IGlmIGl0IGdvdCBpbmNvbnNpc3RlbnQpLgpA
QCAtNzQ2LDM1ICs3NDIsNiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9y
UnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdAogI2VuZGlmCiB9CiAK
LWlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNI
b3N0UnVsZXMoKQotewotI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIHJldHVybiBtX3Njb3Bl
UmVzb2x2ZXIgJiYgbV9zY29wZVJlc29sdmVyLT5zdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVz
SG9zdFJ1bGVzKG1fZWxlbWVudCk7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgot
fQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoSG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1
bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCi17Ci0jaWYgRU5BQkxFKFNIQURPV19ET00pCi0g
ICAgQVNTRVJUKG1fc2NvcGVSZXNvbHZlcik7Ci0KLSAgICBWZWN0b3I8UnVsZVNldCo+IG1hdGNo
ZWRSdWxlczsKLSAgICBtX3Njb3BlUmVzb2x2ZXItPm1hdGNoSG9zdFJ1bGVzKG1fZWxlbWVudCwg
bWF0Y2hlZFJ1bGVzKTsKLSAgICBpZiAobWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgTWF0Y2hPcHRpb25zIG9wdGlvbnMoaW5jbHVkZUVtcHR5UnVsZXMpOwot
ICAgIG9wdGlvbnMuc2NvcGUgPSBtX2VsZW1lbnQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbWF0
Y2hlZFJ1bGVzLnNpemUoKTsgaSA+IDA7IC0taSkKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXMobWF0Y2hlZFJ1bGVzLmF0KGktMSksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCBy
ZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKHJlc3VsdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGluY2x1ZGVFbXB0eVJ1bGVzKTsKLSNl
bmRpZgotfQotCiB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMoTWF0Y2hSZXN1
bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKIHsKICAgICBtX21hdGNoZWRSdWxl
cy5jbGVhcigpOwpAQCAtMTM2NSw5ICsxMzMyLDYgQEAgUmVuZGVyU3R5bGUqIFN0eWxlUmVzb2x2
ZXI6OmxvY2F0ZVNoYXJlZFN0eWxlKCkKICAgICAvLyBDYW4ndCBzaGFyZSBpZiBhdHRyaWJ1dGUg
cnVsZXMgYXBwbHkuCiAgICAgaWYgKHN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNSdWxlU2V0
KG1fdW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgLy8gQ2FuJ3Qgc2hhcmUgaWYgQGhvc3QgQC1ydWxlcyBhcHBseS4KLSAgICBpZiAoc3R5bGVT
aGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RSdWxlcygpKQotICAgICAgICByZXR1cm4gMDsKICAg
ICAvLyBUcmFja2luZyBjaGlsZCBpbmRleCByZXF1aXJlcyB1bmlxdWUgc3R5bGUgZm9yIGVhY2gg
bm9kZS4gVGhpcyBtYXkgZ2V0IHNldCBieSB0aGUgc2libGluZyBydWxlIG1hdGNoIGFib3ZlLgog
ICAgIGlmIChwYXJlbnRTdHlsZVByZXZlbnRzU2hhcmluZyhtX3BhcmVudFN0eWxlKSkKICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCAxYzg2ZTAyNzBm
ZjRmNGY3YTBlZWMwZmE2Y2I5ZTEwMDMyZDExY2JjLi41YjUxNGNlNTViNzhiYjNjMTc2ZDFkNmUy
ZWQzYzQwNjA2ZTg3M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTI5LDEw
ICsyOSw4IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgogI2luY2x1ZGUgIlJlbmRlclN0
eWxlLmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKLSNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3R5
bGVJbmhlcml0ZWREYXRhLmgiCi0jaW5jbHVkZSAiU3R5bGVTY29wZVJlc29sdmVyLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTgyLDcgKzgwLDYgQEAgY2xhc3MgU3R5bGVLZXlmcmFtZTsKIGNs
YXNzIFN0eWxlUGVuZGluZ0ltYWdlOwogY2xhc3MgU3R5bGVQcm9wZXJ0eVNldDsKIGNsYXNzIFN0
eWxlUnVsZTsKLWNsYXNzIFN0eWxlUnVsZUhvc3Q7CiBjbGFzcyBTdHlsZVJ1bGVLZXlmcmFtZXM7
CiBjbGFzcyBTdHlsZVJ1bGVQYWdlOwogY2xhc3MgU3R5bGVSdWxlUmVnaW9uOwpAQCAtMTQwLDkg
KzEzNyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvcFBhcmVudEVsZW1lbnQoRWxlbWVudCopOwog
ICAgIHZvaWQgcHVzaFBhcmVudFNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCopOwogICAgIHZv
aWQgcG9wUGFyZW50U2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290Kik7Ci0jaWYgRU5BQkxFKFNI
QURPV19ET00pCi0gICAgdm9pZCBhZGRIb3N0UnVsZShTdHlsZVJ1bGVIb3N0KiBydWxlLCBib29s
IGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKSB7
IGVuc3VyZVNjb3BlUmVzb2x2ZXIoKS0+YWRkSG9zdFJ1bGUocnVsZSwgaGFzRG9jdW1lbnRTZWN1
cml0eU9yaWdpbiwgc2NvcGUpOyB9Ci0jZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0g
MCwgU3R5bGVTaGFyaW5nQmVoYXZpb3IgPSBBbGxvd1N0eWxlU2hhcmluZywKICAgICAgICAgUnVs
ZU1hdGNoaW5nQmVoYXZpb3IgPSBNYXRjaEFsbFJ1bGVzLCBSZW5kZXJSZWdpb24qIHJlZ2lvbkZv
clN0eWxpbmcgPSAwKTsKQEAgLTE3MiwzMCArMTY2LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFw
cGVuZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVm
UHRyPENTU1N0eWxlU2hlZXQ+ID4mKTsKIAogcHJpdmF0ZToKLSNpZiBFTkFCTEUoU1RZTEVfU0NP
UEVEKSB8fCBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBTdHlsZVNjb3BlUmVzb2x2ZXIqIGVuc3Vy
ZVNjb3BlUmVzb2x2ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotI2lmIEVO
QUJMRShTSEFET1dfRE9NKQotICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhZG93RE9NRW5hYmxlZCgpIHx8IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2NvcGVk
RW5hYmxlZCgpKTsKLSNlbHNlCi0gICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzdHlsZVNjb3BlZEVuYWJsZWQoKSk7Ci0jZW5kaWYKLSNlbHNlCi0gICAgICAgIEFTU0VSVChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkpOwotI2VuZGlmCi0gICAg
ICAgIGlmICghbV9zY29wZVJlc29sdmVyKQotICAgICAgICAgICAgbV9zY29wZVJlc29sdmVyID0g
YWRvcHRQdHIobmV3IFN0eWxlU2NvcGVSZXNvbHZlcigpKTsKLSAgICAgICAgcmV0dXJuIG1fc2Nv
cGVSZXNvbHZlci5nZXQoKTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIHZvaWQgaW5pdEZvclN0eWxl
UmVzb2x2ZShFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgUHNldWRvSWQg
PSBOT1BTRVVETyk7CiAgICAgdm9pZCBpbml0RWxlbWVudChFbGVtZW50Kik7CiAgICAgdm9pZCBj
b2xsZWN0RmVhdHVyZXMoKTsKICAgICBSZW5kZXJTdHlsZSogbG9jYXRlU2hhcmVkU3R5bGUoKTsK
ICAgICBib29sIHN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNSdWxlU2V0KFJ1bGVTZXQqKTsK
LSAgICBib29sIHN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMoKTsKICAgICBO
b2RlKiBsb2NhdGVDb3VzaW5MaXN0KEVsZW1lbnQqIHBhcmVudCwgdW5zaWduZWQmIHZpc2l0ZWRO
b2RlQ291bnQpIGNvbnN0OwogICAgIFN0eWxlZEVsZW1lbnQqIGZpbmRTaWJsaW5nRm9yU3R5bGVT
aGFyaW5nKE5vZGUqLCB1bnNpZ25lZCYgY291bnQpIGNvbnN0OwogICAgIGJvb2wgY2FuU2hhcmVT
dHlsZVdpdGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqKSBjb25zdDsKQEAgLTM0OCw3ICszMjMsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgbWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wg
aW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hVc2VyUnVsZXMoTWF0Y2hSZXN1bHQm
LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIG1hdGNoU2NvcGVkQXV0aG9yUnVs
ZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKLSAgICB2b2lkIG1hdGNo
SG9zdFJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgdm9p
ZCBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50
JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yUmVnaW9uKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQm
IGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qLCBpbnQmIGZpcnN0UnVs
ZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNvbnN0IE1hdGNoT3B0aW9ucyYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlLmNwcAppbmRleCA2N2Y3YmM3MjgyNzAyZDVhZWM4YTM0MGRlNjZhNWVlYTMy
ZDBmZDE5Li43M2IwYWYyNmNlNDJhYTQ1OTRkOWI3NjE3OTZiMTlkNmE2YmI2NjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmNwcApAQCAtNzksOSArNzksNiBAQCB2b2lkIFN0eWxlUnVsZUJhc2U6
OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0CiAgICAgY2FzZSBLZXlmcmFtZXM6CiAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFN0eWxl
UnVsZUtleWZyYW1lcyo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5
T2JqZWN0SW5mbyk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEhvc3Q6Ci0gICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IFN0eWxlUnVsZUJsb2NrKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
VW5rbm93bjoKICAgICBjYXNlIENoYXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKQEAgLTEyMCw5
ICsxMTcsNiBAQCB2b2lkIFN0eWxlUnVsZUJhc2U6OmRlc3Ryb3koKQogICAgIGNhc2UgS2V5ZnJh
bWVzOgogICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8U3R5bGVSdWxlS2V5ZnJhbWVzKj4odGhp
cyk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEhvc3Q6Ci0gICAgICAgIGRlbGV0ZSBzdGF0
aWNfY2FzdDxTdHlsZVJ1bGVIb3N0Kj4odGhpcyk7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNl
IFVua25vd246CiAgICAgY2FzZSBDaGFyc2V0OgogICAgIGNhc2UgS2V5ZnJhbWU6CkBAIC0xNTYs
OCArMTUwLDYgQEAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBTdHlsZVJ1bGVCYXNlOjpjb3B5
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBLZXlmcmFtZXM6CiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZXMqPih0aGlzKS0+Y29w
eSgpOwotICAgIGNhc2UgSG9zdDoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFN0
eWxlUnVsZUhvc3QqPih0aGlzKS0+Y29weSgpOwogICAgIGNhc2UgVW5rbm93bjoKICAgICBjYXNl
IENoYXJzZXQ6CiAgICAgY2FzZSBLZXlmcmFtZToKQEAgLTE5OSw3ICsxOTEsNiBAQCBQYXNzUmVm
UHRyPENTU1J1bGU+IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNo
ZWV0KiBwYXJlbnRTaGVldAogICAgIGNhc2UgS2V5ZnJhbWVzOgogICAgICAgICBydWxlID0gV2Vi
S2l0Q1NTS2V5ZnJhbWVzUnVsZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFN0eWxlUnVsZUtleWZyYW1l
cyo+KHNlbGYpLCBwYXJlbnRTaGVldCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSG9zdDoK
ICAgICBjYXNlIFVua25vd246CiAgICAgY2FzZSBDaGFyc2V0OgogICAgIGNhc2UgS2V5ZnJhbWU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggYjdmZjUyMzI2Y2JmMjE4NDcyMWExMzQxYzgyOWEz
ODRmYzRhMzliOS4uZTE1ZjMyZTQwMmFhZjIwOGQzY2MwZmNjZDM1ODQ3N2IyMzAzNTYzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtNDYsNyArNDYsNiBAQCBwdWJsaWM6CiAgICAgICAgIFBh
Z2UsCiAgICAgICAgIEtleWZyYW1lcywKICAgICAgICAgS2V5ZnJhbWUsIC8vIE5vdCB1c2VkLiBU
aGVzZSBhcmUgaW50ZXJuYWxseSBub24tcnVsZSBTdHlsZUtleWZyYW1lIG9iamVjdHMuCi0gICAg
ICAgIEhvc3QsCiAgICAgICAgIFJlZ2lvbiA9IDE2CiAgICAgfTsKICAgICBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CkBAIC01OSw3ICs1OCw2
IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3R5bGVSdWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ID09IFN0eWxlOyB9CiAgICAgYm9vbCBpc1JlZ2lvblJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBl
KCkgPT0gUmVnaW9uOyB9CiAgICAgYm9vbCBpc0ltcG9ydFJ1bGUoKSBjb25zdCB7IHJldHVybiB0
eXBlKCkgPT0gSW1wb3J0OyB9Ci0gICAgYm9vbCBpc0hvc3RSdWxlKCkgY29uc3QgeyByZXR1cm4g
dHlwZSgpID09IEhvc3Q7IH0KIAogICAgIFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY29weSgp
IGNvbnN0OwogCkBAIC0yMjUsMjAgKzIyMyw2IEBAIHByaXZhdGU6CiAgICAgQ1NTU2VsZWN0b3JM
aXN0IG1fc2VsZWN0b3JMaXN0OwogfTsKIAotY2xhc3MgU3R5bGVSdWxlSG9zdCA6IHB1YmxpYyBT
dHlsZVJ1bGVCbG9jayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVSdWxl
SG9zdD4gY3JlYXRlKFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiYgYWRvcHRSdWxlcykK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlSG9zdChhZG9wdFJ1
bGVzKSk7Ci0gICAgfQotCi0gICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVIb3N0PiBjb3B5KCkgY29u
c3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUnVsZUhvc3QoKnRoaXMpKTsgfQotCi1wcml2
YXRlOgotICAgIFN0eWxlUnVsZUhvc3QoVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBh
ZG9wdFJ1bGVzKSA6IFN0eWxlUnVsZUJsb2NrKEhvc3QsIGFkb3B0UnVsZXMpIHsgfQotICAgIFN0
eWxlUnVsZUhvc3QoY29uc3QgU3R5bGVSdWxlSG9zdCYgbykgOiBTdHlsZVJ1bGVCbG9jayhvKSB7
IH0KLX07Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFN0eWxlUnVsZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCmluZGV4IDVmZjJiM2Uw
YjExNTQ5OTQ0N2UyMWM4NmY1OGY2NDYxMzAxY2YwZmQuLjg3NDAyYmFhNTk4MTAyNGVlNWQ2NDQ2
NWFkMTc4ZGNjYjc5ZGVhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNj
b3BlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2
ZXIuY3BwCkBAIC0yOSwxMCArMjksOCBAQAogCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkgfHwg
RU5BQkxFKFNIQURPV19ET00pCiAKLSNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRl
ICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ29udGV4dEZlYXR1cmVzLmgiCi0jaW5jbHVk
ZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgpAQCAtMTU2LDkxICsx
NTQsMTEgQEAgdm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJlc1RvKFJ1bGVG
ZWF0dXJlU2V0JiBmZWF0dXJlcykKICAgICAgICAgZmVhdHVyZXMuYWRkKGl0LT52YWx1ZS0+ZmVh
dHVyZXMoKSk7CiB9CiAKLWlubGluZSBSdWxlU2V0KiBTdHlsZVNjb3BlUmVzb2x2ZXI6OmVuc3Vy
ZUF0SG9zdFJ1bGVTZXRGb3IoY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCkKLXsKLSAgICBT
Y29wZWRSdWxlU2V0TWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9hdEhvc3RSdWxlcy5hZGQo
c2hhZG93Um9vdCwgbnVsbHB0cik7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gUnVsZVNldDo6Y3JlYXRlKCk7Ci0gICAg
cmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7Ci19Ci0KLWlubGluZSBSdWxl
U2V0KiBTdHlsZVNjb3BlUmVzb2x2ZXI6OmF0SG9zdFJ1bGVTZXRGb3IoY29uc3QgU2hhZG93Um9v
dCogc2hhZG93Um9vdCkgY29uc3QKLXsKLSAgICBTY29wZWRSdWxlU2V0TWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IG1fYXRIb3N0UnVsZXMuZmluZChzaGFkb3dSb290KTsKLSAgICByZXR1cm4gaXQg
IT0gbV9hdEhvc3RSdWxlcy5lbmQoKSA/IGl0LT52YWx1ZS5nZXQoKSA6IDA7Ci19Ci0KLXZvaWQg
U3R5bGVTY29wZVJlc29sdmVyOjphZGRIb3N0UnVsZShTdHlsZVJ1bGVIb3N0KiBob3N0UnVsZSwg
Ym9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29w
ZSkKLXsKLSAgICBpZiAoIXNjb3BlIHx8ICFzY29wZS0+aXNJblNoYWRvd1RyZWUoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHNjb3BlLT5zaGFkb3dS
b290KCk7Ci0gICAgaWYgKCFzaGFkb3dSb290IHx8ICFzaGFkb3dSb290LT5ob3N0KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFJ1bGVTZXQqIHJ1bGUgPSBlbnN1cmVBdEhvc3RSdWxlU2V0Rm9y
KHNoYWRvd1Jvb3QpOwotCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+
JiBjaGlsZFJ1bGVzID0gaG9zdFJ1bGUtPmNoaWxkUnVsZXMoKTsKLSAgICBBZGRSdWxlRmxhZ3Mg
YWRkUnVsZUZsYWdzID0gaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA/IFJ1bGVIYXNEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luIDogUnVsZUhhc05vU3BlY2lhbFN0YXRlOwotICAgIGFkZFJ1bGVGbGFn
cyA9IHN0YXRpY19jYXN0PEFkZFJ1bGVGbGFncz4oYWRkUnVsZUZsYWdzIHwgUnVsZUNhblVzZUZh
c3RDaGVja1NlbGVjdG9yIHwgUnVsZUlzSG9zdFJ1bGUpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjaGlsZFJ1bGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFN0eWxlUnVsZUJhc2Uq
IGhvc3RTdHlsaW5nUnVsZSA9IGNoaWxkUnVsZXNbaV0uZ2V0KCk7Ci0gICAgICAgIGlmIChob3N0
U3R5bGluZ1J1bGUtPmlzU3R5bGVSdWxlKCkpCi0gICAgICAgICAgICBydWxlLT5hZGRTdHlsZVJ1
bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4oaG9zdFN0eWxpbmdSdWxlKSwgYWRkUnVsZUZsYWdz
KTsKLSAgICB9Ci19Ci0KLWJvb2wgU3R5bGVTY29wZVJlc29sdmVyOjpzdHlsZVNoYXJpbmdDYW5k
aWRhdGVNYXRjaGVzSG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgaWYg
KG1fYXRIb3N0UnVsZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBF
bGVtZW50U2hhZG93KiBzaGFkb3cgPSBlbGVtZW50LT5zaGFkb3coKTsKLSAgICBpZiAoIXNoYWRv
dykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRklYTUUoOTk4MjcpOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk4MjcKLSAgICAvLyBhZGQgYSBuZXcg
ZmxhZyB0byBFbGVtZW50U2hhZG93IGFuZCBjYWNoZSB3aGV0aGVyIGFueUBob3N0IEAtcnVsZXMg
YXJlCi0gICAgLy8gYXBwbGllZCB0byB0aGUgZWxlbWVudCBvciBub3QuIFNvIHdlIGNhbiBhdm9p
ZCBhbHdheXMgdHJhdmVyc2luZwotICAgIC8vIHNoYWRvdyByb290cy4KLSAgICBmb3IgKFNoYWRv
d1Jvb3QqIHNoYWRvd1Jvb3QgPSBzaGFkb3ctPnlvdW5nZXN0U2hhZG93Um9vdCgpOyBzaGFkb3dS
b290OyBzaGFkb3dSb290ID0gc2hhZG93Um9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKLSAgICAg
ICAgaWYgKGF0SG9zdFJ1bGVTZXRGb3Ioc2hhZG93Um9vdCkpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgICAgICBpZiAoIXNoYWRvd1Jvb3QtPmhhc1NoYWRvd0luc2VydGlvblBvaW50
KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12
b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoY29uc3QgRWxlbWVudCogZWxl
bWVudCwgVmVjdG9yPFJ1bGVTZXQqPiYgbWF0Y2hlZFJ1bGVzKQotewotICAgIGlmIChtX2F0SG9z
dFJ1bGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRWxlbWVudFNoYWRvdyog
c2hhZG93ID0gZWxlbWVudC0+c2hhZG93KCk7Ci0gICAgaWYgKCFzaGFkb3cpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIEZJWE1FKDk5ODI3KTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk5ODI3Ci0gICAgLy8gYWRkIGEgbmV3IGZsYWcgdG8gRWxlbWVudFNoYWRv
dyBhbmQgY2FjaGUgd2hldGhlciBhbnkgQGhvc3QgQC1ydWxlcyBhcmUKLSAgICAvLyBhcHBsaWVk
IHRvIHRoZSBlbGVtZW50IG9yIG5vdC4gU28gd2UgY2FuIHF1aWNrbHkgZXhpdCB0aGlzIG1ldGhv
ZAotICAgIC8vIGJ5IHVzaW5nIHRoZSBmbGFnLgotICAgIGZvciAoU2hhZG93Um9vdCogc2hhZG93
Um9vdCA9IHNoYWRvdy0+eW91bmdlc3RTaGFkb3dSb290KCk7IHNoYWRvd1Jvb3Q7IHNoYWRvd1Jv
b3QgPSBzaGFkb3dSb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgeyAKLSAgICAgICAgaWYgKFJ1bGVT
ZXQqIHJ1bGVTZXQgPSBhdEhvc3RSdWxlU2V0Rm9yKHNoYWRvd1Jvb3QpKQotICAgICAgICAgICAg
bWF0Y2hlZFJ1bGVzLmFwcGVuZChydWxlU2V0KTsKLSAgICAgICAgaWYgKCFzaGFkb3dSb290LT5o
YXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotfQot
CiB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CiAgICAg
aW5mby5hZGRNZW1iZXIobV9hdXRob3JTdHlsZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3Rh
Y2spOwotICAgIGluZm8uYWRkTWVtYmVyKG1fYXRIb3N0UnVsZXMpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKaW5kZXggODVjMWQwMTAwNmFkNmNjNmY0ODkw
MTE1MDUwOWNjMzQ4YjJkNmIxMC4uNWEzMmRmZTc5ZjgzNWJiN2NmOTViOGM3ZGQ5YjNiYjcwNDFm
YjdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaApAQCAtMzcsMTEg
KzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250YWluZXJOb2RlOwogY2xh
c3MgQ1NTU3R5bGVTaGVldDsKLWNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBSdWxlU2V0OwogY2xhc3Mg
UnVsZUZlYXR1cmVTZXQ7Ci1jbGFzcyBTaGFkb3dSb290OwotY2xhc3MgU3R5bGVSdWxlSG9zdDsK
IAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpIHx8IEVOQUJMRShTSEFET1dfRE9NKQogCkBAIC03
NSwxOCArNzIsMTIgQEAgcHVibGljOgogICAgIGJvb2wgbWF0Y2hlc1N0eWxlQm91bmRzKGNvbnN0
IFN0YWNrRnJhbWUmIGZyYW1lKSBjb25zdCB7IHJldHVybiBmcmFtZS5tX2F1dGhvclN0eWxlQm91
bmRzSW5kZXggPT0gbV9zdGFja1BhcmVudEJvdW5kc0luZGV4OyB9CiAgICAgdm9pZCBjb2xsZWN0
RmVhdHVyZXNUbyhSdWxlRmVhdHVyZVNldCYpOwogCi0gICAgdm9pZCBhZGRIb3N0UnVsZShTdHls
ZVJ1bGVIb3N0KiwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBjb25zdCBDb250YWlu
ZXJOb2RlKiBzY29wZSk7Ci0gICAgYm9vbCBzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9z
dFJ1bGVzKGNvbnN0IEVsZW1lbnQqKTsKLSAgICB2b2lkIG1hdGNoSG9zdFJ1bGVzKGNvbnN0IEVs
ZW1lbnQqLCBWZWN0b3I8UnVsZVNldCo+JiBtYXRjaGVkUnVsZXMpOwotCiAgICAgdm9pZCByZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
UnVsZVNldCogcnVsZVNldEZvcihjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkgY29uc3Q7CiAg
ICAgdm9pZCBzZXR1cFN0YWNrKGNvbnN0IENvbnRhaW5lck5vZGUqKTsKICAgICBib29sIHN0YWNr
SXNDb25zaXN0ZW50KGNvbnN0IENvbnRhaW5lck5vZGUqIHBhcmVudCkgY29uc3QgeyByZXR1cm4g
cGFyZW50ICYmIHBhcmVudCA9PSBtX3N0YWNrUGFyZW50OyB9Ci0gICAgUnVsZVNldCogZW5zdXJl
QXRIb3N0UnVsZVNldEZvcihjb25zdCBTaGFkb3dSb290Kik7Ci0gICAgUnVsZVNldCogYXRIb3N0
UnVsZVNldEZvcihjb25zdCBTaGFkb3dSb290KikgY29uc3Q7CiAKICAgICBTY29wZWRSdWxlU2V0
TWFwIG1fYXV0aG9yU3R5bGVzOwogCkBAIC05Nyw4ICs4OCw2IEBAIHByaXZhdGU6CiAgICAgLy8g
VGhpcyBpcyB1c2VkIHRvIGRlY2lkZSB3aGV0aGVyIG1fc2NvcGluZ0VsZW1lbnRTdGFjayBpcyBj
b25zaXN0ZW50LCBzZXBhcmF0ZWx5IGZyb20gU2VsZWN0b3JDaGVja2VyOjptX3BhcmVudFN0YWNr
LgogICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fc3RhY2tQYXJlbnQ7CiAgICAgaW50IG1fc3Rh
Y2tQYXJlbnRCb3VuZHNJbmRleDsKLQotICAgIFNjb3BlZFJ1bGVTZXRNYXAgbV9hdEhvc3RSdWxl
czsKIH07CiAKIGlubGluZSBib29sIFN0eWxlU2NvcGVSZXNvbHZlcjo6ZW5zdXJlU3RhY2tDb25z
aXN0ZW5jeShDb250YWluZXJOb2RlKiBwYXJlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNo
ZWV0Q29udGVudHMuY3BwCmluZGV4IDM5ZTlhN2IyY2Q2YzIxOTNiYjA0OTgwZmE4OGE4MjcyMWU0
YTIzZGUuLmU3Y2U4MWVhYWI0ODcxODYyNGY0ZWI1NTIzOGU1YzFhZjM1Njg1YjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCkBAIC00MzUsMTAgKzQzNSw2IEBA
IHN0YXRpYyBib29sIGNoaWxkUnVsZXNIYXZlRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyhj
b25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlCiAgICAgICAgICAgICBpZiAoY2hpbGRSdWxlc0hhdmVG
YWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlUnVsZVJl
Z2lvbio+KHJ1bGUpLT5jaGlsZFJ1bGVzKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6SG9zdDoK
LSAgICAgICAgICAgIGlmIChjaGlsZFJ1bGVzSGF2ZUZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJj
ZXMoc3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlSG9zdCo+KHJ1bGUpLT5jaGlsZFJ1bGVzKCkp
KQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6SW1wb3J0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6UGFnZToKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZDQ0
ZTQzMWRkNjZiOTIyNDg1NWRhNjcyYTM0NWEyYTM1ZjkyMWFiLi4yZDg1M2E5YTdjMTU3ZTNhZjli
Mzg1MmUzNTM5ZmE2MzY2NGNlN2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMjQg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzIzMDMgYW5kIHIxMzIzMTIuCisgICAgICAgIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzMjMwMworICAgICAgICBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8xMzIzMTIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDI4NworCisgICAgICAgIFRyaWdnZXJpbmcgY3Jhc2hlcyBv
biBtYW55IHBvcHVsYXIgd2Vic2l0ZXMgKFJlcXVlc3RlZCBieQorICAgICAgICBsZXZpd3xnYXJk
ZW5pbmcgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvYXRob3N0LWF0
cnVsZXMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9h
dGhvc3QtYXRydWxlcy5odG1sOiBSZW1vdmVkLgorCiAyMDEyLTEwLTI0ICBUb255IENoYW5nICA8
dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2V0dGluZyB3aWR0aCBvZiBhIGZsZXhpdGVt
IGNhdXNlcyB0aGUgYWRqYWNlbnQgZmxleCBpdGVtIHRvIGJlIGRpc3BsYXllZCBwb29ybHkuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvYXRob3N0LWF0cnVsZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2F0aG9zdC1hdHJ1bGVzLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFmM2IxYzI1NTE2OTU2
Nzg3MjViZDY2NTE4MTMxMzQzODY0OWExNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvYXRob3N0LWF0cnVs
ZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotaG9zdDogcmdi
KDI1NSwgMCwgMCkKLWhvc3Q6IHJnYigyNTUsIDAsIDApCi1ob3N0QTogcmdiKDI1NSwgMCwgMCkK
LWhvc3RCOiByZ2IoMCwgMCwgMjU1KQotaG9zdDogcmdiKDAsIDAsIDI1NSkKLWhvc3Q6IHJnYigx
MjgsIDEyOCwgMTI4KQotaG9zdDogcmdiKDAsIDAsIDI1NSkKLWhvc3Q6IHJnYigwLCAwLCAyNTUp
Ci1ob3N0OiByZ2IoMTI4LCAxMjgsIDEyOCkKLWhvc3Q6IHJnYigyNTUsIDI1NSwgMCkKLWhvc3Q6
IHJnYigyNTUsIDAsIDApCi1uZXN0ZWRIb3N0OiByZ2IoMCwgMCwgMjU1KQotaG9zdDogcmdiKDI1
NSwgMCwgMCkKLWhvc3Q6IHJnYigyNTUsIDI1NSwgMCkKLUhlbGxvCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvYXRob3N0LWF0cnVsZXMuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9hdGhvc3QtYXRydWxlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3ZDRiNTExZWUwMmZhOWQ3NTFlNTdlMTY5YjAwYTZkODc3ZDUzYTZkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9hdGhvc3QtYXRydWxlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkw
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzdHlsZT4KLSNob3N0
IHsKLSAgY29sb3I6IGdyYXk7Ci19Ci08L3N0eWxlPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBkdW1wQ29tcHV0ZWRT
dHlsZShub2RlKQotewotICAgIGRlYnVnKG5vZGUuaWQgKyAiOiAiICsgZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xv
cicpKTsKLX0KLQotZnVuY3Rpb24gcHJlcHJvY2Vzc0ZvclRlc3QoKQotewotICAgIHZhciBwYXJl
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFyZW50Iik7Ci0gICAgcGFyZW50LmlubmVy
SFRNTCA9ICc8ZGl2IGlkPSJob3N0Ij48c3Bhbj5IZWxsbzwvc3Bhbj48L2Rpdj4nOwotfQotCi1m
dW5jdGlvbiB0ZXN0U2ltcGxlQ29udGVudENhc2UoKQotewotICAgIHByZXByb2Nlc3NGb3JUZXN0
KCk7Ci0gICAgdmFyIGhvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9zdCIpOwotICAg
IHZhciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0KTsKLSAgICBzaGFkb3cuaW5u
ZXJIVE1MID0gIjxzdHlsZT5AaG9zdCB7IGRpdiB7IGNvbG9yOiByZWQ7IH0gfTwvc3R5bGU+PGNv
bnRlbnQ+PC9jb250ZW50PiI7Ci0gICAgZHVtcENvbXB1dGVkU3R5bGUoaG9zdCk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RTaW1wbGVTaGFkb3dDYXNlKCkKLXsKLSAgICBwcmVwcm9jZXNzRm9yVGVzdCgp
OwotICAgIHZhciBob3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKTsKLSAgICB2
YXIgc2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdCk7Ci0gICAgc2hhZG93LmlubmVy
SFRNTCA9ICI8c3R5bGU+QGhvc3QgeyBkaXYgeyBjb2xvcjogcmVkOyB9IH08L3N0eWxlPjxzaGFk
b3c+PC9zaGFkb3c+IjsKLSAgICBkdW1wQ29tcHV0ZWRTdHlsZShob3N0KTsKLX0KLQotZnVuY3Rp
b24gdGVzdEhvc3RXaXRoU2VsZWN0b3IoKQotewotICAgIHZhciBwYXJlbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicGFyZW50Iik7Ci0gICAgcGFyZW50LmlubmVySFRNTCA9ICI8c3R5bGUg
c2NvcGVkPiAuaG9zdCB7IGNvbG9yOiBncmF5IH07PC9zdHlsZT4iCi0gICAgICAgICsgIjxkaXYg
aWQ9J2hvc3RBJyBjbGFzcz0naG9zdCc+PHNwYW4+SGVsbG88L3NwYW4+PC9kaXY+IgotICAgICAg
ICArICI8c3BhbiBpZD0naG9zdEInIGNsYXNzPSdob3N0Jz48c3Bhbj5Xb3JsZDwvc3Bhbj48L3Nw
YW4+IjsKLQotICAgIHZhciBob3N0QSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3N0QSIp
OwotICAgIHZhciBzaGFkb3dBID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdEEpOwotICAgIHZh
ciBzdHlsZSA9ICI8c3R5bGU+QGhvc3QgeyBkaXYgeyBjb2xvcjogcmVkOyB9IHNwYW4geyBjb2xv
cjogYmx1ZTsgfSB9PC9zdHlsZT4iOwotICAgIHNoYWRvd0EuaW5uZXJIVE1MID0gc3R5bGUgKyAi
PHNoYWRvdz48L3NoYWRvdz4iOwotCi0gICAgdmFyIGhvc3RCID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImhvc3RCIik7Ci0gICAgdmFyIHNoYWRvd0IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdCho
b3N0Qik7Ci0gICAgc2hhZG93Qi5pbm5lckhUTUwgPSBzdHlsZSArICI8c2hhZG93Pjwvc2hhZG93
PiI7Ci0KLSAgICBkdW1wQ29tcHV0ZWRTdHlsZShob3N0QSk7Ci0gICAgZHVtcENvbXB1dGVkU3R5
bGUoaG9zdEIpOwotfQotCi1mdW5jdGlvbiB0ZXN0UHNldWRvSG9zdFdpdGhTY29wZWQoKQotewot
ICAgIHByZXByb2Nlc3NGb3JUZXN0KCk7Ci0gICAgdmFyIGhvc3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiaG9zdCIpOwotICAgIHZhciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdCho
b3N0KTsKLSAgICBzaGFkb3cuaW5uZXJIVE1MID0gIjxkaXY+PHN0eWxlIHNjb3BlZD5AaG9zdCB7
IGRpdiB7IGNvbG9yOiByZWQ7IH0gfTwvc3R5bGU+PHNoYWRvdz48L3NoYWRvdz48ZGl2PjxzdHls
ZSBzY29wZWQ+QGhvc3QgeyBkaXYgeyBjb2xvcjogYmx1ZTsgfSB9PC9zdHlsZT48L2Rpdj48L2Rp
dj4iOwotICAgIGR1bXBDb21wdXRlZFN0eWxlKGhvc3QpOwotfQotCi1mdW5jdGlvbiB0ZXN0UHNl
dWRvSG9zdFdpdGhGYWxsYmFja1NoYWRvdygpCi17Ci0gICAgcHJlcHJvY2Vzc0ZvclRlc3QoKTsK
LSAgICB2YXIgaG9zdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3N0Iik7Ci0gICAgdmFy
IG9sZGVzdFNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QpOwotICAgIHZhciB5b3Vu
Z2VzdFNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QpOwotICAgIG9sZGVzdFNoYWRv
dy5pbm5lckhUTUwgPSAiPHN0eWxlPkBob3N0IHsgZGl2IHsgY29sb3I6IHJlZDsgfSB9PC9zdHls
ZT48Y29udGVudD48L2NvbnRlbnQ+IjsKLSAgICB5b3VuZ2VzdFNoYWRvdy5pbm5lckhUTUwgPSAi
PGNvbnRlbnQ+PHNoYWRvdz48L3NoYWRvdz48L2NvbnRlbnQ+IjsKLSAgICBkdW1wQ29tcHV0ZWRT
dHlsZShob3N0KTsKLX0KLQotZnVuY3Rpb24gdGVzdFR3b1NoYWRvd1Jvb3RzQ2FzZSgpCi17Ci0g
ICAgcHJlcHJvY2Vzc0ZvclRlc3QoKTsKLSAgICB2YXIgaG9zdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJob3N0Iik7Ci0gICAgdmFyIG9sZGVzdFNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KGhvc3QpOwotICAgIHZhciB5b3VuZ2VzdFNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KGhvc3QpOwotICAgIG9sZGVzdFNoYWRvdy5pbm5lckhUTUwgPSAiPHN0eWxlPkBob3N0IHsgZGl2
IHsgY29sb3I6IHJlZDsgfSB9PC9zdHlsZT48Y29udGVudD48L2NvbnRlbnQ+IjsKLSAgICB5b3Vu
Z2VzdFNoYWRvdy5pbm5lckhUTUwgPSAiPHN0eWxlPkBob3N0IHsgZGl2IHsgY29sb3I6IGJsdWU7
IH0gfTwvc3R5bGU+PHNoYWRvdz48L3NoYWRvdz4iOwotICAgIGR1bXBDb21wdXRlZFN0eWxlKGhv
c3QpOwotfQotCi1mdW5jdGlvbiB0ZXN0VHdvU2hhZG93Um9vdHNDcmVhdGluZ0RpZmZlcmVudE9y
ZGVyQ2FzZSgpCi17Ci0gICAgcHJlcHJvY2Vzc0ZvclRlc3QoKTsKLSAgICB2YXIgaG9zdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3N0Iik7Ci0gICAgdmFyIG9sZGVzdFNoYWRvdyA9IG5l
dyBXZWJLaXRTaGFkb3dSb290KGhvc3QpOwotICAgIHZhciB5b3VuZ2VzdFNoYWRvdyA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KGhvc3QpOwotICAgIHlvdW5nZXN0U2hhZG93LmlubmVySFRNTCA9ICI8
c3R5bGU+QGhvc3QgeyBkaXYgeyBjb2xvcjogYmx1ZTsgfSB9PC9zdHlsZT48c2hhZG93Pjwvc2hh
ZG93PiI7Ci0gICAgb2xkZXN0U2hhZG93LmlubmVySFRNTCA9ICI8c3R5bGU+QGhvc3QgeyBkaXYg
eyBjb2xvcjogcmVkOyB9IH08L3N0eWxlPjxjb250ZW50PjwvY29udGVudD4iOwotICAgIGR1bXBD
b21wdXRlZFN0eWxlKGhvc3QpOwotfQotCi1mdW5jdGlvbiB0ZXN0TXVsdGlwbGVTaGFkb3dSb290
c1dpdGhJbmVydFNoYWRvd0NvbnRlbnQoKQotewotICAgIHByZXByb2Nlc3NGb3JUZXN0KCk7Ci0g
ICAgdmFyIGhvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9zdCIpOwotICAgIHZhciBv
bGRlc3RTaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0KTsKLSAgICB2YXIgb2xkZXJT
aGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0KTsKLSAgICB2YXIgeW91bmdlclNoYWRv
dyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QpOwotICAgIHZhciB5b3VuZ2VzdFNoYWRvdyA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QpOwotCi0gICAgeW91bmdlc3RTaGFkb3cuaW5uZXJI
VE1MID0gIjxzaGFkb3c+PC9zaGFkb3c+IjsKLSAgICB5b3VuZ2VyU2hhZG93LmlubmVySFRNTCA9
ICI8Y29udGVudD48L2NvbnRlbnQ+IjsKLSAgICBvbGRlclNoYWRvdy5pbm5lckhUTUwgPSAiPHN0
eWxlPkBob3N0IHsgZGl2IHsgY29sb3I6IGdyZWVuOyB9IH08L3N0eWxlPjxzaGFkb3c+PC9zaGFk
b3c+IjsKLSAgICBvbGRlc3RTaGFkb3cuaW5uZXJIVE1MID0gIjxzdHlsZT5AaG9zdCB7IGRpdiB7
IGNvbG9yOiByZWQ7IH0gfTwvc3R5bGU+PGNvbnRlbnQ+PC9jb250ZW50PiI7Ci0gICAgZHVtcENv
bXB1dGVkU3R5bGUoaG9zdCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RNdWx0aXBsZVNoYWRvd1Jvb3Rz
V2l0aEluZXJ0U2hhZG93KCkKLXsKLSAgICBwcmVwcm9jZXNzRm9yVGVzdCgpOwotICAgIHZhciBo
b3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKTsKLSAgICB2YXIgb2xkZXN0U2hh
ZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdCk7Ci0gICAgdmFyIG9sZGVyU2hhZG93ID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdCk7Ci0gICAgdmFyIHlvdW5nZXJTaGFkb3cgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChob3N0KTsKLSAgICB2YXIgeW91bmdlc3RTaGFkb3cgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChob3N0KTsKLQotICAgIHlvdW5nZXN0U2hhZG93LmlubmVySFRNTCA9ICI8
c3R5bGU+QGhvc3QgeyBkaXYgeyBjb2xvcjogeWVsbG93OyB9IH08L3N0eWxlPjxzaGFkb3c+PC9z
aGFkb3c+IjsKLSAgICB5b3VuZ2VyU2hhZG93LmlubmVySFRNTCA9ICI8c3R5bGU+QGhvc3QgeyBk
aXYgeyBjb2xvcjogYmx1ZTsgfSB9PC9zdHlsZT48ZGl2PmluZXJ0PC9kaXY+IjsKLSAgICBvbGRl
clNoYWRvdy5pbm5lckhUTUwgPSAiPHN0eWxlPkBob3N0IHsgZGl2IHsgY29sb3I6IGdyZWVuOyB9
IH08L3N0eWxlPjxzaGFkb3c+PC9zaGFkb3c+IjsKLSAgICBvbGRlc3RTaGFkb3cuaW5uZXJIVE1M
ID0gIjxzdHlsZT5AaG9zdCB7IGRpdiB7IGNvbG9yOiByZWQ7IH0gfTwvc3R5bGU+PGNvbnRlbnQ+
PC9jb250ZW50PiI7Ci0gICAgZHVtcENvbXB1dGVkU3R5bGUoaG9zdCk7Ci19Ci0KLWZ1bmN0aW9u
IHRlc3ROZXN0ZWRDYXNlKCkKLXsKLSAgICBwcmVwcm9jZXNzRm9yVGVzdCgpOwotICAgIHZhciBo
b3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKTsKLSAgICB2YXIgb3V0ZXJTaGFk
b3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0KTsKLSAgICBvdXRlclNoYWRvdy5pbm5lckhU
TUwgPSAnPHN0eWxlPkBob3N0IHsgZGl2IHsgY29sb3I6IHJlZDsgfSB9PC9zdHlsZT48ZGl2IGlk
PSJuZXN0ZWRIb3N0Ij5Jbm5lclNoYWRvdzwvZGl2Pic7Ci0gICAgdmFyIG5lc3RlZCA9IG91dGVy
U2hhZG93LmdldEVsZW1lbnRCeUlkKCJuZXN0ZWRIb3N0Iik7Ci0gICAgdmFyIGlubmVyU2hhZG93
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QobmVzdGVkKTsKLSAgICBpbm5lclNoYWRvdy5pbm5lckhU
TUwgPSAnPHN0eWxlPkBob3N0IHsgZGl2IHsgY29sb3I6IGJsdWU7IH0gfTwvc3R5bGU+U2hvdyA8
c2hhZG93Pjwvc2hhZG93PiBpbiBvdXRlci4nOwotICAgIGR1bXBDb21wdXRlZFN0eWxlKGhvc3Qp
OwotICAgIGR1bXBDb21wdXRlZFN0eWxlKG5lc3RlZCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RIb3N0
VnNTY29wZWRTdHlsZSgpCi17Ci0gICAgcHJlcHJvY2Vzc0ZvclRlc3QoKTsKLSAgICB2YXIgaG9z
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3N0Iik7Ci0gICAgaG9zdC5pbm5lckhUTUwg
PSAiPHN0eWxlIHNjb3BlZD4jaG9zdCB7IGNvbG9yOiB5ZWxsb3c7IH08L3N0eWxlPjxzcGFuPkhl
bGxvPC9zcGFuPiI7Ci0gICAgdmFyIHNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3Qp
OwotICAgIHNoYWRvdy5pbm5lckhUTUwgPSAiPHN0eWxlPkBob3N0IHsgI2hvc3QgeyBjb2xvcjog
cmVkOyB9IH08L3N0eWxlPjxjb250ZW50PjwvY29udGVudD4iOwotICAgIGR1bXBDb21wdXRlZFN0
eWxlKGhvc3QpOwotfQotCi1mdW5jdGlvbiB0ZXN0SG9zdFZzSW5saW5lU3R5bGUoKQotewotICAg
IHByZXByb2Nlc3NGb3JUZXN0KCk7Ci0gICAgdmFyIGhvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaG9zdCIpOwotICAgIGhvc3Quc3R5bGUuY29sb3IgPSAieWVsbG93IjsKLSAgICBob3N0
LmlubmVySFRNTCA9ICI8c3Bhbj5IZWxsbzwvc3Bhbj4iOwotICAgIHZhciBzaGFkb3cgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChob3N0KTsKLSAgICBzaGFkb3cuaW5uZXJIVE1MID0gIjxzdHlsZT5A
aG9zdCB7IGRpdiB7IGNvbG9yOiByZWQ7IH0gfTwvc3R5bGU+PGNvbnRlbnQ+PC9jb250ZW50PiI7
Ci0gICAgZHVtcENvbXB1dGVkU3R5bGUoaG9zdCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3RzKCkK
LXsKLSAgICB0ZXN0U2ltcGxlQ29udGVudENhc2UoKTsKLSAgICB0ZXN0U2ltcGxlU2hhZG93Q2Fz
ZSgpOwotICAgIHRlc3RIb3N0V2l0aFNlbGVjdG9yKCk7Ci0gICAgdGVzdFBzZXVkb0hvc3RXaXRo
U2NvcGVkKCk7Ci0gICAgdGVzdFBzZXVkb0hvc3RXaXRoRmFsbGJhY2tTaGFkb3coKTsKLSAgICB0
ZXN0VHdvU2hhZG93Um9vdHNDYXNlKCk7Ci0gICAgdGVzdFR3b1NoYWRvd1Jvb3RzQ3JlYXRpbmdE
aWZmZXJlbnRPcmRlckNhc2UoKTsKLSAgICB0ZXN0TXVsdGlwbGVTaGFkb3dSb290c1dpdGhJbmVy
dFNoYWRvd0NvbnRlbnQoKTsKLSAgICB0ZXN0TXVsdGlwbGVTaGFkb3dSb290c1dpdGhJbmVydFNo
YWRvdygpOwotICAgIHRlc3ROZXN0ZWRDYXNlKCk7Ci0gICAgdGVzdEhvc3RWc1Njb3BlZFN0eWxl
KCk7Ci0gICAgdGVzdEhvc3RWc0lubGluZVN0eWxlKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+Ci0gIDxkaXYgaWQ9InBhcmVudCI+Ci0gIDwvZGl2
PgotPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>