throbber
Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 1 of 50
`
`
`
`KWUN BHANSALI LAZARUS LLP
`MICHAEL S. KWUN (SBN 198945)
`mkwun@kblfirm.com
`555 Montgomery St., Suite 750
`San Francisco, CA 94111
`Telephone: 415 630-2350
`Facsimile: 415 367-1539
`
`WUERSCH & GERING LLP
`V. DAVID RIVKIN (admitted pro hac vice)
`david.rivkin@wg-law.com
`JOHN A. SMITTEN (admitted pro hac vice)
`john.smitten@wg-law.com
`100 Wall St., 10th Fl.
`New York, NY 10005
`Telephone: 212 509-5050
`Facsimile: 212 509-9559
`
`Attorneys for Defendant
`FLORAGUNN GmbH
`
`
`
`
`UNITED STATES DISTRICT COURT
`
`NORTHERN DISTRICT OF CALIFORNIA
`
`OAKLAND DIVISION
`
`
` CONSOLIDATED CASE
`Case No. 4:19-cv-05553-YGR
`
`
`
`ANSWER TO COMPLAINT
`
`ELASTICSEARCH, INC., a Delaware
`corporation, ELASTICSEARCH B.V., a Dutch
`corporation,
`
`
`Plaintiffs,
`
`
`v.
`
`FLORAGUNN GmbH, a German corporation,
`
`Defendant.
`
`
`
`
`
`
`
`Defendant floragunn GmbH (“floragunn”) answers the Complaint of Elasticsearch, Inc.
`
`and elasticsearch B.V. (together “Elastic”) filed on October 26, 2020, as follows:
`
`Paragraph 1
`Allegation: Through its creation and distribution of its Search Guard software,
`floragunn GmbH (“floragunn”) has knowingly and willfully infringed Elasticsearch, Inc.
`and elasticsearch B.V.’s (collectively “Elastic”) copyrights in the source code for
`Elastic’s Elasticsearch X-Pack and Kibana X-Pack software and their predecessors,
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`1
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 2 of 50
`
`
`
`Elasticsearch Shield and Kibana Shield. (Unless otherwise specified, Elastic refers to
`Shield and X-Pack collectively herein as “X-Pack.”)
`
`
`Response: floragunn denies Elastic’s allegations set forth in paragraph 1 of the Complaint, and
`
`further states that it has not infringed any of plaintiff’s source code.
`
`Paragraph 2
`
`
`Allegation: On September 4, 2019, Elastic brought an action against floragunn to
`remedy floragunn’s infringement of certain Elastic copyrights in the source code for X-
`Pack. See Elasticsearch, Inc. et al. v. floragunn GmbH, Case No. 4:19-cv-05553-YGR
`(N.D. Cal.) (“floragunn I”). On November 26, 2019, Elastic filed a First Amended
`Complaint (“FAC”) in the floragunn I lawsuit, alleging additional instances of
`copyright infringement and identifying additional Elastic X-Pack copyrights infringed
`by floragunn.
`
`
`Response: floragunn acknowledges that Elastic filed such complaints. floragunn denies that it
`
`has infringed any of Elastic’s code.
`
`Paragraph 3
`
`
`Allegation: In the course of subsequent discovery and investigation, Elastic has
`identified yet more instances of infringement by floragunn and additional Elastic X-
`Pack copyrights that floragunn has infringed. Elastic has now registered each of those
`additional copyrights with the United States Copyright Office.
`
`
`
`
`Response: floragunn acknowledges that Elastic has filed registrations with the United States
`
`Copyright Office, but denies that the code in those registrations is eligible for copyright protection.
`
`floragunn also denies that it has infringed any of Elastic’s code.
`
`Paragraph 4
`
`
`
`
`
`
`
`Allegation: Elastic files this new lawsuit in light of recent Northern District of
`California decisions interpreting 17 U.S.C. § 411(a). See Order re: Joint Motion for
`Clarification, ECF No. 59, UAB “Planner 5D” v. Facebook, Inc., No. 19-cv-03132-
`WHO (N.D. Cal. March 5, 2020); Izmo, Inc. v. Roadster, Inc., No. 18-cv-06092-NC,
`2019 WL 2359228 (N.D. Cal. June 4, 2019). Elastic will seek relation of this case to
`floragunn I pursuant to Civil Local Rule 3-12 and consolidation with floragunn I for
`all purposes.
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`2
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 3 of 50
`
`
`
`
`
`Response: As of the time of filing of this Answer, the two cases have been consolidated.
`
`
`Paragraph 5
`
`
`Allegation: Plaintiff Elasticsearch, Inc. is incorporated in Delaware; it has its principal
`place of business in Mountain View, California. Plaintiff elasticsearch B.V. is
`incorporated in the Netherlands.
`
`
`
`
`Response: floragunn denies having knowledge or information sufficient to respond to Elastic’s
`
`allegations set forth in paragraph 5 of the complaint, and therefore denies such allegations.
`
`Paragraph 6
`
`
`
`
`
`Allegation: Defendant floragunn is a German company with a principal place of
`business in Berlin, Germany.
`
`
`Response: floragunn admits the allegations in paragraph 6.
`
`Paragraph 7
`
`
`Allegation: Elastic’s claims for copyright infringement arise under the Copyright Act
`of 1976, 17 U.S.C. § 101 et seq.
`
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`denies Elastic’s allegations in paragraph 7 of the complaint.
`
`Paragraph 8
`
`
`Allegation: This Court has original subject matter jurisdiction of this action under
`28 U.S.C. §§ 1331 and 1338.
`
`
`Response: floragunn admits that this Court has jurisdiction over this action, but denies that it
`
`engaged in any infringement of Elastic’s code.
`
`Paragraph 9
`
`
`Allegation: This Court has specific personal jurisdiction over floragunn because,
`among other reasons, floragunn has extensively offered and distributed its infringing
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`3
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 4 of 50
`
`
`
`product containing Elastic’s copyrighted material to companies in California and
`purposefully committed within California the acts from which Elastic’s claims arise.
`Additionally, to the extent floragunn has committed the illegal acts described herein
`outside of California, it did so knowing and intending that such acts would cause injury
`to Elastic at its principal place of business within California.
`
`
`
`
`Response: floragunn denies the allegations in paragraph 9, but does not challenge this Court’s
`
`exercise of personal jurisdiction over floragunn.
`
`Paragraph 10
`
`
`Allegation: Venue is proper in the Northern District of California under 28 U.S.C. §
`1391(b)(2) and 1391(c)(3) because a substantial part of the events or omissions giving
`rise to the claims alleged in this complaint occurred in this judicial district.
`
`
`
`
`Response: floragunn denies that it engaged in any “events or omissions giving rise to the claims
`
`alleged in [the] complaint,” but does not challenge the propriety of venue in this district.
`
`
`Paragraph 11
`
`Allegation: Because this action arises from Elastic’s assertion of its intellectual
`property rights, Northern District of California Civil Local Rule 3-2(c) excludes
`this action from the division-specific venue rule and subjects this action to
`assignment on a district-wide basis.
`
`
`Response: floragunn denies that Elastic’s “assertion of its intellectual property rights” has merit,
`but does not challenge the applicability of Local Rule 3-2(c).
`
`Paragraph 12
`
`
`Allegation: Elastic produces a core suite of search and analytics products known as the
`Elastic Stack (formerly known as ELK Stack). The Elastic Stack consists of
`Elasticsearch, Logstash, Kibana, and Beats. Elasticsearch is a search and analytics
`engine. Logstash is a server-side data processing pipeline that ingests data from multiple
`sources simultaneously, transforms it, and then sends it to a “stash” like Elasticsearch.
`Kibana lets users visualize data with charts and graphs in Elasticsearch. Beats is a family
`of “data shipper” software that collects and centralizes data that feeds into the other
`products in Elastic Stack.
`
`
`Response: floragunn admits the allegations in paragraph 12.
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`4
`
`
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 5 of 50
`
`
`
`
`
`Paragraph 13
`
`
`Allegation: X-Pack is a set of add-on features to Elastic’s core Elastic Stack suite of
`products. X-Pack includes security, altering, monitoring, reporting, and other add-ons to
`Elasticsearch, Kibana, and other products in the Elastic Stack. The predecessor to much
`of X-Pack was known as Shield. (Unless otherwise specified, Elastic refers to Shield and
`X-Pack collectively herein as “X-Pack.”)
`
`
`
`Response: floragunn admits the allegations in paragraph 13.
`
`Paragraph 14
`
`
`Allegation: Elastic has a longstanding commitment to opening the source code
`underlying many of its products in order to facilitate building a community that helps
`improve and advance Elastic’s products to produce the best software possible. When
`Elastic releases the source code for its software, it does so under clearly delineated
`conditions.
`
`
`
`
`Response: (1) floragunn denies the allegations in paragraph in paragraph 14 of the complaint.
`
`Specifically, Elastic misleads when it claims that “it has a longstanding commitment to opening
`
`source code underlying many of its products,” since it has no “longstanding” commitment to
`
`opening source in the case of X-Pack (including Shield) because the code for X-Pack was closed
`
`source software from the time it was first released in 2015 until Elastic finally opened the source
`
`code to the public in 2018. Before April 2018, it was impossible for third-party developers to
`
`contribute anything to the proprietary and closed-source X-Pack code. Search Guard, on the
`
`other hand, has been publicly available open code since it was first released in 2015. (2) Second,
`
`it is false that “[w]hen Elastic releases the source code for its software, it does so under clearly
`
`delineated conditions.” For example, Elastic released both its Apache 2 licensed code and its
`
`own Elastic-licensed code in the same GitHub repository, causing significant confusion as to
`
`which license applied to which files. This practice is commonly referred to as “code mingling”
`
`and is highly discouraged by the Open Source community because it leads to situations where a
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`5
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 6 of 50
`
`
`
`single commit by a developer could contain both Apache2 and Elastic-licensed code. Such
`
`commits are called “toxic” for obvious reasons.
`
`
`
`Paragraph 15
`
`
`Allegation: In late April 2018, Elastic opened the source code for version 6.2.x of X-
`Pack. Elastic made the code available on Elastic’s public GitHub code repository for
`users to inspect, contribute, create issues, and open pull requests, all pursuant to the
`“Elastic License.” Elastic has released the source code for subsequent versions of X-
`Pack on GitHub, also under the “Elastic License.”
`
`
`
`
`Response: floragunn admits Elastic’s allegation in the first sentence of paragraph 15 of the
`
`complaint that Elastic opened the source for version 6.2x of X-Pack in April 2018, but denies
`
`that Elastic made the code available solely pursuant to the “Elastic License.” floragunn denies
`
`all other allegations in paragraph 15 of the complaint.
`
`
`
`Paragraph 16
`
`
`Allegation: The Elastic License did not grant to floragunn or any other party the right to
`create copies or prepare derivative works for use in any production capacity. And to the
`extent floragunn acquired any rights pursuant to the Elastic License, those rights
`terminated immediately and automatically by virtue of floragunn’s actions as described
`herein. Nor did any license applicable to earlier versions of X-Pack and/or Shield provide
`floragunn the right to create copies or prepare derivative works for use in any production
`capacity.
`
`
`
`
`Response: floragunn denies the allegations of paragraph 16 of the complaint because the
`
`allegation implies that floragunn copied or prepared derivative works of X-Pack or Shield, which
`
`it did not. As for the legal interpretation of Elastic’s licenses, floragunn respectfully refers the
`
`Court to Elastic’s license to ascertain its terms.
`
`
`
`
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`6
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 7 of 50
`
`
`
`Paragraph 17
`
`Allegation: Elastic is informed and believes, and, on that basis, alleges that
`floragunn accessed the Elastic code described herein either through decompilation
`of Elastic binaries, reviewing source-available Elastic repositories, and/or review
`of otherwise publicly-available Elastic code.
`
`
`Response: floragunn denies the allegations of paragraph 17.
`
`Paragraph 18
`
`
`Allegation: floragunn markets and distributes Search Guard, a plug-in for
`Elasticsearch that offers features similar to the security features that Elastic offers in
`X-Pack. floragunn makes certain source code for Search Guard available for review
`and inspection on its GitLab repositories under several different license agreements.
`
`
`
`
`Response: floragunn denies Elastic’s allegations in the first sentence of paragraph 18 that
`
`floragunn’s “Search Guard, a plug-in for Elasticsearch . . . offers features similar to the security
`
`features that Elastic offers in X-Pack.” In fact, Search Guard always has, and continues to, offer
`
`more and different features than X-Pack, although some features are similar.
`
`Paragraph 19
`
`Allegation: Search Guard is available as a “Community Edition” for free for certain uses,
`but floragunn charges customers for Enterprise and Compliance editions of Search Guard.
`floragunn prohibits users from, among other things, taking features from the Enterprise or
`Compliance editions of Search Guard into production without purchasing a license. In
`fact, floragunn explicitly warned its users that doing so “is illegal” and “can lead to
`serious legal consequences, which can bring more harm and costs to a company . . . .”
`
`Response: floragunn admits the allegations in paragraph 19 of the complaint. Search Guard
`
`community edition is available free of charge, and the Enterprise and Compliance editions are
`
`available for a fee under difference licenses, which are available to the public for review.
`
`floragunn further states that it did not violate the terms of any Elastic license.
`
`Paragraph 20
`
`Allegation: After initiating the floragunn I lawsuit, Elastic identified further instances
`of infringement by floragunn. Infringement by floragunn is evident in at least the
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`7
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 8 of 50
`
`
`
`following code from a February 13, 2016 commit to the Search Guard
`PrivilegesEvaluator.java file:
`
`private Tuple<Set<String>, Set<String>> resolve(final User user, final String action, final
`TransportRequest request,
`final MetaData metaData) {
`if (!(request instanceof CompositeIndicesRequest) && !(request
`instanceof IndicesRequest)) {
`if (log.isDebugEnabled()) {
`log.debug("{} is not an IndicesRequest", request.getClass());
`}
`return new Tuple<Set<String>, Set<String>>(Collections.EMPTY_SET,
`Collections.EMPTY_SET);
`}
`final Set<String> indices = new HashSet<String>();
`final Set<String> types = new HashSet<String>();
`if (request instanceof CompositeIndicesRequest) {
`for (final IndicesRequest indicesRequest : ((CompositeIndicesRequest)
`request).subRequests()) {
`final Tuple<Set<String>, Set<String>> t = resolve(user, action,
`indicesRequest, metaData);
`indices.addAll(t.v1());
`types.addAll(t.v2());
`}
`} else {
`final Tuple<Set<String>, Set<String>> t = resolve(user, action,
`(IndicesRequest) request, metaData);
`indices.addAll(t.v1());
`types.addAll(t.v2());
`}
`if (IndexNameExpressionResolver.isAllIndices(new ArrayList<String>(indices)))
`indices.clear();
`indices.add("_all");
`}
`if (types.isEmpty()) {
`types.add("_all");
`}
`return new Tuple<Set<String>,
`Set<String>>(Collections.unmodifiableSet(indices),
`Collections.unmodifiableSet(types)); }
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`{
`
`denies Elastic’s allegations in paragraph 20 of the complaint. floragunn further denies that any
`
`code in this commit to PrivilegesEvaluator.java infringes any of Elastic’s code.
`
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`8
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 9 of 50
`
`
`
`Paragraph 21
`
`Allegation: The code in Paragraph 20 is copied from and/or is a derivative work of at
`least the following Elastic code included in the binary of Elasticsearch Shield in the file
`DefaultIndicesResolver.java, original to Elasticsearch Shield version 1.0.0 Beta1 and
`released by Elastic on November 3, 2014:
`
`public Set<String> resolve(User user, String action, TransportRequest
`request, MetaData metaData) {
`boolean isIndicesRequest = request instanceof CompositeIndicesRequest ||
`request instanceof IndicesRequest;
`assert isIndicesRequest : "Request [" + request + "] is not an Indices request.
`The only requests passing the action matcher should be IndicesRequests";
`// if for some reason we are missing an action... just for safety we'll reject
`if (!isIndicesRequest) {
`return Collections.emptySet();
`}
`if (request instanceof CompositeIndicesRequest) {
`Set<String> indices = Sets.newHashSet();
`CompositeIndicesRequest compositeIndicesRequest =
`(CompositeIndicesRequest) request;
`for (IndicesRequest indicesRequest :
`compositeIndicesRequest.subRequests()) {
`indices.addAll(resolveIndices(user, action, indicesRequest, metaData));
`}
`return indices;
`
`}
`return resolveIndices(user, action, (IndicesRequest) request,
`metaData); }
`
`
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`denies Elastic’s allegations in paragraph 21 of the complaint. floragunn specifically denies that
`
`that the commit identified in paragraph 20 is copied from or is a derivative work of any Elastic
`
`code. floragunn further denies that any similarities are due to copying of any protectable
`
`expression original to Elastic. Moreover, the allegedly infringed code is licensed under Apache
`
`Software License 2.0. To the extent that paragraph 21 alleges that floragunn decompiled Elastic
`
`object code or otherwise accessed nonpublic code, floragunn denies such allegations.
`
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`9
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 10 of 50
`
`
`
`
`Paragraph 22
`
`Allegation: Elastic registered Elasticsearch Shield version 1.0.0 Beta1 with the
`United States Copyright Office on April 30, 2020.
`
`
`
`Response: floragunn admits that Elastic submitted such registration, but denies that all the
`
`contents of that registration are entitled to copyright protection.
`
`Paragraph 23
`
`Allegation: As shown below, ignoring non-substantive differences in the code and
`adjusting white space to illustrate similarities, it is clear that at least the floragunn code
`in Paragraph 20 (on the right) is copied from and/or is a derivative work of at least the
`Elastic code in Paragraph 21 (on the left):
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`10
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 11 of 50
`
`
`
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`denies Elastic’s allegations in paragraph 23 of the complaint. floragunn specifically denies that
`
`that the commit identified in paragraph 20 is copied from or is a derivative work of any Elastic
`
`code, much less that it is “clear that . . . [it] is copied from and/or is a derivative work of at least
`
`the Elastic code in Paragraph 21.” floragunn further denies that any similarities are due to
`
`copying of any protectable expression original to Elastic. To the extent that paragraph 23 alleges
`
`that floragunn decompiled Elastic object code or otherwise accessed nonpublic code, floragunn
`
`denies such allegations.
`
`Paragraph 24
`
`Allegation: Infringement by floragunn is also evident in an April 5, 2017 commit to the
`Search Guard Kibana plugin login_controller.js file. That file contains the following
`code:
`const {query, hash} = parse($window.location.href, true);
`let nextUrl;
`if (query.next) {
`nextUrl = query.next + (hash || ")
`} else {
`nextUrl = "/";
`}
`
`
`
`Response: floragunn admits that the April 5, 2017 commit contained such code. floragunn
`
`denies that it has engaged in any copyright infringement and therefore denies Elastic’s remaining
`
`allegations in paragraph 24 of the complaint. floragunn further denies that any code in this
`
`commit to login_controller.js infringes any of Elastic’s code.
`
`Paragraph 25
`
`
`Allegation: That floragunn code is copied from and/or is a derivative work of the
`following Elastic code included in parse_next.js and original to Kibana Shield version
`2.3.2 released by Elastic on April 26, 2016, reproduced here:
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`11
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 12 of 50
`
`
`
`const {query, hash} = parse(location.href, true);
`if (query.next) return query.next + (hash || ");
`return '/';
`
`
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`denies Elastic’s allegations in paragraph 25 of the complaint. floragunn specifically denies that
`that the commit identified in paragraph 24 is copied from or is a derivative work of any Elastic
`code. floragunn further denies that any similarities are due to copying of any protectable
`expression original to Elastic. Moreover, the allegedly infringed code is licensed under the
`Apache Software License 2.0.
`
`Paragraph 26
`
`
`Allegation: Elastic registered Kibana Shield version 2.3.2 with the United States
`Copyright Office on November 6, 2019.
`
`
`
`Response: floragunn admits that Elastic submitted such a registration, but denies that all of the
`
`contents of the registration are entitled to copyright protection.
`
`Paragraph 27
`
`
`Allegation: Infringement by floragunn is also evident in an August 6, 2017 commit to
`the Search Guard Kibana plugin index.html and filterbar.html files. Those files contain
`the following code:
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`12
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 13 of 50
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Response: floragunn admits that the August 6, 2017 commit contains such code. floragunn
`
`denies that it has engaged in any copyright infringement and therefore denies Elastic’s
`
`allegations in paragraph 27 of the complaint. floragunn further denies that any code in this
`
`commit to index.html and filterbar.html infringes any of Elastic’s code.
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`13
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 14 of 50
`
`
`
`Paragraph 28
`
`Allegation: That floragunn code is copied from and/or is a derivative work of
`Elastic code in the users.html file original to Kibana X-Pack versions 5.0.0 and
`5.2.0 and released by Elastic on or before January 31, 2017, reproduced here:
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`14
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 15 of 50
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`denies Elastic’s allegations in paragraph 28 of the complaint. floragunn specifically denies that
`
`that the commit identified in paragraph 27 is copied from or is a derivative work of any Elastic
`
`code. floragunn further denies that any similarities are due to copying of any protectable
`
`expression original to Elastic. Moreover, the allegedly infringed code is licensed under the
`
`Apache Software License 2.0.
`
`Paragraph 29
`
`Allegation: As shown below, ignoring non-substantive differences in the code and
`adjusting white space to illustrate similarities, it is clear that at least the floragunn code in
`Paragraph 27 is copied from and/or is a derivative work of at least the Elastic code in
`Paragraph 28. This comparison includes additional indicia of copying in the following
`non-functional comment: “<!-- We need an empty section for the buttons to be positioned
`consistently. -->”
`
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`15
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 16 of 50
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`16
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 17 of 50
`
`
`
`
`
`
`
`
`
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`denies Elastic’s allegations in paragraph 29 of the complaint. floragunn specifically denies that
`
`that the commit identified in paragraph 27 is copied from or is a derivative work of any Elastic
`
`code, much less that it is “clear that . . . [it] is copied from and/or is a derivative work of at least
`
`the Elastic code in Paragraph 28.” floragunn further denies that any similarities are due to
`
`copying of any protectable expression original to Elastic.
`
`
`
`Paragraph 30
`
`
`Allegation: Elastic registered Kibana X-Pack versions 5.0.0 and 5.2.0 with
`the United States Copyright Office on April 30, 2020 and September 19,
`2019, respectively.
`
`
`
`Response: floragunn admits that Elastic made these registrations, but denies that they entitle
`
`Elastic to copyright protection for the code that Elastic claims to be infringed.
`
`Paragraph 31
`
`Allegation: Further newly identified infringement by floragunn is evident in a
`September 11, 2017 commit to the Search Guard PrivilegesEvaluator.java file,
`including at least:
`
`if(action.equals("indices:data/write/bulk[s]")) {
`and the following commented-out—that is, non-functional—code:
`if(request instanceof BulkRequest) {
`for(DocWriteRequest<?> ar: ((BulkRequest) request).requests()) {
`//require also op type permissions
`switch(ar.opType()) {
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`17
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 18 of 50
`
`
`
`case CREATE: additionalPermissionsRequired.add(IndexAction.NAME);break;
`case INDEX: additionalPermissionsRequired.add(IndexAction.NAME);break;
`case DELETE:
`additionalPermissionsRequired.add(DeleteAction.NAME);break; case
`UPDATE: additionalPermissionsRequired.add(UpdateAction.NAME);break; }
`}
`
`}
`
`
`
`
`Response: floragunn admits that the commit contained such changes, but denies that it
`
`infringed any of Elastic’s copyrights. floragunn specifically denies that any similarities
`
`to Elastic’s code are due to copying of any protectable expression original to Elastic.
`
`Paragraph 32
`Allegation: A subsequent September 26, 2017 commit to the Search Guard
`PrivilegesEvaluator.java file contains a further example of floragunn’s
`infringement. In that commit, floragunn retained the infringing commented-out
`code quoted in Paragraph 31, but removed the “/*” and “*/” symbols that had
`commented out the infringing code.
`
`Response: floragunn admits that the commit contained such changes, but denies that it
`
`infringed any of Elastic’s copyrights. floragunn specifically denies that any similarities
`
`to Elastic’s code are due to copying of any protectable expression original to Elastic.
`
`
`Paragraph 33
`Allegation: Then, floragunn again infringed Elastic’s copyrights in an October 1, 2017
`commit to the Search Guard PrivilegesEvaluator.java file. That commit added the
`following code:
`
`switch (bir.request().opType()) {
`case CREATE:
`additionalPermissionsRequired.add(IndexAction.NAME);
`break;
`case INDEX:
`additionalPermissionsRequired.add(IndexAction.NAME);
`break;
`case DELETE:
`additionalPermissionsRequired.add(DeleteAction.NAME);
`break;
`case UPDATE:
`additionalPermissionsRequired.add(UpdateAction.NAME);
`break;
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`18
`
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 19 of 50
`
`
`
`The same floragunn commit and file also commented out the following
`code: /*if(request instanceof BulkRequest) {
`
`for(DocWriteRequest<?> ar: ((BulkRequest) request).requests()) {
`//require also op type permissions
`switch(ar.opType()) {
`case CREATE: additionalPermissionsRequired.add(IndexAction.NAME);break;
`case INDEX: additionalPermissionsRequired.add(IndexAction.NAME);break;
`case DELETE:
`additionalPermissionsRequired.add(DeleteAction.NAME);break; case
`UPDATE: additionalPermissionsRequired.add(UpdateAction.NAME);break; }
`}
`}*/
`
`Response: floragunn admits that the commit contained such code, but denies that it infringes any
`
`of Elastic’s copyrights. floragunn specifically denies that any similarities are due to copying of
`
`any protectable expression original to Elastic.
`
`Paragraph 34
`Allegation: An October 10 commit to the same file demonstrates further infringement
`by floragunn. That commit removed the commented-out infringing code in Paragraph 33
`but retained other infringing code. Additionally, floragunn’s October 10 commit contains
`code that is a derivative work of Elastic’s copyrighted source code.
`
`
`
`Response: floragunn admits that the October 10 commit contained that change.
`
`floragunn denies that the commit infringed any of Elastic’s copyrights. floragunn
`
`specifically denies that any similarities are due to copying of any protectable expression
`
`original to Elastic. floragunn further denies that any code in the commit identified in this
`
`paragraph constitutes a derivative work of Elastic’s code.
`
`Paragraph 35
`Allegation: The floragunn commits referenced in Paragraphs 31–34 contain code that is
`copied from and/or is a derivative work of at least the following Elastic code included in
`X-Pack in the file AuthorizationService.java, original to Elasticsearch X-Pack 5.6.0 and
`released by Elastic on September 11, 2017:
`if (action.equals(TransportShardBulkAction.ACTION_NAME)) {
`
`And:
`
`
`
`DEFENDANT’S ANSWER
`Case No. 4:19-cv-05553-YGR
`19
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:19-cv-05553-YGR Document 71 Filed 12/15/20 Page 20 of 50
`
`
`
`final DocWriteRequest docWriteRequest = item.request();
`switch (docWriteRequest.opType()) {
`case INDEX:
`case CREATE:
`return IndexAction.NAME;
`case UPDATE:
`return UpdateAction.NAME;
`case DELETE:
`return DeleteAction.NAME;
`}
`
`
`Response: floragunn denies that it has engaged in any copyright infringement and therefore
`
`denies Elastic’s allegations in paragraph 35 of the complaint. floragunn specifically denies that
`
`that the commits identified in paragraphs 31-34 are copied from or are a derivative work of any
`
`Elastic code. floragunn further denies that any similarities are due to copying of any protectable
`
`expression original to Elastic.
`
`
`Paragraph 36
`Allegation: Elastic had not publicly released the source code for X-Pack alleged in
`Paragraph 35 at the time of floragunn’s copying and/or creation of derivative works from
`that code. Elastic is informed and believes and, on that basis, alleges that floragunn
`decompiled Elastic’s binaries or otherw

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket