text:
.class public final Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;
.super Lcom/sun/org/apache/xml/internal/security/utils/SignatureElementProxy;

# static fields
.field public static final ALGO_ID_MAC_HMAC_NOT_RECOMMENDED_MD5:Ljava/lang/String; = "http://www.w3.org/2001/04/xmldsig-more#hmac-md5"

.field public static final ALGO_ID_MAC_HMAC_RIPEMD160:Ljava/lang/String; = "http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160"

.field public static final ALGO_ID_MAC_HMAC_SHA1:Ljava/lang/String; = "http://www.w3.org/2000/09/xmldsig#hmac-sha1"

.field public static final ALGO_ID_MAC_HMAC_SHA256:Ljava/lang/String; = "http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"

.field public static final ALGO_ID_MAC_HMAC_SHA384:Ljava/lang/String; = "http://www.w3.org/2001/04/xmldsig-more#hmac-sha384"

.field public static final ALGO_ID_MAC_HMAC_SHA512:Ljava/lang/String; = "http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"

.field public static final ALGO_ID_SIGNATURE_DSA:Ljava/lang/String; = "http://www.w3.org/2000/09/xmldsig#dsa-sha1"

.field public static final ALGO_ID_SIGNATURE_NOT_RECOMMENDED_RSA_MD5:Ljava/lang/String; = "http://www.w3.org/2001/04/xmldsig-more#rsa-md5"

.field public static final ALGO_ID_SIGNATURE_RSA:Ljava/lang/String; = "http://www.w3.org/2000/09/xmldsig#rsa-sha1"

.field public static final ALGO_ID_SIGNATURE_RSA_RIPEMD160:Ljava/lang/String; = "http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"

.field public static final ALGO_ID_SIGNATURE_RSA_SHA1:Ljava/lang/String; = "http://www.w3.org/2000/09/xmldsig#rsa-sha1"

.field public static final ALGO_ID_SIGNATURE_RSA_SHA256:Ljava/lang/String; = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"

.field public static final ALGO_ID_SIGNATURE_RSA_SHA384:Ljava/lang/String; = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"

.field public static final ALGO_ID_SIGNATURE_RSA_SHA512:Ljava/lang/String; = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"

.field static synthetic class$com$sun$org$apache$xml$internal$security$signature$XMLSignature:Ljava/lang/Class;

.field static log:Ljava/util/logging/Logger;

# instance fields
.field private _followManifestsDuringValidation:Z

.field private _keyInfo:Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

.field private _signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

# direct methods
.method static constructor <clinit>()V
    .locals 1

    sget-object v0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->class$com$sun$org$apache$xml$internal$security$signature$XMLSignature:Ljava/lang/Class;

    if-eqz v0, :cond_0

    sget-object v0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->class$com$sun$org$apache$xml$internal$security$signature$XMLSignature:Ljava/lang/Class;

    :goto_0
    invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Ljava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;

    move-result-object v0

    sput-object v0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->log:Ljava/util/logging/Logger;

    return-void

    :cond_0
    const-string/jumbo v0, "com.sun.org.apache.xml.internal.security.signature.XMLSignature"

    invoke-static {v0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->class$(Ljava/lang/String;)Ljava/lang/Class;

    move-result-object v0

    sput-object v0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->class$com$sun$org$apache$xml$internal$security$signature$XMLSignature:Ljava/lang/Class;

    goto :goto_0
.end method

.method public constructor <init>(Lorg/w3c/dom/Document;Ljava/lang/String;Ljava/lang/String;)V
    .locals 6
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException;
        }
    .end annotation

    const-string/jumbo v5, "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"

    const/4 v4, 0x0

    move-object v0, p0

    move-object v1, p1

    move-object v2, p2

    move-object v3, p3

    invoke-direct/range {v0 .. v5}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;-><init>(Lorg/w3c/dom/Document;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V

    return-void
.end method

.method public constructor <init>(Lorg/w3c/dom/Document;Ljava/lang/String;Ljava/lang/String;I)V
    .locals 6
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException;
        }
    .end annotation

    const-string/jumbo v5, "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"

    move-object v0, p0

    move-object v1, p1

    move-object v2, p2

    move-object v3, p3

    move v4, p4

    invoke-direct/range {v0 .. v5}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;-><init>(Lorg/w3c/dom/Document;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V

    return-void
.end method

.method public constructor <init>(Lorg/w3c/dom/Document;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
    .locals 3
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException;
        }
    .end annotation

    const/4 v1, 0x0

    invoke-direct {p0, p1}, Lcom/sun/org/apache/xml/internal/security/utils/SignatureElementProxy;-><init>(Lorg/w3c/dom/Document;)V

    iput-object v1, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    iput-object v1, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_keyInfo:Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

    const/4 v1, 0x0

    iput-boolean v1, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_followManifestsDuringValidation:Z

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-static {v1}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->addReturnToElement(Lorg/w3c/dom/Element;)V

    iput-object p2, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_baseURI:Ljava/lang/String;

    new-instance v1, Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    iget-object v2, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_doc:Lorg/w3c/dom/Document;

    invoke-direct {v1, v2, p3, p4, p5}, Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;-><init>(Lorg/w3c/dom/Document;Ljava/lang/String;ILjava/lang/String;)V

    iput-object v1, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    iget-object v2, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    invoke-virtual {v2}, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->getElement()Lorg/w3c/dom/Element;

    move-result-object v2

    invoke-interface {v1, v2}, Lorg/w3c/dom/Node;->appendChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-static {v1}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->addReturnToElement(Lorg/w3c/dom/Element;)V

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_doc:Lorg/w3c/dom/Document;

    const-string/jumbo v2, "SignatureValue"

    invoke-static {v1, v2}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->createElementInSignatureSpace(Lorg/w3c/dom/Document;Ljava/lang/String;)Lorg/w3c/dom/Element;

    move-result-object v0

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-interface {v1, v0}, Lorg/w3c/dom/Node;->appendChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-static {v1}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->addReturnToElement(Lorg/w3c/dom/Element;)V

    return-void
.end method

.method public constructor <init>(Lorg/w3c/dom/Document;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    .locals 6
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException;
        }
    .end annotation

    const/4 v4, 0x0

    move-object v0, p0

    move-object v1, p1

    move-object v2, p2

    move-object v3, p3

    move-object v5, p4

    invoke-direct/range {v0 .. v5}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;-><init>(Lorg/w3c/dom/Document;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V

    return-void
.end method

.method public constructor <init>(Lorg/w3c/dom/Document;Ljava/lang/String;Lorg/w3c/dom/Element;Lorg/w3c/dom/Element;)V
    .locals 3
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException;
        }
    .end annotation

    const/4 v1, 0x0

    invoke-direct {p0, p1}, Lcom/sun/org/apache/xml/internal/security/utils/SignatureElementProxy;-><init>(Lorg/w3c/dom/Document;)V

    iput-object v1, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    iput-object v1, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_keyInfo:Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

    const/4 v1, 0x0

    iput-boolean v1, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_followManifestsDuringValidation:Z

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-static {v1}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->addReturnToElement(Lorg/w3c/dom/Element;)V

    iput-object p2, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_baseURI:Ljava/lang/String;

    new-instance v1, Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    iget-object v2, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_doc:Lorg/w3c/dom/Document;

    invoke-direct {v1, v2, p3, p4}, Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;-><init>(Lorg/w3c/dom/Document;Lorg/w3c/dom/Element;Lorg/w3c/dom/Element;)V

    iput-object v1, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    iget-object v2, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    invoke-virtual {v2}, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->getElement()Lorg/w3c/dom/Element;

    move-result-object v2

    invoke-interface {v1, v2}, Lorg/w3c/dom/Node;->appendChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-static {v1}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->addReturnToElement(Lorg/w3c/dom/Element;)V

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_doc:Lorg/w3c/dom/Document;

    const-string/jumbo v2, "SignatureValue"

    invoke-static {v1, v2}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->createElementInSignatureSpace(Lorg/w3c/dom/Document;Ljava/lang/String;)Lorg/w3c/dom/Element;

    move-result-object v0

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-interface {v1, v0}, Lorg/w3c/dom/Node;->appendChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-static {v1}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->addReturnToElement(Lorg/w3c/dom/Element;)V

    return-void
.end method

.method public constructor <init>(Lorg/w3c/dom/Element;Ljava/lang/String;)V
    .locals 8
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;,
            Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException;
        }
    .end annotation

    const/4 v7, 0x2

    const/4 v6, 0x1

    const/4 v3, 0x0

    const/4 v5, 0x0

    invoke-direct {p0, p1, p2}, Lcom/sun/org/apache/xml/internal/security/utils/SignatureElementProxy;-><init>(Lorg/w3c/dom/Element;Ljava/lang/String;)V

    iput-object v3, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    iput-object v3, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_keyInfo:Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

    iput-boolean v5, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_followManifestsDuringValidation:Z

    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-interface {v3}, Lorg/w3c/dom/Node;->getFirstChild()Lorg/w3c/dom/Node;

    move-result-object v3

    const-string/jumbo v4, "SignedInfo"

    invoke-static {v3, v4, v5}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->selectDsNode(Lorg/w3c/dom/Node;Ljava/lang/String;I)Lorg/w3c/dom/Element;

    move-result-object v0

    if-eqz v0, :cond_0

    new-instance v3, Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    invoke-direct {v3, v0, p2}, Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;-><init>(Lorg/w3c/dom/Element;Ljava/lang/String;)V

    iput-object v3, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-interface {v3}, Lorg/w3c/dom/Node;->getFirstChild()Lorg/w3c/dom/Node;

    move-result-object v3

    const-string/jumbo v4, "SignatureValue"

    invoke-static {v3, v4, v5}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->selectDsNode(Lorg/w3c/dom/Node;Ljava/lang/String;I)Lorg/w3c/dom/Element;

    move-result-object v1

    if-eqz v1, :cond_1

    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-interface {v3}, Lorg/w3c/dom/Node;->getFirstChild()Lorg/w3c/dom/Node;

    move-result-object v3

    const-string/jumbo v4, "KeyInfo"

    invoke-static {v3, v4, v5}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->selectDsNode(Lorg/w3c/dom/Node;Ljava/lang/String;I)Lorg/w3c/dom/Element;

    move-result-object v2

    if-nez v2, :cond_2

    :goto_0
    return-void

    :cond_0
    new-array v1, v7, [Ljava/lang/Object;

    const-string/jumbo v3, "SignedInfo"

    aput-object v3, v1, v5

    const-string/jumbo v3, "Signature"

    aput-object v3, v1, v6

    new-instance v3, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;

    const-string/jumbo v4, "xml.WrongContent"

    invoke-direct {v3, v4, v1}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;-><init>(Ljava/lang/String;[Ljava/lang/Object;)V

    throw v3

    :cond_1
    new-array v2, v7, [Ljava/lang/Object;

    const-string/jumbo v3, "SignatureValue"

    aput-object v3, v2, v5

    const-string/jumbo v3, "Signature"

    aput-object v3, v2, v6

    new-instance v3, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;

    const-string/jumbo v4, "xml.WrongContent"

    invoke-direct {v3, v4, v2}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;-><init>(Ljava/lang/String;[Ljava/lang/Object;)V

    throw v3

    :cond_2
    new-instance v3, Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

    invoke-direct {v3, v2, p2}, Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;-><init>(Lorg/w3c/dom/Element;Ljava/lang/String;)V

    iput-object v3, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_keyInfo:Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

    goto :goto_0
.end method

.method static synthetic class$(Ljava/lang/String;)Ljava/lang/Class;
    .locals 3

    :try_start_0
    invoke-static {p0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
    :try_end_0
    .catch Ljava/lang/ClassNotFoundException; {:try_start_0 .. :try_end_0} :catch_0

    move-result-object v1

    return-object v1

    :catch_0
    move-exception v0

    new-instance v1, Ljava/lang/NoClassDefFoundError;

    invoke-virtual {v0}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String;

    move-result-object v2

    invoke-direct {v1, v2}, Ljava/lang/NoClassDefFoundError;-><init>(Ljava/lang/String;)V

    throw v1
.end method

.method private setSignatureValueElement([B)V
    .locals 6

    const/4 v5, 0x0

    iget v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_state:I

    if-eqz v3, :cond_0

    :goto_0
    return-void

    :cond_0
    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-interface {v3}, Lorg/w3c/dom/Node;->getFirstChild()Lorg/w3c/dom/Node;

    move-result-object v3

    const-string/jumbo v4, "SignatureValue"

    invoke-static {v3, v4, v5}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->selectDsNode(Lorg/w3c/dom/Node;Ljava/lang/String;I)Lorg/w3c/dom/Element;

    move-result-object v0

    :goto_1
    invoke-interface {v0}, Lorg/w3c/dom/Node;->hasChildNodes()Z

    move-result v3

    if-nez v3, :cond_1

    invoke-static {p1}, Lcom/sun/org/apache/xml/internal/security/utils/Base64;->encode([B)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/String;->length()I

    move-result v3

    const/16 v4, 0x4c

    if-gt v3, v4, :cond_2

    :goto_2
    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_doc:Lorg/w3c/dom/Document;

    invoke-interface {v3, v1}, Lorg/w3c/dom/Document;->createTextNode(Ljava/lang/String;)Lorg/w3c/dom/Text;

    move-result-object v2

    invoke-interface {v0, v2}, Lorg/w3c/dom/Node;->appendChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;

    goto :goto_0

    :cond_1
    invoke-interface {v0}, Lorg/w3c/dom/Node;->getFirstChild()Lorg/w3c/dom/Node;

    move-result-object v3

    invoke-interface {v0, v3}, Lorg/w3c/dom/Node;->removeChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;

    goto :goto_1

    :cond_2
    new-instance v3, Ljava/lang/StringBuffer;

    invoke-direct {v3}, Ljava/lang/StringBuffer;-><init>()V

    const-string/jumbo v4, "\n"

    invoke-virtual {v3, v4}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    move-result-object v3

    invoke-virtual {v3, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    move-result-object v3

    const-string/jumbo v4, "\n"

    invoke-virtual {v3, v4}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    move-result-object v3

    invoke-virtual {v3}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;

    move-result-object v1

    goto :goto_2
.end method

# virtual methods
.method public addDocument(Ljava/lang/String;)V
    .locals 7
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;
        }
    .end annotation

    const/4 v3, 0x0

    iget-object v0, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_baseURI:Ljava/lang/String;

    const-string/jumbo v4, "http://www.w3.org/2000/09/xmldsig#sha1"

    move-object v2, p1

    move-object v5, v3

    move-object v6, v3

    invoke-virtual/range {v0 .. v6}, Lcom/sun/org/apache/xml/internal/security/signature/Manifest;->addDocument(Ljava/lang/String;Ljava/lang/String;Lcom/sun/org/apache/xml/internal/security/transforms/Transforms;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

    return-void
.end method

.method public addDocument(Ljava/lang/String;Lcom/sun/org/apache/xml/internal/security/transforms/Transforms;)V
    .locals 7
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;
        }
    .end annotation

    const/4 v5, 0x0

    iget-object v0, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_baseURI:Ljava/lang/String;

    const-string/jumbo v4, "http://www.w3.org/2000/09/xmldsig#sha1"

    move-object v2, p1

    move-object v3, p2

    move-object v6, v5

    invoke-virtual/range {v0 .. v6}, Lcom/sun/org/apache/xml/internal/security/signature/Manifest;->addDocument(Ljava/lang/String;Ljava/lang/String;Lcom/sun/org/apache/xml/internal/security/transforms/Transforms;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

    return-void
.end method

.method public addDocument(Ljava/lang/String;Lcom/sun/org/apache/xml/internal/security/transforms/Transforms;Ljava/lang/String;)V
    .locals 7
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;
        }
    .end annotation

    const/4 v5, 0x0

    iget-object v0, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_baseURI:Ljava/lang/String;

    move-object v2, p1

    move-object v3, p2

    move-object v4, p3

    move-object v6, v5

    invoke-virtual/range {v0 .. v6}, Lcom/sun/org/apache/xml/internal/security/signature/Manifest;->addDocument(Ljava/lang/String;Ljava/lang/String;Lcom/sun/org/apache/xml/internal/security/transforms/Transforms;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

    return-void
.end method

.method public addDocument(Ljava/lang/String;Lcom/sun/org/apache/xml/internal/security/transforms/Transforms;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    .locals 7
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;
        }
    .end annotation

    iget-object v0, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_baseURI:Ljava/lang/String;

    move-object v2, p1

    move-object v3, p2

    move-object v4, p3

    move-object v5, p4

    move-object v6, p5

    invoke-virtual/range {v0 .. v6}, Lcom/sun/org/apache/xml/internal/security/signature/Manifest;->addDocument(Ljava/lang/String;Ljava/lang/String;Lcom/sun/org/apache/xml/internal/security/transforms/Transforms;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

    return-void
.end method

.method public addKeyInfo(Ljava/security/PublicKey;)V
    .locals 1

    invoke-virtual {p0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->getKeyInfo()Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

    move-result-object v0

    invoke-virtual {v0, p1}, Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;->add(Ljava/security/PublicKey;)V

    return-void
.end method

.method public addKeyInfo(Ljava/security/cert/X509Certificate;)V
    .locals 2
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException;
        }
    .end annotation

    new-instance v0, Lcom/sun/org/apache/xml/internal/security/keys/content/X509Data;

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_doc:Lorg/w3c/dom/Document;

    invoke-direct {v0, v1}, Lcom/sun/org/apache/xml/internal/security/keys/content/X509Data;-><init>(Lorg/w3c/dom/Document;)V

    invoke-virtual {v0, p1}, Lcom/sun/org/apache/xml/internal/security/keys/content/X509Data;->addCertificate(Ljava/security/cert/X509Certificate;)V

    invoke-virtual {p0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->getKeyInfo()Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

    move-result-object v1

    invoke-virtual {v1, v0}, Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;->add(Lcom/sun/org/apache/xml/internal/security/keys/content/X509Data;)V

    return-void
.end method

.method public addResourceResolver(Lcom/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolver;)V
    .locals 1

    invoke-virtual {p0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->getSignedInfo()Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    move-result-object v0

    invoke-virtual {v0, p1}, Lcom/sun/org/apache/xml/internal/security/signature/Manifest;->addResourceResolver(Lcom/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolver;)V

    return-void
.end method

.method public addResourceResolver(Lcom/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolverSpi;)V
    .locals 1

    invoke-virtual {p0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->getSignedInfo()Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    move-result-object v0

    invoke-virtual {v0, p1}, Lcom/sun/org/apache/xml/internal/security/signature/Manifest;->addResourceResolver(Lcom/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolverSpi;)V

    return-void
.end method

.method public appendObject(Lcom/sun/org/apache/xml/internal/security/signature/ObjectContainer;)V
    .locals 3
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;
        }
    .end annotation

    :try_start_0
    iget v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_state:I

    if-nez v1, :cond_0

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-virtual {p1}, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->getElement()Lorg/w3c/dom/Element;

    move-result-object v2

    invoke-interface {v1, v2}, Lorg/w3c/dom/Node;->appendChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;

    iget-object v1, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-static {v1}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->addReturnToElement(Lorg/w3c/dom/Element;)V

    return-void

    :cond_0
    new-instance v1, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;

    const-string/jumbo v2, "signature.operationOnlyBeforeSign"

    invoke-direct {v1, v2}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;-><init>(Ljava/lang/String;)V

    throw v1
    :try_end_0
    .catch Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException; {:try_start_0 .. :try_end_0} :catch_0

    :catch_0
    move-exception v0

    new-instance v1, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;

    const-string/jumbo v2, "empty"

    invoke-direct {v1, v2, v0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;-><init>(Ljava/lang/String;Ljava/lang/Exception;)V

    throw v1
.end method

.method public checkSignatureValue(Ljava/security/Key;)Z
    .locals 9
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;
        }
    .end annotation

    const/4 v7, 0x0

    if-eqz p1, :cond_0

    :try_start_0
    invoke-virtual {p0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->getSignedInfo()Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    move-result-object v5

    iget-boolean v6, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_followManifestsDuringValidation:Z

    invoke-virtual {v5, v6}, Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;->verify(Z)Z

    move-result v5

    if-eqz v5, :cond_1

    new-instance v0, Lcom/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm;

    invoke-virtual {p0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->getSignedInfo()Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    move-result-object v5

    invoke-virtual {v5}, Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;->getSignatureMethodElement()Lorg/w3c/dom/Element;

    move-result-object v5

    invoke-virtual {p0}, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->getBaseURI()Ljava/lang/String;

    move-result-object v6

    invoke-direct {v0, v5, v6}, Lcom/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm;-><init>(Lorg/w3c/dom/Element;Ljava/lang/String;)V

    sget-object v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->log:Ljava/util/logging/Logger;

    sget-object v6, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;

    invoke-virtual {v5, v6}, Ljava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z

    move-result v5

    if-nez v5, :cond_2

    :goto_0
    sget-object v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->log:Ljava/util/logging/Logger;

    sget-object v6, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;

    invoke-virtual {v5, v6}, Ljava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z

    move-result v5

    if-nez v5, :cond_3

    :goto_1
    sget-object v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->log:Ljava/util/logging/Logger;

    sget-object v6, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;

    invoke-virtual {v5, v6}, Ljava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z

    move-result v5

    if-nez v5, :cond_4

    :goto_2
    sget-object v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->log:Ljava/util/logging/Logger;

    sget-object v6, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;

    invoke-virtual {v5, v6}, Ljava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z

    move-result v5

    if-nez v5, :cond_5

    :goto_3
    invoke-virtual {v0, p1}, Lcom/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm;->initVerify(Ljava/security/Key;)V

    new-instance v1, Lcom/sun/org/apache/xml/internal/security/utils/SignerOutputStream;

    invoke-direct {v1, v0}, Lcom/sun/org/apache/xml/internal/security/utils/SignerOutputStream;-><init>(Lcom/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm;)V

    new-instance v2, Lcom/sun/org/apache/xml/internal/security/utils/UnsyncBufferedOutputStream;

    invoke-direct {v2, v1}, Lcom/sun/org/apache/xml/internal/security/utils/UnsyncBufferedOutputStream;-><init>(Ljava/io/OutputStream;)V

    iget-object v5, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    invoke-virtual {v5, v2}, Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;->signInOctectStream(Ljava/io/OutputStream;)V
    :try_end_0
    .catch Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException; {:try_start_0 .. :try_end_0} :catch_0

    :try_start_1
    invoke-virtual {v2}, Ljava/io/OutputStream;->close()V
    :try_end_1
    .catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_1
    .catch Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException; {:try_start_1 .. :try_end_1} :catch_0

    :goto_4
    :try_start_2
    invoke-virtual {p0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->getSignatureValue()[B

    move-result-object v3

    invoke-virtual {v0, v3}, Lcom/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm;->verify([B)Z
    :try_end_2
    .catch Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException; {:try_start_2 .. :try_end_2} :catch_0

    move-result v4

    return v4

    :cond_0
    const/4 v5, 0x1

    new-array v0, v5, [Ljava/lang/Object;

    const-string/jumbo v5, "Didn\'t get a key"

    aput-object v5, v0, v7

    new-instance v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;

    const-string/jumbo v6, "empty"

    invoke-direct {v5, v6, v0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;-><init>(Ljava/lang/String;[Ljava/lang/Object;)V

    throw v5

    :cond_1
    return v7

    :cond_2
    :try_start_3
    sget-object v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->log:Ljava/util/logging/Logger;

    sget-object v6, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;

    new-instance v7, Ljava/lang/StringBuffer;

    invoke-direct {v7}, Ljava/lang/StringBuffer;-><init>()V

    const-string/jumbo v8, "SignatureMethodURI = "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    move-result-object v7

    invoke-virtual {v0}, Lcom/sun/org/apache/xml/internal/security/algorithms/Algorithm;->getAlgorithmURI()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v7, v8}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    move-result-object v7

    invoke-virtual {v7}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;

    move-result-object v7

    invoke-virtual {v5, v6, v7}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V
    :try_end_3
    .catch Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException; {:try_start_3 .. :try_end_3} :catch_0

    goto :goto_0

    :catch_0
    move-exception v0

    new-instance v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;

    const-string/jumbo v6, "empty"

    invoke-direct {v5, v6, v0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;-><init>(Ljava/lang/String;Ljava/lang/Exception;)V

    throw v5

    :cond_3
    :try_start_4
    sget-object v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->log:Ljava/util/logging/Logger;

    sget-object v6, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;

    new-instance v7, Ljava/lang/StringBuffer;

    invoke-direct {v7}, Ljava/lang/StringBuffer;-><init>()V

    const-string/jumbo v8, "jceSigAlgorithm    = "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    move-result-object v7

    invoke-virtual {v0}, Lcom/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm;->getJCEAlgorithmString()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v7, v8}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    move-result-object v7

    invoke-virtual {v7}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;

    move-result-object v7

    invoke-virtual {v5, v6, v7}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V

    goto/16 :goto_1

    :cond_4
    sget-object v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->log:Ljava/util/logging/Logger;

    sget-object v6, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;

    new-instance v7, Ljava/lang/StringBuffer;

    invoke-direct {v7}, Ljava/lang/StringBuffer;-><init>()V

    const-string/jumbo v8, "jceSigProvider     = "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    move-result-object v7

    invoke-virtual {v0}, Lcom/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm;->getJCEProviderName()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v7, v8}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    move-result-object v7

    invoke-virtual {v7}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;

    move-result-object v7

    invoke-virtual {v5, v6, v7}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V

    goto/16 :goto_2

    :cond_5
    sget-object v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->log:Ljava/util/logging/Logger;

    sget-object v6, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;

    new-instance v7, Ljava/lang/StringBuffer;

    invoke-direct {v7}, Ljava/lang/StringBuffer;-><init>()V

    const-string/jumbo v8, "PublicKey = "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    move-result-object v7

    invoke-virtual {v7, p1}, Ljava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer;

    move-result-object v7

    invoke-virtual {v7}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;

    move-result-object v7

    invoke-virtual {v5, v6, v7}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V
    :try_end_4
    .catch Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException; {:try_start_4 .. :try_end_4} :catch_0

    goto/16 :goto_3

    :catch_1
    move-exception v5

    goto/16 :goto_4
.end method

.method public checkSignatureValue(Ljava/security/cert/X509Certificate;)Z
    .locals 3
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;
        }
    .end annotation

    if-nez p1, :cond_0

    const/4 v1, 0x1

    new-array v0, v1, [Ljava/lang/Object;

    const-string/jumbo v1, "Didn\'t get a certificate"

    const/4 v2, 0x0

    aput-object v1, v0, v2

    new-instance v1, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;

    const-string/jumbo v2, "empty"

    invoke-direct {v1, v2, v0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;-><init>(Ljava/lang/String;[Ljava/lang/Object;)V

    throw v1

    :cond_0
    invoke-virtual {p1}, Ljava/security/cert/Certificate;->getPublicKey()Ljava/security/PublicKey;

    move-result-object v1

    invoke-virtual {p0, v1}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->checkSignatureValue(Ljava/security/Key;)Z

    move-result v1

    return v1
.end method

.method public createSecretKey([B)Ljavax/crypto/SecretKey;
    .locals 1

    invoke-virtual {p0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->getSignedInfo()Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    move-result-object v0

    invoke-virtual {v0, p1}, Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;->createSecretKey([B)Ljavax/crypto/SecretKey;

    move-result-object v0

    return-object v0
.end method

.method public getBaseLocalName()Ljava/lang/String;
    .locals 1

    const-string/jumbo v0, "Signature"

    return-object v0
.end method

.method public getId()Ljava/lang/String;
    .locals 3

    iget-object v0, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    const/4 v1, 0x0

    const-string/jumbo v2, "Id"

    invoke-interface {v0, v1, v2}, Lorg/w3c/dom/Element;->getAttributeNS(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public getKeyInfo()Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;
    .locals 6

    const/4 v5, 0x0

    iget v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_state:I

    if-eqz v3, :cond_1

    :cond_0
    :goto_0
    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_keyInfo:Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

    return-object v3

    :cond_1
    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_keyInfo:Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

    if-nez v3, :cond_0

    new-instance v3, Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

    iget-object v4, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_doc:Lorg/w3c/dom/Document;

    invoke-direct {v3, v4}, Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;-><init>(Lorg/w3c/dom/Document;)V

    iput-object v3, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_keyInfo:Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_keyInfo:Lcom/sun/org/apache/xml/internal/security/keys/KeyInfo;

    invoke-virtual {v3}, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->getElement()Lorg/w3c/dom/Element;

    move-result-object v0

    const/4 v1, 0x0

    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-interface {v3}, Lorg/w3c/dom/Node;->getFirstChild()Lorg/w3c/dom/Node;

    move-result-object v2

    const-string/jumbo v3, "Object"

    invoke-static {v2, v3, v5}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->selectDsNode(Lorg/w3c/dom/Node;Ljava/lang/String;I)Lorg/w3c/dom/Element;

    move-result-object v1

    if-nez v1, :cond_2

    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-interface {v3, v0}, Lorg/w3c/dom/Node;->appendChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;

    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-static {v3}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->addReturnToElement(Lorg/w3c/dom/Element;)V

    goto :goto_0

    :cond_2
    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-interface {v3, v0, v1}, Lorg/w3c/dom/Node;->insertBefore(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;

    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    iget-object v4, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_doc:Lorg/w3c/dom/Document;

    const-string/jumbo v5, "\n"

    invoke-interface {v4, v5}, Lorg/w3c/dom/Document;->createTextNode(Ljava/lang/String;)Lorg/w3c/dom/Text;

    move-result-object v4

    invoke-interface {v3, v4, v1}, Lorg/w3c/dom/Node;->insertBefore(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;

    goto :goto_0
.end method

.method public getObjectItem(I)Lcom/sun/org/apache/xml/internal/security/signature/ObjectContainer;
    .locals 4

    iget-object v2, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-interface {v2}, Lorg/w3c/dom/Node;->getFirstChild()Lorg/w3c/dom/Node;

    move-result-object v2

    const-string/jumbo v3, "Object"

    invoke-static {v2, v3, p1}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->selectDsNode(Lorg/w3c/dom/Node;Ljava/lang/String;I)Lorg/w3c/dom/Element;

    move-result-object v0

    :try_start_0
    new-instance v2, Lcom/sun/org/apache/xml/internal/security/signature/ObjectContainer;

    iget-object v3, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_baseURI:Ljava/lang/String;

    invoke-direct {v2, v0, v3}, Lcom/sun/org/apache/xml/internal/security/signature/ObjectContainer;-><init>(Lorg/w3c/dom/Element;Ljava/lang/String;)V
    :try_end_0
    .catch Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException; {:try_start_0 .. :try_end_0} :catch_0

    return-object v2

    :catch_0
    move-exception v1

    const/4 v2, 0x0

    return-object v2
.end method

.method public getObjectLength()I
    .locals 2

    const-string/jumbo v0, "http://www.w3.org/2000/09/xmldsig#"

    const-string/jumbo v1, "Object"

    invoke-virtual {p0, v0, v1}, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->length(Ljava/lang/String;Ljava/lang/String;)I

    move-result v0

    return v0
.end method

.method public getSignatureValue()[B
    .locals 5
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;
        }
    .end annotation

    :try_start_0
    iget-object v2, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-interface {v2}, Lorg/w3c/dom/Node;->getFirstChild()Lorg/w3c/dom/Node;

    move-result-object v2

    const-string/jumbo v3, "SignatureValue"

    const/4 v4, 0x0

    invoke-static {v2, v3, v4}, Lcom/sun/org/apache/xml/internal/security/utils/XMLUtils;->selectDsNode(Lorg/w3c/dom/Node;Ljava/lang/String;I)Lorg/w3c/dom/Element;

    move-result-object v0

    invoke-static {v0}, Lcom/sun/org/apache/xml/internal/security/utils/Base64;->decode(Lorg/w3c/dom/Element;)[B
    :try_end_0
    .catch Lcom/sun/org/apache/xml/internal/security/exceptions/Base64DecodingException; {:try_start_0 .. :try_end_0} :catch_0

    move-result-object v1

    return-object v1

    :catch_0
    move-exception v0

    new-instance v2, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;

    const-string/jumbo v3, "empty"

    invoke-direct {v2, v3, v0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;-><init>(Ljava/lang/String;Ljava/lang/Exception;)V

    throw v2
.end method

.method public getSignedInfo()Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;
    .locals 1

    iget-object v0, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    return-object v0
.end method

.method public setFollowNestedManifests(Z)V
    .locals 0

    iput-boolean p1, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_followManifestsDuringValidation:Z

    return-void
.end method

.method public setId(Ljava/lang/String;)V
    .locals 3

    const/4 v2, 0x0

    iget v0, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_state:I

    if-eqz v0, :cond_1

    :cond_0
    :goto_0
    return-void

    :cond_1
    if-eqz p1, :cond_0

    iget-object v0, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    const-string/jumbo v1, "Id"

    invoke-interface {v0, v2, v1, p1}, Lorg/w3c/dom/Element;->setAttributeNS(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

    iget-object v0, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_constructionElement:Lorg/w3c/dom/Element;

    invoke-static {v0, p1}, Lcom/sun/org/apache/xml/internal/security/utils/IdResolver;->registerElementById(Lorg/w3c/dom/Element;Ljava/lang/String;)V

    goto :goto_0
.end method

.method public sign(Ljava/security/Key;)V
    .locals 7
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;
        }
    .end annotation

    instance-of v5, p1, Ljava/security/PublicKey;

    if-nez v5, :cond_0

    :try_start_0
    iget v5, p0, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->_state:I
    :try_end_0
    .catch Lcom/sun/org/apache/xml/internal/security/c14n/CanonicalizationException; {:try_start_0 .. :try_end_0} :catch_0
    .catch Lcom/sun/org/apache/xml/internal/security/c14n/InvalidCanonicalizerException; {:try_start_0 .. :try_end_0} :catch_2
    .catch Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException; {:try_start_0 .. :try_end_0} :catch_3

    if-eqz v5, :cond_1

    :goto_0
    return-void

    :cond_0
    new-instance v5, Ljava/lang/IllegalArgumentException;

    const-string/jumbo v6, "algorithms.operationOnlyVerification"

    invoke-static {v6}, Lcom/sun/org/apache/xml/internal/security/utils/I18n;->translate(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v6

    invoke-direct {v5, v6}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V

    throw v5

    :cond_1
    :try_start_1
    iget-object v5, p0, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->_signedInfo:Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    invoke-virtual {v5}, Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;->getSignatureMethodElement()Lorg/w3c/dom/Element;

    move-result-object v0

    new-instance v1, Lcom/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm;

    invoke-virtual {p0}, Lcom/sun/org/apache/xml/internal/security/utils/ElementProxy;->getBaseURI()Ljava/lang/String;

    move-result-object v5

    invoke-direct {v1, v0, v5}, Lcom/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm;-><init>(Lorg/w3c/dom/Element;Ljava/lang/String;)V

    invoke-virtual {v1, p1}, Lcom/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm;->initSign(Ljava/security/Key;)V

    invoke-virtual {p0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->getSignedInfo()Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;

    move-result-object v2

    invoke-virtual {v2}, Lcom/sun/org/apache/xml/internal/security/signature/Manifest;->generateDigestValues()V

    new-instance v3, Lcom/sun/org/apache/xml/internal/security/utils/UnsyncBufferedOutputStream;

    new-instance v5, Lcom/sun/org/apache/xml/internal/security/utils/SignerOutputStream;

    invoke-direct {v5, v1}, Lcom/sun/org/apache/xml/internal/security/utils/SignerOutputStream;-><init>(Lcom/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm;)V

    invoke-direct {v3, v5}, Lcom/sun/org/apache/xml/internal/security/utils/UnsyncBufferedOutputStream;-><init>(Ljava/io/OutputStream;)V
    :try_end_1
    .catch Lcom/sun/org/apache/xml/internal/security/c14n/CanonicalizationException; {:try_start_1 .. :try_end_1} :catch_0
    .catch Lcom/sun/org/apache/xml/internal/security/c14n/InvalidCanonicalizerException; {:try_start_1 .. :try_end_1} :catch_2
    .catch Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException; {:try_start_1 .. :try_end_1} :catch_3

    :try_start_2
    invoke-virtual {v3}, Ljava/io/OutputStream;->close()V
    :try_end_2
    .catch Ljava/io/IOException; {:try_start_2 .. :try_end_2} :catch_1
    .catch Lcom/sun/org/apache/xml/internal/security/c14n/CanonicalizationException; {:try_start_2 .. :try_end_2} :catch_0
    .catch Lcom/sun/org/apache/xml/internal/security/c14n/InvalidCanonicalizerException; {:try_start_2 .. :try_end_2} :catch_2
    .catch Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException; {:try_start_2 .. :try_end_2} :catch_3

    :goto_1
    :try_start_3
    invoke-virtual {v2, v3}, Lcom/sun/org/apache/xml/internal/security/signature/SignedInfo;->signInOctectStream(Ljava/io/OutputStream;)V

    invoke-virtual {v1}, Lcom/sun/org/apache/xml/internal/security/algorithms/SignatureAlgorithm;->sign()[B

    move-result-object v4

    invoke-direct {p0, v4}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignature;->setSignatureValueElement([B)V
    :try_end_3
    .catch Lcom/sun/org/apache/xml/internal/security/c14n/CanonicalizationException; {:try_start_3 .. :try_end_3} :catch_0
    .catch Lcom/sun/org/apache/xml/internal/security/c14n/InvalidCanonicalizerException; {:try_start_3 .. :try_end_3} :catch_2
    .catch Lcom/sun/org/apache/xml/internal/security/exceptions/XMLSecurityException; {:try_start_3 .. :try_end_3} :catch_3

    goto :goto_0

    :catch_0
    move-exception v0

    new-instance v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;

    const-string/jumbo v6, "empty"

    invoke-direct {v5, v6, v0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;-><init>(Ljava/lang/String;Ljava/lang/Exception;)V

    throw v5

    :catch_1
    move-exception v5

    goto :goto_1

    :catch_2
    move-exception v0

    new-instance v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;

    const-string/jumbo v6, "empty"

    invoke-direct {v5, v6, v0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;-><init>(Ljava/lang/String;Ljava/lang/Exception;)V

    throw v5

    :catch_3
    move-exception v0

    new-instance v5, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;

    const-string/jumbo v6, "empty"

    invoke-direct {v5, v6, v0}, Lcom/sun/org/apache/xml/internal/security/signature/XMLSignatureException;-><init>(Ljava/lang/String;Ljava/lang/Exception;)V

    throw v5
.end method


text:
package org.yeastrc.xlink.www.qc_data.psm_level_data_merged.main;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.mutable.MutableInt;
import org.slf4j.LoggerFactory;  import org.slf4j.Logger;
import org.yeastrc.xlink.dto.PeptideDTO;
import org.yeastrc.xlink.searcher_psm_peptide_cutoff_objects.SearcherCutoffValuesRootLevel;
import org.yeastrc.xlink.searcher_psm_peptide_cutoff_objects.SearcherCutoffValuesSearchLevel;
import org.yeastrc.xlink.utils.XLinkUtils;
import org.yeastrc.xlink.www.constants.PeptideViewLinkTypesConstants;
import org.yeastrc.xlink.www.dao.PeptideDAO;
import org.yeastrc.xlink.www.dto.SearchDTO;
import org.yeastrc.xlink.www.dto.SrchRepPeptPeptideDTO;
import org.yeastrc.xlink.www.exceptions.ProxlWebappDataException;
import org.yeastrc.xlink.www.exceptions.ProxlWebappInternalErrorException;
import org.yeastrc.xlink.www.form_query_json_objects.CutoffValuesRootLevel;
import org.yeastrc.xlink.www.form_query_json_objects.QCPageQueryJSONRoot;
import org.yeastrc.xlink.www.form_query_json_objects.Z_CutoffValuesObjectsToOtherObjectsFactory;
import org.yeastrc.xlink.www.form_query_json_objects.Z_CutoffValuesObjectsToOtherObjectsFactory.Z_CutoffValuesObjectsToOtherObjects_RootResult;
import org.yeastrc.xlink.www.objects.WebReportedPeptide;
import org.yeastrc.xlink.www.objects.WebReportedPeptideWrapper;
import org.yeastrc.xlink.www.qc_data.a_enums.ForDownload_Enum;
import org.yeastrc.xlink.www.qc_data.psm_level_data_merged.objects.PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_Results;
import org.yeastrc.xlink.www.qc_data.psm_level_data_merged.objects.PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_Results.PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForLinkType;
import org.yeastrc.xlink.www.qc_data.psm_level_data_merged.objects.PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_Results.PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForSearchId;
import org.yeastrc.xlink.www.qc_data.utils.BoxPlotUtils;
import org.yeastrc.xlink.www.qc_data.utils.QC_Cached_WebReportedPeptideWrapperList_FilteredOnIncludeProtSeqVIds;
import org.yeastrc.xlink.www.qc_data.utils.BoxPlotUtils.GetBoxPlotValuesResult;
import org.yeastrc.xlink.www.searcher_via_cached_data.a_return_data_from_searchers.PeptideWebPageSearcherCacheOptimized;
import org.yeastrc.xlink.www.searcher_via_cached_data.cached_data_holders.Cached_SrchRepPeptPeptideDTO_ForSrchIdRepPeptId;
import org.yeastrc.xlink.www.searcher_via_cached_data.request_objects_for_searchers_for_cached_data.SrchRepPeptPeptideDTO_ForSrchIdRepPeptId_ReqParams;
import org.yeastrc.xlink.www.searcher_via_cached_data.return_objects_from_searchers_for_cached_data.SrchRepPeptPeptideDTO_ForSrchIdRepPeptId_Result;
import org.yeastrc.xlink.www.web_utils.GetLinkTypesForSearchers;

/**
 * Peptide Lengths VS PSM Count Merged Boxplot Chart
 *
 */
public class PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged {

	private static final Logger log = LoggerFactory.getLogger( PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged.class);

	/**
	 * private constructor
	 */
	private PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged(){}
	public static PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged getInstance( ) throws Exception {
		PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged instance = new PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged();
		return instance;
	}

	/**
	 * Response from call to getPeptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged(...)
	 *
	 */
	public static class PeptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged_Method_Response {

		PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_Results peptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged_Results;

		//  Get PSM Count mapped by peptideLength then search id then link type
		/**
		 * Map <{Link Type},Map<<Search id>,Map<{peptideLength},{PSM Count}>>
		 */
		Map<String,Map<Integer,Map<Integer,MutableInt>>> allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType;

		public PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_Results getPeptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged_Results() {
			return peptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged_Results;
		}

		public void setPeptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged_Results(
				PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_Results peptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged_Results) {
			this.peptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged_Results = peptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged_Results;
		}

		/**
		 * Map <{Link Type},Map<<Search id>,Map<{peptideLength},{PSM Count}>>
		 * @return
		 */
		public Map<String, Map<Integer, Map<Integer, MutableInt>>> getAllSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType() {
			return allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType;
		}

		public void setAllSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType(
				Map<String, Map<Integer, Map<Integer, MutableInt>>> allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType) {
			this.allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType = allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType;
		}
	}

	/**
	 * @param forDownload
	 * @param filterCriteriaJSON
	 * @param searches
	 * @return
	 * @throws Exception
	 */
	public PeptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged_Method_Response getPeptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged(
			ForDownload_Enum forDownload,
			QCPageQueryJSONRoot qcPageQueryJSONRoot,
			List<SearchDTO> searches ) throws Exception {

		Collection<Integer> searchIds = new HashSet<>();
		Map<Integer,Integer> mapProjectSearchIdToSearchId = new HashMap<>();
		List<Integer> searchIdsListDeduppedSorted = new ArrayList<>( searches.size() );

		for ( SearchDTO search : searches ) {
			searchIds.add( search.getSearchId() );
			searchIdsListDeduppedSorted.add( search.getSearchId() );
			mapProjectSearchIdToSearchId.put( search.getProjectSearchId(), search.getSearchId() );
		}

		//  Populate countForLinkType_ByLinkType for selected link types
		if ( qcPageQueryJSONRoot.getLinkTypes() == null || qcPageQueryJSONRoot.getLinkTypes().length == 0 ) {
			String msg = "At least one linkType is required";
			log.error( msg );
			throw new Exception( msg );
		}
		String[] linkTypesFromURL = qcPageQueryJSONRoot.getLinkTypes();

		//  Create link types in lower case for display and upper case for being like the selection from web page if came from other place
		List<String> linkTypesList = new ArrayList<String>( linkTypesFromURL.length );
		{
			String[] linkTypesFromURLUpdated = new String[ linkTypesFromURL.length ];
			int linkTypesFromURLUpdatedIndex = 0;

			for ( String linkTypeFromWeb : linkTypesFromURL ) {
				String linkTypeRequestUpdated = null;
				String linkTypeDisplay = null;
				if ( PeptideViewLinkTypesConstants.CROSSLINK_PSM.equals( linkTypeFromWeb ) || XLinkUtils.CROSS_TYPE_STRING.equals( linkTypeFromWeb ) ) {
					linkTypeRequestUpdated = PeptideViewLinkTypesConstants.CROSSLINK_PSM;
					linkTypeDisplay = XLinkUtils.CROSS_TYPE_STRING;
				} else if ( PeptideViewLinkTypesConstants.LOOPLINK_PSM.equals( linkTypeFromWeb ) || XLinkUtils.LOOP_TYPE_STRING.equals( linkTypeFromWeb ) ) {
					linkTypeRequestUpdated = PeptideViewLinkTypesConstants.LOOPLINK_PSM;
					linkTypeDisplay = XLinkUtils.LOOP_TYPE_STRING;
				} else if ( PeptideViewLinkTypesConstants.UNLINKED_PSM.equals( linkTypeFromWeb ) || XLinkUtils.UNLINKED_TYPE_STRING.equals( linkTypeFromWeb ) ) {
					linkTypeRequestUpdated = PeptideViewLinkTypesConstants.UNLINKED_PSM;
					linkTypeDisplay = XLinkUtils.UNLINKED_TYPE_STRING;
				} else {
					String msg = "linkType is invalid, linkTypeFromWeb: " + linkTypeFromWeb;
					log.error( msg );
					throw new Exception( msg );
				}
				linkTypesList.add( linkTypeDisplay );
				linkTypesFromURLUpdated[ linkTypesFromURLUpdatedIndex ] = linkTypeRequestUpdated;
				linkTypesFromURLUpdatedIndex++;
			}
			linkTypesFromURL = linkTypesFromURLUpdated;
			qcPageQueryJSONRoot.setLinkTypes( linkTypesFromURLUpdated );
		}

		///////////////////////////////////////////////////
		//  Get LinkTypes for DB query - Sets to null when all selected as an optimization
		String[] linkTypesForDBQuery = GetLinkTypesForSearchers.getInstance().getLinkTypesForSearchers( qcPageQueryJSONRoot.getLinkTypes() );
		//   Mods for DB Query
		String[] modsForDBQuery = qcPageQueryJSONRoot.getMods();
		////////////
		/////   Searcher cutoffs for all searches
		CutoffValuesRootLevel cutoffValuesRootLevel = qcPageQueryJSONRoot.getCutoffs();
		Z_CutoffValuesObjectsToOtherObjects_RootResult cutoffValuesObjectsToOtherObjects_RootResult =
				Z_CutoffValuesObjectsToOtherObjectsFactory
				.createSearcherCutoffValuesRootLevel( searchIds, cutoffValuesRootLevel );
		SearcherCutoffValuesRootLevel searcherCutoffValuesRootLevel =
				cutoffValuesObjectsToOtherObjects_RootResult.getSearcherCutoffValuesRootLevel();

		//  Get PSM Count mapped by peptideLength then search id then link type
		/**
		 * Map <{Link Type},Map<<Search id>,Map<{peptideLength},{PSM Count}>>
		 */
		Map<String,Map<Integer,Map<Integer,MutableInt>>> allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType =
				getAllSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnLinkType( searches, linkTypesForDBQuery, modsForDBQuery, searcherCutoffValuesRootLevel, qcPageQueryJSONRoot );

		PeptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged_Method_Response methodResponse = new PeptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged_Method_Response();

		methodResponse.allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType = allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType;

		if ( forDownload == ForDownload_Enum.YES ) {

			return methodResponse;  //  EARLY RETURN
		}

		PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_Results peptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_Results =
				getPerChartData_KeyedOnLinkType(
						allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType,
						linkTypesList,
						searches );

		methodResponse.peptideLengthVsPSMCount_Chart_For_PSMPeptideCutoffs_Merged_Results = peptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_Results;

		return methodResponse;
	}

	/**
	 * @param allSearchesCombinedPeptideLengthList_Map_KeyedOnSearchId_KeyedOnLinkType
	 * @param linkTypesList
	 * @param searchIdsListDeduppedSorted
	 * @return
	 * @throws ProxlWebappInternalErrorException
	 */
	private PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_Results getPerChartData_KeyedOnLinkType(
			/**
			 * Map <{Link Type},Map<<Search id>,Map<{peptideLength},{PSM Count}>>
			 */
			Map<String,Map<Integer,Map<Integer,MutableInt>>> allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType,
			List<String> linkTypesList,
			List<SearchDTO> searches ) throws ProxlWebappInternalErrorException {

		List<PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForLinkType> dataForChartPerLinkTypeList = new ArrayList<>( linkTypesList.size() );

		for ( String linkType : linkTypesList ) {
			Map<Integer,Map<Integer,MutableInt>> allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId =
					allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType.get( linkType );

			if ( allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId == null ) {
				PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForLinkType resultForLinkType =  new PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForLinkType();
				resultForLinkType.setLinkType( linkType );
				resultForLinkType.setDataFound( false );
				dataForChartPerLinkTypeList.add( resultForLinkType );
			} else {
				PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForLinkType resultForLinkType =
						getSingleChartData_ForLinkType( allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId, searches );
				resultForLinkType.setLinkType( linkType );
				dataForChartPerLinkTypeList.add( resultForLinkType );
			}
		}

		PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_Results results = new PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_Results();
		results.setDataForChartPerLinkTypeList( dataForChartPerLinkTypeList );

		return results;
	}

	/**
	 * @param allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_Map_KeyedOnSearchId
	 * @throws ProxlWebappInternalErrorException
	 */
	private PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForLinkType getSingleChartData_ForLinkType(
			Map<Integer,Map<Integer,MutableInt>> allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_Map_KeyedOnSearchId,
			List<SearchDTO> searches ) throws ProxlWebappInternalErrorException {

		//   Create output object for creating a chart

		boolean dataFound = false;

		Map<Integer, PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForSearchId> dataForChartPerSearchIdMap_KeyProjectSearchId = new HashMap<>();

		for ( SearchDTO search : searches ) {
			Integer searchId = search.getSearchId();
			Integer projectSearchId = search.getProjectSearchId();

			Map<Integer,MutableInt> psmCount_Map_Keyed_PeptideLength = allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_Map_KeyedOnSearchId.get( searchId );
			if ( psmCount_Map_Keyed_PeptideLength == null ) {
				PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForSearchId resultForSearchId = new PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForSearchId();
				resultForSearchId.setSearchId( searchId );
				resultForSearchId.setDataFound( false );
				dataForChartPerSearchIdMap_KeyProjectSearchId.put( projectSearchId, resultForSearchId );
			} else {
				dataFound = true;
				PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForSearchId resultForSearchId =
						getSingleChartData_ForSearchId( psmCount_Map_Keyed_PeptideLength );
				resultForSearchId.setSearchId( searchId );
				resultForSearchId.setDataFound( true );
				dataForChartPerSearchIdMap_KeyProjectSearchId.put( projectSearchId, resultForSearchId );
			}
		}

		PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForLinkType result = new PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForLinkType();
		result.setDataForChartPerSearchIdMap_KeyProjectSearchId( dataForChartPerSearchIdMap_KeyProjectSearchId );
		result.setDataFound( dataFound );

		return result;
	}

	/**
	 * @param psmCount_Map_Keyed_PeptideLength
	 * @return
	 * @throws ProxlWebappInternalErrorException
	 */
	private PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForSearchId getSingleChartData_ForSearchId( Map<Integer,MutableInt> psmCount_Map_Keyed_PeptideLength ) throws ProxlWebappInternalErrorException {

		List<Double> values = new ArrayList<>( psmCount_Map_Keyed_PeptideLength.size() * 300 );

		//  Add peptide length to values List, 1 entry per psm
		for( Map.Entry<Integer,MutableInt> entry : psmCount_Map_Keyed_PeptideLength.entrySet() ) {
			Double peptideLength = entry.getKey().doubleValue();
			int psmCount = entry.getValue().intValue();
			for ( int counter = 0; counter < psmCount; counter++ ) {
				values.add( peptideLength );
			}
		}

		GetBoxPlotValuesResult getBoxPlotValuesResult =
				BoxPlotUtils.getInstance().getBoxPlotValues( values );

		double chartIntervalMax = getBoxPlotValuesResult.getChartIntervalMax();
		double chartIntervalMin = getBoxPlotValuesResult.getChartIntervalMin();

		// Add the peptideLength that are not within max (highcutoff) and min (lowcutoff) to a list and send to web app
		List<Integer> peptideLength_outliers = new ArrayList<>( psmCount_Map_Keyed_PeptideLength.size() );
		for( Map.Entry<Integer,MutableInt> entry : psmCount_Map_Keyed_PeptideLength.entrySet() ) {
			double peptideLengthDouble = entry.getKey().doubleValue();
			if ( peptideLengthDouble < chartIntervalMin || peptideLengthDouble > chartIntervalMax ) {
				peptideLength_outliers.add( (int)peptideLengthDouble );
			}
		}

		PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForSearchId result = new PeptideLengthVsPSMCount_Boxplot_For_PSMPeptideCutoffs_Merged_ResultsForSearchId();

		result.setChartIntervalMax( getBoxPlotValuesResult.getChartIntervalMax() );
		result.setChartIntervalMin( getBoxPlotValuesResult.getChartIntervalMin() );
		result.setFirstQuartile( getBoxPlotValuesResult.getFirstQuartile() );
		result.setThirdQuartile( getBoxPlotValuesResult.getThirdQuartile() );
		result.setMedian( getBoxPlotValuesResult.getMedian() );

		result.setPeptideLengths_outliers( peptideLength_outliers );

		result.setDataFound(true);

		return result;
	}

	///////////////////////////////////

	/**
	 * Get PSM Count mapped by peptideLength then search id then link type
	 * @param searches
	 * @param linkTypesForDBQuery
	 * @param modsForDBQuery
	 * @param searcherCutoffValuesRootLevel
	 * @throws ProxlWebappDataException
	 * @throws Exception
	 */
	private Map<String,Map<Integer,Map<Integer,MutableInt>>> getAllSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnLinkType(
			List<SearchDTO> searches,
			String[] linkTypesForDBQuery,
			String[] modsForDBQuery,
			SearcherCutoffValuesRootLevel searcherCutoffValuesRootLevel,
			QCPageQueryJSONRoot qcPageQueryJSONRoot ) throws ProxlWebappDataException, Exception {

		//  Get PSM Count mapped by peptideLength then search id then link type
		/**
		 * Map <{Link Type},Map<<Search id>,Map<{peptideLength},{PSM Count}>>
		 */
		Map<String,Map<Integer,Map<Integer,MutableInt>>> allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType = new HashMap<>();

		//  Cache peptideDTO ById locally
		Map<Integer,PeptideDTO> peptideDTO_MappedById = new HashMap<>();

		for ( SearchDTO searchDTO : searches ) {
			Integer projectSearchId = searchDTO.getProjectSearchId();
			Integer searchId = searchDTO.getSearchId();

			//  Get cutoffs for this project search id
			SearcherCutoffValuesSearchLevel searcherCutoffValuesSearchLevel =
					searcherCutoffValuesRootLevel.getPerSearchCutoffs( projectSearchId );
			if ( searcherCutoffValuesSearchLevel == null ) {
				String msg = "searcherCutoffValuesRootLevel.getPerSearchCutoffs(projectSearchId) returned null for:  " + projectSearchId;
				log.error( msg );
				throw new ProxlWebappDataException( msg );
			}

			// Map <{Link Type},Map<{peptideLength},<{PSM Count}>>
			Map<String, Map<Integer,MutableInt>> peptideLengthMap_Map_KeyedOnLinkType =
					getPeptideLengths_SingleSearch(
							linkTypesForDBQuery,
							modsForDBQuery,
							peptideDTO_MappedById,
							searchDTO,
							searchId,
							searcherCutoffValuesSearchLevel,
							qcPageQueryJSONRoot );

			//  Link Type includes 'dimer' which has be combined with 'unlinked'
			combineDimerListIntoUnlinkedList( peptideLengthMap_Map_KeyedOnLinkType );

			//  Add to output Map  <{Link Type},Map<<Search id>,Map<{peptideLength},{PSM Count}>>
			for ( Map.Entry<String,Map<Integer,MutableInt>> psmCount_MappedOnPeptideLength_Map_Entry : peptideLengthMap_Map_KeyedOnLinkType.entrySet() ) {
				String linkType = psmCount_MappedOnPeptideLength_Map_Entry.getKey();
				Map<Integer,Map<Integer,MutableInt>> allSearchesCombinedPeptideLengthList_Map_KeyedOnSearchId =
						allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType.get( linkType );
				if ( allSearchesCombinedPeptideLengthList_Map_KeyedOnSearchId == null ) {
					allSearchesCombinedPeptideLengthList_Map_KeyedOnSearchId = new HashMap<>();
					allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType.put( linkType, allSearchesCombinedPeptideLengthList_Map_KeyedOnSearchId );
				}
				allSearchesCombinedPeptideLengthList_Map_KeyedOnSearchId.put( searchId, psmCount_MappedOnPeptideLength_Map_Entry.getValue() );
			}
		}

		return allSearchesCombined_PSMCount_Map_Keyed_PeptideLength_Map_KeyedOnSearchId_KeyedOnLinkType;
	}

	/**
	 * Combine Dimer Counts Into Unlinked Counts
	 * @param chargeCountMap_KeyedOnLinkType_KeyedOnChargeValue
	 */
	private void combineDimerListIntoUnlinkedList( Map<String, Map<Integer,MutableInt>> peptideLengthList_Map_KeyedOnLinkType ) {

		Map<Integer,MutableInt> dimerValues = peptideLengthList_Map_KeyedOnLinkType.get( XLinkUtils.DIMER_TYPE_STRING );
		if ( dimerValues == null ) {
			//  No Dimer values so skip
			return;  //  EARLY EXIT
		}

		Map<Integer,MutableInt> unlinkedValues = peptideLengthList_Map_KeyedOnLinkType.get( XLinkUtils.UNLINKED_TYPE_STRING );
		if ( unlinkedValues == null ) {
			//  No Unlinked values so simply copy dimer to unlinked and remove dimer
			peptideLengthList_Map_KeyedOnLinkType.put( XLinkUtils.UNLINKED_TYPE_STRING, dimerValues );
			peptideLengthList_Map_KeyedOnLinkType.remove( XLinkUtils.DIMER_TYPE_STRING );
			return;  //  EARLY EXIT
		}

		//  Add dimer PSM counts to unlinked entries
		for ( Map.Entry<Integer,MutableInt> unlinkedValuesEntry : unlinkedValues.entrySet() ) {
			MutableInt dimerValuePSMCount = dimerValues.get( unlinkedValuesEntry.getKey() );
			if ( dimerValuePSMCount != null ) {
				unlinkedValuesEntry.getValue().add( dimerValuePSMCount.intValue() );
			}
		}
		//  Add dimer entries to unlinked where no previous entry in unlinked
		for ( Map.Entry<Integer,MutableInt> dimerValuesEntry : dimerValues.entrySet() ) {
			if ( ! unlinkedValues.containsKey( dimerValuesEntry.getKey() ) ) {
				unlinkedValues.put( dimerValuesEntry.getKey(), dimerValuesEntry.getValue() );
			}
		}

		peptideLengthList_Map_KeyedOnLinkType.remove( XLinkUtils.DIMER_TYPE_STRING );
	}

	/**
	 * @param linkTypesForDBQuery
	 * @param modsForDBQuery
	 * @param peptideDTO_MappedById
	 * @param searchDTO
	 * @param searchId
	 * @param searcherCutoffValuesSearchLevel
	 * @return
	 * @throws Exception
	 * @throws ProxlWebappDataException
	 */
	public Map<String, Map<Integer,MutableInt>> getPeptideLengths_SingleSearch(
			String[] linkTypesForDBQuery,
			String[] modsForDBQuery,
			Map<Integer, PeptideDTO> peptideDTO_MappedById,
			SearchDTO searchDTO,
			Integer searchId,
			SearcherCutoffValuesSearchLevel searcherCutoffValuesSearchLevel,
			QCPageQueryJSONRoot qcPageQueryJSONRoot ) throws Exception, ProxlWebappDataException {

		Map<String, Map<Integer,MutableInt>> psmCount_Map_KeyedOnpeptideLength_Map_KeyedOnLinkType = new HashMap<>();

		///////////////////////////////////////////////
		//  Get peptides for this search from the DATABASE

		//  Change to use QC_Cached_WebReportedPeptideWrapperList_FilteredOnIncludeProtSeqVIds
		//     to get list filtered on

		List<WebReportedPeptideWrapper> wrappedLinksPerForSearch =
				QC_Cached_WebReportedPeptideWrapperList_FilteredOnIncludeProtSeqVIds.getInstance()
				.get_WebReportedPeptideWrapperList_FilteredOnIncludeProtSeqVIds(
						searchDTO, searcherCutoffValuesSearchLevel,
						linkTypesForDBQuery,
						modsForDBQuery,
						PeptideWebPageSearcherCacheOptimized.ReturnOnlyReportedPeptidesWithMonolinks.NO,
						qcPageQueryJSONRoot.getIncludeProteinSeqVIdsDecodedArray() );

//		List<WebReportedPeptideWrapper> wrappedLinksPerForSearch =
//				PeptideWebPageSearcherCacheOptimized.getInstance().searchOnSearchIdPsmCutoffPeptideCutoff(
//						searchDTO, searcherCutoffValuesSearchLevel, linkTypesForDBQuery, modsForDBQuery,
//						PeptideWebPageSearcherCacheOptimized.ReturnOnlyReportedPeptidesWithMonolinks.NO );

		for ( WebReportedPeptideWrapper webReportedPeptideWrapper : wrappedLinksPerForSearch ) {
			WebReportedPeptide webReportedPeptide = webReportedPeptideWrapper.getWebReportedPeptide();
			int reportedPeptideId = webReportedPeptide.getReportedPeptideId();

			String linkType = null;

			//  srchRepPeptPeptideDTOList: associated SrchRepPeptPeptideDTO for the link, one per associated peptide, populated per link type

			//  copied from SearchPeptideCrosslink, this way not load PeptideDTO in SearchPeptideCrosslink
			SrchRepPeptPeptideDTO_ForSrchIdRepPeptId_ReqParams srchRepPeptPeptideDTO_ForSrchIdRepPeptId_ReqParams = new SrchRepPeptPeptideDTO_ForSrchIdRepPeptId_ReqParams();
			srchRepPeptPeptideDTO_ForSrchIdRepPeptId_ReqParams.setSearchId( searchId );
			srchRepPeptPeptideDTO_ForSrchIdRepPeptId_ReqParams.setReportedPeptideId( reportedPeptideId );
			SrchRepPeptPeptideDTO_ForSrchIdRepPeptId_Result srchRepPeptPeptideDTO_ForSrchIdRepPeptId_Result =
					Cached_SrchRepPeptPeptideDTO_ForSrchIdRepPeptId.getInstance()
					.getSrchRepPeptPeptideDTO_ForSrchIdRepPeptId_Result( srchRepPeptPeptideDTO_ForSrchIdRepPeptId_ReqParams );
			List<SrchRepPeptPeptideDTO> srchRepPeptPeptideDTOList = srchRepPeptPeptideDTO_ForSrchIdRepPeptId_Result.getSrchRepPeptPeptideDTOList();

			if ( webReportedPeptide.getSearchPeptideCrosslink() != null ) {
				//  Process a crosslink
				linkType = XLinkUtils.CROSS_TYPE_STRING;

			} else if ( webReportedPeptide.getSearchPeptideLooplink() != null ) {
				//  Process a looplink
				linkType = XLinkUtils.LOOP_TYPE_STRING;

			} else if ( webReportedPeptide.getSearchPeptideUnlinked() != null ) {
				//  Process a unlinked
				linkType = XLinkUtils.UNLINKED_TYPE_STRING;

			} else if ( webReportedPeptide.getSearchPeptideDimer() != null ) {
				//  Process a dimer
				linkType = XLinkUtils.UNLINKED_TYPE_STRING;  //  Lump in with unlinked reported peptides

			} else {
				String msg =
						"Link type unkown"
						+ " for reportedPeptideId: " + reportedPeptideId
						+ ", searchId: " + searchId;
				log.error( msg );
				throw new ProxlWebappDataException( msg );
			}

			// get object from map for link type
			Map<Integer,MutableInt> psmCount_Map_KeyedOnpeptideLengthForLinkType = psmCount_Map_KeyedOnpeptideLength_Map_KeyedOnLinkType.get( linkType );
			if ( psmCount_Map_KeyedOnpeptideLengthForLinkType == null ) {
				psmCount_Map_KeyedOnpeptideLengthForLinkType = new HashMap<>();
				psmCount_Map_KeyedOnpeptideLength_Map_KeyedOnLinkType.put( linkType, psmCount_Map_KeyedOnpeptideLengthForLinkType );
			}

			int peptideLength = 0; //  peptide length is sum of peptides for reproted peptide

			//  process srchRepPeptPeptideDTOList (Each peptide mapped to the reported peptide)
			for ( SrchRepPeptPeptideDTO srchRepPeptPeptideDTO : srchRepPeptPeptideDTOList ) {
				// get PeptideDTO, caching locally in peptideDTO_MappedById
				PeptideDTO peptide = null;
				// get PeptideDTO, caching locally in peptideDTO_MappedById
				if ( peptideDTO_MappedById != null ) {
					peptide = peptideDTO_MappedById.get( srchRepPeptPeptideDTO.getPeptideId() );
				}
				if ( peptide == null ) {
					peptide = PeptideDAO.getInstance().getPeptideDTOFromDatabase( srchRepPeptPeptideDTO.getPeptideId() );
					//  To directly retrieve from DB:  PeptideDAO.getInstance().getPeptideDTOFromDatabaseActual( id )
					if ( peptide == null ) {
						String msg =
								"PeptideDTO not found in DB for id: " + srchRepPeptPeptideDTO.getPeptideId()
								+ ", for srchRepPeptPeptideDTO.id: " + srchRepPeptPeptideDTO.getId()
								+ ", for reportedPeptideId: " + reportedPeptideId
								+ ", searchId: " + searchId;
						log.error( msg );
						throw new ProxlWebappDataException( msg );
					}
					peptideDTO_MappedById.put( srchRepPeptPeptideDTO.getPeptideId(), peptide );
				}
				//  peptide length is sum of peptides for reproted peptide
				peptideLength += peptide.getSequence().length();
			}

			int numPSMs = webReportedPeptide.getNumPsms();

			MutableInt psmCount = psmCount_Map_KeyedOnpeptideLengthForLinkType.get( peptideLength );
			if ( psmCount == null ) {
				psmCount_Map_KeyedOnpeptideLengthForLinkType.put( peptideLength, new MutableInt( numPSMs ) );
			} else {
				psmCount.add( numPSMs );
			}
		}

		return psmCount_Map_KeyedOnpeptideLength_Map_KeyedOnLinkType;
	}

}

redpajama_set_name: RedPajamaGithub


text:
package kaqqao.csvorpal.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Created by bojan.tomic on 9/4/16.
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface CSVColumn {
	int index();
}


text:
<!DOCTYPE html>

    <meta charset="utf-8">
    <title>Bootstrap, from Twitter</title>
    <meta name="description" content="">
    <meta name="author" content="">

    <link href="../bootstrap.css" rel="stylesheet">

    <link rel="shortcut icon" href="images/favicon.ico">
    <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">

          Project name

Home

About

Contact

          <form action="" class="pull-right">
            <input class="input-small" type="text" placeholder="Username">
            <input class="input-small" type="password" placeholder="Password">
            <button class="btn" type="submit">Sign in</button>
          </form>

Page name Supporting text or tagline

Main content

Secondary content

© Company 2011


text:
<?php

// autoload_namespaces.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'Twig_Extensions_' => array($vendorDir . '/twig/extensions/lib'),
    'Twig_' => array($vendorDir . '/twig/twig/lib'),
    'SensioLabs\\Security' => array($vendorDir . '/sensiolabs/security-checker'),
    'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src'),
    'Parsedown' => array($vendorDir . '/erusev/parsedown'),
    'Pagerfanta\\' => array($vendorDir . '/pagerfanta/pagerfanta/src'),
    'HTMLPurifier' => array($vendorDir . '/ezyang/htmlpurifier/library'),
    'Doctrine\\ORM\\' => array($vendorDir . '/doctrine/orm/lib'),
    'Doctrine\\DBAL\\' => array($vendorDir . '/doctrine/dbal/lib'),
    'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'),
    'Doctrine\\Common\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib'),
    'Doctrine\\Common\\DataFixtures' => array($vendorDir . '/doctrine/data-fixtures/lib'),
    'Doctrine\\Common\\Collections\\' => array($vendorDir . '/doctrine/collections/lib'),
    'Doctrine\\Common\\Annotations\\' => array($vendorDir . '/doctrine/annotations/lib'),
);


text:
package com.baidubce.services.cnap.model.deploygroup;

import java.util.LinkedList;
import java.util.List;

import org.apache.commons.collections.CollectionUtils;

/**
 * The model for container.
 */
public class ContainerModel {

    /**
     * The id of bap repository.
     */
    private String bapRepositoryID;

    /**
     * The name of image.
     */
    private String name;

    /**
     * The address of image.
     */
    private String image;

    /**
     * The command info.
     */
    private List<String> command;

    /**
     * The argument info.
     */
    private List<String> argus;

    /**
     * The environment info.
      */
    private List<EnvVarModel> env;

    /**
     * The lifecycle info.
     */
    private LifecycleModel lifecycle;

    /**
     * The liveness probe info.
     */
    private ProbeModel livenessProbe;

    /**
     * The readiness probe info.
     */
    private ProbeModel readinessProbe;

    /**
     * The resource requirement.
     */
    private ResourceRequirementsModel resources;

    public String getBapRepositoryID() {
        return bapRepositoryID;
    }

    public void setBapRepositoryID(String bapRepositoryID) {
        this.bapRepositoryID = bapRepositoryID;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public List<String> getCommand() {
        return command;
    }

    public void setCommand(List<String> command) {
        this.command = command;
    }

    public List<String> getArgus() {
        return argus;
    }

    public void setArgus(List<String> argus) {
        this.argus = argus;
    }

    public List<EnvVarModel> getEnv() {
        return env;
    }

    public void setEnv(List<EnvVarModel> env) {
        this.env = env;
    }

    public LifecycleModel getLifecycle() {
        return lifecycle;
    }

    public void setLifecycle(LifecycleModel lifecycle) {
        this.lifecycle = lifecycle;
    }

    public ProbeModel getLivenessProbe() {
        return livenessProbe;
    }

    public void setLivenessProbe(ProbeModel livenessProbe) {
        this.livenessProbe = livenessProbe;
    }

    public ProbeModel getReadinessProbe() {
        return readinessProbe;
    }

    public void setReadinessProbe(ProbeModel readinessProbe) {
        this.readinessProbe = readinessProbe;
    }

    public ResourceRequirementsModel getResources() {
        return resources;
    }

    public void setResources(ResourceRequirementsModel resources) {
        this.resources = resources;
    }

    public ContainerModel withBapRepositoryID(String bapRepositoryID) {
        this.setBapRepositoryID(bapRepositoryID);
        return this;
    }

    public ContainerModel withName(String name) {
        this.setName(name);
        return this;
    }

    public ContainerModel withImage(String image) {
        this.setImage(image);
        return this;
    }

    public ContainerModel addCommand(String command) {
        if (CollectionUtils.isEmpty(this.command)) {
            this.command = new LinkedList<String>();
        }
        this.command.add(command);
        return this;
    }

    public ContainerModel addArgu(String argu) {
        if (CollectionUtils.isEmpty(this.argus)) {
            this.argus = new LinkedList<String>();
        }
        this.argus.add(argu);
        return this;
    }

    public ContainerModel addEnv(EnvVarModel envVarModel) {
        if (CollectionUtils.isEmpty(this.env)) {
            this.env = new LinkedList<EnvVarModel>();
        }
        this.env.add(envVarModel);
        return this;
    }

    public ContainerModel withLifecycle(LifecycleModel lifecycle) {
        this.setLifecycle(lifecycle);
        return this;
    }

    public ContainerModel withLivenessProbe(ProbeModel livenessProbe) {
        this.setLivenessProbe(livenessProbe);
        return this;
    }

    public ContainerModel withReadinessProbe(ProbeModel readinessProbe) {
        this.setReadinessProbe(readinessProbe);
        return this;
    }

    public ContainerModel withResources(ResourceRequirementsModel resources) {
        this.setResources(resources);
        return this;
    }
}


text:
#include "El.hpp"

namespace El {
namespace soc {

// x o y = [ x^T y; x0 y1 + y0 x1 ]

template<typename Real,typename>
void Apply
( const Matrix<Real>& x,
  const Matrix<Real>& y,
        Matrix<Real>& z,
  const Matrix<Int>& orders,
  const Matrix<Int>& firstInds )
{
    DEBUG_ONLY(CSE cse("soc::Apply"))
    soc::Dots( x, y, z, orders, firstInds );
    auto xRoots = x;
    auto yRoots = y;
    cone::Broadcast( xRoots, orders, firstInds );
    cone::Broadcast( yRoots, orders, firstInds );

    const Int height = x.Height();
    const Real* xBuf     = x.LockedBuffer();
    const Real* xRootBuf = xRoots.LockedBuffer();
    const Real* yBuf     = y.LockedBuffer();
    const Real* yRootBuf = yRoots.LockedBuffer();
          Real* zBuf = z.Buffer();
    const Int* firstIndBuf = firstInds.LockedBuffer();

    for( Int i=0; i<height; ++i )
        if( i != firstIndBuf[i] )
            zBuf[i] += xRootBuf[i]*yBuf[i] + yRootBuf[i]*xBuf[i];
}

template<typename Real,typename>
void Apply
( const ElementalMatrix<Real>& xPre,
  const ElementalMatrix<Real>& yPre,
        ElementalMatrix<Real>& zPre,
  const ElementalMatrix<Int>& ordersPre,
  const ElementalMatrix<Int>& firstIndsPre,
  Int cutoff )
{
    DEBUG_ONLY(CSE cse("soc::Apply"))
    AssertSameGrids( xPre, yPre, zPre, ordersPre, firstIndsPre );

    ElementalProxyCtrl ctrl;
    ctrl.colConstrain = true;
    ctrl.colAlign = 0;

    DistMatrixReadProxy<Real,Real,VC,STAR>
      xProx( xPre, ctrl ),
      yProx( yPre, ctrl );
    DistMatrixWriteProxy<Real,Real,VC,STAR>
      zProx( zPre, ctrl );
    DistMatrixReadProxy<Int,Int,VC,STAR>
      ordersProx( ordersPre, ctrl ),
      firstIndsProx( firstIndsPre, ctrl );
    auto& x = xProx.GetLocked();
    auto& y = yProx.GetLocked();
    auto& z = zProx.Get();
    auto& orders = ordersProx.GetLocked();
    auto& firstInds = firstIndsProx.GetLocked();

    soc::Dots( x, y, z, orders, firstInds );
    auto xRoots = x;
    auto yRoots = y;
    cone::Broadcast( xRoots, orders, firstInds );
    cone::Broadcast( yRoots, orders, firstInds );

    const Int localHeight = x.LocalHeight();
    const Real* xBuf     = x.LockedBuffer();
    const Real* xRootBuf = xRoots.LockedBuffer();
    const Real* yBuf     = y.LockedBuffer();
    const Real* yRootBuf = yRoots.LockedBuffer();
          Real* zBuf     = z.Buffer();
    const Int* firstIndBuf = firstInds.LockedBuffer();

    for( Int iLoc=0; iLoc<localHeight; ++iLoc )
    {
        const Int i = x.GlobalRow(iLoc);
        const Int firstInd = firstIndBuf[iLoc];
        if( i != firstInd )
            zBuf[iLoc] += xRootBuf[iLoc]*yBuf[iLoc] + yRootBuf[iLoc]*xBuf[iLoc];
    }
}

template<typename Real,typename>
void Apply
( const DistMultiVec<Real>& x,
  const DistMultiVec<Real>& y,
        DistMultiVec<Real>& z,
  const DistMultiVec<Int>& orders,
  const DistMultiVec<Int>& firstInds,
  Int cutoff )
{
    DEBUG_ONLY(CSE cse("soc::Apply"))
    soc::Dots( x, y, z, orders, firstInds );
    auto xRoots = x;
    auto yRoots = y;
    cone::Broadcast( xRoots, orders, firstInds );
    cone::Broadcast( yRoots, orders, firstInds );

    const Int firstLocalRow = x.FirstLocalRow();
    const Int localHeight = x.LocalHeight();
    const Real* xBuf     = x.LockedMatrix().LockedBuffer();
    const Real* xRootBuf = xRoots.LockedMatrix().LockedBuffer();
    const Real* yBuf     = y.LockedMatrix().LockedBuffer();
    const Real* yRootBuf = yRoots.LockedMatrix().LockedBuffer();
          Real* zBuf     = z.Matrix().Buffer();
    const Int* firstIndBuf = firstInds.LockedMatrix().LockedBuffer();

    for( Int iLoc=0; iLoc<localHeight; ++iLoc )
    {
        const Int i = iLoc + firstLocalRow;
        const Int firstInd = firstIndBuf[iLoc];
        if( i != firstInd )
            zBuf[iLoc] += xRootBuf[iLoc]*yBuf[iLoc] + yRootBuf[iLoc]*xBuf[iLoc];
    }
}

template<typename Real,typename>
void Apply
( const Matrix<Real>& x,
        Matrix<Real>& y,
  const Matrix<Int>& orders,
  const Matrix<Int>& firstInds )
{
    DEBUG_ONLY(CSE cse("soc::Apply"))
    // TODO?: Optimize
    Matrix<Real> z;
    soc::Apply( x, y, z, orders, firstInds );
    y = z;
}

template<typename Real,typename>
void Apply
( const ElementalMatrix<Real>& x,
        ElementalMatrix<Real>& y,
  const ElementalMatrix<Int>& orders,
  const ElementalMatrix<Int>& firstInds,
  Int cutoff )
{
    DEBUG_ONLY(CSE cse("soc::Apply"))
    // TODO?: Optimize
    DistMatrix<Real,VC,STAR> z(x.Grid());
    soc::Apply( x, y, z, orders, firstInds, cutoff );
    y = z;
}

template<typename Real,typename>
void Apply
( const DistMultiVec<Real>& x,
        DistMultiVec<Real>& y,
  const DistMultiVec<Int>& orders,
  const DistMultiVec<Int>& firstInds,
  Int cutoff )
{
    DEBUG_ONLY(CSE cse("soc::Apply"))
    // TODO?: Optimize
    DistMultiVec<Real> z(x.Comm());
    soc::Apply( x, y, z, orders, firstInds, cutoff );
    y = z;
}

#define PROTO(Real) \
  template void Apply \
  ( const Matrix<Real>& x, \
    const Matrix<Real>& y, \
          Matrix<Real>& z, \
    const Matrix<Int>& orders, \
    const Matrix<Int>& firstInds ); \
  template void Apply \
  ( const ElementalMatrix<Real>& x, \
    const ElementalMatrix<Real>& y, \
          ElementalMatrix<Real>& z, \
    const ElementalMatrix<Int>& orders, \
    const ElementalMatrix<Int>& firstInds, \
    Int cutoff ); \
  template void Apply \
  ( const DistMultiVec<Real>& x, \
    const DistMultiVec<Real>& y, \
          DistMultiVec<Real>& z, \
    const DistMultiVec<Int>& orders, \
    const DistMultiVec<Int>& firstInds, \
    Int cutoff ); \
  template void Apply \
  ( const Matrix<Real>& x, \
          Matrix<Real>& y, \
    const Matrix<Int>& orders, \
    const Matrix<Int>& firstInds ); \
  template void Apply \
  ( const ElementalMatrix<Real>& x, \
          ElementalMatrix<Real>& y, \
    const ElementalMatrix<Int>& orders, \
    const ElementalMatrix<Int>& firstInds, \
    Int cutoff ); \
  template void Apply \
  ( const DistMultiVec<Real>& x, \
          DistMultiVec<Real>& y, \
    const DistMultiVec<Int>& orders, \
    const DistMultiVec<Int>& firstInds, \
    Int cutoff );

#define EL_NO_INT_PROTO
#define EL_NO_COMPLEX_PROTO
#include "El/macros/Instantiate.h"

} // namespace soc
} // namespace El