(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Wolfram 15.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       154,          7]
NotebookDataLength[     40795,       1088]
NotebookOptionsPosition[     33142,        944]
NotebookOutlinePosition[     35132,        993]
CellTagsIndexPosition[     35055,        988]
WindowTitle->$Secp256k1
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[GridBox[{
   {GridBox[{
      {
       ItemBox[Cell[BoxData[
         RowBox[{
          TemplateBox[{12},
           "Spacer1"], Cell[
          "WOLFRAM INSTITUTE/ PUZZLES SYMBOL", "PacletNameCell",
           TextAlignment->Center,ExpressionUUID->
           "d3a94b9a-2f76-4537-b817-5619d45a7b25"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "983b626f-ef0b-4fcd-95ee-9a46aa56c2e0"],
        Background->LightDarkSwitched[
          RGBColor[0.490196, 0.576471, 0.690196]],
        ItemSize->Full], ""}
     },
     GridBoxAlignment->{"Rows" -> {{Center}}},
     GridBoxItemSize->{"Columns" -> {Full, 
         Scaled[0.02]}, "Rows" -> {{2.5}}}], Cell[TextData[{
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "See Also",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "91022421-6885-44cf-8fba-9a9760c4ecbb"]
         }],ExpressionUUID->"d4559e86-1c01-4cad-a2ef-1c7ce75af2ee"],
         StripOnInput->False],{
        StyleBox[
          "\"Secp256k1PublicKey\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/Secp256k1PublicKey"], 
         StyleBox[
          "\"Secp256k1Point\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/Secp256k1Point"], 
         StyleBox[
          "\"Secp256k1PointAdd\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/Secp256k1PointAdd"], 
         StyleBox[
          "\"Secp256k1PointQ\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/Secp256k1PointQ"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"SeeAlso"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "f864506e-a29c-4b8f-949d-a6c9014d1fa8"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "Related Guides",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "b5548a08-f3ff-4b5a-8d3c-81675a37bc13"]
         }],ExpressionUUID->"a5a2956c-8d9e-4fe5-b0bd-d1bc0495e27a"],
         StripOnInput->False],{
        "\"Derivation\"" :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/guide/Derivation"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"MoreAbout"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "4071dfc9-240c-4634-a6a3-0c217cb114d2"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "URL",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "166451a5-cd09-4b20-b1fc-d6c7f7854fce"]
         }],ExpressionUUID->"bab6c3ea-78e5-47ae-ab5e-677556fa3523"],
         StripOnInput->False],{
        "\"WolframInstitute/Puzzles/ref/$Secp256k1\"" :> None, 
         "\"Copy Wolfram Documentation Center URL\"" :> 
         CopyToClipboard["WolframInstitute/Puzzles/ref/$Secp256k1"], 
         Delimiter, "\"Copy web URL\"" :> 
         Module[{DocumentationSearch`Private`nb$}, 
           DocumentationSearch`Private`nb$ = 
            NotebookPut[
             Notebook[{
               Cell[BoxData[
                 MakeBoxes[
                  Hyperlink[
                   "http://reference.wolfram.com/language/WolframInstitute/\
Puzzles/ref/$Secp256k1.html"], StandardForm]], "Input", TextClipboardType -> 
                 "PlainText"]}, Visible -> False]]; 
           SelectionMove[DocumentationSearch`Private`nb$, All, Notebook]; 
           FrontEndTokenExecute[DocumentationSearch`Private`nb$, "Copy"]; 
           NotebookClose[DocumentationSearch`Private`nb$]; Null], 
         "\"Go to web URL\"" :> 
         FrontEndExecute[{
           NotebookLocate[{
             URL[If[TrueQ[False], 
                 "http://reference.wolfram.com/system-modeler/", 
                 "http://reference.wolfram.com/language/"] <> 
               "WolframInstitute/Puzzles/ref/$Secp256k1" <> ".html"], 
              None}]}]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"URLMenu"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "26df95d7-fa76-43d5-9167-f93b45d08b5f"]
    }], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "f86d7bf9-47cb-4edf-aeac-57695028e792"]}
  }]], "AnchorBarGrid",
 CellID->1,ExpressionUUID->"aad68e43-ca2e-4499-b473-a9af52c1f1d8"],

Cell["WolframInstitute`Puzzles`", "ContextNameCell",ExpressionUUID->"3d78d270-3099-416f-b254-5526847c8fd7"],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {Cell[TextData[{
     Cell[
     "$Secp256k1", "ObjectName",ExpressionUUID->
      "b8fb0ed9-70c1-4edf-9ad0-7c1debfab59c"],
     Cell[BoxData[
      TemplateBox[{8},
       "Spacer1"]],ExpressionUUID->"c07eebe8-5696-4903-8f91-6c1762cbeb1c"],
     Cell[BoxData[
     ""], "ObjectNameTranslation",ExpressionUUID->
      "de1e6d41-2d44-407a-a3af-1d0621e05f4f"]
    }],ExpressionUUID->"b735b3a4-4d4c-49d2-83c1-ebbaf9e19d78"], 
    "\[SpanFromLeft]"}
  }]], "ObjectNameGrid",ExpressionUUID->"9b9d7c81-ed1b-4627-adc9-\
b5979ad25ff3"],

Cell[BoxData[GridBox[{
   {"", Cell[TextData[{
     Cell[BoxData[
      TemplateBox[{
        Cell[
         TextData["$Secp256k1"]], 
        "paclet:WolframInstitute/Puzzles/ref/$Secp256k1", 
        "WolframInstitute/Puzzles Package Symbol"},
       "PackageLink",
       BaseStyle->"InlineFormula"]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "a99558f6-e023-4ef8-9753-6dd3685a3404"],
     "\[LineSeparator]",
     "is an Association of the secp256k1 domain parameters."
    }],ExpressionUUID->"912d6a9e-280a-484a-9339-4135dcb88f29"]}
  }]], "Usage",ExpressionUUID->"f5cb786c-d59c-43c3-8fca-5b65278a4264"]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[Cell[BoxData[Cell[TextData[{
  Cell[BoxData[
   DynamicBox[ToBoxes[
     If[CurrentValue[
        EvaluationCell[], "CellGroupOpen"] =!= Closed, 
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], 
      Rotate[
       Style[
        Graphics[{
          Thickness[0.18], 
          RGBColor[0.8509803921568627, 0.396078431372549, 0], 
          Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
         PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
        0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
    ImageSizeCache->{
     13.600000000000001`, {-0.1685058593749993, 13.768505859375}}]],
   ExpressionUUID->"61fe2692-d47b-45fd-b948-886fada4d3eb"],
  Cell[BoxData[
   TemplateBox[{1},
    "Spacer1"]],ExpressionUUID->"16d9b1bc-d1c1-48a4-bca2-f36dd0a9424b"],
  "Details and Options"
 }], "NotesFrameText",ExpressionUUID->
  "b0233205-9760-4109-9ba6-ac5837df92f4"]],ExpressionUUID->"9962c45b-78a9-\
450c-b67a-650f14e5bb84"]], "NotesSection",
 ShowGroupOpener->"Thumbnail",
 WholeCellGroupOpener->True,
 CellGroupingRules->{"SectionGrouping", 50},
 CacheGraphics->False,
 CellID->842173086,ExpressionUUID->"c15e77eb-a03a-4176-8c63-05945d879656"],

Cell[TextData[{
 "The curve is ",
 Cell[BoxData[
  RowBox[{
   SuperscriptBox[
    StyleBox["y", "TI"], "2"], "=", 
   SuperscriptBox[
    StyleBox["x", "TI"], "3"], "+", "7"}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "8f370b92-5401-43c5-96c5-30d7554fed06"],
 " over the prime field of order ",
 Cell[BoxData[
  RowBox[{
   StyleBox["p", "TI"], "=", 
   SuperscriptBox["2", "256"], "-", 
   SuperscriptBox["2", "32"], "-", "977"}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "7fe5e2b0-683e-4672-9976-5ea9fc44d523"],
 ", the curve Bitcoin and Ethereum keys live on."
}], "Notes",ExpressionUUID->"9d42a448-4dee-4e46-81fc-937ee2050b7d"],

Cell[TextData[{
 "The keys are ",
 Cell[BoxData["\<\"Name\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "bc6614b3-9a75-41eb-a036-70e5d6db3318"],
 ", ",
 Cell[BoxData["\<\"Prime\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "bab61c08-14ca-4847-8c22-e55f501f12a9"],
 ", ",
 Cell[BoxData["\<\"A\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "acffddf4-e151-46f8-bdf6-265f2112248f"],
 ", ",
 Cell[BoxData["\<\"B\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "e18c5da9-539a-4da2-80ff-813cd69d793e"],
 ", ",
 Cell[BoxData["\<\"Generator\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "a48b07f9-2462-40df-ae39-0ca690b82594"],
 ", ",
 Cell[BoxData["\<\"Order\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "e09074b3-27f5-435e-9f66-e6fb6c177708"],
 " and ",
 Cell[BoxData["\<\"Cofactor\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "4b7240c5-6116-4e8e-8375-2ac47fbc2e52"],
 "."
}], "Notes",ExpressionUUID->"1f5d39ef-87ca-447e-bb11-c9baf218a614"],

Cell[TextData[{
 Cell[BoxData["\<\"Generator\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "aed8a3f5-331f-4150-b69e-fde3468cae6f"],
 " is the base point ",
 Cell[BoxData[
  StyleBox["G", "TI"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "0601b4fb-0baf-4b63-b054-4dce2c21da68"],
 " as a coordinate pair ",
 Cell[BoxData[
  RowBox[{
   RowBox[{"{", 
    StyleBox["x", "TI"]}], ",", 
   RowBox[{
    StyleBox["y", "TI"], "}"}]}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "ce57bf07-375d-4f0c-a7d7-450c58547899"],
 ", and ",
 Cell[BoxData["\<\"Order\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "4db670f8-a1e5-40c3-9ddf-bf9668ab6fdb"],
 " is the prime ",
 Cell[BoxData[
  StyleBox["n", "TI"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "73fe13af-07e4-4c47-b261-3c9a1c98fe02"],
 " with ",
 Cell[BoxData[
  StyleBox[
   RowBox[{"n", "G"}], "TI"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "1fd1b1ee-1283-4eca-b599-44a81e8ff61f"],
 " the point at infinity."
}], "Notes",ExpressionUUID->"59d4682d-65d2-40b4-ad54-d75f2048e1bf"],

Cell["The values are those of SEC 2 v2 section 2.4.1.", "Notes",ExpressionUUID->"371fbe9b-0ae0-453a-9123-80ae1ecbdeff"],

Cell[TextData[{
 "The parameters name a short Weierstrass curve over a prime field, so they \
can be handed to a general finite-field elliptic-curve group law as ",
 Cell[BoxData[
  RowBox[{
   StyleBox["a", "TI"], "=", "0"}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "7f120ec3-2281-44d2-9224-e66c1c538eb7"],
 ", ",
 Cell[BoxData[
  RowBox[{
   StyleBox["b", "TI"], "=", "7"}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "b1c2b474-7fb4-4b41-8313-4b9760f603ac"],
 " and the modulus ",
 Cell[BoxData["\<\"Prime\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "b5ff12e4-44f1-4b24-ac2f-4c44d0b03cfa"],
 "."
}], "Notes",ExpressionUUID->"f4da6cae-2764-4110-873b-6fcd6c9b5bce"],

Cell[TextData[{
 "A private key is an integer in ",
 Cell[BoxData["1"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "1fa46ef7-a562-42da-8762-2cead1601697"],
 " to ",
 Cell[BoxData[
  RowBox[{
   StyleBox["n", "TI"], "-", "1"}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "6ab58232-f858-4b9c-87fc-a8bcc39bca04"],
 "; ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Secp256k1PublicKey"]], 
    "paclet:WolframInstitute/Puzzles/ref/Secp256k1PublicKey", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "9127b1ac-debb-40cb-ae2a-53ceafa07fdc"],
 " maps it to ",
 Cell[BoxData[
  StyleBox[
   RowBox[{"d", "G"}], "TI"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "42ebd8bc-14b9-4de6-ab8e-07f81fb4f2dc"],
 "."
}], "Notes",ExpressionUUID->"782052a6-140c-4eda-9a00-eaaed5210afb"],

Cell[TextData[{
 "The cofactor is ",
 Cell[BoxData["1"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "f1b56797-c785-4a74-a1bb-3f11dde33a40"],
 ", so every point other than the identity has order ",
 Cell[BoxData[
  StyleBox["n", "TI"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "26dd950a-ddb1-4e3a-a8ac-45ab02456a36"],
 "."
}], "Notes",ExpressionUUID->"64369238-70c8-4946-a554-cddb93c003fa"]
}, Closed]],

Cell["", "PageDelimiter",ExpressionUUID->"c9014777-995d-493c-8ac1-275c2072cfd0"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[
     MatchQ[
      CurrentValue[
       EvaluationNotebook[], {
       TaggingRules, "Openers", "PrimaryExamplesSection"}, Open], 
      Alternatives[True, Open]], 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
   ImageSizeCache->{
    13.600000000000001`, {4.251494140625001, 9.348505859375}}]],
  ExpressionUUID->"2c4c1dc9-3e93-4a83-bd1c-92ab22264ea6"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"acd606e9-fa38-421e-88e4-c75def2dae53"],
 "Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(8)", "ExampleCount",ExpressionUUID->
  "9c04c37e-91e1-4383-85ce-64b74fc84f56"]
}], "PrimaryExamplesSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->338339025,ExpressionUUID->"0a5f8c97-8af9-45de-a8c1-6fd913caf6f8"],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<WolframInstitute`Puzzles`\>\"", "]"}]], "Input", \
"ExampleInitialization",
 CellLabel->"In[1]:=",
 CellID->1969679695,ExpressionUUID->"5c2ee347-d8eb-4fb6-b29a-e0a47ab908fc"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "0d276ded-8493-4cfc-9f88-3eaae9294b60"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"74cc8bc6-f72a-48b3-a04f-fb2e921decd9"],
 "Basic Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "f73bf3a3-2d32-49da-a698-001101ea4ec6"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2074779566,ExpressionUUID->"2cadbe7e-8c55-4a6d-9554-8a2af659471d"],

Cell["The domain parameters:", "ExampleText",
 CellTags->
  "TextAnnotation",ExpressionUUID->"1f36ae08-f809-47a6-9a91-8b1464b4eea8"],

Cell[CellGroupData[{

Cell[BoxData["$Secp256k1"], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"9ac75f6a-991b-46f8-9225-9f4e40230677"],

Cell[BoxData[
 RowBox[{"\[LeftAssociation]", 
  RowBox[{
   RowBox[{"\<\"Name\"\>", "\[Rule]", "\<\"secp256k1\"\>"}], ",", 
   RowBox[{"\<\"Prime\"\>", "\[Rule]", 
    "1157920892373161954235709850086879078532699846656405640394575840079088346\
71663"}], ",", 
   RowBox[{"\<\"A\"\>", "\[Rule]", "0"}], ",", 
   RowBox[{"\<\"B\"\>", "\[Rule]", "7"}], ",", 
   RowBox[{"\<\"Generator\"\>", "\[Rule]", 
    RowBox[{"{", 
     RowBox[{
     "550662630222773436695787188951685343262506034537775941755001873603891167\
29240", ",", 
      "32670510020758816978083085130507043184471273380659243275938904335757337\
482424"}], "}"}]}], ",", 
   RowBox[{"\<\"Order\"\>", "\[Rule]", 
    "1157920892373161954235709850086879078528375642790749043826051631415181614\
94337"}], ",", 
   RowBox[{"\<\"Cofactor\"\>", "\[Rule]", "1"}]}], 
  "\[RightAssociation]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"a020dc44-a2f3-4e39-be2a-472157ec3f12"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "9440768a-90d6-44e5-9a99-9f8ffa4ba562"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"a1db8dc4-4332-4703-\
aae1-48d76255b2d5"],

Cell["The field the curve is defined over:", "ExampleText",ExpressionUUID->"ef9de928-1639-4626-821c-5c710038bad0"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"$Secp256k1", "[", "\"\<Prime\>\"", "]"}], " ", "==", " ", 
  RowBox[{
   RowBox[{"2", "^", "256"}], " ", "-", " ", 
   RowBox[{"2", "^", "32"}], " ", "-", " ", "977"}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"2d31f295-67e3-48d4-b45d-6780561845bd"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"20f78829-9d67-4fd0-b8ee-d8a0e4fccd9a"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "91a3432c-e9ed-4d51-8770-c49419ca1cf6"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"bfc270d5-b48f-46be-\
a215-34a5e9bfd2e3"],

Cell["The generator point:", "ExampleText",ExpressionUUID->"01aa8e28-ea6c-4a13-af78-32516aa51aad"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"$Secp256k1", "[", "\"\<Generator\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"6e21a283-5232-49cf-856e-2ba7c026e0fc"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
  "550662630222773436695787188951685343262506034537775941755001873603891167292\
40", ",", 
   "32670510020758816978083085130507043184471273380659243275938904335757337482\
424"}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"35aeb994-8579-4e78-87b4-b69e5f90b476"]
}, Open  ]]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "15a5359a-12a4-43d3-ae33-5b611964f506"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"6ca1805e-a71c-444e-8652-6ba18a075d6e"],
 "Scope",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "2a7b6f44-eb6a-4db0-bb64-6cd6ecb4653b"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1293636265,ExpressionUUID->"3605c55a-4db6-4557-8903-3baef448c1d6"],

Cell["\<\
The group order is prime, which is what makes every non-identity point a \
generator:\
\>", "ExampleText",ExpressionUUID->"2d6b1e29-72ae-4f4b-b45b-a3c0a8d5dd1c"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"PrimeQ", "[", 
  RowBox[{"$Secp256k1", "[", "\"\<Order\>\"", "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"63767bcf-b83b-46a8-a1d9-66de1ef4e218"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"2980d874-3c24-484b-98e1-89a2143ad008"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "650d56f9-e178-46a9-98c3-d5647d4c82b9"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"0e09cbf9-d876-4e0f-\
9d20-8cf02b7aaa1e"],

Cell["\<\
The group order is slightly smaller than the field order, so a 256-bit \
integer is not always a valid scalar:\
\>", "ExampleText",ExpressionUUID->"7f54b9eb-1754-4932-b1da-c8856317fdde"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"$Secp256k1", "[", "\"\<Prime\>\"", "]"}], " ", "-", " ", 
  RowBox[{"$Secp256k1", "[", "\"\<Order\>\"", "]"}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"5c6a37e5-c822-42e5-bf3a-d8ceea5d253f"],

Cell[BoxData["432420386565659656852420866390673177326"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"cdb7a4b9-5bde-467a-9e4a-f19defb0ddc9"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "5a148cf7-88ad-4d17-a434-c71fad25eabc"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"7c8485d7-9d14-46cc-8747-9be6a9e6802a"],
 "Properties & Relations",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "8ba9c3b0-6977-47b7-8fe5-a9440f6dc2eb"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2123667759,ExpressionUUID->"00613eef-2784-4c32-acbd-3b0075f43f29"],

Cell["The generator satisfies the curve equation:", "ExampleText",ExpressionUUID->"b76accf9-5226-4c13-9aec-24f134177c39"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Mod", "[", 
  RowBox[{
   RowBox[{
    RowBox[{
     RowBox[{"Last", "[", 
      RowBox[{"$Secp256k1", "[", "\"\<Generator\>\"", "]"}], "]"}], "^", 
     "2"}], " ", "-", " ", 
    RowBox[{
     RowBox[{"First", "[", 
      RowBox[{"$Secp256k1", "[", "\"\<Generator\>\"", "]"}], "]"}], "^", 
     "3"}], " ", "-", " ", "7"}], ",", " ", 
   RowBox[{"$Secp256k1", "[", "\"\<Prime\>\"", "]"}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"389e3495-c35f-4603-8093-ad0d3584d11c"],

Cell[BoxData["0"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"e4a9c101-f058-4abf-b6fc-4766b85ce089"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "ef66fe3b-73b0-42c1-8b30-6b3884b81ae0"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"d970d6b9-90a1-457a-\
83c9-8e45fe164fbd"],

Cell[TextData[{
 "Adding the generator to itself with ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Secp256k1PointAdd"]], 
    "paclet:WolframInstitute/Puzzles/ref/Secp256k1PointAdd", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "a5d15a4a-170b-49d3-a95c-7fed5ced467a"],
 " gives ",
 Cell[BoxData[
  RowBox[{"2", 
   StyleBox["G", "TI"]}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "d9f345fa-6773-4020-92e7-8e65f6ad7415"],
 ", the point of the scalar 2:"
}], "ExampleText",ExpressionUUID->"c4af0ef1-4bd2-44ed-9239-71655e107676"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"Secp256k1PointAdd", "[", 
   RowBox[{
    RowBox[{"$Secp256k1", "[", "\"\<Generator\>\"", "]"}], ",", " ", 
    RowBox[{"$Secp256k1", "[", "\"\<Generator\>\"", "]"}]}], "]"}], " ", "===",
   " ", 
  RowBox[{"Secp256k1Point", "[", 
   RowBox[{"Secp256k1PublicKey", "[", "2", "]"}], "]"}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"85547382-c07c-4a8f-bb9e-0e83bf3165ba"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"189de277-9322-49b7-a5c1-f8441ad60afa"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "fc31b35e-f5b3-4c4b-93df-3e82b66a84dc"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"50fc4550-8b97-4274-8e9a-669947a57c33"],
 "Possible Issues",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "e4b5f8db-4e9c-4eab-a3a8-c8da65f74d6e"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1305812373,ExpressionUUID->"3554e461-f165-4ec3-9cdd-dca19dfaa1c5"],

Cell[TextData[{
 "The curve has ",
 Cell[BoxData[
  RowBox[{
   StyleBox["a", "TI"], "=", "0"}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "4ff53ef5-20c0-4ce9-ac90-4de6e496f548"],
 ", so a general short-Weierstrass formula that divides by ",
 Cell[BoxData[
  StyleBox["a", "TI"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "63996155-e239-4e30-a4aa-fe260912db39"],
 " does not apply here:"
}], "ExampleText",ExpressionUUID->"8aed00d1-fb1e-496a-9879-b8bbebf1e1e2"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"$Secp256k1", "[", "\"\<A\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"043c36cf-5f7f-484b-926b-a45a55e6d408"],

Cell[BoxData["0"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"1ba59c2b-cb5f-4053-a1ff-9ab79ed52507"]
}, Open  ]]
}, Closed]]
}, Open  ]],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedFunction.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"See", " ", "Also"}], "SeeAlsoSection"]},
      {Cell[TextData[{
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Secp256k1PublicKey"]], 
           "paclet:WolframInstitute/Puzzles/ref/Secp256k1PublicKey", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "60c545f9-24b9-48b6-9c44-415ed88978a1"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Secp256k1Point"]], 
           "paclet:WolframInstitute/Puzzles/ref/Secp256k1Point", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "238cc0c9-06ef-4f21-b986-3c330dd27958"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Secp256k1PointAdd"]], 
           "paclet:WolframInstitute/Puzzles/ref/Secp256k1PointAdd", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "d04162e3-830a-4cb9-b2a4-6da644bbba0d"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Secp256k1PointQ"]], 
           "paclet:WolframInstitute/Puzzles/ref/Secp256k1PointQ", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "89eb2440-c1cd-4f42-8d5d-abff3eef20f4"]
       }], "SeeAlso",ExpressionUUID->"fd41be5f-02f6-48ec-92cb-96217592ef4b"]}
     }]}
  }]], "SeeAlsoSection",ExpressionUUID->"bf194ebb-581e-4762-9940-\
cdf5c842bc83"],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedGuide.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "MoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Derivation"]], 
           "paclet:WolframInstitute/Puzzles/guide/Derivation"},
          "RefLinkPlain",
          BaseStyle->{"MoreAbout"}]], "MoreAbout",ExpressionUUID->
         "17d49feb-7cd6-496e-b9f7-70e4bb204f4a"]}]}
     }]}
  }]], "MoreAboutSection",ExpressionUUID->"2f686b3a-c1b6-4029-863f-\
70b475a1be97"],

Cell[" ", "FooterCell",ExpressionUUID->"cece1373-d08f-4380-a07d-053b968f302d"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"$Secp256k1",
TaggingRules->{
 "ModificationHighlight" -> False, "ColorType" -> "", "LinkTrails" -> "", 
  "ExampleCounter" -> 1, 
  "Openers" -> {
   "PrimaryExamplesSection" -> Open, "ExampleSection" -> {"0" -> Open}, 
    "AllOptsTable" -> Closed}, "NewStyles" -> True, 
  "CitationPopupData" -> $Failed, "ShowCitation" -> False, "HasOptions" -> 
  True, "RootCaptions" -> "", "HeaderCoreAreaLink" -> {}, 
  "Metadata" -> {
   "built" -> "{2026, 8, 27, 0, 11, 56.074456}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {}, "specialkeywords" -> {}, 
    "tutorialcollectionlinks" -> {}, "index" -> True, "label" -> 
    "Wolfram Institute/ Puzzles Symbol", "language" -> "en", "paclet" -> 
    "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "PackageLink[$Secp256k1, paclet : \
WolframInstitute/Puzzles/ref/$Secp256k1, WolframInstitute/Puzzles Package \
Symbol] is an Association of the secp256k1 domain parameters.", 
    "synonyms" -> {}, "tabletags" -> {}, "title" -> "$Secp256k1", 
    "titlemodifier" -> "", "metadescription" -> "", "windowtitle" -> 
    "$Secp256k1", "type" -> "Symbol", "uri" -> 
    "WolframInstitute/Puzzles/ref/$Secp256k1", "WorkflowDockedCell" -> ""}, 
  "SearchTextTranslated" -> ""},
CellContext->CellGroup,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"433869f6-406f-478b-a2d2-39ae154e08db"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "TextAnnotation"->{
  Cell[18012, 504, 132, 2, 70, "ExampleText",ExpressionUUID->"1f36ae08-f809-47a6-9a91-8b1464b4eea8",
   CellTags->"TextAnnotation"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"TextAnnotation", 34898, 982}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[578, 21, 5623, 139, 70, "AnchorBarGrid",ExpressionUUID->"aad68e43-ca2e-4499-b473-a9af52c1f1d8",
 CellID->1],
Cell[6204, 162, 107, 0, 70, "ContextNameCell",ExpressionUUID->"3d78d270-3099-416f-b254-5526847c8fd7"],
Cell[CellGroupData[{
Cell[6336, 166, 553, 14, 70, "ObjectNameGrid",ExpressionUUID->"9b9d7c81-ed1b-4627-adc9-b5979ad25ff3"],
Cell[6892, 182, 673, 16, 70, "Usage",ExpressionUUID->"f5cb786c-d59c-43c3-8fca-5b65278a4264"]
}, Open  ]],
Cell[CellGroupData[{
Cell[7602, 203, 1443, 34, 70, "NotesSection",ExpressionUUID->"c15e77eb-a03a-4176-8c63-05945d879656",
 CellGroupingRules->{"SectionGrouping", 50},
 CellID->842173086],
Cell[9048, 239, 742, 21, 70, "Notes",ExpressionUUID->"9d42a448-4dee-4e46-81fc-937ee2050b7d"],
Cell[9793, 262, 1325, 37, 70, "Notes",ExpressionUUID->"1f5d39ef-87ca-447e-bb11-c9baf218a614"],
Cell[11121, 301, 1345, 40, 70, "Notes",ExpressionUUID->"59d4682d-65d2-40b4-ad54-d75f2048e1bf"],
Cell[12469, 343, 119, 0, 70, "Notes",ExpressionUUID->"371fbe9b-0ae0-453a-9123-80ae1ecbdeff"],
Cell[12591, 345, 832, 22, 70, "Notes",ExpressionUUID->"f4da6cae-2764-4110-873b-6fcd6c9b5bce"],
Cell[13426, 369, 1084, 33, 70, "Notes",ExpressionUUID->"782052a6-140c-4eda-9a00-eaaed5210afb"],
Cell[14513, 404, 496, 13, 70, "Notes",ExpressionUUID->"64369238-70c8-4946-a554-cddb93c003fa"]
}, Closed]],
Cell[15024, 420, 80, 0, 70, "PageDelimiter",ExpressionUUID->"c9014777-995d-493c-8ac1-275c2072cfd0"],
Cell[CellGroupData[{
Cell[15129, 424, 1400, 37, 70, "PrimaryExamplesSection",ExpressionUUID->"0a5f8c97-8af9-45de-a8c1-6fd913caf6f8",
 CellID->338339025],
Cell[16532, 463, 216, 4, 70, "Input",ExpressionUUID->"5c2ee347-d8eb-4fb6-b29a-e0a47ab908fc",
 CellID->1969679695],
Cell[CellGroupData[{
Cell[16773, 471, 1236, 31, 70, "ExampleSection",ExpressionUUID->"2cadbe7e-8c55-4a6d-9554-8a2af659471d",
 CellID->2074779566],
Cell[18012, 504, 132, 2, 70, "ExampleText",ExpressionUUID->"1f36ae08-f809-47a6-9a91-8b1464b4eea8",
 CellTags->"TextAnnotation"],
Cell[CellGroupData[{
Cell[18169, 510, 163, 2, 70, "Input",ExpressionUUID->"9ac75f6a-991b-46f8-9225-9f4e40230677"],
Cell[18335, 514, 936, 21, 70, "Output",ExpressionUUID->"a020dc44-a2f3-4e39-be2a-472157ec3f12"]
}, Open  ]],
Cell[CellGroupData[{
Cell[19308, 540, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"a1db8dc4-4332-4703-aae1-48d76255b2d5"],
Cell[19535, 547, 114, 0, 70, "ExampleText",ExpressionUUID->"ef9de928-1639-4626-821c-5c710038bad0"],
Cell[CellGroupData[{
Cell[19674, 551, 342, 7, 70, "Input",ExpressionUUID->"2d31f295-67e3-48d4-b45d-6780561845bd"],
Cell[20019, 560, 110, 1, 70, "Output",ExpressionUUID->"20f78829-9d67-4fd0-b8ee-d8a0e4fccd9a"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[20178, 567, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"bfc270d5-b48f-46be-a215-34a5e9bfd2e3"],
Cell[20405, 574, 98, 0, 70, "ExampleText",ExpressionUUID->"01aa8e28-ea6c-4a13-af78-32516aa51aad"],
Cell[CellGroupData[{
Cell[20528, 578, 206, 3, 70, "Input",ExpressionUUID->"6e21a283-5232-49cf-856e-2ba7c026e0fc"],
Cell[20737, 583, 315, 7, 70, "Output",ExpressionUUID->"35aeb994-8579-4e78-87b4-b69e5f90b476"]
}, Open  ]]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[21113, 597, 1227, 31, 70, "ExampleSection",ExpressionUUID->"3605c55a-4db6-4557-8903-3baef448c1d6",
 CellID->1293636265],
Cell[22343, 630, 171, 3, 70, "ExampleText",ExpressionUUID->"2d6b1e29-72ae-4f4b-b45b-a3c0a8d5dd1c"],
Cell[CellGroupData[{
Cell[22539, 637, 235, 4, 70, "Input",ExpressionUUID->"63767bcf-b83b-46a8-a1d9-66de1ef4e218"],
Cell[22777, 643, 110, 1, 70, "Output",ExpressionUUID->"2980d874-3c24-484b-98e1-89a2143ad008"]
}, Open  ]],
Cell[CellGroupData[{
Cell[22924, 649, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"0e09cbf9-d876-4e0f-9d20-8cf02b7aaa1e"],
Cell[23151, 656, 196, 3, 70, "ExampleText",ExpressionUUID->"7f54b9eb-1754-4932-b1da-c8856317fdde"],
Cell[CellGroupData[{
Cell[23372, 663, 284, 5, 70, "Input",ExpressionUUID->"5c6a37e5-c822-42e5-bf3a-d8ceea5d253f"],
Cell[23659, 670, 145, 1, 70, "Output",ExpressionUUID->"cdb7a4b9-5bde-467a-9e4a-f19defb0ddc9"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[23865, 678, 1244, 31, 70, "ExampleSection",ExpressionUUID->"00613eef-2784-4c32-acbd-3b0075f43f29",
 CellID->2123667759],
Cell[25112, 711, 121, 0, 70, "ExampleText",ExpressionUUID->"b76accf9-5226-4c13-9aec-24f134177c39"],
Cell[CellGroupData[{
Cell[25258, 715, 560, 14, 70, "Input",ExpressionUUID->"389e3495-c35f-4603-8093-ad0d3584d11c"],
Cell[25821, 731, 107, 1, 70, "Output",ExpressionUUID->"e4a9c101-f058-4abf-b6fc-4766b85ce089"]
}, Open  ]],
Cell[CellGroupData[{
Cell[25965, 737, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"d970d6b9-90a1-457a-83c9-8e45fe164fbd"],
Cell[26192, 744, 744, 21, 70, "ExampleText",ExpressionUUID->"c4af0ef1-4bd2-44ed-9239-71655e107676"],
Cell[CellGroupData[{
Cell[26961, 769, 461, 10, 70, "Input",ExpressionUUID->"85547382-c07c-4a8f-bb9e-0e83bf3165ba"],
Cell[27425, 781, 110, 1, 70, "Output",ExpressionUUID->"189de277-9322-49b7-a5c1-f8441ad60afa"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[27596, 789, 1237, 31, 70, "ExampleSection",ExpressionUUID->"3554e461-f165-4ec3-9cdd-dca19dfaa1c5",
 CellID->1305812373],
Cell[28836, 822, 569, 15, 70, "ExampleText",ExpressionUUID->"8aed00d1-fb1e-496a-9879-b8bbebf1e1e2"],
Cell[CellGroupData[{
Cell[29430, 841, 198, 3, 70, "Input",ExpressionUUID->"043c36cf-5f7f-484b-926b-a45a55e6d408"],
Cell[29631, 846, 107, 1, 70, "Output",ExpressionUUID->"1ba59c2b-cb5f-4053-a1ff-9ab79ed52507"]
}, Open  ]]
}, Closed]]
}, Open  ]],
Cell[29777, 852, 2577, 67, 70, "SeeAlsoSection",ExpressionUUID->"bf194ebb-581e-4762-9940-cdf5c842bc83"],
Cell[32357, 921, 700, 19, 70, "MoreAboutSection",ExpressionUUID->"2f686b3a-c1b6-4029-863f-70b475a1be97"],
Cell[33060, 942, 78, 0, 70, "FooterCell",ExpressionUUID->"cece1373-d08f-4380-a07d-053b968f302d"]
}
]
*)

(* End of internal cache information *)

