 fmt.Sprint(port)
		s.endpoint = transport.NewRegistryEndpoint(KindIris, addr)
	}

	return nil
}

func (s *Server) Name() string {
	return KindIris
}

func (s *Server) Start(_ context.Context) error {
	if s.err = s.listenAndEndpoint(); s.err != nil {
		return s.err
	}

	LogInfof("server listening on: %s", s.addr)

	var err error
	if len(s.certFile) != 0 && len(s.keyFile) != 0 {
		err = s.Application.Run(iris.TLS(s.addr, s.certFile, s.keyFile))
	} else {
		err = s.Application.Listen(s.addr)
	}
	if !errors.Is(err, http.ErrServerClosed) {
		return err
	}

	return nil
}

func (s *Server) Stop(ctx context.Context) error {
	LogInfo("server stopping...")

	err := s.Application.Shutdown(ctx)
	s.err = nil

	LogInfo("server stopped.")

	return err
}

func (s *Server) ServeHTTP(res http.ResponseWriter, req *http.Request) {
	s.Application.ServeHTTP(res, req)
}
package activemq

import (
	"fmt"

	"github.com/go-kratos/kratos/v2/log"
)

const (
	logKey = "[" + KindActiveMQ + "]"
)

///
/// logger
///

func LogDebug(args ...interface{}) {
	log.Debugf("%s %s", logKey, fmt.Sprint(args...))
}

func LogInfo(args ...interface{}) {
	log.Infof("%s %s", logKey, fmt.Sprint(args...))
}

func LogWarn(args ...interface{}) {
	log.Warnf("%s %s", logKey, fmt.Sprint(args...))
}

func LogError(args ...interface{}) {
	log.Errorf("%s %s", logKey, fmt.Sprint(args...))
}

func LogFatal(args ...interface{}) {
	log.Fatalf("%s %s", logKey, fmt.Sprint(args...))
}

///
/// logger
///

func LogDebugf(format string, args ...interface{}) {
	log.Debugf("%s %s", logKey, fmt.Sprintf(format, args...))
}

func LogInfof(format string, args ...interface{}) {
	log.Infof("%s %s", logKey, fmt.Sprintf(format, args...))
}

func LogWarnf(format string, args ...interface{}) {
	log.Warnf("%s %s", logKey, fmt.Sprintf(format, args...))
}

func LogErrorf(format string, args ...interface{}) {
	log.Errorf("%s %s", logKey, fmt.Sprintf(format, args...))
}

func LogFatalf(format string, args ...interface{}) {
	log.Fatalf("%s %s", logKey, fmt.Sprintf(format, args...))
}
package graphql

import (
	"context"
	"fmt"
	"math/rand"
	"os"
	"os/signal"
	"syscall"
	"testing"

	api "github.com/tx7do/kratos-transport/testing/api/graphql"
)

type resolver struct{}

func (r *resolver) Query() api.QueryResolver {
	return &queryResolver{}
}

type queryResolver struct{}

func (r *queryResolver) Hygrothermograph(ctx context.Context) (*api.Hygrothermograph, error) {
	ret := &api.Hygrothermograph{
		Humidity:    float64(rand.Intn(100)),
		Temperature: float64(rand.Intn(100)),
	}
	fmt.Println("Humidity:", ret.Humidity, "Temperature:", ret.Temperature)
	return ret, nil
}

func TestServer


rocode: LOADER.concat([
			DAO | ICI1,
			ICO1 | A1I,
			ICO2 | A2I,
			DAO | ICI2,

			// Setup for next instrcution
			ICO1 | A1I,
			ICO2 | A2I,
			ICA | DAO | IRI
		]),
		flags: [FlagsRegister.ST],
		bytesUsedByInstruction: 2
	},
	CALL: {
		code: 0x0E,
		microcode: LOADER.concat([
			DAO | R1I,
			ICO1 | A1I,
			ICO2 | A2I,
			ICA | DAO | R2I,

			ICO1 | PSH,
			ICO2 | PSH,

			R1O | ICI1,
			R2O | ICI2,

			// Setup for next instrcution
			ICO1 | A1I,
			ICO2 | A2I,
			ICA | DAO | IRI
		]),
		flags: [FlagsRegister.ST],
		bytesUsedByInstruction: 2
	},
	RET: {
		code: 0x0F,
		microcode: LOADER.concat([
			POP | ICI2,
			POP | ICI1,

			ICO1 | A1I,
			ICO2 | A2I,
			ICA | DAO | IRI
		]),
		flags: [FlagsRegister.ST],
		bytesUsedByInstruction: 0
	},
}// leetcode 98. Validate Binary Search Tree
// Given the root of a binary tree, determine if it is a valid binary search tree (BST).
// A valid BST is defined as follows:
// The left subtree of a node contains only nodes with keys less than the node's key.
// The right subtree of a node contains only nodes with keys greater than the node's key.
// Both the left and right subtrees must also be binary search trees.

// Example 1:
// Input: root = [2,1,3]
// Output: true
// Example 2:
// Input: root = [5,1,4,null,null,3,6]
// Output: false
// Explanation: The root node's value is 5 but its right child's value is 4.

// create a helper function to recursively traverse the BST, taking a node, a min and a max
// base case is to return true when node is null
// otherwise the first check will check node.val is between -Infinity and Infinity
// then during the return, the recursive calls will look left and right, using the prev node as the lower or upper bound:
// look left, setting prev node to max bound: if left node is greater than previous node, return false
// look right, setting prev node to min: if right node is less than previous node, return false

class TreeNode {
    val: number
    left: TreeNode | null
    right: TreeNode | null
    constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
        this.val = (val===undefined ? 0 : val)
        this.left = (left===undefined ? null : left)
        this.right = (right===undefined ? null : right)
    }
}

const isValidBST = (root: TreeNode | null): boolean => {
    const bstCheck = (node: TreeNode | null, min: number, max: number): boolean => {
        if(!node) return true;

        if(node.val <= min) return false;
        if(node.val >= max) return false;

        return bstCheck(node.left, min, node.val)


radians(DEFAULT_FOV),
            extent: Extent2D {
                width: width,
                height: height,
            },
            view_matrix: view_matrix,
            camera_model_matrix: camera_model_matrix,
            frustum_planes: [Vec4::<f32>::new(0.0, 0.0, 1.0, 0.0),
                             Vec4::<f32>::new(0.0, 0.0, 1.0, 0.0),
                             Vec4::<f32>::new(0.0, 0.0, 1.0, 0.0),
                             Vec4::<f32>::new(0.0, 0.0, 1.0, 0.0),
                             Vec4::<f32>::new(0.0, 0.0, 1.0, 0.0),
                             Vec4::<f32>::new(0.0, 0.0, 1.0, 0.0)],
        }
    }

    pub fn aspect_ratio(&self) -> f32 {
        self.extent.width as f32 / self.extent.height as f32
    }

    pub fn update_placement(&mut self, placement: &Placement) {
        self.view_matrix = fps_view(&placement);
        self.camera_model_matrix = camera_model_matrix(&placement);
        self.recompute_frustum_planes();
    }

    pub fn fovy(&self) -> Angle<f32> {
        self.fovx / self.aspect_ratio()
    }

    pub fn adjust_fovx(&mut self, angle: Angle<f32>) {
        self.fovx = self.fovx + angle;
        if self.fovx.as_radians() > MAX_FOV {
            self.fovx = Angle::from_radians(MAX_FOV);
        }
        if self.fovx.as_radians() < MIN_FOV {
            self.fovx = Angle::from_radians(MIN_FOV);
        }
        self.recompute_frustum_planes();
    }

    pub fn recompute_frustum_planes(&mut self) {
        let (sin_hfovx, cos_hfovx) = (self.fovx  / 2.0).as_radians().sin_cos();
        let (sin_hfovy, cos_hfovy) = (self.fovy()/ 2.0).as_radians().sin_cos();

        // Normals point inwards.
        // These are in 'camera model space', and we need to transform
        //   into world space
        let near = Vec4::new(0.0, 0.0, 1.0, -NEAR_PLANE);
        let far = Vec4::new(0.0, 0.0, -1.0, FAR_PLANE);
        let right = Vec4::new(-cos_hfovx, 0.0, sin_hfovx, 0.0);
        let left = Vec4::new(cos_hfovx, 0.0, sin_hfovx, 0.0);
        let top = Vec4::new(0.0, cos_hfovy, sin_hfovy, 0.0);
        let bottom = Vec4::new(0.0, -cos_hfovy, sin_hfovy, 0.0);

        let transform = |plane: &Vec4<f32>, m: &Mat4<f32>| {
            // FIXME: this could probably be optimized.
            let normal = plane.truncate_w().to_vec4(0.0);
            let point = (plane.truncate_w() * -plane.w).to_vec4(1.0);
            let ws_normal = m * &normal;
            let ws_point = m * &point;
            let d = ws_normal.truncate_w().dot(ws_point.truncate_w());
            Vec4::<f32>::new(ws_normal.x, ws_normal.y, ws_normal.z, -d)
        };

        self.frustum_planes[0] = transform(&near, &self.camera_model_matrix);
        self.frustum_planes[1] = transform(&far, &self.camera_model_matrix);
        self.frustum_planes[2] = transform(&right, &self.camera_model_matrix);
        self.frust


for (int j = subDiff.length - 1; j >= 0; j--) {
              diffs.insert(pointer, subDiff[j]);
            }
            pointer = pointer + subDiff.length;
          }
          count_insert = 0;
          count_delete = 0;
          text_delete.clear();
          text_insert.clear();
      }
      pointer++;
    }
    diffs.removeLast(); // Remove the dummy entry at the end.

    return diffs;
  }

  /// Find the 'middle snake' of a diff, split the problem in two
  /// and return the recursively constructed diff.
  /// See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.
  /// [text1] is the old string to be diffed.
  /// [text2] is the new string to be diffed.
  /// [deadline] is the time at which to bail if not yet complete.
  /// Returns a List of Diff objects.
  List<Diff> _diff_bisect(String text1, String text2, DateTime deadline) {
    // Cache the text lengths to prevent multiple calls.
    final text1_length = text1.length;
    final text2_length = text2.length;
    final max_d = (text1_length + text2_length + 1) ~/ 2;
    final v_offset = max_d;
    final v_length = 2 * max_d;
    final v1 = List<int>.filled(v_length, -1);
    final v2 = List<int>.filled(v_length, -1);
    v1[v_offset + 1] = 0;
    v2[v_offset + 1] = 0;
    final delta = text1_length - text2_length;
    // If the total number of characters is odd, then the front path will
    // collide with the reverse path.
    final front = (delta % 2 != 0);
    // Offsets for start and end of k loop.
    // Prevents mapping of space beyond the grid.
    int k1start = 0;
    int k1end = 0;
    int k2start = 0;
    int k2end = 0;
    for (int d = 0; d < max_d; d++) {
      // Bail out if deadline is reached.
      if ((DateTime.now()).compareTo(deadline) == 1) {
        break;
      }

      // Walk the front path one step.
      for (int k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {
        int k1_offset = v_offset + k1;
        int x1;
        if (k1 == -d || k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1]) {
          x1 = v1[k1_offset + 1];
        } else {
          x1 = v1[k1_offset - 1] + 1;
        }
        int y1 = x1 - k1;
        while (x1 < text1_length && y1 < text2_length && text1[x1] == text2[y1]) {
          x1++;
          y1++;
        }
        v1[k1_offset] = x1;
        if (x1 > text1_length) {
          // Ran off the right of the graph.
          k1end += 2;
        } else if (y1 > text2_length) {
          // Ran off the bottom of the graph.
          k1start += 2;
        } else if (front) {
          int k2_offset = v_offset + delta - k1;
          if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {
            // Mirror x2 onto top-left coordinate system.
            int x2 = text1_length - v2[k2_offset];
            if (x1 >= x2) {
              // Overlap detected.
              return _diff_bisectSplit(text1, text2, x1, y1, deadline);
            }
          }
        }
      }

      // Walk the reverse path one s


 13-9.5 22.5t-23 9.5-22.5-9.5-9-22.5v-97l-70-40-123 69v89l81 47q11 7 14.5 20t-3 24-19 14.5T562 956l-50-30v34q0 26-18.5 45t-45 19-45.5-19-19-45v-34l-49 30q-11 6-23.5 2.5t-19-14.5-3-24 14.5-20l80-47v-89l-122-69-70 40v97q0 13-9 22.5t-22.5 9.5-23-9.5T128 832v-60l-32 19q-23 14-48.5 7T9 768t-6.5-48.5T32 681l50-29-68-46q-10-7-13-20t3-25 17-16 21 3l101 68 50-29V437l-50-29-101 68q-10 7-21 3T4 463t-3-25 13-20l68-46-50-29Q9 330 2.5 304.5T9 256t38.5-30 48.5 7l32 19v-60q0-13 9.5-22.5t23-9.5 22.5 9.5 9 22.5v97l70 40 122-69v-89l-80-47q-11-7-14.5-20t3-24 19-14.5T335 68l49 30V64q0-26 19-45t45.5-19 45 19T512 64v34l50-30q11-6 23.5-2.5t19 15 3 24T593 124l-81 47v89l123 69 70-40v-97q0-13 9-22.5t22.5-9.5 23 9.5T769 192v60l32-19q23-14 48.5-7t38.5 30 6.5 48.5T865 343l-50 29 68 46q10 7 13 20t-3 25zm-317-15-128-64-127 64v128l127 64 128-64V448z"/></svg>';
  static const String snowman =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="833" height="1024" preserveAspectRatio="xMidYMid meet" viewBox="0 0 833 1024"><path fill="currentColor" d="M817 316 633 425q7 29 7 55 0 69-39 127 47 53 75 123.5T704 869q0 38-8.5 65.5t-29.5 44-39.5 26.5-57 13.5-62.5 4.5-74 1h-34q-49 0-73.5-1t-62.5-4.5-57-13.5-40-26.5-29.5-44T128 869q0-68 28-138.5T232 607q-40-58-40-127 0-26 7-55L16 316q-12-7-15-20t3.5-24T23 257.5t24 2.5l177 106q33-55 89-85-57-48-57-121 0-66 47-113T416.5 0t113 47T576 160q0 73-56 121 56 30 89 85l177-106q11-6 23.5-2.5t19 14.5 3 24-14.5 20zM416.5 640q13.5 0 22.5-9.5t9-22.5-9-22.5-22.5-9.5-23 9.5T384 608t9.5 22.5 23 9.5zm0-128q13.5 0 22.5-9.5t9-22.5-9-22.5-22.5-9.5-23 9.5T384 480t9.5 22.5 23 9.5zm-64-384q-13.5 0-23 9.5T320 160t9.5 22.5 23 9.5 22.5-9.5 9-22.5-9-22.5-22.5-9.5zm64 192q-13.5 0-23 9.5T384 352t9.5 22.5 23 9.5 22.5-9.5 9-22.5-9-22.5-22.5-9.5zM480 128q-13 0-22.5 9.5T448 160t9.5 22.5T480 192


public abstract void OnNext(TSource value);

        public abstract void OnError(Exception error);

        public abstract void OnCompleted();

        public void Dispose()
        {
            observer = UniRx.InternalUtil.EmptyObserver<TResult>.Instance;
            var target = System.Threading.Interlocked.Exchange(ref cancel, null);
            if (target != null)
            {
                target.Dispose();
            }
        }
    }
}


px solid #888;
  border-radius: 6px;
  outline: none;
  background-color: #eee;
  transition: background-color 0.2s, border 0.2s;
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVQ4T8XSMUvDQBQH8P/LElFa/AIZHcTBQSz0I/gFstTBRR2KUC4ldDxw7h0Bl3RRUATxi4iiODgoiLNrbQYp5J6cpJJqomkX33Z37/14d/dIa33MzDuYI4johOI4XhyNRteO46zNYjDzAxE1yBZprVeZ+QbAUhXEGJMA2Ox2u4+fQIa0mPmsCgCgJYQ4t7lfgF0opQYAdv9ABkKI/UnOFCClXKjX61cA1osQY8x9kiRNKeV7IWA3oyhaSdP0FkAtjxhj3hzH2RBCPOf3pzqYHCilfAAX+URm9oMguPzeWSGQvUcMYC8rOBJCHBRdqxTo9/vbRHRqi8bj8XKv1xvODbiuW2u32/bvf0SlDv4XYOY7z/Mavu+nM1+BmQ+NMc0wDF/LprP0DbTWW0T00ul0nn4b7Q87+X4Qmfiq2wAAAABJRU5ErkJggg==');
  background-position: 10px 10px;
  background-repeat: no-repeat;
}

.dark .searchbox {
  background-color: #111;
  color: #eee;
}

.searchbox::placeholder {
  color: #ccc;
}

.dark .searchbox::placeholder {
  color: #666;
}

.filter {
  width: calc(60% - 64px);
}

.reflookup {
  width: calc(40% - 10px);
}

input[type=text]:focus {
  background-color: white;
  border: 1px solid #333;
}

.dark input[type=text]:focus {
  background-color: #333;
  border: 1px solid #ccc;
}

mark.highlight {
  background-color: #5050ff;
  color: #fff;
  padding: 2px;
  border-radius: 6px;
}

.dark mark.highlight {
  background-color: #76a6da;
  color: #111;
}

.menubtn {
  background-color: white;
  border: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6


from linkedin_api import Linkedin
from fastmcp import FastMCP
from dotenv import load_dotenv
import os
import logging

load_dotenv()

mcp = FastMCP("LinkedIn-MCP")
logger = logging.getLogger(__name__)

def get_creds():
    return Linkedin(os.getenv("LINKEDIN_EMAIL"), os.getenv("LINKEDIN_PASSWORD"), debug=True)

@mcp.tool()
def get_profile():
    """
    Retrieves the User Profile
    """
    linkedin = get_creds()
    profile = linkedin.get_profile()
    return profile
@mcp.tool()
def get_feed_posts(limit: int = 10, offset: int = 0) -> str:
    """
    Retrieve LinkedIn feed posts.

    :return: List of feed post details
    """
    linkedin = get_creds()
    try:
        post_urns = linkedin.get_feed_posts(limit=limit, offset=offset)
    except Exception as e:
        logger.error(f"Error: {e}")
        return f"Error: {e}"

    posts = ""
    for urn in post_urns:
        posts += f"Post by {urn["author_name"]}: {urn["content"]}\n"

    return posts

if __name__ == "__main__":
    mcp.run(transport='stdio')
    # get_feed_posts()


ppProjectSpecSignatureKeysInner? fromJson(
      dynamic value) {
    if (value is Map) {
      final json = value.cast<String, dynamic>();

      // Ensure that the map contains the required keys.
      // Note 1: the values aren't checked for validity beyond being non-null.
      // Note 2: this code is stripped in release mode!
      assert(() {
        requiredKeys.forEach((key) {
          assert(json.containsKey(key),
              'Required key "IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner[$key]" is missing from JSON.');
          assert(json[key] != null,
              'Required key "IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner[$key]" has a null value in JSON.');
        });
        return true;
      }());

      return IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner(
        keyID: mapValueOfType<String>(json, r'keyID')!,
      );
    }
    return null;
  }

  static List<IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner> listFromJson(
    dynamic json, {
    bool growable = false,
  }) {
    final result = <IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner>[];
    if (json is List && json.isNotEmpty) {
      for (final row in json) {
        final value =
            IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner.fromJson(row);
        if (value != null) {
          result.add(value);
        }
      }
    }
    return result.toList(growable: growable);
  }

  static Map<String, IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner>
      mapFromJson(dynamic json) {
    final map = <String, IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner>{};
    if (json is Map && json.isNotEmpty) {
      json = json.cast<String, dynamic>(); // ignore: parameter_assignments
      for (final entry in json.entries) {
        final value =
            IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner.fromJson(
                entry.value);
        if (value != null) {
          map[entry.key] = value;
        }
      }
    }
    return map;
  }

  // maps a json object with a list of IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner-objects as value to a dart map
  static Map<String, List<IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner>>
      mapListFromJson(
    dynamic json, {
    bool growable = false,
  }) {
    final map =
        <String, List<IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner>>{};
    if (json is Map && json.isNotEmpty) {
      // ignore: parameter_assignments
      json = json.cast<String, dynamic>();
      for (final entry in json.entries) {
        map[entry.key] =
            IoArgoprojV1alpha1AppProjectSpecSignatureKeysInner.listFromJson(
          entry.value,
          growable: growable,
        );
      }
    }
    return map;
  }

  /// The list of required keys that must be present in a JSON.
  static const requiredKeys = <String>{
    'keyID',
  };
}
//
// AUTO-GENERATED FILE, DO NOT MODIFY!
//
// @dart=2.18

// ignore_for_file: require_trailing_commas
// ignore_for_file: unused_element
// ignore_for_file: unnecessary_this
// ignore_for_file: always_put_required_named_parameters_first
// ignore_for_file: constant_identifier_names
// ignore_for_file: lines_longer_than_80_chars
// ignore_for_file: avoid_function_literals_in_foreach_calls

import 'package:kubenav/models/kubernetes/hel


 to expect image width" }

    val height = expect.height
    require(actual.height == height) { "actual image height must be equal to expect image height" }

    val builder = RuntimeShaderBuilder(compareShader(radius))
    builder.uniform("size", expect.width.toFloat(), expect.height.toFloat())
    builder.child("expect", expect.makeShader())
    builder.child("actual", actual.makeShader())
    builder.uniform("colorTolerance", colorTolerance)

    val resultBitmap = Bitmap()
    resultBitmap.allocN32Pixels(width, height)
    val resultCanvas = Canvas(resultBitmap)
    val paint = Paint()
    paint.shader = builder.makeShader()

    resultCanvas.drawPaint(paint)
    resultCanvas.close()
    return Image.makeFromBitmap(resultBitmap)
}

private val compareShaders = hashMapOf<Int, RuntimeEffect>()

private fun compareShader(radius: Int): RuntimeEffect {
    return compareShaders.getOrPut(radius) {
        newCompareShader(radius)
    }
}

@Language("GLSL")
private fun newCompareShader(radius: Int) = RuntimeEffect.makeForShader(
    """
    uniform float2 size;
    uniform shader expect;
    uniform shader actual;
    uniform float colorTolerance;
    const int radius = $radius;

    half4 main(float2 coord) {
        half4 actualColor = actual.eval(coord);

        half4 lowerBound = actualColor - colorTolerance;
        half4 upperBound = actualColor + colorTolerance;

        half4 lowColor = half4(1.0, 1.0, 1.0, 1.0);
        half4 highColor = half4(0.0, 0.0, 0.0, 1.0);

        for(int dx = -radius; dx <= radius; dx++) {
            for(int dy  = -radius; dy <= radius; dy++) {
                float2 targetCoord = coord + half2(dx, dy);
                if(targetCoord.x <= 0 || targetCoord.x >= size.x || targetCoord.y <= 0 || targetCoord.y >= size.y) {
                    continue;
                }

                half4 expectColor = expect.eval(targetCoord);

                lowColor = half4(
                    min(lowColor.r, expectColor.r),
                    min(lowColor.g, expectColor.g),
                    min(lowColor.b, expectColor.b),
                    min(lowColor.a, expectColor.a)
                );

                highColor = half4(
                    max(highColor.r, expectColor.r),
                    max(highColor.g, expectColor.g),
                    max(highColor.b, expectColor.b),
                    max(highColor.a, expectColor.a)
                );

                if(all(greaterThanEqual(highColor, lowerBound)) && all(lessThanEqual(lowColor, upperBound))) {
                    return half4(0, 0, 0, 1.0);
                }
            }
        }

        return half4(1.0, 1.0, 1.0, 1.0);;
    }
""".trimIndent()
)

public fun Path.readImage(): Image {
    return readBytes().readImage()
}

public fun ByteArray.readImage(): Image {
    val codec = Codec.makeFromData(Data.makeFromBytes(this))
    val bitmap = Bitmap()
    bitmap.allocN32Pixels(codec.width, codec.height)
    codec.readPixels(bitmap)
    return Image.makeFromBitmap(bitmap)
}

public fun Path.writeImage(image: Image) {
    writeBytes(image.encodeToData()!!.bytes)
}
@file:Suppress("FunctionName")

package tests

import androidx.compose.ui.test.ExperimentalTestApi
import androidx.compose.ui.test.assertCount


-d %s\" on a different terminal\n", listenPort+1, fullAddr)
	}
}

func runSender(_ context.Context, ha host.Host, targetPeer string) {
	fullAddr := getHostAddress(ha)
	log.Printf("I am %s\n", fullAddr)

	// Turn the targetPeer into a multiaddr.
	maddr, err := ma.NewMultiaddr(targetPeer)
	if err != nil {
		log.Println(err)
		return
	}

	// Extract the peer ID from the multiaddr.
	info, err := peer.AddrInfoFromP2pAddr(maddr)
	if err != nil {
		log.Println(err)
		return
	}

	// We have a peer ID and a targetAddr, so we add it to the peerstore
	// so LibP2P knows how to contact it
	ha.Peerstore().AddAddrs(info.ID, info.Addrs, peerstore.PermanentAddrTTL)

	log.Println("sender opening stream")
	// make a new stream from host B to host A
	// it should be handled on host A by the handler we set above because
	// we use the same /echo/1.0.0 protocol
	s, err := ha.NewStream(context.Background(), info.ID, "/echo/1.0.0")
	if err != nil {
		log.Println(err)
		return
	}

	log.Println("sender saying hello")
	_, err = s.Write([]byte("Hello, world!\n"))
	if err != nil {
		log.Println(err)
		return
	}

	out, err := io.ReadAll(s)
	if err != nil {
		log.Println(err)
		return
	}

	log.Printf("read reply: %q\n", out)
}

// doEcho reads a line of data a stream and writes it back
func doEcho(s network.Stream) error {
	buf := bufio.NewReader(s)
	str, err := buf.ReadString('\n')
	if err != nil {
		return err
	}

	log.Printf("read: %s", str)
	_, err = s.Write([]byte(str))
	return err
}
package main

import (
	"bufio"
	"context"
	"fmt"
	"io"
	"os"

	"github.com/libp2p/go-libp2p/core/host"
	"github.com/libp2p/go-libp2p/core/network"
)

const chatProtocol = "/libp2p/chat/1.0.0"

// TODO: Replace this handler with a function that handles message from a
// pubsub Subscribe channel.
func chatHandler(s network.Stream) {
	data, err := io.ReadAll(s)
	if err != nil {
		fmt.Fprintln(os.Stderr, err)
	}
	fmt.Println("Received:", string(data))
}

// TODO: Replace this with a send function that publishes the string messages
// on our pubsub topic.
func chatSend(msg string, s network.Stream) error {
	fmt.Println("Sending:", msg)
	w := bufio.NewWriter(s)
	n, err := w.WriteString(msg)
	if n != len(msg) {
		return fmt.Errorf("expected to write %d bytes, wrote %d", len(msg), n)
	}
	if err != nil {
		return err
	}
	if err = w.Flush(); err != nil {
		return err
	}
	s.Close()
	data, err := io.ReadAll(s)
	if err != nil {
		return err
	}
	if len(data) > 0 {
		fmt.Println("Received:", string(data))
	}
	return nil
}

func chatInputLoop(ctx context.Context, h host.Host, donec chan struct{}) {
	scanner := bufio.NewScanner(os.Stdin)
	for scanner.Scan() {
		msg := scanner.Text()
		for _, peer := range h.Network().Peers() {
			if _, err := h.Peerstore().SupportsProtocols


 {
                throw IllegalArgumentException("Invalid range $newRange already included in RangeMap")
            }
        }
        ranges.add(newRange)

        delegate.put(newRange.start, value)
        maxKey = Math.max(newRange.endInclusive, maxKey)

        return this
    }

    fun with(k: Int, value: String) : RangeMap {
        return with(k..k, value)
    }

    fun select(k: Int) : String {
        try {
            if (k < delegate.firstKey()) {
                return delegate.firstEntry().value
            } else if (k > delegate.lastKey()) {
                return delegate.lastEntry().value
            } else {
                return delegate.floorEntry(k).value
            }
        } catch (e: Exception) {
            logger.warn("Unable to lookup entry $k. Keyrange: ${keyRange()}")
            throw e
        }
    }

    fun keyRange() : IntRange {
        return IntRange(delegate.firstKey(), maxKey)
    }

    override fun toString(): String {
        return delegate.toString()
    }

    fun validateNoHoles() {
        val rangeSet : MutableSet<Int> = mutableSetOf()
        keyRange().toCollection(rangeSet)

        for (r in ranges) {
            rangeSet.removeAll(r.toSet())
        }
        if (rangeSet.size != 0) {
            throw IllegalArgumentException("holes in range set. missing elements: $rangeSet")
        }
    }
}
/*
 * Copyright (c) 2017 Steve Christensen
 *
 * This file is part of Adventuresmith.
 *
 * Adventuresmith is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Adventuresmith is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Adventuresmith.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

package org.stevesea.adventuresmith.core.dice_roller

import com.github.salomonbrys.kodein.Kodein
import com.github.salomonbrys.kodein.bind
import com.github.salomonbrys.kodein.instance
import com.github.salomonbrys.kodein.provider
import com.github.salomonbrys.kodein.singleton
import org.stevesea.adventuresmith.core.Generator
import org.stevesea.adventuresmith.core.GeneratorMetaDto
import org.stevesea.adventuresmith.core.getFinalPackageName
import java.text.NumberFormat
import java.util.Locale

object DiceConstants {
    val GROUP = getFinalPackageName(this.javaClass)

    val regularDice =
            listOf(
            "1d3",
            "1d4",
            "1d6",
            "1d8",
            "1d10",
            "1d12",
            "1d20",
            "1d30",
            "1d100"
    ).map { "$GROUP/$it" to it }.toMap()

    val fudgeDice = mapOf(
            "$GROUP/NdF_1" to "Fudge Dice #1",
            "$GROUP/NdF_2" to "Fudge Dice #2"
    )

    val explodingDice = mapOf(
            "$GROUP/XdY!_1" to "Exploding Dice #1",
            "$GROUP/XdY!_2" to "Exploding Dice #2",
            "$GROUP/XdY!_3" to "Exploding Dic


import logging
from workflow.graph import graph
from workflow.state import State

# Set up logging
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
    handlers=[logging.StreamHandler()]
)
# Silence httpx logging
logging.getLogger("httpx").setLevel(logging.ERROR)

def handle_query(user_query: str, description: str):
    """
    Handles routing of a query to the graph with the given state.
    """
    logging.info(description)
    state: State = {"user_query": user_query}
    graph.invoke(state)

if __name__ == "__main__":
    # Advanced routing request
    advanced_message = (
        "Please ensure that product ID 18235 has inventory and doesn't have any "
        "availability overrides set. If there are no overrides set, and inventory is zero, "
        "please order a new batch."
    )
    handle_query(
        advanced_message,
        "The first query should route to the advanced model."
    )

    # Simple routing request
    simple_message = "Does product ID 1234 come in red?"
    handle_query(
        simple_message,
        "The second query should route to the simple model."
    )


using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using HarmonyLib;
using Verse;

namespace CombatExtended.HarmonyCE
{
	/* Targetting Verse.GenRadial.RadialPatternCount constant.
	 * Specifically this looks for all methods which use that constant and patches them (since the constant is compiled in).
	 * Also targets the -60 and 60 in Verse.GenRadial.SetupRadialPattern as it turns out those are important too.
	 *
	 * Should cause RimWorld to take a tad longer to startup but shouldn't affect game speed while playing.
	 */

	// NOTE: When using a complex patch (where Patch()) must be used, do not include any Harmony class Attributes.  Method Attributes are optional as the Patch() handles what type of patch something is.
	internal static class Harmony_GenRadial_RadialPatternCount
	{
		// used for debug outputs (probably not used much).
		static readonly string logPrefix = "Combat Extended :: " + typeof(Harmony_GenRadial_RadialPatternCount).Name + " :: ";

		// this replaces -60 and 60 in SetupRadialPattern()
		const SByte newRadialRange = SByte.MaxValue; // set to max value as I was creeping up on it to make things look right.  Though no crashes the circle was squished on cardinal directions.

		const double keepPatternRange = 10000f / 14400f;

		// this replaces the constant RadialPaternCount used in the class methods/constructor of GenRadial.
		static readonly Int32 newRadialPatternCount = Convert.ToInt32(Math.Pow(newRadialRange * 2, 2) * keepPatternRange); //may be any valid int <= Math.Pow(newRange*2, 2)
        // on further thought I think the limit should be about 68 percent of the maximum available by the loop in order to avoid squishing.

        static Int32 defaultValue;

		// This is a complex patch so PatchAll() can't cover it.
		internal static void Patch()
		{
			IEnumerable<MethodInfo> methods = typeof(GenRadial).GetMethods(AccessTools.all).Where(m => m.DeclaringType == typeof(GenRadial));
			// (ProfoundDarkness) I tried to get the individual default constructor via GetConstructor() but didn't know enough of what I was doing.
			ConstructorInfo constructor = typeof(GenRadial).GetConstructors(AccessTools.all).FirstOrDefault();
			MethodInfo redoMethod = null;

            defaultValue = (Int32)AccessTools.Field(typeof(GenRadial), "RadialPatternCount").GetValue(null);

			// patch the constructor.
			HarmonyBase.instance.Patch(constructor, null, null, new HarmonyMethod(typeof(Harmony_GenRadial_RadialPatternCount), "Transpiler_Ra


w3.org/2000/svg"},o,{ref:t}),f.createElement("path",{d:"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),rz=["color"],oz=f.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=xo(e,rz);return f.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),f.createElement("path",{d:"M9.875 7.5C9.875 8.81168 8.81168 9.875 7.5 9.875C6.18832 9.875 5.125 8.81168 5.125 7.5C5.125 6.18832 6.18832 5.125 7.5 5.125C8.81168 5.125 9.875 6.18832 9.875 7.5Z",fill:r}))}),iz=["color"],sz=f.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=xo(e,iz);return f.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),f.createElement("path",{d:"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),az=["color"],lz=f.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=xo(e,az);return f.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),f.createElement("path",{d:"M3.24182 2.32181C3.3919 2.23132 3.5784 2.22601 3.7


nced Munitions'},
    {'sn': 'exp', rarity: 2, 'name': 'Expert Package'},
    {'sn': 'psa', rarity: 2, 'name': 'Pistol/SMG Amp'},
    {'sn': 'rpt', rarity: 2, 'name': 'Revive Pack Transmitter'},
    {'sn': 'seh', rarity: 1, 'name': 'Shield Enhancer'},
    {'sn': 'stu', rarity: 2, 'name': 'Shock Trooper Upgrade'},
    {'sn': 'asl', rarity: 2, 'name': 'Assault Loadout'},
    {'sn': 'bkp', rarity: 2, 'name': 'Berserker Package'},
    {'sn': 'cmp', rarity: 2, 'name': 'Commando Package'},
    {'sn': 'dsa', rarity: 1, 'name': 'Densified Ammunition'},
    {'sn': 'gcp', rarity: 1, 'name': 'Grenade Capacity'},
    {'sn': 'hyj', rarity: 1, 'name': 'Hydraulic Joints'},
    {'sn': 'mba', rarity: 2, 'name': 'Martial Biotic Amp'},
    {'sn': 'mlf', rarity: 1, 'name': 'Mental Focuser'},
    {'sn': 'mlc', rarity: 1, 'name': 'Multicapacitor'},
    {'sn': 'ocp', rarity: 2, 'name': 'Omni-Capacitor'},
    {'sn': 'opp', rarity: 2, 'name': 'Operative Package'},
    {'sn': 'sga', rarity: 1, 'name': 'Shotgun Amp'},
    {'sn': 'sra', rarity: 1, 'name': 'Sniper Rifle Amp'},
    {'sn': 'shp', rarity: 2, 'name': 'Stronghold Package'},
    {'sn': 'ste', rarity: 1, 'name': 'Structural Economics'},
    {'sn': 'svl', rarity: 2, 'name': 'Survivor Loadout'},
    {'sn': 'vvi', rarity: 1, 'name': 'Vulnerability VI'},
    {'sn': 'wfp', rarity: 2, 'name': 'Warfighter Package'},
].sort((a, b) => a.rarity - b.rarity || a.name.localeCompare(b.name)) as any
equ.forEach(i => (i.min = 0, i.max = 1))

const inv: X[] = [
    {sn: 'c', name: 'Cobra'},
    {sn: 'm', name: 'Medigel'},
    {sn: 'a', name: 'Ammo Kit'},
    {sn: 's', name: 'Shield Boost'}] as any
inv.forEach(i => (i.min = 2, i.rarity = 0, i.max = 5))

const cats = {AR: 'Assault Rifles', P: 'Pistols', SG: 'Shotguns', SR: 'Sniper Rifles'}

const weapons: X[] = $('wstats').text.trim().split(/\r?\n/).map(line => {
    const cols = line.split('\t')
    let i = 0
    return {type: cols[i++], sn: cols[i++], rarity: cols[i++], name: cols[i++], min: parseInt(cols[i++]) || 0, max: 10}
})
    .sort((a, b) => a.rarity - b.rarity || a.name.localeCompare(b.name))

const mods: X[] = $('mstats').text.trim().split(/\r?\n/).map(line => {
    const cols = line.split('\t');
    let i = 0;
    return {rarity: cols[i++], sn: cols[i++], category: cols[i++], name: cols[i++], min: 0, max: 10}
})
    .sort((a, b) => a.category.localeCompare(b.category) || a.rarity - b.rarity || a.name.localeCompare(b.name))

const all: X[] = weapons.concat(mods, mpchars, inv, equ)
const weaponTypes: { type: string, ws: X[] }[] =
    Object.getOwnPropertyNames(cats).map(sn => ({type: cats[sn], ws: weapons.filter(w => w.type == sn)}))

function values


 [Map] with one key `command` and the list of three pairs:
 *
 * 1. `args1` to `value1`
 * 2. `args2` to `value2`
 * 3. `args1` to `value3`
 *
 * @return Array of named arguments
 */
fun ContentMessage<TextContent>.parseCommandsWithNamedArgs(
    argsSeparator: Regex = TelegramBotCommandsDefaults.defaultArgsSeparatorRegex,
    nameArgSeparator: Regex = TelegramBotCommandsDefaults.defaultNamesArgsSeparatorRegex,
) = content.parseCommandsWithNamedArgs(argsSeparator = argsSeparator, nameArgSeparator = nameArgSeparator)

/**
 * Uses [parseCommandsWithArgs] to create base [argsSeparator] split args for commands and map their as k-v pairs.
 * Sample:
 *
 * ```bash
 * /command args1=value1 arg2=value2 arg1=value3
 * ```
 *
 * Will produce [Map] with one key `command` and the list of three pairs:
 *
 * 1. `args1` to `value1`
 * 2. `args2` to `value2`
 * 3. `args1` to `value3`
 *
 * @return Array of named arguments
 */
fun List<TextSource>.parseCommandsWithNamedArgs(
    argsSeparator: String,
    nameArgSeparator: Regex = TelegramBotCommandsDefaults.defaultNamesArgsSeparatorRegex,
): Map<String, List<Pair<String, String>>> = parseCommandsWithNamedArgs(Regex(pattern = argsSeparator), nameArgSeparator)

/**
 * Uses [parseCommandsWithArgs] to create base [argsSeparator] split args for commands and map their as k-v pairs.
 * Sample:
 *
 * ```bash
 * /command args1=value1 arg2=value2 arg1=value3
 * ```
 *
 * Will produce [Map] with one key `command` and the list of three pairs:
 *
 * 1. `args1` to `value1`
 * 2. `args2` to `value2`
 * 3. `args1` to `value3`
 *
 * @return Array of named arguments
 */
fun TextedWithTextSources.parseCommandsWithNamedArgs(
    argsSeparator: String,
    nameArgSeparator: Regex = TelegramBotCommandsDefaults.defaultNamesArgsSeparatorRegex,
) = parseCommandsWithNamedArgs(argsSeparator = Regex(pattern = argsSeparator), nameArgSeparator = nameArgSeparator)

/**
 * Uses [parseCommandsWithArgs] to create base [argsSeparator] split args for commands and map their as k-v pairs.
 * Sample:
 *
 * ```bash
 * /command args1=value1 arg2=value2 arg1=value3
 * ```
 *
 * Will produce [Map] with one key `command` and the list of three pairs:
 *
 * 1. `args1` to `value1`
 * 2. `args2` to `value2`
 * 3. `args1` to `value3`
 *
 * @return Array of named arguments
 */
fun ContentMessage<TextContent>.parseCommandsWithNamedArgs(
    argsSeparator: String,
    nameArgSeparator: Regex = TelegramBotCommandsDefaults.defaultNamesArgsSeparatorRegex,
) = parseCommandsWithNamedArgs(argsSeparator = Regex(pattern = argsSeparator), nameArgSeparator = nameArgSeparator)
@file:Suppress("INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING", "unused")

package dev.inmo.tgbotapi.webapps.cloud

external interface CloudStorage {
    fun setItem(
        key: CloudStorageKey,
        value: CloudStorageValue,
        callback: (e: Any?, success: Boolean?) -> Unit = definedExternally
    ): CloudStorage
    fun getItem(
        key: CloudStorageKey,
        callback: (e: Any?, value: CloudStorageValue?) -> Unit
    ): CloudStorage
    fun getItems(
        key: Array<CloudStorageKey>,
        callback: (e: Any?, values: Array<CloudStorageValue>?) -> Unit
    ): C


 "^sec(ond)?s?",
        "/^mn|min(ute)?s?/": "^mn|min(ute)?s?",
        "/^h(our)?s?/": "^h(our)?s?",
        "/^w(eek)?s?/": "^w(eek)?s?",
        "/^m(onth)?s?/": "^m(onth)?s?",
        "/^d(ay)?s?/": "^d(ay)?s?",
        "/^y(ear)?s?/": "^y(ear)?s?",
        "/^(a|p)/": "^(a|p)",
        "/^(a\\.?m?\\.?|p\\.?m?\\.?)/": "^(a\\.?m?\\.?|p\\.?m?\\.?)",
        "/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt|utc)/": "^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt|utc)",
        "/^\\s*(st|nd|rd|th)/": "^\\s*(st|nd|rd|th)",
        "/^\\s*(\\:|a(?!u|p)|p)/": "^\\s*(\\:|a(?!u|p)|p)",
        "LINT": "LINT",
        "TOT": "TOT",
        "CHAST": "CHAST",
        "NZST": "NZST",
        "NFT": "NFT",
        "SBT": "SBT",
        "AEST": "AEST",
        "ACST": "ACST",
        "JST": "JST",
        "CWST": "CWST",
        "CT": "CT",
        "ICT": "ICT",
        "MMT": "MMT",
        "BIOT": "BST",
        "NPT": "NPT",
        "IST": "IST",
        "PKT": "PKT",
        "AFT": "AFT",
        "MSK": "MSK",
        "IRST": "IRST",
        "FET": "FET",
        "EET": "EET",
        "CET": "CET",
        "UTC": "UTC",
        "GMT": "GMT",
        "CVT": "CVT",
        "GST": "GST",
        "BRT": "BRT",
        "NST": "NST",
        "AST": "AST",
        "EST": "EST",
        "CST": "CST",
        "MST": "MST",
        "PST": "PST",
        "AKST": "AKST",
        "MIT": "MIT",
        "HST": "HST",
        "SST": "SST",
        "BIT": "BIT",
        "CHADT": "CHADT",
        "NZDT": "NZDT",
        "AEDT": "AEDT",
        "ACDT": "ACDT",
        "AZST": "AZST",
        "IRDT": "IRDT",
        "EEST": "EEST",
        "CEST": "CEST",
        "BST": "BST",
        "PMDT": "PMDT",
        "ADT": "ADT",
        "NDT": "NDT",
        "EDT": "EDT",
        "CDT": "CDT",
        "MDT": "MDT",
        "PDT": "PDT",
        "AKDT": "AKDT",
        "HADT": "HADT"
};
Date.CultureStrings.lang = "ar-QA";
(function () {
	var $D = Date;

	var flattenAndCompact = function (ax) {
		var rx = [];
		for (var i = 0; i < ax.length; i++) {
			if (ax[i] instanceof Array) {
				rx = rx.concat(flattenAndCompact(ax[i]));
			} else {
				if (ax[i]) {
					rx.push(ax[i]);
				}
			}
		}
		return rx;
	};

	var parseMeridian = function () {
		if (this.meridian && (this.hour || this.hour === 0)) {
			if (this.meridian === "a" &


bml0'
    'EhwKCWNvbnRhaW5lchgGIAEoCVIJY29udGFpbmVyGj0KD0RpbWVuc2lvbnNFbnRyeRIQCgNrZX'
    'kYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgB');

@$core.Deprecated('Use adminQuotaPolicyDescriptor instead')
const AdminQuotaPolicy$json = {
  '1': 'AdminQuotaPolicy',
  '2': [
    {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'},
    {'1': 'policy_value', '3': 2, '4': 1, '5': 3, '10': 'policyValue'},
    {
      '1': 'dimensions',
      '3': 3,
      '4': 3,
      '5': 11,
      '6': '.google.api.serviceusage.v1beta1.AdminQuotaPolicy.DimensionsEntry',
      '10': 'dimensions'
    },
    {'1': 'metric', '3': 4, '4': 1, '5': 9, '10': 'metric'},
    {'1': 'unit', '3': 5, '4': 1, '5': 9, '10': 'unit'},
    {'1': 'container', '3': 6, '4': 1, '5': 9, '10': 'container'},
  ],
  '3': [AdminQuotaPolicy_DimensionsEntry$json],
};

@$core.Deprecated('Use adminQuotaPolicyDescriptor instead')
const AdminQuotaPolicy_DimensionsEntry$json = {
  '1': 'DimensionsEntry',
  '2': [
    {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'},
    {'1': 'value', '3': 2, '4': 1, '5': 9, '10': 'value'},
  ],
  '7': {'7': true},
};

/// Descriptor for `AdminQuotaPolicy`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List adminQuotaPolicyDescriptor = $convert.base64Decode(
    'ChBBZG1pblF1b3RhUG9saWN5EhIKBG5hbWUYASABKAlSBG5hbWUSIQoMcG9saWN5X3ZhbHVlGA'
    'IgASgDUgtwb2xpY3lWYWx1ZRJhCgpkaW1lbnNpb25zGAMgAygLMkEuZ29vZ2xlLmFwaS5zZXJ2'
    'aWNldXNhZ2UudjFiZXRhMS5BZG1pblF1b3RhUG9saWN5LkRpbWVuc2lvbnNFbnRyeVIKZGltZW'
    '5zaW9ucxIWCgZtZXRyaWMYBCABKAlSBm1ldHJpYxISCgR1bml0GAUgASgJUgR1bml0EhwKCWNv'
    'bnRhaW5lchgGIAEoCVIJY29udGFpbmVyGj0KD0RpbWVuc2lvbnNFbnRyeRIQCgNrZXkYASABKA'
    'lSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgB');

@$core.Deprecated('Use serviceIdentityDescriptor instead')
const ServiceIdentity$json = {
  '1': 'ServiceIdentity',
  '2': [
    {'1': 'email', '3': 1, '4': 1, '5': 9, '10': 'email'},
    {'1': 'unique_id', '3': 2, '4': 1, '5': 9, '10': 'uniqueId'},
  ],
};

/// Descriptor for `ServiceIdentity`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List serviceIdentityDescriptor = $convert.base64Decode(
    'Cg9TZXJ2aWNlSWRlbnRpdHkSFAoFZW1haWwYASABKAlSBWVtYWlsEhsKCXVuaXF1ZV9pZBgCIA'
    'EoCVIIdW5pcXVlSWQ=');
//
//  Generated code. Do not modify.
//  source: google/api/servicecontrol/v2/service_controller.proto
//
// @dart = 2.12

// ignore_for_file: annotate_overrides, camel_case_types, comment_references
// ignore_for_file: constant_identifier_names, library_prefixes
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
// ignore_for_file: unnecessary_import, unnece


# This module is part of https://github.com/nabilanavab/ilovepdf
# Feel free to use and contribute to this project. Your contributions are welcome!
# copyright © 2021 nabilanavab

file_name = "ILovePDF/lang/__init__.py"

from configs.config import settings

langList = {
        "eng" : ["🅴🅽🅶🅻🅸🆂🅷", "English"] ,
        "arb" : ["🅰🆁🅰🅱🅸🅲", "عربي"] ,
        "hnd" : ["🅷🅸🅽🅳🅸", "हिन्दी" ] ,
        "uzb" : ["🆄🆉🅱🅴🅺", "Uzbek"] ,
        "spn" : ["🆂🅿🅰🅽🅸🆂🅷", "español"] ,
        "frn" : ["🅵🆁🅴🅽🅲🅷", "française"] ,
        "ita" : ["🅸🆃🅰🅻🅸🅰🅽", "italiana"] ,
    }

# Display Lang in a Beutiful Way
async def disLang(lang):
    if lang in langList:
        return langList[lang][0]
    else:
        return langList[settings.DEFAULT_LANG][0]

# If you have any questions or suggestions, please feel free to reach out.
# Together, we can make this project even better, Happy coding!  XD


terrupt Flag This bit is set when auto-baud rate detection is done among the falling edge of the input data. If the ABRIEN (UUART_PROTCTL\\[6\\]) is set, the auto-baud rate interrupt will be generated. This bit can be set 4 times when the input data pattern is 0x55 and it is cleared before the next falling edge of the input bus. Note: This bit can be cleared by writing '1' to it."]
    #[inline(always)]
    pub fn abrdetif(&mut self) -> ABRDETIF_W {
        ABRDETIF_W { w: self }
    }
    #[doc = "Bit 11 - Auto-baud Rate Error Status This bit is set when auto-baud rate detection counter overrun. When the auto-baud rate counter overrun, the user shall revise the CLKDIV (UUART_BRGEN\\[25:16\\]) value and enable ABREN (UUART_PROTCTL\\[6\\]) to detect the correct baud rate again. Note 1: This bit is set at the same time of ABRDETIF. Note 2: This bit can be cleared by writing '1' to ABRDETIF or ABERRSTS."]
    #[inline(always)]
    pub fn aberrsts(&mut self) -> ABERRSTS_W {
        ABERRSTS_W { w: self }
    }
    #[doc = "Writes raw bits to the register."]
    #[inline(always)]
    pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
        self.0.bits(bits);
        self
    }
}
#[doc = "USCI Protocol Status Register\n\nThis register you can [`read`](crate::generic::Reg::read), [`write_with_zero`](crate::generic::Reg::write_with_zero), [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`modify`](crate::generic::Reg::modify). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [uuart_protsts](index.html) module"]
pub struct UUART_PROTSTS_SPEC;
impl crate::RegisterSpec for UUART_PROTSTS_SPEC {
    type Ux = u32;
}
#[doc = "`read()` method returns [uuart_protsts::R](R) reader structure"]
impl crate::Readable for UUART_PROTSTS_SPEC {
    type Reader = R;
}
#[doc = "`write(|w| ..)` method takes [uuart_protsts::W](W) writer structure"]
impl crate::Writable for UUART_PROTSTS_SPEC {
    type Writer = W;
}
#[doc = "`reset()` method sets UUART_PROTSTS to value 0"]
impl crate::Resettable for UUART_PROTSTS_SPEC {
    #[inline(always)]
    fn reset_value() -> Self::Ux {
        0
    }
}
<reponame>oguzbilgener/noxious
use crate::socket::{SocketListener, SocketStream};
use crate::{
    error::NotFoundError,
    link::Link,
    signal::{Closer, Stop},
    state::{ProxyState, SharedProxyInfo, ToxicStateHolder},
    stream::{Read, Write},
    toxic::{update_toxic_list_in_place, StreamDirection, Toxic, ToxicEvent, ToxicEventResult},
};
use async_trait::async_trait;
use bmrng::{Payload, RequestReceiver};
use futures::{stream, StreamExt};
#[cfg(test)]
use mockall::automock;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::net::SocketAddr;
use std::sync::Arc;
use std::{io, mem};
use thiserror::Error;
use tokio_util::codec::{BytesCodec, FramedRead, FramedWrite};
use tracing::{debug, error, info, instrument};

/// The default Go io.Copy buffer size is 32K, so also use 32K buffers here to imitate Toxiproxy.
const READ_BUFFER_SIZE


from __future__ import annotations

from dataclasses import dataclass
from typing import Sequence, Tuple

from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME
from dbt_semantic_interfaces.protocols import MetricInput
from dbt_semantic_interfaces.references import MetricReference
from typing_extensions import override

from metricflow_semantics.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath
from metricflow_semantics.query.issues.issues_base import (
    MetricFlowQueryIssueType,
    MetricFlowQueryResolutionIssue,
)
from metricflow_semantics.query.resolver_inputs.base_resolver_inputs import MetricFlowQueryResolverInput

@dataclass(frozen=True)
class OffsetMetricRequiresMetricTimeIssue(MetricFlowQueryResolutionIssue):
    """Describes an issue where metric_time is required, but not included in the query.

    metric_time is required as a group-by-item when querying offset metrics.
    """

    metric_reference: MetricReference
    input_metrics: Tuple[MetricInput, ...]

    @override
    def ui_description(self, associated_input: MetricFlowQueryResolverInput) -> str:
        return (
            f"The query includes a metric {repr(self.metric_reference.element_name)} that specifies a time offset in "
            f"input metrics: {repr(self.input_metrics)}. However, group-by-items do not include "
            f"{repr(METRIC_TIME_ELEMENT_NAME)}."
        )

    @override
    def with_path_prefix(self, path_prefix: MetricFlowQueryResolutionPath) -> OffsetMetricRequiresMetricTimeIssue:
        return OffsetMetricRequiresMetricTimeIssue(
            issue_type=self.issue_type,
            parent_issues=self.parent_issues,
            query_resolution_path=self.query_resolution_path.with_path_prefix(path_prefix),
            metric_reference=self.metric_reference,
            input_metrics=self.input_metrics,
        )

    @staticmethod
    def from_parameters(  # noqa: D102
        metric_reference: MetricReference,
        input_metrics: Sequence[MetricInput],
        query_resolution_path: MetricFlowQueryResolutionPath,
    ) -> OffsetMetricRequiresMetricTimeIssue:
        return OffsetMetricRequiresMetricTimeIssue(
            issue_type=MetricFlowQueryIssueType.ERROR,
            parent_issues=(),
            query_resolution_path=query_resolution_path,
            metric_reference=metric_reference,
            input_metrics=tuple(input_metrics),
        )


    */
   public void pollEvents()
   {
      RDXVRTrackedDevicePose[] newTrackedDevicePosesParsed = trackedDevicePosesParsedRef.getAndSet(null);

      if (newTrackedDevicePosesParsed == null)
         return;

      VRInput.VRInput_UpdateActionState(activeActionSets, VRActiveActionSet.SIZEOF);

      headset.update(newTrackedDevicePosesParsed);

      for (RobotSide side : RobotSide.values)
      {
         controllers.get(side).update(newTrackedDevicePosesParsed);
      }

      while (VRSystem.VRSystem_PollNextEvent(event)) // a tracker is connected/disconnected after initialization
      {
         int eventType = event.eventType();
         if (eventType != VR.EVREventType_VREvent_TrackedDeviceActivated &&
             eventType != VR.EVREventType_VREvent_TrackedDeviceDeactivated)
         {
            continue;
         }

         int deviceIndex = event.trackedDeviceIndex();
         int deviceClass = VRSystem.VRSystem_GetTrackedDeviceClass(deviceIndex);
         if (deviceClass == VR.ETrackedDeviceClass_TrackedDeviceClass_GenericTracker)
         {
            String serial = getSerialNumber(deviceIndex);
            if (event.eventType() == VR.EVREventType_VREvent_TrackedDeviceActivated)
            {
               if (!trackers.containsKey(serial))
               {
                  trackers.put(serial, new RDXVRTracker(vrPlayAreaYUpZBackFrame, deviceIndex, vrModel));
                  newTrackerSerialNumber.add(serial);
                  LogTools.info("Tracker {} connected", serial);
                  loadTrackerRolesFromFile();
               }
            }
            else if (event.eventType() == VR.EVREventType_VREvent_TrackedDeviceDeactivated)
            {
               if (trackers.containsKey(serial))
               {
                  removedTrackerSerialNumber.add(getSerialNumber(deviceIndex));
                  LogTools.warn("Tracker {} disconnected", getSerialNumber(deviceIndex));
               }
            }
         }
      }

      for (var tracker : trackers.entrySet())
      {
         tracker.getValue().update(newTrackedDevicePosesParsed);
      }

      for (Consumer<RDXVRContext> vrPickCalculator : vrPickCalculators)
      {
         vrPickCalculator.accept(this);
      }
      for (RobotSide side : RobotSide.values)
      {
         controllers.get(side).updatePickResults();
      }
      for (Consumer<RDXVRContext> vrInputProcessor : vrInputProcessors)
      {
         vrInputProcessor.accept(this);
      }
   }

   /**
    * Completes rendering and submits the rendering surfaces to the
    * head mounted display.
    */
   public void renderEyes(RDX3DScene scene)
   {
      for (RobotSide side : RobotSide.values)
      {
         eyes.get(side).render(scene);
      }

      // These lines take some time
      // TODO: Do anti aliasing and set EVRSubmitFlags_Submit_GlRenderBuffer
      VRCompositor.VRCompositor_Submit(VR.EVREye_Eye_Left, eyes.get(RobotSide.LEFT).getOpenVRTexture(), null, VR.EVRSubmitFlags_Submit_Default);
      VRCompositor.VRCompositor_Submit(VR.EVREye_Eye_Right, eyes.get(RobotSide.RIGHT).getOpenVRTexture(), null, VR.EVRSubmitFlags_Submit_Default);
      GL41.glFlush(); // recommended by OpenVR docs. Needed?
   }

   public void dispose()
   {
      for (RDXVREye eyeData : eyes)
         eyeData.getFrameBuffer().dispose();

      // TODO: Dispose models

      VR_ShutdownInternal();
   }

   public void teleport(Consumer<RigidBodyTransform> teleportIHMCZUpToIH


.globl	real_fline
	.globl	fline
fline:
	jmp	fpsp_fline
real_fline:

	SAVE_ALL_INT
	GET_CURRENT(d0)
	move.l	sp,-(sp)		/* stack frame pointer argument */
	bsr.l	trap_c
	addq.l	#4,sp
	bra.l	ret_from_exception

/*
 * 	Unsupported data type exception
 */
	.xref	fpsp_unsupp
	.globl	real_unsupp
	.globl	unsupp
unsupp:
	jmp	fpsp_unsupp
real_unsupp:
	link		a6,#-LOCAL_SIZE
	fsave		-(sp)
	bclr.b		#E1,E_BYTE(a6)	/* unsupp is always an E1 exception */
	frestore	(sp)+
	unlk		a6

	SAVE_ALL_INT
	GET_CURRENT(d0)
	move.l	sp,-(sp)		/* stack frame pointer argument */
	bsr.l	trap_c
	addq.l	#4,sp
	bra.l	ret_from_exception

/*
 * 	Trace exception
 */
	.globl	real_trace
real_trace:
	bra.l	trap

/*
 * 	fpsp_fmt_error --- exit point for frame format error
 *
 * 	The fpu stack frame does not match the frames existing
 * 	or planned at the time of this writing.  The fpsp is
 * 	unable to handle frame sizes not in the following
 * 	version:size pairs:
 *
 * 	{4060, 4160} - busy frame
 * 	{4028, 4130} - unimp frame
 * 	{4000, 4100} - idle frame
 *
 * 	This entry point simply holds an f-line illegal value.
 * 	Replace this with a call to your kernel panic code or
 * 	code to handle future revisions of the fpu.
 */
	.globl	fpsp_fmt_error
fpsp_fmt_error:

	.dc.l	0xf27f0000	/* f-line illegal */

/*
 * 	fpsp_done --- FPSP exit point
 *
 * 	The exception has been handled by the package and we are ready
 * 	to return to user mode, but there may be OS specific code
 * 	to execute before we do.  If there is, do it now.
 *
 */

	.globl	fpsp_done
fpsp_done:
	btst	#0x5,(sp)		/* supervisor bit set in saved SR? */
	beq	.Lnotkern
	rte
.Lnotkern:
	SAVE_ALL_INT
	GET_CURRENT(d0)
	/* deliver signals, reschedule etc.. */
	jra	ret_from_exception

/*
 * 	mem_write --- write to user or supervisor address space
 *
 *  Writes to memory while in supervisor mode.  copyout accomplishes
 *  this via a 'moves' instruction.  copyout is a UNIX SVR3 (and later) function.
 *  If you don't have copyout, use the local copy of the function below.
 *
 * 	a0 - supervisor source address
 * 	a1 - user destination address
 * 	d0 - number of bytes to write (maximum count is 12)
 *
 *  The


sure_name = 'metrics' AND time > ago(2h)
GROUP BY region, hostname, az, BIN(time, 15s)
ORDER BY binned_timestamp ASC
LIMIT 5
EOF

  error_report_configuration {
    s3_configuration {
      bucket_name = aws_s3_bucket.example.bucket
    }
  }

  notification_configuration {
    sns_configuration {
      topic_arn = aws_sns_topic.example.arn
    }
  }

  schedule_configuration {
    schedule_expression = "rate(1 hour)"
  }

  target_configuration {
    timestream_configuration {
      database_name = aws_timestreamwrite_database.results.database_name
      table_name    = aws_timestreamwrite_table.results.table_name
      time_column   = "binned_timestamp"

      dimension_mapping {
        dimension_value_type = "VARCHAR"
        name                 = "az"
      }

      dimension_mapping {
        dimension_value_type = "VARCHAR"
        name                 = "region"
      }

      dimension_mapping {
        dimension_value_type = "VARCHAR"
        name                 = "hostname"
      }

      multi_measure_mappings {
        target_multi_measure_name = "multi-metrics"

        multi_measure_attribute_mapping {
          measure_value_type = "DOUBLE"
          source_column      = "avg_cpu_utilization"
        }

        multi_measure_attribute_mapping {
          measure_value_type = "DOUBLE"
          source_column      = "p90_cpu_utilization"
        }

        multi_measure_attribute_mapping {
          measure_value_type = "DOUBLE"
          source_column      = "p95_cpu_utilization"
        }

        multi_measure_attribute_mapping {
          measure_value_type = "DOUBLE"
          source_column      = "p99_cpu_utilization"
        }
      }
    }
  }
}
```

## Argument Reference

The following arguments are required:

* `error_report_configuration` - (Required) Configuration block for error reporting configuration. [See below.](#error_report_configuration)
* `execution_role_arn` - (Required) ARN for the IAM role that Timestream will assume when running the scheduled query.
* `name` - (Required) Name of the scheduled query.
* `notification_configuration` - (Required) Configuration block for notification configuration for a scheduled query. A notification is sent by Timestream when a scheduled query is created, its state is updated, or when it is deleted. [See below.](#notification_configuration)
* `query_string` - (Required) Query string to run. Parameter names can be specified in the query string using the `@` character followed by an identifier. The named parameter `@scheduled_runtime` is reserved and can be used in the query to get the time at which the query is scheduled to run. The timestamp calculated according to the `schedule_configuration` parameter, will be the value of `@scheduled_runtime` paramater for each query run. For example, consider an instance of a scheduled query executing on 2021-12-01 00:00:00. For this instance, the `@scheduled_runtime` parameter is initialized to the timestamp 2021-12-01 00:00:00 when invoking the query.
* `schedule_configuration` - (Required) Configuration block for schedule configuration for the query. [See below.](#schedule_configuration)
* `target_configuration` - (Required) Configuration block for writing the result


(A6)+
	OR	D2,(A6)+
	AND	D0,(A6)+
	OR.L	D2,(A6)+
	LEA	$80(A6),A6
	MOVE.L	A2,(A6)+
	MOVE.L	A3,(A6)+
	MOVE.L	#$FFFE0FFF,(A6)+
	MOVE.L	#$FFFFF07F,(A6)+
	MOVE.L	#$BE117E10,(A6)+
	MOVE.L	#$FFFFCFFF,(A6)+
	OR	D3,(A6)+
	AND	#$1FFF,(A6)
	OR.L	D3,(A6)+
	OR	D3,(A6)+
	LEA	$80(A6),A6
	MOVE.L	#$FF3FFFFF,(A6)+
	MOVE.L	#$FFFF03C1,(A6)+
	MOVE.L	#$FFE40FE3,(A6)+
	MOVE.L	#$FFFFF03F,(A6)+
	MOVE.L	#$7C083C10,(A6)+
	MOVE.L	#$FFFFDFFF,(A6)+
	MOVEM.L	L512FA(PC),D0-D1/D3-D4/A0-A1/A3
	AND.L	D3,(A6)+
	OR.L	D5,(A6)+
	LEA	$80(A6),A6
	MOVE.L	#$FF3DFFFF,(A6)+
	MOVE.L	#$FFFF03C3,(A6)+
	MOVE.L	#$FDA40E62,(A6)+
	MOVE.L	#$FFFFF3FF,(A6)+
	MOVE.L	#$78083800,(A6)+
	MOVE.L	#$FFFFF7FF,(A6)+
	AND.L	#$3FFF3FFF,(A6)+
	OR.L	D1,(A6)+
	LEA	$80(A6),A6
	MOVE.L	#$FF39FFFF,(A6)+
	MOVE.L	#$FFFF03C7,(A6)+
	MOVE.L	#$FCD40E32,(A6)+
	MOVE.L	#$FFFFF3FF,(A6)+
	MOVE.L	#$78047800,(A6)+
	MOVE.L	#$FFFFE7FF,(A6)+
	AND.L	#$3FFF3FFF,(A6)+
	OR.L	D1,(A6)+
	LEA	$80(A6),A6
	MOVE.L	#$FF31FFFF,(A6)+
	MOVE.L	#$FFFF03CF,(A6)+
	MOVE.L	#$FC6EFC1A,(A6)+
	MOVE.L	#$FFFFF7FF,(A6)+
	MOVE.L	#$60007C00,(A6)+
	MOVE.L	#$FFFFDFFF,(A6)+
	AND.L	#$3FFF3FFF,(A6)+
	OR.L	D1,(A6)+
	LEA	$80(A6),A6
	MOVE.L	#$FF33FFFF,(A6)+
	MOVE.L	#$FFFF03CF,(A6)+
	MOVE.L	#$FC37FC0F,(A6)+
	MOVE.L	#$FFFFF7F9,(A6)+
	MOVE.L	#$F0009E00,(A6)+
	MOVE.L	A2,(A6)+
	AND.L	D3,(A6)+
	OR.L	D5,(A6)+
	LEA	$80(A6),A6
	MOVE.L	#$FF7FFFFF,(A6)+
	MOVE.L	#$FFFF03CE,(A6)+
	MOVE.L	#$F83FF80E,(A6)+
	MOVE.


= [...Array(height)].map(() => Array(width).fill(0));

  let rowIndex = 0;
  let colIndex = 0;
  let countString = "";

  Array.from(rle).forEach(char => {
    if (char >= "0" && char <= "9") countString += char;
    else {
      for (let i = 0; i < (parseInt(countString, 10) || 1); i++) {
        switch (char) {
          case "b":
            array[rowIndex][colIndex] = 0;
            colIndex++;
            break;
          case "o":
            array[rowIndex][colIndex] = 1;
            colIndex++;
            break;
          case "$":
            rowIndex++;
            colIndex = 0;
            break;
          case "!":
            break;
          default:
            throw new Error("Invalid character in pattern file");
        }
      }
      countString = "";
    }
  });

  return array;
}

/**
 * Dynamically generate HTML for the patter dropdown menu.
 * @param targetId Node where generated HTML should be attached
 */
export function generateDropdownHTML(targetId: string): void {
  const target = document.getElementById(targetId) as HTMLDivElement;

  target.innerHTML = `

    ${Object.entries(patternList)
      .map(([category, contents]) => {
        return `

          ${category}
            <svg><use xlink:href="icons.svg#chevron-right"></use></svg>

          ${contents
            .map(id => {
              const patternData = patternMap.get(id);
              if (!patternData)
                throw new Error(`No pattern data found for '${id}'`);

              return `

                  ${patternData.name}

`;
            })
            .join("")}

`;
      })
      .join("")}

`;
}
import { TestBed } from '@angular/core/testing';

import { UtilityService } from './utility.service';

describe('UtilityService', () => {
  let service: UtilityService;
  beforeEach(() => {
    TestBed.configureTestingModule({});
    service = new UtilityService();
  });

  it('should be created', () => {
    expect(service).toBeTruthy();
  });

  it('createsquare should return array with length 9', function() {
    // const service: UtilityService = TestBed.get(UtilityService);
    expect(service.createSquares().length).toEqual(9); // true
  });

  it('play again should modify li elements style properties', function() {
    const liArr = [];
    const liElem1 = document.createElement('li');
    liArr.push(liElem1);
    const liElem2 = document.createElement('li');
    liArr.push(liElem2);

    // const service: UtilityService = TestBed.get(UtilityService);
    service.playAgain(liArr);
    expect(liArr[0].style.background).toEqual('none'); // true
    expect(liArr[0].innerHTML).toEqual(''); // true
  });
});
/**
 * Supported languages of the library
 */
export const supportedLanguages = [
  'en',
  'fr',
  'es',
  'cn',
  'ja',
  'de',
  'pt-br',
  'tr',
  'ro',
] as const

/**
 * Supported languages types of the library
 */
export type SupportedLanguages = (typeof supportedLanguages)[number]
import {Counterparty} from 'commerceml-parser-core';

/**
 * Helper method to p


        if (isBoxExplode) {
            return;
        }
        std::vector<AGrid> grids = {{1, 1}, {2, 1}, {5, 1}, {6, 1}, {2, 2}, {2, 3}, {2, 4}, {3, 6}, {3, 7}, {4, 6}, {4, 7}, {2, 4}, {5, 4}, {1, 3}, {6, 3}};
        if (!isNeedFire) {
            if (AGetPlantPtr(1, 4, ADPG_10)) {
                grids.push_back({1, 4});
            }
            if (AGetPlantPtr(6, 4, ADPG_10)) {
                grids.push_back({6, 4});
            }
        }
        ngtFixer.SetList(grids);
        if (isNeedFire) {
            Fire();
        }
        PutFodder();
        PutSyc();
    },
        ATickRunner::ONLY_FIGHT, 1);

    // 这个的修补优先级必须提高
    yygFixer.Start([] {
        FixYyg();
    },
        ATickRunner::ONLY_FIGHT, -1);

    for (auto wave : {10, 20}) {
        AConnect(ATime(wave, 395 - 298), [] {
            aIceFiller.Coffee();
            aIceFiller.SetList({{3, 5}});
            yygFixer.Start([] {
                FixYyg();
            },
                ATickRunner::ONLY_FIGHT, -1);
        });

        // 这里是为了保证咖啡豆能永远用来防止小偷
        AConnect(ATime(wave, 395 - 298 - 751), [] {
            dpgFixer.Stop();
            yygFixer.Stop();
        });
    }

    for (auto wave : {9, 19, 20}) {
        AConnect(ATime(wave, 400), [] {
            dpgFixer.Start(ADPG_10, {{1, 3}, {6, 3}, {1, 4}, {2, 4}, {5, 4}, {6, 4}}, 0);
            dpgFixer.SetIsUseCoffee(true);
        });
    }
}#include <sstream>
#include <cmath>

#include <World.h>
#include <utils/Log.h>
#include <utils/ResourceManager.h>

#include <iostream>

std::shared_ptr<Group> World::loadObject(const ObjectTag &tag,
                                        const FilePath &meshFile,
                                        const Vec3D &scale) {
    auto obj = ResourceManager::loadTriangleMesh(tag, meshFile);
    obj->getComponent<TransformMatrix>()->scale(scale);
    add(obj);

    Log::log("World::loadMesh(): inserted Group from " + meshFile.str() + " with title '" + tag.str() + "'");
    return obj;
}

TriangleMesh::IntersectionInformation World::rayCast(const Vec3D &from, const Vec3D &to, const std::set<ObjectTag> &skipTags) {
    return intersect(from, to, skipTags);
}

void World::update() {
    updateComponents();
    checkCollision(sharedPtr());
}

void World::checkCollision(const std::shared_ptr<Object> &whereToCheck) {
    for (auto &[name, object] : *whereToCheck) {
        auto rigidObject = object->getComponent<RigidObject>();
        if(rigidObject && rigidObject->hasCollision()) {
            checkCollision(shared


5f)));
	}

	private void create (final Model model, final float mass, final btCollisionShape shape) {
		this.model = model;
		this.shape = shape;

		if (shape != null && mass >= 0) {
			// Calculate the local inertia, bodies with no mass are static
			Vector3 localInertia;
			if (mass == 0)
				localInertia = Vector3.Zero;
			else {
				shape.calculateLocalInertia(mass, tmpV);
				localInertia = tmpV;
			}

			// For now just pass null as the motionstate, we'll add that to the body in the entity itself
			bodyInfo = new btRigidBodyConstructionInfo(mass, null, shape, localInertia);
		}
	}

	@Override
	public void dispose () {
		// Don't rely on the GC
		if (bodyInfo != null) bodyInfo.dispose();
		if (shape != null) shape.dispose();
		// Remove references so the GC can do it's work
		bodyInfo = null;
		shape = null;
	}

	@Override
	public BulletEntity construct (float x, float y, float z) {
		if (bodyInfo == null && shape != null) {
			btCollisionObject obj = new btCollisionObject();
			obj.setCollisionShape(shape);
			return new BulletEntity(model, obj, x, y, z);
		} else
			return new BulletEntity(model, bodyInfo, x, y, z);
	}

	@Override
	public BulletEntity construct (final Matrix4 transform) {
		if (bodyInfo == null && shape != null) {
			btCollisionObject obj = new btCollisionObject();
			obj.setCollisionShape(shape);
			return new BulletEntity(model, obj, transform);
		} else
			return new BulletEntity(model, bodyInfo, transform);
	}
}
/*******************************************************************************
 * Copyright 2014 See AUTHORS file.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/

package com.badlogic.gdx.ai.tests.steer.bullet.tests;

import com.badlogic.gdx.ai.GdxAI;
import com.badlogic.gdx.ai.steer.behaviors.Arrive;
import com.badlogic.gdx.ai.steer.behaviors.BlendedSteering;
import com.badlogic.gdx.ai.steer.behaviors.LookWhereYouAreGoing;
import com.badlogic.gdx.ai.steer.limiters.NullLimiter;
import com.badlogic.gdx.ai.tests.SteeringBehaviorsTest;
import com.badlogic.gdx.ai.tests.steer.bullet.BulletSteeringTest;
import com.badlogic.gdx.ai.tests.steer.bullet.SteeringBulletEntity;
import com.badlogic.gdx.ai.tests.utils.bullet.BulletEntity;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Matrix4;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.physics.bullet.collision.btCollisionObject;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Slider;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene


ions)
	local node = cc.ui.UICheckBoxButton.new(
		self:getCheckBoxImages(options),
		{scale9 = not options.ignoreSize})

	if not options.ignoreSize then
		node:setButtonSize(options.width, options.height)
	end
	node:align(self:getAnchorType(options.anchorPointX or 0.5, options.anchorPointY or 0.5),
		options.x or 0, options.y or 0)

	return node
end

function CCSUILoader:createBMFontLabel(options)
	local node = ui.newBMFontLabel({
		text = options.text,
		font = options.fileNameData.path,
		textAlign = ui.TEXT_ALIGN_CENTER,
		x = options.x,
		y = options.y})
	if 1 == options.anchorPointY then
		node:setAlignment(ui.TEXT_ALIGN_RIGHT)
	elseif 0.5 == options.anchorPointY then
	else
		node:setAlignment(ui.TEXT_ALIGN_RIGHT)
	end

	return node
end

function CCSUILoader:createLabel(options)
	local node = cc.ui.UILabel.new({text = options.text,
		font = options.fontName,
		size = options.fontSize,
		color = cc.c3b(options.colorR or 255, options.colorG or 255, options.colorB or 255),
		align = options.hAlignment,
		valign = options.vAlignment,
		dimensions = cc.size(options.areaWidth or 0, options.areaHeight or 0),
		x = options.x, y = options.y})
	if not options.ignoreSize then
		node:setLayoutSize(options.areaWidth, options.areaHeight)
	end

	node:align(self:getAnchorType(options.anchorPointX or 0.5, options.anchorPointY or 0.5),
		options.x or 0, options.y or 0)

	return node
end

function CCSUILoader:createLabelAtlas(options)
	local labelAtlas
	if "function" == type(cc.LabelAtlas._create) then
		labelAtlas = cc.LabelAtlas:_create()
		labelAtlas:initWithString(options.stringValue,
			options.charMapFileData.path,
			options.itemWidth,
			options.itemHeight,
			string.byte(options.startCharMap))
	else
		labelAtlas = cc.LabelAtlas:create(
			options.stringValue,
			options.charMapFileData.path,
			options.itemWidth,
			options.itemHeight,
			string.byte(options.startCharMap))
	end

	labelAtlas:setAnchorPoint(
		cc.p(options.anchorPointX or 0.5, options.anchorPointY or 0.5))
	labelAtlas:setPosition(options.x, options.y)
	if not options.ignoreSize then
		labelAtlas:setContentSize(options.width, options.height)
	end
	return labelAtlas
end

function CCSUILoader:createEditBox(options)
	local editBox = ui.newEditBox({
        size = cc.size(options.width, options.height)
    })
    editBox:setPlaceHolder(options.placeHolder)
    editBox:setFontName(options.fontName)
    editBox:setFontSize(options.fontSize or 20)
    editBox:setText(options.text)
    editBox:setAnchorPoint(
		cc.p(options.anchorPointX or 0.5, options.anchorPointY or 0.5))
    if options.passwordEnable then
    	editBox:setInputFlag(cc.EDITBOX_INPUT_FLAG_PASSWORD)
	end
	if options.maxLengthEnable then
		editBox:setMaxLength(options.maxLength)
	end

	-- editBox:setPosition(
	-- 	options.x - options.width*options.anchorPointX,
	-- 	options.y + options.fontSize/2)
	editBox:setPosition(options.x


ocument.getElementById('c').getBoundingClientRect();
      canvas.add(this.crop_state.rectangle);
      canvas.on("mouse:down", function(event) {
        if(1) {
          console.log('wow mouse is down', event.e);
          self.crop_state.rectangle.width = 2;
          self.crop_state.rectangle.height = 2;
          self.crop_state.rectangle.left = event.e.offsetX / self.scaleFactor;
          self.crop_state.rectangle.top = event.e.offsetY / self.scaleFactor;
          self.crop_state.rectangle.visible = true;
          self.crop_state.mouseDown = event.e;
          canvas.bringToFront(self.crop_state.rectangle);
        }
      });
      // draw the rectangle as the mouse is moved after a down click
      canvas.on("mouse:move", function(event) {
        if(self.crop_state.mouseDown && 1) {

          self.crop_state.rectangle.width  = event.e.offsetX / self.scaleFactor - self.crop_state.rectangle.left;
          self.crop_state.rectangle.height = event.e.offsetY / self.scaleFactor - self.crop_state.rectangle.top;
          canvas.renderAll();

        }
      });
      // when mouse click is released, end cropping mode
      canvas.on("mouse:up", function() {
        console.log('MOUSE UP');
        self.crop_state.mouseDown = null;
      });
    },
    apply_crop() {
      console.log(this.crop_state.rectangle.width);
    },
    apply() {

      image_data = canvas.toDataURL({
        format: 'png',
        multiplier: 1.0/this.scaleFactor});
      let formData = new FormData();
      formData.append('image', image_data);
      var url = new URL(window.location);
      var id = url.searchParams.get("id");
      fetch('/rest/upload/'+id+'/markup', {method: 'POST', body: formData})
          .then(response => response.json())  // convert to json
          .then(json => {
            console.log(json);
            window.location = '/uploads.html';
          })
    },
    cancel() {
      window.location = '/uploads.html';
    },
  }
}

function scalefactor(width, height) {
  max_width = window.innerWidth * 3/5;
  max_height = window.innerHeight * 5/6;

  if (width <= max_width && height <= max_height) {
    return 1.0;
  }

  factor = max_width/width;
  if (height*factor <= max_height) {
    return factor;
  }

  return 1/ (height/max_height);
}

</script>

{{ end }}{{ define "content" }}

Config

  <form x-cloak class="">

Configuration changes are not made until the Save button is pressed
      at the bottom of this page.

global configuration

The server port dictates which TCP port the web server listens on.
      If you change this number you will need to restart.

The Watch Interval is how often new files will be discovered by your
      watchers in seconds (watchers are configured below).

      <div class="col-sm-6 my-


 reserved.
// Copyright 2019 Google, LLC.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Based on earlier versions of https://go.dev/src/crypto/x509/x509.go
// LICENSE file from https://go.dev/LICENSE follows:

// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:

//    * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//    * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//    * Neither the name of Google LLC nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.

// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

// Package attributecert parses X.509-encoded attribute certificates.
package attributecert

import (
	"bytes"
	"crypto"
	"crypto/x509"
	"crypto/x509/pkix"
	"encoding/asn1"
	"errors"
	"fmt"
	"math/big"
	"time"

	"github.com/google/go-attestation/oid"
)

var (
	oidExtensionAuthorityKeyIdentifier = []int{2, 5, 29, 35}
	oidAuthorityInfoAccess             = []int{1, 3, 6, 1, 5, 5, 7, 1, 1}
	oidCpsCertificatePolicy            = []int{1, 3, 6, 1, 5, 5, 7, 2, 1}
	oidAuthorityInfoAccessOcsp         = []int{1, 3, 6, 1, 5, 5, 7, 48, 1}
	oidAuthorityInfoAccessIssuers      = []int{1, 3, 6, 1, 5, 5, 7, 48, 2}
	oidTcgCertificatePolicy            = []int{1, 2, 840, 113741, 1, 5, 2, 4}
	oidAttributeUserNotice             = []int{1, 3, 6, 1, 5, 5, 7, 2, 2}
	oidTcgPlatformManufacturerStrV1    = []int{2, 23


:183px;height:auto;}#comp-lnw4uue8{--contentPaddingLeft:0px;--contentPaddingRight:0px;--contentPaddingTop:0px;--contentPaddingBottom:0px;}#comp-lnw4uue8{width:40px;height:41px;}#comp-ln3jv6j6{width:341px;height:357px;transform:rotate(340.93419042101516deg);}#comp-ln3jqlq1{width:341px;height:357px;transform:rotate(340.93419042101516deg);}#comp-ln3jmdzq{--contentPaddingLeft:0px;--contentPaddingRight:0px;--contentPaddingTop:0px;--contentPaddingBottom:0px;}#comp-ln3jmdzq{width:329px;height:538px;}#comp-ln3jocif{--contentPaddingLeft:0px;--contentPaddingRight:0px;--contentPaddingTop:0px;--contentPaddingBottom:0px;}#comp-ln3jocif{width:490px;height:447px;}#comp-ln3kcrkk{width:127px;}[data-mesh-id=comp-ln3kcrkkinlineContent]{height:auto;width:127px;}[data-mesh-id=comp-ln3kcrkkinlineContent-gridContainer]{position:static;display:grid;height:auto;width:100%;min-height:auto;grid-template-rows:1fr;grid-template-columns:100%;}[data-mesh-id=comp-ln3kcrkkinlineContent-gridContainer] > [id="comp-ln3kcrm8"]{position:relative;margin:0px 0px 0px 0;left:0px;grid-area:1 / 1 / 2 / 2;justify-self:start;align-self:start;}[data-mesh-id=comp-ln3kcrkkinlineContent-gridContainer] > [id="comp-ln3kcrmc2"]{position:relative;margin:8px 0px 5px 0;left:4px;grid-area:1 / 1 / 2 / 2;justify-self:start;align-self:start;}#comp-ln3kcrm8{width:127px;height:34px;}#comp-ln3kcrmc2{width:119px;height:auto;}#comp-ln3kgbwh1{width:127px;height:34px;}#comp-ln3kgbwl4{width:119px;height:auto;}#comp-ln3kiwg4{width:127px;height:34px;}#comp-ln3kiwg61{width:119px;height:auto;}#comp-lqppu8s9{width:205px;height:205px;}#comp-lqq1sn94:not([data-screen-in-hide="done"]){opacity:0;}#comp-lqq1sn94{width:143px;height:133px;}/* END STYLABLE DIRECTIVE RULES */

#comp-lqq1sn94 .style-lqq3pqis__root{-st-extends: StylableButton;transition: all 0.2s ease, visibility 0s;border-radius: 200px;border: 0px solid rgb(65, 117, 134);background: rgba(65, 117, 134, 0)}

/* START STYLABLE DIRECTIVE RULES */

#comp-lqq1sn94 .style-lqq3pqis__root:disabled{background: #E2E2E2}

#comp-lqq1sn94 .style-lqq3pqis__root:disabled .StylableButton2545352419__label{color: #8F8F8F}

#comp-lqq1sn94 .style-lqq3pqis__root:disabled .StylableButton2545352419__icon{fill: #8F8F8F}

#comp-lqq1sn94 .style-lqq3pqis__root .StylableButton2545352419__container{transition: inherit}

#comp-lqq1sn94 .style-lqq3pqis__root .StylableButton2545352419__label{transition: inherit;font-size: 16px;color: #000000;displa


eAssigness
    availableAssignees.forEach(function(user) {
        if (user.name === loggedUser.name) {
            loggedUser = user;
        }
    });

    var newAlert = createAlert(sessionId, args, incidentManagementId, loggedUser, csrfToken);

    var fullUrl = [
        url,
        'ajax/incident/create',
        incidentManagementId + '',
        '?ctoken=' + csrfToken
    ].join('/');

    var newIncident = {
        name: args.name,
        summary: args.summary || '',
        priority: args.priority,
        createdBy: loggedUser.name,
        alert_id_list: [
            newAlert.id
        ]
    };

    var res = http(
        fullUrl,
        {
            Method: 'POST',
            Headers: {
                'Cookie': [COOKIE_PREFIX + sessionId],
                'Content-Type': ['application/json']
            },
            Body: JSON.stringify(newIncident)
        },
        true,
        proxy
    );

    if (res.StatusCode < 200 || res.StatusCode >= 300) {
        throw 'Failed to create incident with status [' + res.StatusCode + ']\n.'
            + 'Request Body: ' + JSON.stringify(body) + '\n. Response Body: ' + res.Body;
    }

    try {
        var newIncidentRes = JSON.parse(res.Body);
        if (newIncidentRes.success) {
            newIncident.id = newIncidentRes.data.id;
            return newIncident;
        } else {
            throw FailedRequestError('Failed to create incident.', fullUrl, null, body, newIncidentRes).toString();
        }
    } catch (err) {
        throw FailedRequestError('Unexpected error while creating incident. \nOriginal error: ' + err, fullUrl, null, body, res.Body).toString();
    }
}

function addEventsToIncident(sessionId, args, incidentManagementId, availableAssignees) {
    var eventsViewHTML = getEventsViewHtml(sessionId);
    var csrfToken = extractCsrfTokenFromHTML(eventsViewHTML);
    var loggedUser = extractLoggedUserFromHTML(eventsViewHTML);
    // currently we extract only the name of the logged in user. But the all the user object is exist in the html.
    // it just will take more development time.
    // that is why we look for the user in availableAssigness
    availableAssignees.forEach(function(user) {
        if (user.name === loggedUser.name) {
            loggedUser = user;
        }
    });

    var newAlert = createAlert(sessionId, args, incidentManagementId, loggedUser, csrfToken);

    var fullUrl = [
        url,
        'ajax/incident/addToIncident',
        incidentManagementId + '',
        '?ctoken=' + csrfToken
    ].join('/');

    var reqBody = {
        alertIds: [
            newAlert.id
        ],
        incidentId: args.incidentId
    };

    var res = http(
        fullUrl,
        {
            Method: 'POST',
            Headers: {
                'Cookie': [COOKIE_PREFIX + sessionId],
                'Content-Type': ['application/json']
            },
            Body: JSON.stringify(reqBody)
        },
        true,
        proxy
    );

    if (res.StatusCode < 200 || res.StatusCode >= 300) {
        throw 'Failed to add events to incident with status [' + res.StatusCode + ']\n.'
            + 'Request Body: ' + JSON.stringify(body) + '\n. Response Body: ' + res.Body;
    }

    try {
        var resObject = JSON.parse(res.Body);
        if (resObject.success) {
            return true;
        } else {
            throw FailedRequestError('Failed to add events to incident.', fullUrl, null, body, newIncidentRes).toString();
        }
    } catch (err) {
        throw Failed


ouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                itmLeitoresMouseReleased(evt);
            }
        });
        mnuRelatório.add(itmLeitores);

        Roles.setText("Roles");
        Roles.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                RolesMouseReleased(evt);
            }
        });
        mnuRelatório.add(Roles);

        itmUsuarios.setText("Usuarios");
        itmUsuarios.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                itmUsuariosMouseReleased(evt);
            }
        });
        mnuRelatório.add(itmUsuarios);

        itmEmprestimosAutorizados.setText("Emprestimos autorizados");
        itmEmprestimosAutorizados.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                itmEmprestimosAutorizadosMouseReleased(evt);
            }
        });
        mnuRelatório.add(itmEmprestimosAutorizados);

        itmUsuariosLogados.setText("Usuarios Logados");
        itmUsuariosLogados.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                itmUsuariosLogadosMouseReleased(evt);
            }
        });
        mnuRelatório.add(itmUsuariosLogados);

        jMenuBar1.add(mnuRelatório);

        mnuSair.setText("Sair");

        itmFecharPrograma.setText("Fechar");
        itmFecharPrograma.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                itmFecharProgramaMouseReleased(evt);
            }
        });
        mnuSair.add(itmFecharPrograma);

        jMenuBar1.add(mnuSair);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(76, Short.MAX_VALUE)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void itmAutorizarEmprestimosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itmAutorizarEmprestimosActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_itmAutorizarEmprestimosActionPerformed

    private void itmFecharProgramaMouseReleased(java.awt.event.MouseEvent ev


sion));
                    Assert.That(e.WorkingCopyInfo.LastChangeTime, Is.GreaterThan(DateTime.UtcNow - new TimeSpan(0, 0, 45)));
                    Assert.That(e.WorkingCopyInfo.LockComment, Is.Null);
                    Assert.That(e.WorkingCopyInfo.LockOwner, Is.Null);
                    Assert.That(e.WorkingCopyInfo.LockTime, Is.EqualTo(DateTime.MinValue));
                    Assert.That(e.WorkingCopyInfo.LockToken, Is.Null);
                    Assert.That(e.WorkingCopyInfo.Name, Is.EqualTo("LocalDeleteBase"));
                    Assert.That(e.WorkingCopyInfo.NodeKind, Is.EqualTo(SvnNodeKind.File));
                    Assert.That(e.WorkingCopyInfo.PropertyRejectFile, Is.Null);
                    Assert.That(e.WorkingCopyInfo.RepositoryId, Is.Not.Null);
                    Assert.That(e.WorkingCopyInfo.RepositoryId, Is.Not.EqualTo(Guid.Empty));
                    Assert.That(e.WorkingCopyInfo.RepositoryUri, Is.EqualTo(sbox.RepositoryUri));
                    Assert.That(e.WorkingCopyInfo.Revision, Is.EqualTo(ci.Revision));
                    Assert.That(e.WorkingCopyInfo.Schedule, Is.EqualTo(SvnSchedule.Delete));
                    Assert.That(e.WorkingCopyInfo.Uri, Is.EqualTo(new Uri(WcUri, "LocalDeleteBase")));
#pragma warning restore 0618
                    visited = true;
                });
                Assert.That(visited, "Visited handler");

                client.Commit(WcPath);

                Assert.That(ItemExists(new Uri(WcUri, "LocalDeleteBase")), Is.False, "Remote base does not exist");
                Assert.That(ItemExists(new Uri(WcUri, "RemoteDeleteBase")), Is.False, "Local base does not exist");
            }
        }

        [TestMethod]
        public void SvnVersionRoot()
        {
            using (SvnWorkingCopyClient wcC = new SvnWorkingCopyClient())
            {
                SvnGetWorkingCopyVersionArgs sa = new SvnGetWorkingCopyVersionArgs();
                sa.ThrowOnError = false;
                SvnWorkingCopyVersion wcv;
                wcC.GetVersion("C:\\", sa, out wcv); // Used to throw an assertion error
            }
        }

        [TestMethod]
        public void HasIgnorePatterns()
        {
            SvnClient cl = new SvnClient();
            cl.LoadConfigurationDefault();

            List<string> items = new List<string>(cl.Configuration.GlobalIgnorePattern);

            Assert.That(new string[] {"*.a", ".DS_Store", "*.lo"}, Is.SubsetOf(items));
        }

        [TestMethod]
        public void DontCanonicalizeToDotSlash()
        {
            SvnPathTarget path = new SvnPathTarget(".\\bladiebla.txt");

            Assert.That(path.TargetName, Is.EqualTo("bladiebla.txt"));

            Assert.That(Path.GetFullPath("c:\\windows\\"), Is.EqualTo("c:\\windows\\"));
            Assert.That(SvnTools.GetNormalizedFullPath("c:\\windows\\"), Is.EqualTo("C:\\windows"));

            Assert.That(SvnRevision.Base == SvnRevision.Base);
            Assert.That(SvnRevision.Base.Equals(SvnRevision.Base));
            Assert.That(SvnRevision.Base.Equals(SvnRevisionType.Base));
            Assert.That(SvnRevision.Base == SvnRevisionType.Base);

            Assert.That(SvnRevision.Working == SvnRevision.Working);
            Assert.That(SvnRevision.Working.Equals(SvnRevision.Working));
            Assert.That(SvnRevision.Working.Equals(SvnRevisionType.Working));
            Assert.That(SvnRevision.Working == SvnRevisionType.Working);

            DirectoryInfo dir = new DirectoryInfo("c:\\");

            foreach (FileInfo file in dir.GetFiles())
            {
                Assert.That(file.FullName.StartsWith("c:\\"));
            }


    + .total-item-round {
      top: 5px;
      right: 10px;
    }
  }

  // Dropdown style Level 0
  .has-dropdown > .mini-cart {
    width: 100% !important;
    box-shadow:none;
    //  border-radius: 0;
    transition: none;
    padding: 14px;
    position: static;
    opacity: 1;
    visibility: visible;
    // through jquery
    display: none;// This property is very important helps to remove transition flash of dropdown when window
    // is resize
  }

  .mini-product-container {
    // Height calculated with product name which has long text
    // place only 2 products on slot (height of 1 product is 390) so 390 + 390 + (margin-bottom of 1:22) + (padding-top:17) + (padding-top:17)
    // 390 + 390 + 22 + 17 + 17 = 836
    max-height: 836px;
  }

  .card-mini-product {
    display: block;// Flex would be remove
    text-align: center;
  }

  .mini-product {
    display: block;

    &__image-wrapper {
      margin-right: 0;
      margin-bottom: 10px;
    }

    &__info-wrapper {
      padding: 0;
      display: block;
      margin-bottom: 10px;
    }

  }

  .mini-total {
    margin-bottom: 22px;
  }

}

// Greater than important 992
@media (min-width: ($g-mobileBreakpoint + 1) * 1px) {

  .toggle-button-shop {
    + .total-item-round {
      display: none;
    }
  }

  .has-dropdown:hover > .mini-cart {
    top: 100%; // increment increase distance from item (means bottom)
    opacity: 1;
    visibility: visible;
  }

}/*
Theme Name: Groover
Author: Ahmad Hussnain
Description: Groover is modern, clean and polish multipurpose Ecommerce HTML
Template built with modern workflow tool like Webpack. When developing this
template we highly focused on some goals i.e. responsiveness, well tested on all
compatible browsers, designed to be reusable and could be easy to customizable
into any stores like clothing, toys, mobiles & tablets, electronics, books,
furniture etc. Features multiple sections on the front page as well as
navigation, widgets, banners slideshow, a logo, and more.
Version: 1.0.0
Tags: one-column, two-columns, three-columns, four-columns, right-sidebar,
custom-colors, custom-header, custom-menu, custom-logo, featured-images
Text Domain: Groover
*/
/*--------------------------------------------------------------
>>> TABLE OF CONTENTS:
----------------------------------------------------------------
1.0 Base Styles
2.0 Typography
3.0 Pre-configured styles
5.0 Vendor Extensions
6.0 Components
7.0 Header
  7.1 Top-Header
  7.2 Mid-Header
  7.3 Responsive-Search
  7.4 Responsive-Buttons
  7.5 Mini-Cart
  7.6 Bottom-Header
8.0 Footer
  8.1 Outer-Footer
  8.2 Mid-Footer
  8.3 Bottom-Footer
9.0 Home-Page:
  9.1 Newsletter-Modal
  9.2 Banner-Layer
  9.3 Error-Not-Product
  9.4 Brand-Slider
  9.5 Site-Priorities
10.0 About-Page
11.0 Contact-Page
12.0 FAQ-Page
13.0 Store-Directory-Page
14.0 Terms-&-Conditions-Page
15.0 404-page
16.0 Single-Product-Fullwidth-page:
  16.1 Product-zoom-area
  16.2 Product-details
  16.3 Detail-Tabs
  16.4 Description-Tab
  16.5 Specifications-Tab
  16.6 Reviews-Tab
  16.7 Detail-Different-Product-Section
17.0 Blog-pa


path d='M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'%3E%3C/path%3E%3C/svg%3E"); }span.icon-calendar {background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); }span.icon-credit {background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='1' y1='10' x2='23' y2='10'%3E%3C/line%3E%3C/svg%3E"); }span.icon-edit {background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.66V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.34'%3E%3C/path%3E%3Cpolygon points='18 2 22 6 12 16 8 16 8 12 18 2'%3E%3C/polygon%3E%3C/svg%3E"); }span.icon-link {background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E"); }span.icon-help {background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2