window.onload=LoadPage; window.onunload=Window_Unload; //window.onresize=ResizeWindow; window.onbeforeprint = set_to_print; window.onafterprint = reset_form; var scrollPos = 0; var inheritedMembers; var protectedMembers; var netcfMembersOnly; var netXnaMembersOnly; // Initialize array of section states var sectionStates = new Array(); var sectionStatesInitialized = false; //Hide sample source in select element function HideSelect() { var selectTags = document.getElementsByTagName("SELECT"); var spanEles = document.getElementsByTagName("span"); var i = 10; var m; if (selectTags.length != null || selectTags.length >0) { for (n=0; n0) { for (n=0; n node ids begin with "sectionToggle", so the same id can refer to different sections in different topics // we don't want to persist their state; set it to expanded if (itemId.indexOf("sectionToggle", 0) == 0) return "e"; // the default state for new section ids is expanded if (sectionStates[itemId] == null) return "e"; // otherwise, persist the passed in state return sectionStates[itemId]; } var noReentry = false; function OnLoadImage(eventObj) { if (noReentry) return; if (!sectionStatesInitialized) InitSectionStates(); var elem; if(document.getElementsByTagName("*")) elem = eventObj.srcElement; else elem = eventObj.target; if ((sectionStates[elem.id] == "e")) ExpandSection(elem); else CollapseSection(elem); } /* ********** ********** Begin ********** */ var docSettings; function LoadPage() { // If not initialized, grab the DTE.Globals object if (globals == null) globals = GetGlobals(); // docSettings has settings for the current document, // which include persistent and non-persistent keys for checkbox filters and expand/collapse section states // persistKeys is an array of the checkbox ids to persist if (docSettings == null) { docSettings = new Array(); persistKeys = new Array(); } if (!sectionStatesInitialized) InitSectionStates(); var imgElements = document.getElementsByName("toggleSwitch"); for (i = 0; i < imgElements.length; i++) { if ((sectionStates[imgElements[i].id] == "e")) ExpandSection(imgElements[i]); else CollapseSection(imgElements[i]); } SetCollapseAll(); // init devlang filter checkboxes SetupDevlangsFilter(); // init memberlist filter checkboxes for protected, inherited, etc SetupMemberOptionsFilter(); // init memberlist platforms filter checkboxes, e.g. .Net Framework, CompactFramework, XNA, Silverlight, etc. SetupMemberFrameworksFilter(); var mainSection = document.getElementById("mainSection"); // vs70.js did this to allow up/down arrow scrolling, I think try { mainSection.setActive(); } catch(e) { } //set the scroll position try{mainSection.scrollTop = scrollPos;} catch(e){} } function Window_Unload() { // for each key in persistArray, write the key/value pair to globals for (var i = 0; i < persistKeys.length; i++) Save(persistKeys[i],docSettings[persistKeys[i]]); // save the expand/collapse section states SaveSections(); } function set_to_print() { //breaks out of divs to print var i; if (window.text)document.getElementsByTagName("*").text.style.height = "auto"; for (i=0; i < document.getElementsByTagName("*").length; i++) { if (document.getElementsByTagName("*")[i].tagName == "body") { document.getElementsByTagName("*")[i].scroll = "yes"; } if (document.getElementsByTagName("*")[i].id == "header") { document.getElementsByTagName("*")[i].style.margin = "0px 0px 0px 0px"; document.getElementsByTagName("*")[i].style.width = "100%"; } if (document.getElementsByTagName("*")[i].id == "mainSection") { document.getElementsByTagName("*")[i].style.overflow = "visible"; document.getElementsByTagName("*")[i].style.top = "5px"; document.getElementsByTagName("*")[i].style.width = "100%"; document.getElementsByTagName("*")[i].style.padding = "0px 10px 0px 30px"; } } } function reset_form() { //returns to the div nonscrolling region after print document.location.reload(); } /* ********** ********** End ********** */ /* ********** ********** Begin Language Filtering ********** */ var devlangsMenu; var devlangsDropdown; var memberOptionsMenu; var memberOptionsDropdown; var memberFrameworksMenu; var memberFrameworksDropdown; var dropdowns = new Array(); // initialize the devlang filter dropdown menu function SetupDevlangsFilter() { var divNode = document.getElementById('devlangsMenu'); if (divNode == null) return; var checkboxNodes = divNode.getElementsByTagName("input"); if (checkboxNodes.length == 1) { // only one checkbox, so we don't need a menu // get the devlang and use it to display the correct devlang spans // a one-checkbox setting like this is NOT persisted, nor is it set from the persisted globals var checkboxData = checkboxNodes[0].getAttribute('data'); var dataSplits = checkboxData.split(','); var devlang = ""; if (dataSplits.length > 1) devlang = dataSplits[1]; styleSheetHandler(devlang); } else { // setup the dropdown menu devlangsMenu = new CheckboxMenu("devlangsMenu", docSettings, persistKeys, globals); devlangsDropdown = new Dropdown('devlangsDropdown', 'devlangsMenu'); dropdowns.push(devlangsDropdown); // update the label of the dropdown menu SetDropdownMenuLabel(devlangsMenu, devlangsDropdown); // toggle the document's display docSettings codeBlockHandler(); styleSheetHandler(""); } } // called onclick in a devlang filter checkbox // tasks to perform at this event are: // toggle the check state of the checkbox that was clicked // update the user's devlang preference, based on devlang checkbox states // update stylesheet based on user's devlang preference // show/hide snippets/syntax based on user's devlang preference // function SetLanguage(checkbox) { // toggle the check state of the checkbox that was clicked devlangsMenu.ToggleCheckState(checkbox.id); // update the label of the dropdown menu SetDropdownMenuLabel(devlangsMenu, devlangsDropdown); // update the display of the document's items that are dependent on the devlang setting codeBlockHandler(); styleSheetHandler(""); } /* ********** ********** End Language Filtering ********** */ /* ********** ********** Begin Members Options Filtering ********** */ // initialize the memberlist dropdown menu for protected, inherited, etc function SetupMemberOptionsFilter() { if (document.getElementById('memberOptionsMenu') != null) { memberOptionsMenu = new CheckboxMenu("memberOptionsMenu", docSettings, persistKeys, globals); memberOptionsDropdown = new Dropdown('memberOptionsDropdown', 'memberOptionsMenu'); dropdowns.push(memberOptionsDropdown); // update the label of the dropdown menu SetDropdownMenuLabel(memberOptionsMenu, memberOptionsDropdown); // show/hide memberlist rows based on the current docSettings memberlistHandler(); } } function SetupMemberFrameworksFilter() { if (document.getElementById('memberFrameworksMenu') != null) { memberFrameworksMenu = new CheckboxMenu("memberFrameworksMenu", docSettings, persistKeys, globals); memberFrameworksDropdown = new Dropdown('memberFrameworksDropdown', 'memberFrameworksMenu'); dropdowns.push(memberFrameworksDropdown); // update the label of the dropdown menu SetDropdownMenuLabel(memberFrameworksMenu, memberFrameworksDropdown); // show/hide memberlist rows based on the current docSettings memberlistHandler(); } } function SetMemberOptions(checkbox, groupName) { var checkboxGroup = new Array(); if (groupName == "vis") { if (document.getElementById('PublicCheckbox') != null) checkboxGroup.push('PublicCheckbox'); if (document.getElementById('ProtectedCheckbox') != null) checkboxGroup.push('ProtectedCheckbox'); } else if (groupName == "decl") { if (document.getElementById('DeclaredCheckbox') != null) checkboxGroup.push('DeclaredCheckbox'); if (document.getElementById('InheritedCheckbox') != null) checkboxGroup.push('InheritedCheckbox'); } // toggle the check state of the checkbox that was clicked memberOptionsMenu.ToggleGroupCheckState(checkbox.id, checkboxGroup); // update the label of the dropdown menu SetDropdownMenuLabel(memberOptionsMenu, memberOptionsDropdown); // update the display of the document's items that are dependent on the member options settings memberlistHandler(); } function SetMemberFrameworks(checkbox) { // toggle the check state of the checkbox that was clicked memberFrameworksMenu.ToggleCheckState(checkbox.id); // update the label of the dropdown menu SetDropdownMenuLabel(memberFrameworksMenu, memberFrameworksDropdown); // update the display of the document's items that are dependent on the member platforms settings memberlistHandler(); } function DisplayFilteredMembers() { var iAllMembers = document.getElementsByTagName("tr"); var i; for(i = 0; i < iAllMembers.length; ++i) { if (((iAllMembers[i].notSupportedOnXna == "true") && (netXnaMembersOnly == "on")) || ((iAllMembers[i].getAttribute("name") == "inheritedMember") && (inheritedMembers == "off")) || ((iAllMembers[i].getAttribute("notSupportedOn") == "netcf") && (netcfMembersOnly == "on"))) iAllMembers[i].style.display = "none"; else iAllMembers[i].style.display = ""; } // protected members are in separate collapseable sections in vs2005, so expand or collapse the sections ExpandCollapseProtectedMemberSections(); } function ExpandCollapseProtectedMemberSections() { var imgElements = document.getElementsByName("toggleSwitch"); var i; // Family for(i = 0; i < imgElements.length; ++i) { if(imgElements[i].id.indexOf("protected", 0) == 0) { if ((sectionStates[imgElements[i].id] == "e" && protectedMembers == "off") || (sectionStates[imgElements[i].id] == "c" && protectedMembers == "on")) { ExpandCollapse(imgElements[i]); } } } } /* ********** ********** End Members Options Filtering ********** */ /* ********** ********** Begin Expand/Collapse ********** */ function getNextSibling(startBrother){ endBrother=startBrother.nextSibling; while(endBrother.nodeType!=1){ endBrother = endBrother.nextSibling; } return endBrother; } // expand or collapse a section function ExpandCollapse(imageItem) { if (sectionStates[imageItem.id] == "e") CollapseSection(imageItem); else ExpandSection(imageItem); SetCollapseAll(); } // expand or collapse all sections function ExpandCollapseAll(imageItem) { var collapseAllImage = document.getElementById("collapseAllImage"); var expandAllImage = document.getElementById("expandAllImage"); if (imageItem == null || collapseAllImage == null || expandAllImage == null) return; noReentry = true; // Prevent entry to OnLoadImage var imgElements = document.getElementsByName("toggleSwitch"); var i; var collapseAll = (imageItem.src == document.getElementById('collapseAllImage').src); if (collapseAll) { imageItem.src = document.getElementById('expandAllImage').src; imageItem.alt = document.getElementById('expandAllImage').alt; for (i = 0; i < imgElements.length; ++i) { CollapseSection(imgElements[i]); } } else { imageItem.src = document.getElementById('collapseAllImage').src; imageItem.alt = document.getElementById('collapseAllImage').alt; for (i = 0; i < imgElements.length; ++i) { ExpandSection(imgElements[i]); } } SetAllSectionStates(collapseAll); SetToggleAllLabel(collapseAll); noReentry = false; } function ExpandCollapse_CheckKey(imageItem, eventObj) { if(eventObj.keyCode == 13) ExpandCollapse(imageItem); } function ExpandCollapseAll_CheckKey(imageItem, eventObj) { if(eventObj.keyCode == 13) ExpandCollapseAll(imageItem); } function SetAllSectionStates(collapsed) { for (var sectionId in sectionStates) sectionStates[sectionId] = (collapsed) ? "c" : "e"; } function ExpandSection(imageItem) { noReentry = true; // Prevent re-entry to OnLoadImage try { var collapseImage = document.getElementById("collapseImage"); imageItem.src = document.getElementById('collapseImage').src; imageItem.alt = document.getElementById('collapseImage').alt; imageItem.parentNode.parentNode.nextSibling.style.display = ""; sectionStates[imageItem.id] = "e"; } catch (e) { } noReentry = false; } function CollapseSection(imageItem) { noReentry = true; // Prevent re-entry to OnLoadImage var expandImage = document.getElementById("expandImage"); imageItem.src = document.getElementById('expandImage').src; imageItem.alt = document.getElementById('expandImage').alt; imageItem.parentNode.parentNode.nextSibling.style.display = "none"; sectionStates[imageItem.id] = "c"; noReentry = false; } function AllCollapsed() { var imgElements = document.getElementsByName("toggleSwitch"); var allCollapsed = true; var i; for (i = 0; i < imgElements.length; i++) allCollapsed = allCollapsed && (sectionStates[imgElements[i].id] == "c"); return allCollapsed; } function SetCollapseAll() { var imageElement = document.getElementById("toggleAllImage"); if (imageElement == null) return; var allCollapsed = AllCollapsed(); if (allCollapsed) { var expandAllImage = document.getElementById("expandAllImage"); if (expandAllImage == null) return; imageElement.src = document.getElementById('expandAllImage').src; imageElement.alt = document.getElementById('expandAllImage').alt; } else { var collapseAllImage = document.getElementById("collapseAllImage"); if (collapseAllImage == null) return; imageElement.src = document.getElementById('collapseAllImage').src; imageElement.alt = document.getElementById('collapseAllImage').alt; } SetToggleAllLabel(allCollapsed); } function SetToggleAllLabel(allCollapsed) { var collapseLabelElement = document.getElementById("collapseAllLabel"); var expandLabelElement = document.getElementById("expandAllLabel"); if (collapseLabelElement == null || expandLabelElement == null) return; if (allCollapsed) { collapseLabelElement.style.display = "none"; expandLabelElement.style.display = "inline"; } else { collapseLabelElement.style.display = "inline"; expandLabelElement.style.display = "none"; } } function SaveSections() { try { var states = ""; for (var sectionId in sectionStates) states += sectionId + ":" + sectionStates[sectionId] + ";"; Save("SectionStates", states.substring(0, states.length - 1)); } catch (e) { } } function OpenSection(imageItem) { if (sectionStates[imageItem.id] == "c") ExpandCollapse(imageItem); } /* ********** ********** End Expand/Collapse ********** */ /* ********** ********** Begin Copy Code ********** */ function CopyCode(key) { var trElements = document.getElementsByTagName("tr"); var i; for(i = 0; i < trElements.length; ++i) { if(key.parentNode.parentNode.parentNode == trElements[i].parentNode) { if (window.clipboardData) { // the IE-manner window.clipboardData.setData("Text", trElements[i].innerText); } else if (window.netscape) { // Gives unrestricted access to browser APIs using XPConnect try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); } catch(e) { alert("Universal Connect was refused, cannot copy to " + "clipboard. Go to about:config and set " + "signed.applets.codebase_principal_support to true to " + "enable clipboard support."); return; } // Creates an instance of nsIClipboard var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard); if (!clip) return; // Creates an instance of nsITransferable var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable); if (!trans) return; // register the data flavor trans.addDataFlavor('text/unicode'); // Create object to hold the data var str = new Object(); // Creates an instance of nsISupportsString var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString); //Assigns the data to be copied var copytext = trElements[i].textContent; str.data = copytext; // Add data objects to transferable trans.setTransferData("text/unicode",str,copytext.length*2); var clipid = Components.interfaces.nsIClipboard; if (!clip) return false; // Transfer the data to clipboard clip.setData(trans,null,clipid.kGlobalClipboard); } } } } function ChangeCopyCodeIcon(key) { var i; var imageElements = document.getElementsByName("ccImage") for(i=0; i=5){ document.body.addBehavior(gsContextMenuPath); document.body.onbehaviorready="fnSetMenus()"; document.body.oncontextopen="clearDef()"; } } // Called by showDef. The showDef function sniffs for initialization. function openDialog(oNode,x,y){ var bStatus=oDialog.dlg_status; // BUGBUG: This code assumes that oDialog has been initialized if(bStatus==false){ oDialog.dlg_status=true; oDialog.style.display="block"; } else{ if(typeof(oTimeout)=="number"){ window.clearTimeout(oTimeout); } } var sTerm=oNode.getAttribute("G_RID"); var oDef=oNode.children(0); var sDef=oDef.text; sDef=sDef.substr(4,sDef.length-7); //Strips the html comment markers from the definition. oDialog.innerHTML=sDef //oDialog.innerHTML=g_glossary[sTerm]; var iScrollLeft=document.body.scrollLeft; var iScrollTop=document.body.scrollTop; var iOffsetLeft=getAbsoluteLeft(oNode)// - iScrollLeft; var iOffsetWidth=oNode.offsetWidth; var oParent=oNode.parentNode; var iOffsetParentLeft=getAbsoluteLeft(oParent); var iOffsetTop=getAbsoluteTop(oNode); //- iScrollTop; var iOffsetDialogWidth=oDialog.offsetWidth; if((iOffsetLeft + iOffsetWidth) > (iOffsetParentLeft + oParent.offsetWidth)){ iOffsetLeft=iOffsetParentLeft; if(iOffsetLeft - iOffsetDialogWidth>0){ iOffsetTop+=oNode.offsetHeight; } } var iLeft=0; var iTop=0; if((iOffsetLeft + iOffsetWidth - iScrollLeft + iOffsetDialogWidth) < document.body.offsetWidth ){ iLeft=iOffsetLeft + iOffsetWidth; } else{ if(iOffsetLeft - iOffsetDialogWidth>0){ iLeft=iOffsetLeft - iOffsetDialogWidth; } else{ iLeft=iOffsetParentLeft; } } if(iOffsetTop - iScrollTop"); oNewDialog=document.body.children(document.body.children.length-1); oNewDialog.className="clsTooltip"; oNewDialog.style.width=iWidth; oNewDialog.dlg_status=false; return oNewDialog; } function sendfeedback(subject, id,alias){ var rExp = /\"/gi; var url = location.href; // Need to replace the double quotes with single quotes for the mailto to work. var rExpSingleQuotes = /\'\'"/gi; var title = document.getElementsByTagName("TITLE")[0].innerText.replace(rExp, "''"); location.href = "mailto:" + alias + "?subject=" + subject + title + "&body=Topic%20ID:%20" + id + "%0d%0aURL:%20" + url + "%0d%0a%0d%0aComments:%20"; } // SIG // Begin signature block // SIG // MIIbKQYJKoZIhvcNAQcCoIIbGjCCGxYCAQExCzAJBgUr // SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB // SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB // SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFHxme5euB5EF // SIG // Let8JSb9U3Mhuo6KoIIV8jCCBKAwggOIoAMCAQICCmEa // SIG // 9eoAAAAAAGowDQYJKoZIhvcNAQEFBQAweTELMAkGA1UE // SIG // BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV // SIG // BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD // SIG // b3Jwb3JhdGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IENv // SIG // ZGUgU2lnbmluZyBQQ0EwHhcNMTExMTAxMjIzOTE3WhcN // SIG // MTMwMjAxMjI0OTE3WjCBgzELMAkGA1UEBhMCVVMxEzAR // SIG // BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v // SIG // bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv // SIG // bjENMAsGA1UECxMETU9QUjEeMBwGA1UEAxMVTWljcm9z // SIG // b2Z0IENvcnBvcmF0aW9uMIIBIjANBgkqhkiG9w0BAQEF // SIG // AAOCAQ8AMIIBCgKCAQEAw6kfz3wjfzEeBiWJ3XV5uc+T // SIG // S2GStpXy76olnXfzS1ptSZDM4DG4pgI3h3Sv8qygYJS4 // SIG // x04l/ofYWNIgTi3xOmUuklumXeaVdeA05VAhnH05l7aO // SIG // RCNmFqZlIOA264r6neLLYAH8KmTIh0UU8R7KzSisuuVX // SIG // WSbc7MVKbJrmAxopMj8AnoOsJQ2EzN1vtmq7LfeEOm1m // SIG // Meg2cP+EkpD3QHaeiC5H1isR94/gEmUrvF/vFfz37AFo // SIG // t0UM7sAEsA63vXhrro3kUPE14p4B0uHrW3GCYSEg89TJ // SIG // 3hy4AkVlSb5+tTeGp83sWt+4diD8ERNR/PoqUKq0HtA6 // SIG // gL5jytyBRwIDAQABo4IBHTCCARkwEwYDVR0lBAwwCgYI // SIG // KwYBBQUHAwMwHQYDVR0OBBYEFAADpuWixHGigsOPds0s // SIG // DRLinUooMA4GA1UdDwEB/wQEAwIHgDAfBgNVHSMEGDAW // SIG // gBRXRXQcXbD2yEMF4IxULY8yp/5IljBWBgNVHR8ETzBN // SIG // MEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20v // SIG // cGtpL2NybC9wcm9kdWN0cy9NaWNDb2RTaWdQQ0FfMDgt // SIG // MzEtMjAxMC5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsG // SIG // AQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v // SIG // cGtpL2NlcnRzL01pY0NvZFNpZ1BDQV8wOC0zMS0yMDEw // SIG // LmNydDANBgkqhkiG9w0BAQUFAAOCAQEAkPf4eZJpyI9r // SIG // imDufMGuPoE4UvS6z5mM8C09E/Su9mHwdThOWcY/B0P5 // SIG // B3zHU+SRYtaodhR1lIZZsroQwn9sFT8ZFcMOL345w8/+ // SIG // VCdYlDVhB3ltUVewEuHqY3KKFmbrnzkqMwQ1i4PeCl4x // SIG // vJ8d7jVFDV3Hl98q4J1/Okn740hFMt82bQludlVVrDTF // SIG // eV1uAtXMl4nzqGh9FOppewtVfQKMxE0wvGL3e6XsoJLw // SIG // DioOr1ebKUjNtiGl6h3v3An1q2LWDew1X2uZ1LHwd1L5 // SIG // d+k/bJhWwFw2oU5eEPSMehGXICAxCHluchZfHDBXm8t8 // SIG // olX1cGx47KFDIK7ssDWLGDCCBLowggOioAMCAQICCmEF // SIG // GZYAAAAAABswDQYJKoZIhvcNAQEFBQAwdzELMAkGA1UE // SIG // BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV // SIG // BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD // SIG // b3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0IFRp // SIG // bWUtU3RhbXAgUENBMB4XDTExMDcyNTIwNDIxOVoXDTEy // SIG // MTAyNTIwNDIxOVowgbMxCzAJBgNVBAYTAlVTMRMwEQYD // SIG // VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k // SIG // MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x // SIG // DTALBgNVBAsTBE1PUFIxJzAlBgNVBAsTHm5DaXBoZXIg // SIG // RFNFIEVTTjo5RTc4LTg2NEItMDM5RDElMCMGA1UEAxMc // SIG // TWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCASIw // SIG // DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANPLO1Oi // SIG // n0SjeqtNVnFTineqN5N+AT79qwKjU6n/0bEixQCQ53Vu // SIG // 7hjogQ4TxdhhAL4foHY7BA0ExQSgqPxDUwahBAS5C5KY // SIG // AmI479QzEvcrPXvvrUVXhZUgn9djNJxiRo6+ruDZnjn2 // SIG // qVX9z+d35jUT71zov0iTTxpDB1g4in+FFGzqydBLeoJu // SIG // y9MVYAgUiZSoWz86yT8gfW0vWBp9yoo4vMPCOWjYLVga // SIG // I+0qEAhaIIyCpe3Rl0WShczDN4PfDZh8xdO24JlT2HgI // SIG // 9eUjIQdihlpqaRn9cPlTNIH3JTEZhoeLwFWa/apMNRX9 // SIG // W+mVyatTmClfLKXhJQ9kxfKwJ3UCAwEAAaOCAQkwggEF // SIG // MB0GA1UdDgQWBBR5I+ehDb5VLGgYKWKCZ9bz4TY4WjAf // SIG // BgNVHSMEGDAWgBQjNPjZUkZwCu1A+3b7syuwwzWzDzBU // SIG // BgNVHR8ETTBLMEmgR6BFhkNodHRwOi8vY3JsLm1pY3Jv // SIG // c29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNyb3Nv // SIG // ZnRUaW1lU3RhbXBQQ0EuY3JsMFgGCCsGAQUFBwEBBEww // SIG // SjBIBggrBgEFBQcwAoY8aHR0cDovL3d3dy5taWNyb3Nv // SIG // ZnQuY29tL3BraS9jZXJ0cy9NaWNyb3NvZnRUaW1lU3Rh // SIG // bXBQQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0G // SIG // CSqGSIb3DQEBBQUAA4IBAQBHwnaBWzHdb9M8mfJ6bH6X // SIG // E1AsBRcbELhEobWM9FbPvbAhtGRtYRzY7ujr9ZLuQ6IY // SIG // RMP6+u+ttlx/l21LtUP7J2F4CFR8sfmvmAq0dMSq6C1Q // SIG // xH3+fU6hmdYnKLeu2N+xj4Mijs7zefxhFG2/68yEsN+j // SIG // u1sFt+pU9WIdbCemY0v646H6u9+FlmVpU7C2cZhkJma9 // SIG // xfFcYryR9D2cS0IADc84BRQmWtwqBUt/apk42N1zmaLO // SIG // jFAknqTr9T+KeMxUmV0lZqRBBiivScS0UpTs3gKDZP5N // SIG // 1P9LovwpgNvuP6s87TOIyr8iYNBcOwSwCrSYbTynOk+a // SIG // 0QEWEWKKQXagMIIGBzCCA++gAwIBAgIKYRZoNAAAAAAA // SIG // HDANBgkqhkiG9w0BAQUFADBfMRMwEQYKCZImiZPyLGQB // SIG // GRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0 // SIG // MS0wKwYDVQQDEyRNaWNyb3NvZnQgUm9vdCBDZXJ0aWZp // SIG // Y2F0ZSBBdXRob3JpdHkwHhcNMDcwNDAzMTI1MzA5WhcN // SIG // MjEwNDAzMTMwMzA5WjB3MQswCQYDVQQGEwJVUzETMBEG // SIG // A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u // SIG // ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u // SIG // MSEwHwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQ // SIG // Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB // SIG // AQCfoWyx39tIkip8ay4Z4b3i48WZUSNQrc7dGE4kD+7R // SIG // p9FMrXQwIBHrB9VUlRVJlBtCkq6YXDAm2gBr6Hu97IkH // SIG // D/cOBJjwicwfyzMkh53y9GccLPx754gd6udOo6HBI1PK // SIG // jfpFzwnQXq/QsEIEovmmbJNn1yjcRlOwhtDlKEYuJ6yG // SIG // T1VSDOQDLPtqkJAwbofzWTCd+n7Wl7PoIZd++NIT8wi3 // SIG // U21StEWQn0gASkdmEScpZqiX5NMGgUqi+YSnEUcUCYKf // SIG // hO1VeP4Bmh1QCIUAEDBG7bfeI0a7xC1Un68eeEExd8yb // SIG // 3zuDk6FhArUdDbH895uyAc4iS1T/+QXDwiALAgMBAAGj // SIG // ggGrMIIBpzAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW // SIG // BBQjNPjZUkZwCu1A+3b7syuwwzWzDzALBgNVHQ8EBAMC // SIG // AYYwEAYJKwYBBAGCNxUBBAMCAQAwgZgGA1UdIwSBkDCB // SIG // jYAUDqyCYEBWJ5flJRP8KuEKU5VZ5KShY6RhMF8xEzAR // SIG // BgoJkiaJk/IsZAEZFgNjb20xGTAXBgoJkiaJk/IsZAEZ // SIG // FgltaWNyb3NvZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBS // SIG // b290IENlcnRpZmljYXRlIEF1dGhvcml0eYIQea0WoUqg // SIG // pa1Mc1j0BxMuZTBQBgNVHR8ESTBHMEWgQ6BBhj9odHRw // SIG // Oi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9k // SIG // dWN0cy9taWNyb3NvZnRyb290Y2VydC5jcmwwVAYIKwYB // SIG // BQUHAQEESDBGMEQGCCsGAQUFBzAChjhodHRwOi8vd3d3 // SIG // Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jvc29m // SIG // dFJvb3RDZXJ0LmNydDATBgNVHSUEDDAKBggrBgEFBQcD // SIG // CDANBgkqhkiG9w0BAQUFAAOCAgEAEJeKw1wDRDbd6bSt // SIG // d9vOeVFNAbEudHFbbQwTq86+e4+4LtQSooxtYrhXAstO // SIG // IBNQmd16QOJXu69YmhzhHQGGrLt48ovQ7DsB7uK+jwoF // SIG // yI1I4vBTFd1Pq5Lk541q1YDB5pTyBi+FA+mRKiQicPv2 // SIG // /OR4mS4N9wficLwYTp2OawpylbihOZxnLcVRDupiXD8W // SIG // mIsgP+IHGjL5zDFKdjE9K3ILyOpwPf+FChPfwgphjvDX // SIG // uBfrTot/xTUrXqO/67x9C0J71FNyIe4wyrt4ZVxbARcK // SIG // FA7S2hSY9Ty5ZlizLS/n+YWGzFFW6J1wlGysOUzU9nm/ // SIG // qhh6YinvopspNAZ3GmLJPR5tH4LwC8csu89Ds+X57H21 // SIG // 46SodDW4TsVxIxImdgs8UoxxWkZDFLyzs7BNZ8ifQv+A // SIG // eSGAnhUwZuhCEl4ayJ4iIdBD6Svpu/RIzCzU2DKATCYq // SIG // SCRfWupW76bemZ3KOm+9gSd0BhHudiG/m4LBJ1S2sWo9 // SIG // iaF2YbRuoROmv6pH8BJv/YoybLL+31HIjCPJZr2dHYcS // SIG // ZAI9La9Zj7jkIeW1sMpjtHhUBdRBLlCslLCleKuzoJZ1 // SIG // GtmShxN1Ii8yqAhuoFuMJb+g74TKIdbrHk/Jmu5J4PcB // SIG // ZW+JC33Iacjmbuqnl84xKf8OxVtc2E0bodj6L54/LlUW // SIG // a8kTo/0wggaBMIIEaaADAgECAgphFQgnAAAAAAAMMA0G // SIG // CSqGSIb3DQEBBQUAMF8xEzARBgoJkiaJk/IsZAEZFgNj // SIG // b20xGTAXBgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxLTAr // SIG // BgNVBAMTJE1pY3Jvc29mdCBSb290IENlcnRpZmljYXRl // SIG // IEF1dGhvcml0eTAeFw0wNjAxMjUyMzIyMzJaFw0xNzAx // SIG // MjUyMzMyMzJaMHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQI // SIG // EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w // SIG // HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAh // SIG // BgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENB // SIG // MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA // SIG // n43fhTeMsQZWZjZO1ArrNiORHq+rjVjpxM/BnzoKJMTE // SIG // xF6w7hUUxfo+mTNrGWly9HwFX+WZJUTXNRmKkNwojpAM // SIG // 79WQYa3e3BhwLYPJb6+FLPjdubkw/XF4HIP9yKm5gmcN // SIG // erjBCcK8FpdXPxyY02nXMJCQkI0wH9gm1J57iNniCe2X // SIG // SUXrBFKBdXu4tSK4Lla718+pTjwKg6KoOsWttgEOas8i // SIG // tCMfbNUn57d+wbTVMq15JRxChuKdhfRX2htZLy0mkinF // SIG // s9eFo55gWpTme5x7XoI0S23/1O4n0KLc0ZAMzn0OFXyI // SIG // rDTHwGyYhErJRHloKN8igw24iixIYeL+EQIDAQABo4IC // SIG // IzCCAh8wEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYE // SIG // FFdFdBxdsPbIQwXgjFQtjzKn/kiWMAsGA1UdDwQEAwIB // SIG // xjAPBgNVHRMBAf8EBTADAQH/MIGYBgNVHSMEgZAwgY2A // SIG // FA6sgmBAVieX5SUT/CrhClOVWeSkoWOkYTBfMRMwEQYK // SIG // CZImiZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJ // SIG // bWljcm9zb2Z0MS0wKwYDVQQDEyRNaWNyb3NvZnQgUm9v // SIG // dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCEHmtFqFKoKWt // SIG // THNY9AcTLmUwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDov // SIG // L2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVj // SIG // dHMvbWljcm9zb2Z0cm9vdGNlcnQuY3JsMFQGCCsGAQUF // SIG // BwEBBEgwRjBEBggrBgEFBQcwAoY4aHR0cDovL3d3dy5t // SIG // aWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNyb3NvZnRS // SIG // b290Q2VydC5jcnQwdgYDVR0gBG8wbTBrBgkrBgEEAYI3 // SIG // FS8wXjBcBggrBgEFBQcCAjBQHk4AQwBvAHAAeQByAGkA // SIG // ZwBoAHQAIACpACAAMgAwADAANgAgAE0AaQBjAHIAbwBz // SIG // AG8AZgB0ACAAQwBvAHIAcABvAHIAYQB0AGkAbwBuAC4w // SIG // EwYDVR0lBAwwCgYIKwYBBQUHAwMwDQYJKoZIhvcNAQEF // SIG // BQADggIBADC8sCCkYqCn7zkmYT3crMaZ0IbELvWDMmVe // SIG // Ij6b1ob46LafyovWO3ULoZE+TN1kdIxJ8oiMGGds/hVm // SIG // Rrg6RkKXyJE31CSx56zT6kEUg3fTyU8FX6MUUr+WpC8+ // SIG // VlsQdc5Tw84FVGm0ZckkpQ/hJbgauU3lArlQHk+zmAwd // SIG // lQLuIlmtIssFdAsERXsEWeDYD7PrTPhg3cJ4ntG6n2v3 // SIG // 8+5+RBFA0r26m0sWCG6kvlXkpjgSo0j0HFV6iiDRff6R // SIG // 25SPL8J7a6ZkhU+j5Sw0KV0Lv/XHOC/EIMRWMfZpzoX4 // SIG // CpHs0NauujgFDOtuT0ycAymqovwYoCkMDVxcViNX2hyW // SIG // DcgmNsFEy+Xh5m+J54/pmLVz03jj7aMBPHTlXrxs9iGJ // SIG // ZwXsl521sf2vpulypcM04S+f+fRqOeItBIJb/NCcrnyd // SIG // EfnmtVMZdLo5SjnrfUKzSjs3PcJKeyeY5+JOmxtKVDhq // SIG // Ize+ardI7upCDUkkkY63BC6Xb+TnRbuPTf1g2ddZwtiA // SIG // 1mA0e7ehkyD+gbiqpVwJ6YoNvihNftfoD+1leNExX7lm // SIG // 299C5wvMAgeN3/8gBqNFZbSzMo0ukeJNtKnJ+rxrBA6y // SIG // n+qf3qTJCpb0jffYmKjwhQIIWaQgpiwLGvJSBu1p5WQY // SIG // G+Cjq97KfBRhQ7hl9TajVRMrZyxNGzBMMYIEozCCBJ8C // SIG // AQEwgYcweTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh // SIG // c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV // SIG // BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEjMCEGA1UE // SIG // AxMaTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0ECCmEa // SIG // 9eoAAAAAAGowCQYFKw4DAhoFAKCB0DAZBgkqhkiG9w0B // SIG // CQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4w // SIG // DAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUwAw0 // SIG // pbi94eVzvI+2JHCE/MIBrNEwcAYKKwYBBAGCNwIBDDFi // SIG // MGCgOIA2AEMAbwBkAGUAIABTAGkAZwBuACAASgBhAHYA // SIG // YQAgAFMAYwByAGkAcAB0ACAARgBpAGwAZQBzoSSAImh0 // SIG // dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9keW5hbWljcyAw // SIG // DQYJKoZIhvcNAQEBBQAEggEAwXbSTIVff4+TQJkQgC96 // SIG // qF8HI49SXJQ2uFEAufFxowCDzK+OeoSuiTj0uwknJzyY // SIG // ZbV8nH+9DwMpdI4TBOuFjFgu2HDvRCP7CtAG3xZYyirY // SIG // iRBqYF8l4wVCtPnSbQKQUp5WllxsQRIUGGWr5NTv8BP9 // SIG // C9ySbssQPa2x3vLQiw1DQjoy3VTEaTxqPv31q3nOuueQ // SIG // ZviEYpvvjrnKjMVDY1bzCi3wBC0ctKw0Sm7C1aRA1g3c // SIG // 3cXuJiVDPYqgQHyq9nWYFnMZRpfE+1LIlTZIS4aL4fBh // SIG // S2WWsNKEwYQFMdwv2OcAjLmq//YRXtMSHFyXWOZwhqdz // SIG // KS5yXHS5ZWJBeaGCAh0wggIZBgkqhkiG9w0BCQYxggIK // SIG // MIICBgIBATCBhTB3MQswCQYDVQQGEwJVUzETMBEGA1UE // SIG // CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe // SIG // MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw // SIG // HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EC // SIG // CmEFGZYAAAAAABswBwYFKw4DAhqgXTAYBgkqhkiG9w0B // SIG // CQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0x // SIG // MjAxMDUyMDQyMjdaMCMGCSqGSIb3DQEJBDEWBBSWEmAp // SIG // cu3plvtUd7pF2hSyh1szCDANBgkqhkiG9w0BAQUFAASC // SIG // AQDKkJ0DfJ3VCWCtWHzgjtBifk72fQjDkdcqAqDmXNSj // SIG // yuqwfFcwG/vfAdt4yzhT1761VRhKuHCYklNhCU9VcwZ7 // SIG // t6GhvzVLkmNYgtRrQw8XPIu2f0Kz2q6ybM9n3rIFqFW7 // SIG // NLF4T9tP6nkIFLMV0uNtESz0HRXOwz3EBEflbsTs65+l // SIG // fKZjDM2j4PN7Z1YSs2zsIJ8lGn04Bh9HkBUap9InOA32 // SIG // MoOmDij3jdSirVugZngQOHXYBpCSa+ZSnRBLjyGI8g/R // SIG // 8wOWU6CFqZMgL8qleJbiIZrkC3RC4Bu8G15fwmfDgsnE // SIG // vtdYSmQI2v6rVxr6mILQn51a3dnqhBwWPXxe // SIG // End signature block