/*
  Glaurung, a UCI chess playing engine.
  Copyright (C) 2004-2008 Tord Romstad

  Glaurung 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.

  Glaurung 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 this program.  If not, see <http://www.gnu.org/licenses/>.
*/

////
//// Includes
////

#include <cassert>
#include <cstdarg>
#include <cstdio>
#include <cstring>

#include "misc.h"
#include "thread.h"
#include "ucioption.h"

////
//// Variables
////

bool Chess960 = false;

////
//// Local definitions
////

namespace {

  ///
  /// Types
  ///

  enum OptionType { SPIN, COMBO, CHECK, STRING, BUTTON, OPTION_TYPE_NONE};

  struct Option {
    char name[50], defaultValue[300], currentValue[300];
    OptionType type;
    int minValue, maxValue;
    char comboValues[8][64];
  };

  ///
  /// Variables
  ///

  Option Options[] = {
    { "Use Search Log", "false", "false", CHECK, 0, 0, {""} },
    { "Search Log Filename", "SearchLog.txt", "SearchLog.txt", STRING, 0, 0, {""} },
    { "Book File", "book.bin", "book.bin", STRING, 0, 0, {""} },
    { "Mobility (Middle Game)", "100", "100", SPIN, 0, 200, {""} },
    { "Mobility (Endgame)", "100", "100", SPIN, 0, 200, {""} },
    { "Pawn Structure (Middle Game)", "100", "100", SPIN, 0, 200, {""} },
    { "Pawn Structure (Endgame)", "100", "100", SPIN, 0, 200, {""} },
    { "Passed Pawns (Middle Game)", "100", "100", SPIN, 0, 200, {""} },
    { "Passed Pawns (Endgame)", "100", "100", SPIN, 0, 200, {""} },
    { "Space", "100", "100", SPIN, 0, 200, {""} },
    { "Aggressiveness", "100", "100", SPIN, 0, 200, {""} },
    { "Cowardice", "100", "100", SPIN, 0, 200, {""} },
    { "King Safety Curve", "Quadratic", "Quadratic", COMBO, 0, 0,
      { "Quadratic", "Linear" /*, "From File"*/ } },
    { "King Safety Coefficient", "40", "40", SPIN, 1, 100 , {""} },
    { "King Safety X Intercept", "0", "0", SPIN, 0, 20, {""} },
    { "King Safety Max Slope", "30", "30", SPIN, 10, 100, {""} },
    { "King Safety Max Value", "500", "500", SPIN, 100, 1000, {""} },
    { "Queen Contact Check Bonus", "3", "3", SPIN, 0, 8, {""} },
    { "Queen Check Bonus", "2", "2", SPIN, 0, 4, {""} },
    { "Rook Check Bonus", "1", "1", SPIN, 0, 4, {""} },
    { "Bishop Check Bonus", "1", "1", SPIN, 0, 4, {""} },
    { "Knight Check Bonus", "1", "1", SPIN, 0, 4, {""} },
    { "Discovered Check Bonus", "3", "3", SPIN, 0, 8, {""} },
    { "Mate Threat Bonus", "3", "3", SPIN, 0, 8, {""} },
    { "Check Extension (PV nodes)", "2", "2", SPIN, 0, 2, {""} },
    { "Check Extension (non-PV nodes)", "1", "1", SPIN, 0, 2, {""} },
    { "Single Reply Extension (PV nodes)", "2", "2", SPIN, 0, 2, {""} },
    { "Single Reply Extension (non-PV nodes)", "2", "2", SPIN, 0, 2, {""} },
    { "Mate Threat Extension (PV nodes)", "0", "0", SPIN, 0, 2, {""} },
    { "Mate Threat Extension (non-PV nodes)", "0", "0", SPIN, 0, 2, {""} },
    { "Pawn Push to 7th Extension (PV nodes)", "1", "1", SPIN, 0, 2, {""} },
    { "Pawn Push to 7th Extension (non-PV nodes)", "1", "1", SPIN, 0, 2, {""} },
    { "Passed Pawn Extension (PV nodes)", "1", "1", SPIN, 0, 2, {""} },
    { "Passed Pawn Extension (non-PV nodes)", "0", "0", SPIN, 0, 2, {""} },
    { "Pawn Endgame Extension (PV nodes)", "2", "2", SPIN, 0, 2, {""} },
    { "Pawn Endgame Extension (non-PV nodes)", "2", "2", SPIN, 0, 2, {""} },
    { "Full Depth Moves (PV nodes)", "14", "14", SPIN, 1, 100, {""} },
    { "Full Depth Moves (non-PV nodes)", "3", "3", SPIN, 1, 100, {""} },
    { "Threat Depth", "5", "5", SPIN, 0, 100, {""} },
    { "Selective Plies", "7", "7", SPIN, 0, 10, {""} },
    { "Futility Pruning (Main Search)", "true", "true", CHECK, 0, 0, {""} },
    { "Futility Pruning (Quiescence Search)", "true", "true", CHECK, 0, 0, {""} },
    { "Futility Margin 0", "50", "50", SPIN, 0, 1000, {""} },
    { "Futility Margin 1", "100", "100", SPIN, 0, 1000, {""} },
    { "Futility Margin 2", "200", "200", SPIN, 0, 1000, {""} },
    { "Maximum Razoring Depth", "3", "3", SPIN, 0, 4, {""} },
    { "Razoring Margin", "300", "300", SPIN, 150, 600, {""} },
    { "Randomness", "0", "0", SPIN, 0, 10, {""} },
    { "Minimum Split Depth", "4", "4", SPIN, 4, 7, {""} },
    { "Maximum Number of Threads per Split Point", "5", "5", SPIN, 4, 8, {""} },
    { "Threads", "1", "1", SPIN, 1, 8, {""} },
    { "Hash", "32", "32", SPIN, 4, 4096, {""} },
    { "Clear Hash", "false", "false", BUTTON, 0, 0, {""} },
    { "Ponder", "true", "true", CHECK, 0, 0, {""} },
    { "OwnBook", "true", "true", CHECK, 0, 0, {""} },
    { "MultiPV", "1", "1", SPIN, 1, 500, {""} },
    { "UCI_ShowCurrLine", "false", "false", CHECK, 0, 0, {""} },
    { "UCI_Chess960", "false", "false", CHECK, 0, 0, {""} },
    { "", "", "", OPTION_TYPE_NONE, 0, 0, {""}}
  };

  ///
  /// Functions
  ///

  Option *option_with_name(const char *optionName);

}

////
//// Functions
////

/// init_uci_options() initializes the UCI options.  Currently, the only
/// thing this function does is to initialize the default value of the
/// "Threads" parameter to the number of available CPU cores.

void init_uci_options() {
  Option *o;

  o = option_with_name("Threads");
  assert(o != NULL);

  // Limit the default value of "Threads" to 7 even if we have 8 CPU cores.
  // According to Ken Dail's tests, Glaurung plays much better with 7 than
  // with 8 threads.  This is weird, but it is probably difficult to find out
  // why before I have a 8-core computer to experiment with myself.
  sprintf(o->defaultValue, "%d", Min(cpu_count(), 7));
  sprintf(o->currentValue, "%d", Min(cpu_count(), 7));

  // Increase the minimum split depth when the number of CPUs is big.
  // It would probably be better to let this depend on the number of threads
  // instead.
  o = option_with_name("Minimum Split Depth");
  assert(o != NULL);
  if(cpu_count() > 4) {
    sprintf(o->defaultValue, "%d", 6);
    sprintf(o->defaultValue, "%d", 6);
  }
}

/// print_uci_options() prints all the UCI options to the standard output,
/// in the format defined by the UCI protocol.

void print_uci_options() {
  static const char optionTypeName[][16] = {
    "spin", "combo", "check", "string", "button"
  };
  for(Option *o = Options; o->type != OPTION_TYPE_NONE; o++) {
    printf("option name %s type %s", o->name, optionTypeName[o->type]);
    if(o->type != BUTTON) {
      printf(" default %s", o->defaultValue);
      if(o->type == SPIN)
        printf(" min %d max %d", o->minValue, o->maxValue);
      else if(o->type == COMBO)
        for(int i = 0; strlen(o->comboValues[i]) > 0; i++)
          printf(" var %s", o->comboValues[i]);
    }
    printf("\n");
  }
}

/// get_option_value_bool() returns the current value of a UCI parameter of
/// type "check".

bool get_option_value_bool(const std::string &optionName) {
  Option *o = option_with_name(optionName.c_str());
  return o != NULL && strcmp(o->currentValue, "true") == 0;
}

/// get_option_value_int() returns the value of a UCI parameter as an integer.
/// Normally, this function will be used for a parameter of type "spin", but
/// it could also be used with a "combo" parameter, where all the available
/// values are integers.

int get_option_value_int(const std::string &optionName) {
  Option *o = option_with_name(optionName.c_str());
  return atoi(o->currentValue);
}

/// get_option_value_string() returns the current value of a UCI parameter as
/// a string.  It is used with parameters of type "combo" and "string".

const std::string get_option_value_string(const std::string &optionName) {
  Option *o = option_with_name(optionName.c_str());
  return o->currentValue;
}

/// button_was_pressed() tests whether a UCI parameter of type "button" has
/// been selected since the last time the function was called.

bool button_was_pressed(const std::string &buttonName) {
  if(get_option_value_bool(buttonName)) {
    set_option_value(buttonName, "false");
    return true;
  }
  else
    return false;
}

/// set_option_value() inserts a new value for a UCI parameter.  Note that
/// the function does not check that the new value is legal for the given
/// parameter:  This is assumed to be the responsibility of the GUI.

void set_option_value(const std::string &optionName,
                      const std::string &newValue) {
  Option *o = option_with_name(optionName.c_str());

  if(o != NULL)
    strcpy(o->currentValue, newValue.c_str());
  else
    std::cout << "No such option: " << optionName << std::endl;
}

/// push_button() is used to tell the engine that a UCI parameter of type
/// "button" has been selected:

void push_button(const std::string &buttonName) {
  set_option_value(buttonName, "true");
}

namespace {

  // option_with_name() tries to find a UCI option with a given
  // name.  It returns a pointer to the UCI option or the null pointer,
  // depending on whether an option with the given name exists.

  Option *option_with_name(const char *optionName) {
    for(Option *o = Options; o->type != OPTION_TYPE_NONE; o++)
      if(strcmp(o->name, optionName) == 0)
        return o;
    return NULL;
  }

}

{'repo_name': 'lukasmonk/lucaschess', 'stars': '256', 'repo_language': 'C++', 'file_name': 'lang.ini', 'mime_type': 'text/plain', 'hash': 1070680714570054530, 'source_dataset': 'data'}


#
#
# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
# OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.
#
# Permission is hereby granted to use or copy this program
# for any purpose,  provided the above notices are retained on all copies.
# Permission to modify the code and to distribute modified code is granted,
# provided the above notices are retained, and a notice that the code was
# modified is included with the above copyright notice.
#
# Modified by: Grzegorz Jakacki <jakacki at acm dot org>
# Modified by: Petter Urkedal <petter.urkedal@nordita.dk>

## Process this file with automake to produce part of Makefile.in.

# installed headers
#
pkginclude_HEADERS += \
	include/gc.h \
	include/gc_typed.h \
	include/gc_inline.h \
	include/gc_mark.h \
	include/weakpointer.h \
	include/new_gc_alloc.h \
	include/gc_allocator.h \
	include/gc_backptr.h \
	include/gc_gcj.h \
	include/leak_detector.h \
	include/gc_amiga_redirects.h \
	include/gc_pthread_redirects.h \
	include/gc_config_macros.h \
	include/gc_tiny_fl.h \
	include/gc_version.h

# headers which are not installed
#
dist_noinst_HEADERS += \
	include/private/gc_hdrs.h \
	include/private/gc_priv.h \
	include/private/gcconfig.h \
	include/private/gc_pmark.h \
	include/private/gc_locks.h \
	include/private/dbg_mlc.h \
	include/private/specific.h \
	include/private/cord_pos.h \
	include/private/pthread_support.h \
	include/private/pthread_stop_world.h \
	include/private/darwin_semaphore.h \
	include/private/darwin_stop_world.h \
	include/private/thread_local_alloc.h \
	include/cord.h \
	include/ec.h \
	include/javaxfc.h

# unprefixed header
include_HEADERS += \
        include/extra/gc.h

{'repo_name': 'ooc-lang/rock', 'stars': '363', 'repo_language': 'ooc', 'file_name': 'ProcessWin32.ooc', 'mime_type': 'text/plain', 'hash': -8403852136169853443, 'source_dataset': 'data'}


#include <queue>

class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        priority_queue<int, vector<int>, greater<int> > Q;
        for(int i = 0; i < nums.size(); i++){
            if(Q.size() < k){
                Q.push(nums[i]);
            }
            else if(Q.top() < nums[i]){
                Q.pop();
                Q.push(nums[i]);
            }
        }

        return Q.top();
    }
};

{'repo_name': 'MisterBooo/LeetCodeAnimation', 'stars': '56780', 'repo_language': 'Java', 'file_name': '0231-Power-Of-Two.md', 'mime_type': 'text/x-c++', 'hash': -774129420233788246, 'source_dataset': 'data'}


package com.jnape.palatable.lambda.functions.builtin.fn4;

import com.jnape.palatable.lambda.functions.Fn1;
import com.jnape.palatable.lambda.functions.Fn2;
import com.jnape.palatable.lambda.functions.Fn3;
import com.jnape.palatable.lambda.functions.Fn4;
import com.jnape.palatable.lambda.functor.Applicative;

/**
 * Lift into and apply an {@link Fn3} to three {@link Applicative} values, returning the result inside the same
 * {@link Applicative} context.
 *
 * @param <A>    the function's first argument type
 * @param <B>    the function's second argument type
 * @param <C>    the function's third argument type
 * @param <D>    the function's return type
 * @param <App>  the applicative witness
 * @param <AppD> the inferred applicative return type
 * @see Applicative#zip(Applicative)
 */
public final class LiftA3<A, B, C, D, App extends Applicative<?, App>, AppD extends Applicative<D, App>> implements
        Fn4<Fn3<A, B, C, D>, Applicative<A, App>, Applicative<B, App>, Applicative<C, App>, AppD> {

    private static final LiftA3<?, ?, ?, ?, ?, ?> INSTANCE = new LiftA3<>();

    private LiftA3() {
    }

    @Override
    public AppD checkedApply(Fn3<A, B, C, D> fn,
                             Applicative<A, App> appA,
                             Applicative<B, App> appB,
                             Applicative<C, App> appC) {
        return appA.<D>zip(appB.zip(appC.fmap(c -> b -> a -> fn.apply(a, b, c)))).coerce();
    }

    @SuppressWarnings("unchecked")
    public static <A, B, C, D, App extends Applicative<?, App>, AppD extends Applicative<D, App>>
    LiftA3<A, B, C, D, App, AppD> liftA3() {
        return (LiftA3<A, B, C, D, App, AppD>) INSTANCE;
    }

    public static <A, B, C, D, App extends Applicative<?, App>, AppD extends Applicative<D, App>>
    Fn3<Applicative<A, App>, Applicative<B, App>, Applicative<C, App>, AppD> liftA3(Fn3<A, B, C, D> fn) {
        return LiftA3.<A, B, C, D, App, AppD>liftA3().apply(fn);
    }

    public static <A, B, C, D, App extends Applicative<?, App>, AppD extends Applicative<D, App>>
    Fn2<Applicative<B, App>, Applicative<C, App>, AppD> liftA3(Fn3<A, B, C, D> fn, Applicative<A, App> appA) {
        return LiftA3.<A, B, C, D, App, AppD>liftA3(fn).apply(appA);
    }

    public static <A, B, C, D, App extends Applicative<?, App>, AppD extends Applicative<D, App>>
    Fn1<Applicative<C, App>, AppD> liftA3(Fn3<A, B, C, D> fn, Applicative<A, App> appA, Applicative<B, App> appB) {
        return LiftA3.<A, B, C, D, App, AppD>liftA3(fn, appA).apply(appB);
    }

    public static <A, B, C, D, App extends Applicative<?, App>, AppD extends Applicative<D, App>>
    AppD liftA3(Fn3<A, B, C, D> fn, Applicative<A, App> appA, Applicative<B, App> appB, Applicative<C, App> appC) {
        return LiftA3.<A, B, C, D, App, AppD>liftA3(fn, appA, appB).apply(appC);
    }
}

{'repo_name': 'palatable/lambda', 'stars': '698', 'repo_language': 'Java', 'file_name': 'OutOfScopeException.java', 'mime_type': 'text/plain', 'hash': -2585054945887796280, 'source_dataset': 'data'}


//
//     Generated by class-dump 3.5 (64 bit).
//
//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by Steve Nygard.
//

#import <GeoServices/NSObject-Protocol.h>

@class NSString;
@protocol GEOTransitArtworkDataSource;

@protocol GEOTransitSystem <NSObject>
@property(readonly, nonatomic) id <GEOTransitArtworkDataSource> artwork;
@property(readonly, nonatomic) NSString *name;
@property(readonly, nonatomic) unsigned long long muid;
@end

{'repo_name': 'neonichu/tvOS-headers', 'stars': '152', 'repo_language': 'Objective-C', 'file_name': 'NSCoding-Protocol.h', 'mime_type': 'text/plain', 'hash': 222208289662568109, 'source_dataset': 'data'}


(function ($) {
    'use strict';

    $.fn.bootstrapTable.locales['zh-CN'] = {
        formatLoadingMessage: function () {
            return '正在努力地加载数据中，请稍候……';
        },
        formatRecordsPerPage: function (pageNumber) {
            return pageNumber + ' 条记录每页';
        },
        formatShowingRows: function (pageFrom, pageTo, totalRows) {
            return '第 ' + pageFrom + ' 到 ' + pageTo + ' 条，共  ' + totalRows + ' 条记录。';
        },
        formatSearch: function () {
            return '搜索';
        },
        formatNoMatches: function () {
            return '没有找到匹配的记录';
        },
        formatPaginationSwitch: function () {
            return '隐藏/显示分页';
        },
        formatRefresh: function () {
            return '刷新';
        },
        formatToggle: function () {
            return '切换';
        },
        formatColumns: function () {
            return '列';
        },
        formatExport: function () {
            return '导出数据';
        },
        formatClearFilters: function () {
            return '清空过滤';
        }
    };

    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']);

})(jQuery);

{'repo_name': 'seagull1985/LuckyFrameWeb', 'stars': '289', 'repo_language': 'Java', 'file_name': 'V2.3 初始化.sql', 'mime_type': 'text/plain', 'hash': 19260004522307864, 'source_dataset': 'data'}


#ifndef _GLN64_RDP_H
#define _GLN64_RDP_H

#include <stdint.h>

#include "../../Graphics/RDP/RDP_state.h"

#ifndef maxCMDMask
#define maxCMDMask (MAXCMD - 1)
#endif

#ifdef __cplusplus
extern "C" {
#endif

void RDP_Init(void);
void RDP_Half_1(uint32_t _c);
void RDP_ProcessRDPList();
void RDP_RepeatLastLoadBlock(void);
void RDP_SetScissor(uint32_t w0, uint32_t w1);

#ifdef __cplusplus
}
#endif

#endif

{'repo_name': 'libretro/parallel-n64', 'stars': '193', 'repo_language': 'C++', 'file_name': 'hle_external.h', 'mime_type': 'text/x-c', 'hash': -3205543482944104945, 'source_dataset': 'data'}


//
//  LYWeChatInteractiveSecondVC.m
//  LYCustomTransitionDemo
//
//  Created by liyang on 2017/2/23.
//  Copyright © 2017年 liyang. All rights reserved.
//

#import "LYNavWeChatInteractiveSecondVC.h"
#import "LYNavWeChatInteractiveAnimatedTransition.h"
#import "AppDelegate.h"

@interface LYNavWeChatInteractiveSecondVC ()

@property (nonatomic, strong) LYNavWeChatInteractiveAnimatedTransition *animatedTransition;
@property (nonatomic, assign) CGPoint transitionImgViewCenter;

@property (nonatomic, strong) UIImageView         *imgView;

@end

@implementation LYNavWeChatInteractiveSecondVC

- (void)viewDidLoad {
    [super viewDidLoad];

    self.title = @"WeChatSecond";
    self.view.backgroundColor = [UIColor blackColor];

    UIImage *image = [UIImage imageNamed:@"Wechat-Interactive.jpeg"];
    CGSize size = [self backImageSize:image];
    _imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, (kScreenHeight - size.height) * 0.5, size.width, size.height)];
    _imgView.image = image;
    _imgView.userInteractionEnabled = YES;
    [self.view addSubview:_imgView];

    self.transitionImgViewCenter = _imgView.center;

    UIPanGestureRecognizer *interactiveTransitionRecognizer;
    interactiveTransitionRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(interactiveTransitionRecognizerAction:)];
    [self.view addGestureRecognizer:interactiveTransitionRecognizer];
}

- (void)interactiveTransitionRecognizerAction:(UIPanGestureRecognizer *)gestureRecognizer
{
    CGPoint translation = [gestureRecognizer translationInView:gestureRecognizer.view];

    CGFloat scale = 1 - (translation.y / kScreenHeight);
    scale = scale < 0 ? 0 : scale;
    scale = scale > 1 ? 1 : scale;

    NSLog(@"second = %f", scale);
    switch (gestureRecognizer.state) {
        case UIGestureRecognizerStatePossible:
            break;
        case UIGestureRecognizerStateBegan:{

            //1. 设置代理
            self.animatedTransition = nil;

            self.navigationController.delegate = self.animatedTransition;

            self.animatedTransition.gestureRecognizer = gestureRecognizer;
            //3.push跳转
            [self.navigationController popViewControllerAnimated:YES];
        }
            break;
        case UIGestureRecognizerStateChanged: {

            self.tabBarController.tabBar.alpha = scale;

            _imgView.center = CGPointMake(self.transitionImgViewCenter.x + translation.x * scale, self.transitionImgViewCenter.y + translation.y);
            _imgView.transform = CGAffineTransformMakeScale(scale, scale);

            self.animatedTransition.beforeImageViewFrame = self.beforeImageViewFrame;
            break;
        }
        case UIGestureRecognizerStateFailed:
        case UIGestureRecognizerStateCancelled:
        case UIGestureRecognizerStateEnded: {

            if (scale > 0.95f) {
                [UIView animateWithDuration:0.2 animations:^{

                    self.imgView.center = self.transitionImgViewCenter;
                    _imgView.transform = CGAffineTransformMakeScale(1, 1);
                } completion:^(BOOL finished) {

                    _imgView.transform = CGAffineTransformIdentity;
                }];
            }else{

            }
            self.animatedTransition.currentImageView = _imgView;
            self.animatedTransition.currentImageViewFrame = _imgView.frame;

            self.animatedTransition = nil;
            self.navigationController.delegate = self.animatedTransition;
        }
    }
}

- (CGSize)backImageSize:(UIImage *)image{

    CGSize size = image.size;
    CGSize newSize;
    newSize.width = kScreenWidth;
    newSize.height = newSize.width / size.width * size.height;

    return newSize;
}

- (LYNavWeChatInteractiveAnimatedTransition *)animatedTransition{
    if (!_animatedTransition) {
        _animatedTransition = [[LYNavWeChatInteractiveAnimatedTransition alloc] init];
    }
    return _animatedTransition;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

{'repo_name': 'dev-liyang/LYCustomTransition', 'stars': '296', 'repo_language': 'Objective-C', 'file_name': 'LYQuestionOneCell.h', 'mime_type': 'text/x-objective-c', 'hash': 6759739743357978829, 'source_dataset': 'data'}


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
  serializedVersion: 6
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_Name: Tree_03_Trunk_Layer_Wind
  m_Shader: {fileID: 4800000, guid: 7f5e57a11d3b85d4896c9c8f56c74920, type: 3}
  m_ShaderKeywords:
  m_LightmapFlags: 4
  m_EnableInstancingVariants: 0
  m_DoubleSidedGI: 0
  m_CustomRenderQueue: -1
  stringTagMap:
    MotionVector: User
  disabledShaderPasses:
  - DistortionVectors
  - MOTIONVECTORS
  - TransparentBackface
  m_SavedProperties:
    serializedVersion: 3
    m_TexEnvs:
    - _BaseColorMap0:
        m_Texture: {fileID: 2800000, guid: 864059f6ebdffbc4bbd49ab8eb527a95, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _BaseColorMap1:
        m_Texture: {fileID: 2800000, guid: ea6cef2f53e96864d9f75c68938d024a, type: 3}
        m_Scale: {x: 5, y: 10}
        m_Offset: {x: 0, y: 0}
    - _BaseColorMap2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _BaseColorMap3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _BentNormalMap0:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _BentNormalMap1:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _BentNormalMap2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _BentNormalMap3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _BentNormalMapOS0:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _BentNormalMapOS1:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _BentNormalMapOS2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _BentNormalMapOS3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _BumpMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _DetailAlbedoMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _DetailMap0:
        m_Texture: {fileID: 2800000, guid: ecf4909b7d14bd741a1533ee20eb5ada, type: 3}
        m_Scale: {x: 7, y: 28}
        m_Offset: {x: 0, y: 0}
    - _DetailMap1:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _DetailMap2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _DetailMap3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _DetailMask:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _DetailMask0:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _DetailMask1:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _DetailMask2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _DetailMask3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _DetailNormalMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _DistortionVectorMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _EmissionMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _EmissiveColorMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _HeightMap0:
        m_Texture: {fileID: 2800000, guid: b611a2cc6fb4a8e4aadbec2ca0d6ebc2, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _HeightMap1:
        m_Texture: {fileID: 2800000, guid: ea13f727d8bcd0a4993477e00d0f71f5, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _HeightMap2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _HeightMap3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _LayerInfluenceMaskMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _LayerMaskMap:
        m_Texture: {fileID: 2800000, guid: 27382749b1b7b3e44b6508ec32485fe9, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MainTex:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MaskMap0:
        m_Texture: {fileID: 2800000, guid: 4fb5cc92b02392c409a9c18086c92cc8, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MaskMap1:
        m_Texture: {fileID: 2800000, guid: 7acd236ba58a2f44591cba063021e054, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MaskMap2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MaskMap3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MetallicGlossMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _NormalMap0:
        m_Texture: {fileID: 2800000, guid: 1b7ee7e09fc954d41b074f78a7e40e1c, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _NormalMap1:
        m_Texture: {fileID: 2800000, guid: c690683496128094f8068c2b9738e096, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _NormalMap2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _NormalMap3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _NormalMapOS0:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _NormalMapOS1:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _NormalMapOS2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _NormalMapOS3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _OcclusionMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _ParallaxMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SpecularOcclusionMap0:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SpecularOcclusionMap1:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SpecularOcclusionMap2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SpecularOcclusionMap3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SubsurfaceMaskMap0:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SubsurfaceMaskMap1:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SubsurfaceMaskMap2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SubsurfaceMaskMap3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SubsurfaceRadiusMap0:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SubsurfaceRadiusMap1:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SubsurfaceRadiusMap2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SubsurfaceRadiusMap3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _ThicknessMap0:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _ThicknessMap1:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _ThicknessMap2:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _ThicknessMap3:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    m_Floats:
    - Boolean_70519104: 0
    - Boolean_8B807E4B: 0
    - Boolean_965B8980: 1
    - Boolean_F52A0CDB: 0
    - Vector1_1E2E9494: 0
    - Vector1_3B31B0AF: 1
    - Vector1_5333A47A: 1
    - Vector1_6CB7D98B: 2
    - Vector1_8DA64C34: 0
    - Vector1_9E9B031F: 0
    - Vector1_A7E2F1F: 1
    - Vector1_D48FBE84: 0
    - Vector1_E1731B28: 1
    - Vector1_E434EEA6: 0
    - _AORemapMax: 1
    - _AORemapMax0: 1
    - _AORemapMax1: 1
    - _AORemapMax2: 1
    - _AORemapMax3: 1
    - _AORemapMin: 0
    - _AORemapMin0: 0
    - _AORemapMin1: 0
    - _AORemapMin2: 0
    - _AORemapMin3: 0
    - _AddPrecomputedVelocity: 1
    - _AlbedoAffectEmissive: 0
    - _AlphaCutoff: 0.5
    - _AlphaCutoffEnable: 0
    - _AlphaDstBlend: 0
    - _AlphaSrcBlend: 1
    - _ApplyShiverWind: 0
    - _BlendMode: 0
    - _BlendUsingHeight1: 0
    - _BlendUsingHeight2: 0
    - _BlendUsingHeight3: 0
    - _BumpScale: 1
    - _CullMode: 2
    - _CullModeForward: 2
    - _Cutoff: 0.5
    - _DepthOffsetEnable: 0
    - _DetailAlbedoScale0: 1
    - _DetailAlbedoScale1: 1
    - _DetailAlbedoScale2: 1
    - _DetailAlbedoScale3: 1
    - _DetailNormalMapScale: 1
    - _DetailNormalScale0: 0.454
    - _DetailNormalScale1: 1
    - _DetailNormalScale2: 1
    - _DetailNormalScale3: 1
    - _DetailSmoothnessScale0: 1
    - _DetailSmoothnessScale1: 1
    - _DetailSmoothnessScale2: 1
    - _DetailSmoothnessScale3: 1
    - _DiffusionProfile0: 0
    - _DiffusionProfile1: 0
    - _DiffusionProfile2: 0
    - _DiffusionProfile3: 0
    - _DiffusionProfileHash0: 0
    - _DiffusionProfileHash1: 0
    - _DiffusionProfileHash2: 0
    - _DiffusionProfileHash3: 0
    - _DisplacementLockObjectScale: 1
    - _DisplacementLockTilingScale: 1
    - _DisplacementMode: 3
    - _DistortionDepthTest: 0
    - _DistortionEnable: 0
    - _DistortionOnly: 0
    - _DoubleSidedEnable: 0
    - _DoubleSidedMirrorEnable: 1
    - _DoubleSidedNormalMode: 1
    - _Drag: 0.25
    - _DstBlend: 0
    - _EmissiveColorMode: 1
    - _EmissiveExposureWeight: 1
    - _EmissiveIntensity: 1
    - _EmissiveIntensityUnit: 0
    - _EnableBlendModePreserveSpecularLighting: 1
    - _EnableFogOnTransparent: 1
    - _EnableGeometricSpecularAA: 0
    - _EnableMotionVectorForVertexAnimation: 0
    - _EnablePerPixelDisplacement: 0
    - _EnableSpecularOcclusion: 0
    - _EnableVertexDisplacement: 1
    - _EnableWind: 1
    - _GlossMapScale: 1
    - _Glossiness: 0.5
    - _GlossyReflections: 1
    - _HdrpVersion: 1
    - _HeightAmplitude0: 0.099999994
    - _HeightAmplitude1: 0.02
    - _HeightAmplitude2: 0.02
    - _HeightAmplitude3: 0.02
    - _HeightCenter0: 0.5
    - _HeightCenter1: 0.5
    - _HeightCenter2: 0.5
    - _HeightCenter3: 0.5
    - _HeightCenterOffset0: 0
    - _HeightCenterOffset1: 0
    - _HeightCenterOffset2: 0
    - _HeightCenterOffset3: 0
    - _HeightFactor0: 1
    - _HeightFactor1: 1
    - _HeightFactor2: 1
    - _HeightFactor3: 1
    - _HeightMapParametrization0: 0
    - _HeightMapParametrization1: 0
    - _HeightMapParametrization2: 0
    - _HeightMapParametrization3: 0
    - _HeightMax0: 5
    - _HeightMax1: 1
    - _HeightMax2: 1
    - _HeightMax3: 1
    - _HeightMin0: -5
    - _HeightMin1: -1
    - _HeightMin2: -1
    - _HeightMin3: -1
    - _HeightOffset0: 0
    - _HeightOffset1: 0
    - _HeightOffset2: 0
    - _HeightOffset3: 0
    - _HeightPoMAmplitude0: 10
    - _HeightPoMAmplitude1: 2
    - _HeightPoMAmplitude2: 2
    - _HeightPoMAmplitude3: 2
    - _HeightTessAmplitude0: 10
    - _HeightTessAmplitude1: 2
    - _HeightTessAmplitude2: 2
    - _HeightTessAmplitude3: 2
    - _HeightTessCenter0: 0
    - _HeightTessCenter1: 0
    - _HeightTessCenter2: 0.5
    - _HeightTessCenter3: 0.5
    - _HeightTransition: 0
    - _HorizonFade: 1
    - _InheritBaseColor1: 0
    - _InheritBaseColor2: 0
    - _InheritBaseColor3: 0
    - _InheritBaseColorThreshold1: 1
    - _InheritBaseColorThreshold2: 1
    - _InheritBaseColorThreshold3: 1
    - _InheritBaseHeight1: 1
    - _InheritBaseHeight2: 0
    - _InheritBaseHeight3: 0
    - _InheritBaseNormal1: 1
    - _InheritBaseNormal2: 0
    - _InheritBaseNormal3: 0
    - _InitialBend: 0.5
    - _InvTilingScale0: 1
    - _InvTilingScale1: 1
    - _InvTilingScale2: 1
    - _InvTilingScale3: 1
    - _LayerCenterOffset0: 0.5
    - _LayerCenterOffset1: 0.5
    - _LayerCenterOffset2: 0
    - _LayerCenterOffset3: 0
    - _LayerCount: 2
    - _LayerHeightAmplitude0: 0.08
    - _LayerHeightAmplitude1: 0.1
    - _LayerHeightAmplitude2: 1
    - _LayerHeightAmplitude3: 1
    - _LayerTiling0: 1
    - _LayerTiling1: 6
    - _LayerTiling2: 1
    - _LayerTiling3: 1
    - _LayerTilingBlendMask: 1
    - _LinkDetailsWithBase0: 1
    - _LinkDetailsWithBase1: 1
    - _LinkDetailsWithBase2: 1
    - _LinkDetailsWithBase3: 1
    - _MaterialID: 1
    - _Metallic: 0
    - _Metallic0: 0
    - _Metallic1: 0
    - _Metallic2: 0
    - _Metallic3: 0
    - _MinimumOpacity0: 1
    - _MinimumOpacity1: 1
    - _MinimumOpacity2: 1
    - _MinimumOpacity3: 1
    - _Mode: 0
    - _NormalMapSpace0: 0
    - _NormalMapSpace1: 0
    - _NormalMapSpace2: 0
    - _NormalMapSpace3: 0
    - _NormalScale: 1
    - _NormalScale0: 1
    - _NormalScale1: 2
    - _NormalScale2: 1
    - _NormalScale3: 1
    - _ObjectScaleAffectTile: 0
    - _OcclusionStrength: 1
    - _OpacityAsDensity0: 0
    - _OpacityAsDensity1: 1
    - _OpacityAsDensity2: 0
    - _OpacityAsDensity3: 0
    - _PPDLodThreshold: 5
    - _PPDMaxSamples: 15
    - _PPDMinSamples: 5
    - _PPDPrimitiveLength: 1
    - _PPDPrimitiveWidth: 1
    - _Parallax: 0.02
    - _PerPixelDisplacementObjectScale: 1
    - _PreRefractionPass: 0
    - _ReceivesSSR: 1
    - _RenderQueueType: 1
    - _RequireSplitLighting: 0
    - _SSSAndTransmissionType: 0
    - _ShiverDirectionality: 0.5
    - _ShiverDrag: 0
    - _ShowLayer0: 0
    - _ShowLayer1: 0
    - _ShowLayer2: 0
    - _ShowLayer3: 0
    - _ShowMaterialReferences: 1
    - _Smoothness0: 1
    - _Smoothness1: 1
    - _Smoothness2: 1
    - _Smoothness3: 1
    - _SmoothnessRemapMax: 1
    - _SmoothnessRemapMax0: 1
    - _SmoothnessRemapMax1: 1
    - _SmoothnessRemapMax2: 1
    - _SmoothnessRemapMax3: 1
    - _SmoothnessRemapMin: 0
    - _SmoothnessRemapMin0: 0
    - _SmoothnessRemapMin1: 0
    - _SmoothnessRemapMin2: 0
    - _SmoothnessRemapMin3: 0
    - _SmoothnessTextureChannel: 0
    - _SpecularAAScreenSpaceVariance: 0.1
    - _SpecularAAThreshold: 0.2
    - _SpecularHighlights: 1
    - _SrcBlend: 1
    - _StencilRef: 0
    - _StencilRefDepth: 8
    - _StencilRefDistortionVec: 4
    - _StencilRefGBuffer: 10
    - _StencilRefMV: 40
    - _StencilWriteMask: 6
    - _StencilWriteMaskDepth: 8
    - _StencilWriteMaskDistortionVec: 4
    - _StencilWriteMaskGBuffer: 14
    - _StencilWriteMaskMV: 40
    - _Stiffness: 1
    - _SubsurfaceMask0: 1
    - _SubsurfaceMask1: 1
    - _SubsurfaceMask2: 1
    - _SubsurfaceMask3: 1
    - _SubsurfaceProfile0: 0
    - _SubsurfaceProfile1: 2
    - _SubsurfaceProfile2: 0
    - _SubsurfaceProfile3: 0
    - _SubsurfaceRadius0: 1
    - _SubsurfaceRadius1: 1
    - _SubsurfaceRadius2: 1
    - _SubsurfaceRadius3: 1
    - _SupportDBuffer: 0
    - _SupportDecals: 1
    - _SurfaceType: 0
    - _TessellationBackFaceCullEpsilon: -0.5
    - _TessellationFactor: 15
    - _TessellationFactorMaxDistance: 15
    - _TessellationFactorMinDistance: 1
    - _TessellationFactorTriangleSize: 100
    - _TessellationMode: 1
    - _TessellationObjectScale: 0
    - _TessellationShapeFactor: 0.75
    - _TessellationTilingScale: 1
    - _TexWorldScale0: 1
    - _TexWorldScale1: 1
    - _TexWorldScale2: 1
    - _TexWorldScale3: 1
    - _TexWorldScaleBlendMask: 1
    - _TexWorldScaleEmissive: 1
    - _Thickness0: 1
    - _Thickness1: 0
    - _Thickness2: 1
    - _Thickness3: 1
    - _TransmissionEnable: 1
    - _TransparentBackfaceEnable: 0
    - _TransparentCullMode: 2
    - _TransparentSortPriority: 0
    - _TransparentZWrite: 0
    - _UVBase0: 0
    - _UVBase1: 0
    - _UVBase2: 0
    - _UVBase3: 0
    - _UVBlendMask: 0
    - _UVDetail0: 0
    - _UVDetail1: 0
    - _UVDetail2: 0
    - _UVDetail3: 0
    - _UVEmissive: 0
    - _UVSec: 0
    - _UseDensityMode: 1
    - _UseEmissiveIntensity: 0
    - _UseHeightBasedBlend: 0
    - _UseMainLayerInfluence: 1
    - _UseShadowThreshold: 0
    - _VertexColorMode: 2
    - _VertexDisplacementObjectScale: 1
    - _VertexDisplacementTilingScale: 1
    - _ZTestDepthEqualForOpaque: 3
    - _ZTestGBuffer: 4
    - _ZTestMode: 8
    - _ZTestTransparent: 4
    - _ZWrite: 1
    m_Colors:
    - Color_C0E3BECE: {r: 1, g: 1, b: 1, a: 0}
    - Color_E5834B1C: {r: 1, g: 1, b: 1, a: 1}
    - Vector4_5FE30CE2: {r: 1, g: 0, b: 0, a: 0}
    - Vector4_774A785C: {r: 1, g: 1, b: 0, a: 0}
    - Vector4_8786B010: {r: 1, g: 0, b: 0, a: 0}
    - Vector4_B18C5418: {r: 5, g: 10, b: 0, a: 0}
    - Vector4_C6041040: {r: 1, g: 0, b: 0, a: 0}
    - _BaseColor0: {r: 1, g: 1, b: 1, a: 1}
    - _BaseColor1: {r: 1, g: 1, b: 1, a: 1}
    - _BaseColor2: {r: 1, g: 1, b: 1, a: 1}
    - _BaseColor3: {r: 1, g: 1, b: 1, a: 1}
    - _BaseColorMap0_MipInfo: {r: 0, g: 0, b: 0, a: 0}
    - _Color: {r: 0, g: 0, b: 0, a: 1}
    - _DiffusionProfileAsset0: {r: 0, g: 0, b: 0, a: 0}
    - _DiffusionProfileAsset1: {r: 0, g: 0, b: 0, a: 0}
    - _DiffusionProfileAsset2: {r: 0, g: 0, b: 0, a: 0}
    - _DiffusionProfileAsset3: {r: 0, g: 0, b: 0, a: 0}
    - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
    - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
    - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1}
    - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1}
    - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0}
    - _ThicknessRemap0: {r: 0, g: 1, b: 0, a: 0}
    - _ThicknessRemap1: {r: 0, g: 1, b: 0, a: 0}
    - _ThicknessRemap2: {r: 0, g: 1, b: 0, a: 0}
    - _ThicknessRemap3: {r: 0, g: 1, b: 0, a: 0}
    - _UVDetailsMappingMask0: {r: 1, g: 0, b: 0, a: 0}
    - _UVDetailsMappingMask1: {r: 1, g: 0, b: 0, a: 0}
    - _UVDetailsMappingMask2: {r: 1, g: 0, b: 0, a: 0}
    - _UVDetailsMappingMask3: {r: 1, g: 0, b: 0, a: 0}
    - _UVMappingMask0: {r: 1, g: 0, b: 0, a: 0}
    - _UVMappingMask1: {r: 1, g: 0, b: 0, a: 0}
    - _UVMappingMask2: {r: 1, g: 0, b: 0, a: 0}
    - _UVMappingMask3: {r: 1, g: 0, b: 0, a: 0}
    - _UVMappingMaskBlendMask: {r: 1, g: 0, b: 0, a: 0}
    - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0}
    - _UVTilingAndOffset: {r: 1, g: 1, b: 0, a: 0}
--- !u!114 &7802893533563135158
MonoBehaviour:
  m_ObjectHideFlags: 11
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  version: 2

{'repo_name': 'Unity-Technologies/FontainebleauDemo', 'stars': '364', 'repo_language': 'C#', 'file_name': 'Settings.json', 'mime_type': 'text/plain', 'hash': -1996764062082688811, 'source_dataset': 'data'}


# Dynamic Image Controller

In this example, we have images under `/uploads` under the webroot directory. We allow the user to render any image with dynamic dimension and is resized on the fly. It also caches the response for 1 hour to show basic caching mechanism.

## Route

First, we need a [Route]. This [Route] is based on this URL pattern:

`/imagefly/filename/width/height` - where filename is the name of the image without the extension. This assumes that all images are in `jpg` and all filenames uses numbers, letters, dash and underscores only.

This is our [Route] definition:

~~~
/**
 * Set route for image fly
 */
Route::set('imagefly', 'imagefly/<image>/<width>/<height>', array('image' => '[-09a-zA-Z_]+', 'width' => '[0-9]+', 'height' => '[0-9]+'))
	->defaults(array(
		'controller' => 'imagefly',
		'action' => 'index'
	));
~~~

We ensure that the filename is only composed of letters, numbers and underscores, width and height must be numeric.

## Controller

Our controller simply accepts the request and capture the following parameters as defined by the [Route]:

* `filename` - without the filename extension (and without dot)
* `width`
* `height`

Then it finds the image file and when found, render it on the browser. Additional features added are browser caching.

~~~
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Imagefly extends Controller {

	public function action_index()
	{
		$file = $this->request->param('image');
		$width = (int) $this->request->param('width');
		$height = (int) $this->request->param('height');

		$rendered = FALSE;
		if ($file AND $width AND $height)
		{
			$filename = DOCROOT.'uploads/'.$file.'.jpg';

			if (is_file($filename))
			{
				$this->_render_image($filename, $width, $height);
				$rendered = TRUE;
			}
		}

		if ( ! $rendered)
		{
			$this->response->status(404);
		}
	}

	protected function _render_image($filename, $width, $height)
	{
		// Calculate ETag from original file padded with the dimension specs
		$etag_sum = md5(base64_encode(file_get_contents($filename)).$width.','.$height);

		// Render as image and cache for 1 hour
		$this->response->headers('Content-Type', 'image/jpeg')
			->headers('Cache-Control', 'max-age='.Date::HOUR.', public, must-revalidate')
			->headers('Expires', gmdate('D, d M Y H:i:s', time() + Date::HOUR).' GMT')
			->headers('Last-Modified', date('r', filemtime($filename)))
			->headers('ETag', $etag_sum);

		if (
			$this->request->headers('if-none-match') AND
			(string) $this->request->headers('if-none-match') === $etag_sum)
		{
			$this->response->status(304)
				->headers('Content-Length', '0');
		}
		else
		{
			$result = Image::factory($filename)
				->resize($width, $height)
				->render('jpg');

			$this->response->body($result);
		}
	}
}
~~~

When the parameters are invalid or the filename does not exists, it simply returns 404 not found error.

The rendering of image uses some caching mechanism. One by setting the max age and expire headers and second by using etags.

## Screenshots

Visiting [http://localhost/kohana/imagefly/kitteh/400/400](http://localhost/kohana/imagefly/kitteh/400/400) yields:

![Kitten 400x400](dynamic-400.jpg)

Visiting [http://localhost/kohana/imagefly/kitteh/600/500](http://localhost/kohana/imagefly/kitteh/600/500) yields:

![Kitten 400x400](dynamic-600.jpg)

{'repo_name': 'freefcw/hustoj', 'stars': '234', 'repo_language': 'PHP', 'file_name': 'visualblocks.css', 'mime_type': 'text/plain', 'hash': 2032341912478299970, 'source_dataset': 'data'}


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@drawable/creative_hover"/>
    <item android:state_checked="false" android:drawable="@drawable/creative_none"/>
</selector>

{'repo_name': 'zhpanvip/BannerViewPager', 'stars': '1471', 'repo_language': 'Java', 'file_name': 'ExampleUnitTest.java', 'mime_type': 'text/html', 'hash': -7089842724421430895, 'source_dataset': 'data'}


# 31.栈和队列（8）

队列顺序存储结构：先进先出。
入队列复杂度：O（1），队尾叠加即可。
出队列复杂度：O（n）,因为弹栈为队头，下标为0，所有的元素都要先前移动一位。

如果不限制队头指针为0（即下标为0,），那么我们就能灵活运用队列。
于是有循环队列这一概念。

循环队列（类似环形结构）：
确定序号（位置）：取模（取余）
入栈和弹栈指针依次移动。

链式存储结构，存删快，查找慢
顺序存储结构，有下标，存删慢，查找快。

# 32.递归和分治思想（1）
* 递归定义：<br> ![img](https://github.com/ouzhrm/AlgorithmLlearning/blob/master/img/digui.png)
* 注意事项：递归的复杂度太大，能用迭代（for循环或者累加）就不用递归
* 递归核心思想：层层循环，函数自己调用自己的过程。
* 使用场景：不知道要循环多少层，比如：mysql子节点查询所有的父节点。
* 举例：兔子的出生（1、1、2、3、5、8、13...）
~~~
 public class testDemo {
    public static void main(String[] args) {
      System.out.println(digui_fuc(20));
    }

    private static long digui_fuc(int i) {
      if (i <= 2)
        return 1;
      return digui_fuc(i - 1) + digui_fuc(i - 2);
    }
  }
~~~

# 33.递归和分治思想（2）
* 折半查找法（二分查找法）的递归体现
* 好处：时间复杂度是log级指数
~~~
public class testTwoClass {
	@Test
	public void testTwoFuc() {
		int[] a = new int[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
		System.out.println("position: " + two_fuc(a,15,0,a.length-1));
	}

	private static int two_fuc(int[] array,int goal,int low,int high) {
		return low <= high ? array[(high+low)/2] == goal ? (high+low)/2:(goal > array[(high+low)/2] ? two_fuc(array,goal,(high+low)/2 +1,high):(goal < array[(high+low)/2] ? two_fuc(array,goal,low,(high+low)/2-1):-1)):1;
	}
}
~~~
看不懂？？？没关系，上面是我的精简写法，下面是我的详细写法
~~~
public class testTwoClass {
	/*
	 * 折半查法前提：数组元素顺序从小到大
	 *
	 */
	@Test
	public void testTwo() {
		int[] a = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 };
		System.out.println("position: " + two_fuc(a, 15, 0, a.length - 1));// 返回要查找的目标在数组中的位置
	}

	/**
	 * @param array 数组
	 * @param goal 目标元素
	 * @param low 最低位置的指针
	 * @param high 最高位置的指针
	 * @return -1表示目标元素不在数组中
	 */
	private static int two_fuc(int[] array, int goal, int low, int high) {
		if (low <= high) {
			int middle = (high + low) / 2;
			if (goal == array[middle])
				return middle;
			else if (goal > array[middle])
				return two_fuc(array, goal, middle + 1, high);
			else
				return two_fuc(array, goal, low, middle - 1);
		}
		return -1;
	}
}

~~~

{'repo_name': 'ouzhrm/AlgorithmLlearning', 'stars': '148', 'repo_language': 'None', 'file_name': '==和equals的区别.md', 'mime_type': 'text/plain', 'hash': 7307553393974154021, 'source_dataset': 'data'}


<!doctype html>

<title>CodeMirror: Fortran mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">

CodeMirror

Home

Manual

Code

Language modes

Fortran

Fortran mode

<textarea id="code" name="code">
! Example Fortran code
  program average

  ! Read in some numbers and take the average
  ! As written, if there are no data points, an average of zero is returned
  ! While this may not be desired behavior, it keeps this example simple

  implicit none

  real, dimension(:), allocatable :: points
  integer                         :: number_of_points
  real                            :: average_points=0., positive_average=0., negative_average=0.

  write (*,*) "Input number of points to average:"
  read  (*,*) number_of_points

  allocate (points(number_of_points))

  write (*,*) "Enter the points to average:"
  read  (*,*) points

  ! Take the average by summing points and dividing by number_of_points
  if (number_of_points > 0) average_points = sum(points) / number_of_points

  ! Now form average over positive and negative points only
  if (count(points > 0.) > 0) then
     positive_average = sum(points, points > 0.) / count(points > 0.)
  end if

  if (count(points < 0.) > 0) then
     negative_average = sum(points, points < 0.) / count(points < 0.)
  end if

  deallocate (points)

  ! Print result to terminal
  write (*,'(a,g12.4)') 'Average = ', average_points
  write (*,'(a,g12.4)') 'Average of positive points = ', positive_average
  write (*,'(a,g12.4)') 'Average of negative points = ', negative_average

  end program average
</textarea>

MIME types defined: text/x-Fortran.

{'repo_name': 'zmister2016/MrDoc', 'stars': '565', 'repo_language': 'JavaScript', 'file_name': '0009_projectreport.py', 'mime_type': 'text/x-python', 'hash': -8896400794492332562, 'source_dataset': 'data'}


// Copyright (c) 2016, Matthew Malensek.
// Distributed under the BSD 2-Clause License (see LICENSE.txt for details)

#pragma once

#include "MeterWnd/Animations/AnimationTypes.h"
#include "Settings.h"

class DefaultSettings {
public:
    /* String Constants*/
    static constexpr const wchar_t *Language = L"English";
    static constexpr const wchar_t *Skin = L"Classic";
    static constexpr const wchar_t *MainAppName = L"3RVX.exe";
    static constexpr const wchar_t *SettingsAppName = L"Settings.exe";
    static constexpr const wchar_t *SettingsFileName = L"Settings.xml";
    static constexpr const wchar_t *LanguageDirName = L"Languages";
    static constexpr const wchar_t *SkinDirName = L"Skins";
    static constexpr const wchar_t *SkinFileName = L"Skin.xml";

    /* OSDs */
    static const bool VolumeOSDEnabled = true;
    static const bool EjectOSDEnabled = true;
    static const bool BrightnessOSDEnabled = true;
    static const bool KeyboardOSDEnabled = false;

    /* System Event Subscriptions*/
    static const bool SubscribeVolumeEvents = true;
    static const bool SubscribeEjectEvents = true;

    /* Notification Icons */
    static const bool EjectIcon = false;
    static const bool VolumeIcon = true;

    static const bool OnTop = true;
    static const bool HideFullscreen = false;
    static const bool HideDirectX = false;
    static const AnimationTypes::HideAnimation DefaultHideAnim
        = AnimationTypes::Fade;
    static const int HideSpeed = 765;
    static const int HideTime = 800;
    static constexpr const float VolumeLimit = 1.0f;
    static const bool ShowOnStartup = true;
    static const bool SoundsEnabled = true;
    static const int OSDOffset = 140;
    static const Settings::OSDPos OSDPosition = Settings::OSDPos::Bottom;
    static const bool AutoUpdate = false;
    static const bool MuteLock = false;
};

{'repo_name': 'malensek/3RVX', 'stars': '235', 'repo_language': 'C++', 'file_name': 'OSDComponent.h', 'mime_type': 'text/x-c', 'hash': 4673685728264838270, 'source_dataset': 'data'}


"""
Storage management
"""
import configparser
import contextlib
import hashlib
import logging
import pathlib
from collections import defaultdict
from typing import (
    IO,
    Any,
    Dict,
    Generator,
    Iterable,
    List,
    Optional,
    Sequence,
    Set,
    Type,
    Union,
)

import filelock
import pkg_resources
from packaging.utils import canonicalize_name

from .configuration import BandersnatchConfig

PATH_TYPES = Union[pathlib.Path, str]

# The API_REVISION is incremented if the plugin class is modified in a
# backwards incompatible way.  In order to prevent loading older
# broken plugins that may be installed and will break due to changes to
# the methods of the classes.
PLUGIN_API_REVISION = 1
STORAGE_PLUGIN_RESOURCE = f"bandersnatch_storage_plugins.v{PLUGIN_API_REVISION}.backend"
loaded_storage_plugins: Dict[str, List["Storage"]] = defaultdict(list)

logger = logging.getLogger("bandersnatch")

class Storage:
    """
    Base Storage class
    """

    name = "storage"
    PATH_BACKEND: Type[pathlib.Path] = pathlib.Path

    def __init__(
        self,
        *args: Any,
        config: Optional[configparser.ConfigParser] = None,
        **kwargs: Any,
    ) -> None:
        self.flock_path: PATH_TYPES = ".lock"
        if config is not None:
            if isinstance(config, BandersnatchConfig):
                config = config.config
            self.configuration = config
        else:
            self.configuration = BandersnatchConfig().config
        try:
            storage_backend = self.configuration["mirror"]["storage-backend"]
        except (KeyError, TypeError):
            storage_backend = "filesystem"
        if storage_backend != self.name:
            return
        # register relevant path backends etc
        self.initialize_plugin()
        try:
            self.mirror_base_path = self.PATH_BACKEND(
                self.configuration.get("mirror", "directory")
            )
        except (configparser.NoOptionError, configparser.NoSectionError):
            self.mirror_base_path = self.PATH_BACKEND(".")
        self.web_base_path = self.mirror_base_path / "web"
        self.json_base_path = self.web_base_path / "json"
        self.pypi_base_path = self.web_base_path / "pypi"
        self.simple_base_path = self.web_base_path / "simple"

    def __str__(self) -> str:
        return (
            f"{self.__class__.__name__}(name={self.name}, "
            f"mirror_base_path={self.mirror_base_path!s})"
        )

    def __repr__(self) -> str:
        return (
            f"<{self.__class__.__name__} object: {self.name} @ "
            f"{self.mirror_base_path!s}>"
        )

    def __hash__(self) -> int:
        return hash((self.name, str(self.directory), str(self.flock_path)))

    @property
    def directory(self) -> str:
        try:
            return self.configuration.get("mirror", "directory")
        except (configparser.NoOptionError, configparser.NoSectionError):
            return "/srv/pypi"

    @staticmethod
    def canonicalize_package(name: str) -> str:
        return str(canonicalize_name(name))

    def get_lock(self, path: str) -> filelock.BaseFileLock:
        """
        Retrieve the appropriate `FileLock` backend for this storage plugin

        :param str path: The path to use for locking
        :return: A `FileLock` backend for obtaining locks
        :rtype: filelock.BaseFileLock
        """
        raise NotImplementedError

    def get_json_paths(self, name: str) -> Sequence[PATH_TYPES]:
        canonicalized_name = self.canonicalize_package(name)
        paths = [
            self.json_base_path / canonicalized_name,
            self.pypi_base_path / canonicalized_name,
        ]
        if canonicalized_name != name:
            paths.append(self.json_base_path / name)
        return paths

    def get_flock_path(self) -> PATH_TYPES:
        raise NotImplementedError

    def initialize_plugin(self) -> None:
        """
        Code to initialize the plugin
        """
        # The intialize_plugin method is run once to initialize the plugin.  This should
        # contain all code to set up the plugin.
        # This method is not run in the fast path and should be used to do things like
        # indexing filter databases, etc that will speed the operation of the filter
        # and check_match methods that are called in the fast path.
        pass

    def hash_file(self, path: PATH_TYPES, function: str = "sha256") -> str:
        h = getattr(hashlib, function)()
        with self.open_file(path, text=False) as f:
            for chunk in iter(lambda: f.read(8192), b""):  # type: ignore
                h.update(chunk)
        return str(h.hexdigest())

    def iter_dir(self, path: PATH_TYPES) -> Generator[PATH_TYPES, None, None]:
        """Iterate over the path, returning the sub-paths"""
        if not issubclass(type(path), pathlib.Path):
            path = self.PATH_BACKEND(str(path))
        assert isinstance(path, pathlib.Path)
        yield from path.iterdir()

    @contextlib.contextmanager
    def rewrite(
        self, filepath: PATH_TYPES, mode: str = "w", **kw: Any
    ) -> Generator[IO, None, None]:
        """Rewrite an existing file atomically to avoid programs running in
        parallel to have race conditions while reading."""
        raise NotImplementedError

    @contextlib.contextmanager
    def update_safe(self, filename: PATH_TYPES, **kw: Any) -> Generator[IO, None, None]:
        """Rewrite a file atomically.

        Clients are allowed to delete the tmpfile to signal that they don't
        want to have it updated.

        """
        raise NotImplementedError

    def find(self, root: PATH_TYPES, dirs: bool = True) -> str:
        """A test helper simulating 'find'.

        Iterates over directories and filenames, given as relative paths to the
        root.

        """
        raise NotImplementedError

    def compare_files(self, file1: PATH_TYPES, file2: PATH_TYPES) -> bool:
        """
        Compare two files and determine whether they contain the same data. Return
        True if they match
        """
        raise NotImplementedError

    def write_file(self, path: PATH_TYPES, contents: Union[str, bytes]) -> None:
        """Write data to the provided path.  If **contents** is a string, the file will
        be opened and written in "r" + "utf-8" mode, if bytes are supplied it will be
        accessed using "rb" mode (i.e. binary write)."""
        raise NotImplementedError

    @contextlib.contextmanager
    def open_file(
        self, path: PATH_TYPES, text: bool = True
    ) -> Generator[IO, None, None]:
        """Yield a file context to iterate over. If text is true, open the file with
        'rb' mode specified."""
        raise NotImplementedError

    def read_file(
        self,
        path: PATH_TYPES,
        text: bool = True,
        encoding: str = "utf-8",
        errors: Optional[str] = None,
    ) -> Union[str, bytes]:
        """Yield a file context to iterate over. If text is true, open the file with
        'rb' mode specified."""
        raise NotImplementedError

    def delete(self, path: PATH_TYPES, dry_run: bool = False) -> int:
        """Delete the provided path."""
        if not isinstance(path, pathlib.Path):
            path = pathlib.Path(path)
        log_prefix = "[DRY RUN] " if dry_run else ""
        logger.info(f"{log_prefix}Deleting path: {path!s}")
        if not dry_run:
            if not self.exists(path):
                logger.debug(f"{path!s} does not exist. Skipping")
                return 0
            if self.is_file(path):
                return self.delete_file(path, dry_run=dry_run)
            else:
                return self.rmdir(path, dry_run=dry_run, force=True)
        return 0

    def delete_file(self, path: PATH_TYPES, dry_run: bool = False) -> int:
        """Delete the provided path, recursively if necessary."""
        raise NotImplementedError

    def copy_file(self, source: PATH_TYPES, dest: PATH_TYPES) -> None:
        """Copy a file from **source** to **dest**"""
        raise NotImplementedError

    def mkdir(
        self, path: PATH_TYPES, exist_ok: bool = False, parents: bool = False
    ) -> None:
        """Create the provided directory"""
        raise NotImplementedError

    def rmdir(
        self,
        path: PATH_TYPES,
        recurse: bool = False,
        force: bool = False,
        ignore_errors: bool = False,
        dry_run: bool = False,
    ) -> int:
        """Remove the directory. If recurse is True, allow removing empty children.
        If force is true, remove contents destructively."""
        raise NotImplementedError

    def exists(self, path: PATH_TYPES) -> bool:
        """Check whether the provided path exists"""
        raise NotImplementedError

    def is_dir(self, path: PATH_TYPES) -> bool:
        """Check whether the provided path is a directory."""
        raise NotImplementedError

    def is_file(self, path: PATH_TYPES) -> bool:
        """Check whether the provided path is a file."""
        raise NotImplementedError

    def symlink(self, source: PATH_TYPES, dest: PATH_TYPES) -> None:
        """Create a symlink at **dest** that points back at **source**"""
        if not issubclass(type(dest), pathlib.Path):
            dest = self.PATH_BACKEND(dest)
        assert isinstance(dest, pathlib.Path)
        dest.symlink_to(source)

    def get_hash(self, path: PATH_TYPES, function: str = "sha256") -> str:
        """Get the sha256sum of a given **path**"""
        raise NotImplementedError

class StoragePlugin(Storage):
    """
    Plugin that provides a storage backend for bandersnatch
    """

    name = "storage_plugin"

def load_storage_plugins(
    entrypoint_group: str,
    enabled_plugin: Optional[str] = None,
    config: Optional[configparser.ConfigParser] = None,
    clear_cache: bool = False,
) -> Set[Storage]:
    """
    Load all storage plugins that are registered with pkg_resources

    Parameters
    ==========
    entrypoint_group: str
        The entrypoint group name to load plugins from
    enabled_plugin: str
        The optional enabled storage plugin to search for
    config: configparser.ConfigParser
        The optional configparser instance to pass in
    clear_cache: bool
        Whether to clear the plugin cache

    Returns
    =======
    List of Storage:
        A list of objects derived from the Storage class
    """
    global loaded_storage_plugins
    if config is None:
        config = BandersnatchConfig().config
    if not enabled_plugin:
        try:
            enabled_plugin = config["mirror"]["storage-backend"]
            logger.info(f"Loading storage plugin: {enabled_plugin}")
        except KeyError:
            enabled_plugin = "filesystem"
            logger.info(
                "Failed to find configured storage backend, using default: "
                f"{enabled_plugin}"
            )
            pass

    if clear_cache:
        loaded_storage_plugins = defaultdict(list)

    # If the plugins for the entrypoint_group have been loaded return them
    cached_plugins = loaded_storage_plugins.get(entrypoint_group)
    if cached_plugins:
        return set(cached_plugins)

    plugins = set()
    for entry_point in pkg_resources.iter_entry_points(group=entrypoint_group):
        try:
            plugin_class = entry_point.load()
            plugin_instance = plugin_class(config=config)
            if plugin_instance.name == enabled_plugin:
                plugins.add(plugin_instance)
        except ModuleNotFoundError as me:
            logging.error(f"Unable to load entry point {entry_point}: {me}")

    loaded_storage_plugins[entrypoint_group] = list(plugins)

    return plugins

def storage_backend_plugins(
    backend: Optional[str] = "filesystem",
    config: Optional[configparser.ConfigParser] = None,
    clear_cache: bool = False,
) -> Iterable[Storage]:
    """
    Load and return the release filtering plugin objects

    Parameters
    ==========
    backend: str
        The optional enabled storage plugin to search for
    config: configparser.ConfigParser
        The optional configparser instance to pass in
    clear_cache: bool
        Whether to clear the plugin cache

    Returns
    -------
    list of bandersnatch.storage.Storage:
        List of objects derived from the bandersnatch.storage.Storage class
    """
    return load_storage_plugins(
        STORAGE_PLUGIN_RESOURCE,
        enabled_plugin=backend,
        config=config,
        clear_cache=clear_cache,
    )

{'repo_name': 'pypa/bandersnatch', 'stars': '179', 'repo_language': 'Python', 'file_name': 'filtering_configuration.md', 'mime_type': 'text/plain', 'hash': 2802875943784719807, 'source_dataset': 'data'}


package notification

import (
	"context"
	"errors"
	"os"
	"testing"

	"github.com/artifacthub/hub/internal/hub"
	"github.com/artifacthub/hub/internal/tests"
	"github.com/rs/zerolog"
	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/mock"
	"github.com/stretchr/testify/require"
)

const validUUID = "00000000-0000-0000-0000-000000000001"

func TestMain(m *testing.M) {
	zerolog.SetGlobalLevel(zerolog.Disabled)
	os.Exit(m.Run())
}

func TestAdd(t *testing.T) {
	ctx := context.Background()

	t.Run("invalid input", func(t *testing.T) {
		testCases := []struct {
			errMsg string
			n      *hub.Notification
		}{
			{
				"invalid event id",
				&hub.Notification{
					Event: &hub.Event{EventID: "invalid"},
				},
			},
			{
				"user or webhook must be provided",
				&hub.Notification{
					Event: &hub.Event{EventID: validUUID},
				},
			},
			{
				"both user and webhook were provided",
				&hub.Notification{
					Event:   &hub.Event{EventID: validUUID},
					User:    &hub.User{UserID: validUUID},
					Webhook: &hub.Webhook{WebhookID: validUUID},
				},
			},
			{
				"invalid user id",
				&hub.Notification{
					Event: &hub.Event{EventID: validUUID},
					User:  &hub.User{UserID: ""},
				},
			},
			{
				"invalid webhook id",
				&hub.Notification{
					Event:   &hub.Event{EventID: validUUID},
					Webhook: &hub.Webhook{WebhookID: ""},
				},
			},
		}
		for _, tc := range testCases {
			tc := tc
			t.Run(tc.errMsg, func(t *testing.T) {
				m := NewManager()
				err := m.Add(context.Background(), nil, tc.n)
				assert.True(t, errors.Is(err, hub.ErrInvalidInput))
				assert.Contains(t, err.Error(), tc.errMsg)
			})
		}
	})

	n := &hub.Notification{
		Event: &hub.Event{EventID: validUUID},
		User:  &hub.User{UserID: validUUID},
	}

	t.Run("database error", func(t *testing.T) {
		tx := &tests.TXMock{}
		tx.On("Exec", ctx, addNotificationDBQ, mock.Anything).Return(tests.ErrFakeDB)
		m := NewManager()

		err := m.Add(ctx, tx, n)
		assert.Equal(t, tests.ErrFakeDB, err)
		tx.AssertExpectations(t)
	})

	t.Run("database query succeeded", func(t *testing.T) {
		tx := &tests.TXMock{}
		tx.On("Exec", ctx, addNotificationDBQ, mock.Anything).Return(nil)
		m := NewManager()

		err := m.Add(ctx, tx, n)
		assert.NoError(t, err)
		tx.AssertExpectations(t)
	})
}

func TestGetPending(t *testing.T) {
	ctx := context.Background()

	t.Run("database error", func(t *testing.T) {
		tx := &tests.TXMock{}
		tx.On("QueryRow", ctx, getPendingNotificationDBQ).Return(nil, tests.ErrFakeDB)
		m := NewManager()

		dataJSON, err := m.GetPending(ctx, tx)
		assert.Equal(t, tests.ErrFakeDB, err)
		assert.Nil(t, dataJSON)
		tx.AssertExpectations(t)
	})

	t.Run("database query succeeded", func(t *testing.T) {
		expectedNotification := &hub.Notification{
			NotificationID: "notificationID",
			Event: &hub.Event{
				EventKind:      hub.NewRelease,
				PackageID:      "packageID",
				PackageVersion: "1.0.0",
			},
			User: &hub.User{
				Email: "user1@email.com",
			},
		}

		tx := &tests.TXMock{}
		tx.On("QueryRow", ctx, getPendingNotificationDBQ).Return([]byte(`
		{
			"notification_id": "notificationID",
			"event": {
				"event_kind": 0,
				"package_id": "packageID",
				"package_version": "1.0.0"
			},
			"user": {
				"email": "user1@email.com"
			}
		}
		`), nil)
		m := NewManager()

		n, err := m.GetPending(ctx, tx)
		require.NoError(t, err)
		assert.Equal(t, expectedNotification, n)
		tx.AssertExpectations(t)
	})
}

func TestUpdateStatus(t *testing.T) {
	ctx := context.Background()
	notificationID := "00000000-0000-0000-0000-000000000001"

	t.Run("invalid input", func(t *testing.T) {
		testCases := []struct {
			errMsg         string
			notificationID string
		}{
			{
				"invalid notification id",
				"invalid",
			},
		}
		for _, tc := range testCases {
			tc := tc
			t.Run(tc.errMsg, func(t *testing.T) {
				m := NewManager()
				err := m.UpdateStatus(ctx, nil, "invalidNotificationID", false, nil)
				assert.True(t, errors.Is(err, hub.ErrInvalidInput))
				assert.Contains(t, err.Error(), tc.errMsg)
			})
		}
	})

	t.Run("database error", func(t *testing.T) {
		tx := &tests.TXMock{}
		tx.On("Exec", ctx, updateNotificationStatusDBQ, notificationID, true, "").Return(tests.ErrFakeDB)
		m := NewManager()

		err := m.UpdateStatus(ctx, tx, notificationID, true, nil)
		assert.Equal(t, tests.ErrFakeDB, err)
		tx.AssertExpectations(t)
	})

	t.Run("database query succeeded", func(t *testing.T) {
		tx := &tests.TXMock{}
		tx.On("Exec", ctx, updateNotificationStatusDBQ, notificationID, true, "").Return(nil)
		m := NewManager()

		err := m.UpdateStatus(ctx, tx, notificationID, true, nil)
		assert.NoError(t, err)
		tx.AssertExpectations(t)
	})
}

{'repo_name': 'artifacthub/hub', 'stars': '120', 'repo_language': 'TypeScript', 'file_name': 'main.go', 'mime_type': 'text/x-c', 'hash': -3346853085149271681, 'source_dataset': 'data'}


/*
Copyright_License {

  XCSoar Glide Computer - http://www.xcsoar.org/
  Copyright (C) 2000-2016 The XCSoar Project
  A detailed list of copyright holders can be found in the file "AUTHORS".

  This program 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 2
  of the License, or (at your option) any later version.

  This program 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 this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
}
*/

#include "FlarmNetDatabase.hpp"
#include "Util/StringUtil.hpp"

#include <cassert>

void
FlarmNetDatabase::Insert(const FlarmNetRecord &record)
{
  FlarmId id = record.GetId();
  if (!id.IsDefined())
    /* ignore malformed records */
    return;

  map.insert(std::make_pair(id, record));
}

const FlarmNetRecord *
FlarmNetDatabase::FindFirstRecordByCallSign(const TCHAR *cn) const
{
  for (const auto &i : map) {
    assert(i.first.IsDefined());

    const FlarmNetRecord &record = i.second;
    if (StringIsEqual(record.callsign, cn))
      return &record;
  }

  return NULL;
}

unsigned
FlarmNetDatabase::FindRecordsByCallSign(const TCHAR *cn,
                                        const FlarmNetRecord *array[],
                                        unsigned size) const
{
  unsigned count = 0;

  for (const auto &i : map) {
    assert(i.first.IsDefined());

    const FlarmNetRecord &record = i.second;
    if (StringIsEqual(record.callsign, cn))
      array[count++] = &record;
  }

  return count;
}

unsigned
FlarmNetDatabase::FindIdsByCallSign(const TCHAR *cn, FlarmId array[],
                                    unsigned size) const
{
  unsigned count = 0;

  for (const auto &i : map) {
    assert(i.first.IsDefined());

    const FlarmNetRecord &record = i.second;
    if (StringIsEqual(record.callsign, cn))
      array[count++] = i.first;
  }

  return count;
}

{'repo_name': 'XCSoar/XCSoar', 'stars': '177', 'repo_language': 'C++', 'file_name': 'config.yml', 'mime_type': 'text/plain', 'hash': -8466015264862747203, 'source_dataset': 'data'}


<?php
declare(strict_types=1);
namespace PHPJava\Tests\Cases;

class BoundaryValueTypeForBooleanTest extends Base
{
    use \PHPJava\Tests\Helpers\GetField;
    use \PHPJava\Tests\Helpers\AssertionHelpers\AssertFields;

    protected $fixtures = [
        'BoundaryValueTypeForBooleanTest',
    ];

    public function testStaticB0()
    {
        $this->assertStaticField(
            'true',
            'b0'
        );
    }

    public function testStaticB1()
    {
        $this->assertStaticField(
            'false',
            'b1'
        );
    }

    public function testDynamicB0()
    {
        $this->assertDynamicField(
            'true',
            'b0'
        );
    }

    public function testDynamicB1()
    {
        $this->assertDynamicField(
            'false',
            'b1'
        );
    }

    public function testStaticArrayBooleans()
    {
        $array = $this->getStaticField('s_a_b');
        $this->assertCount(2, $array);

        $this->assertEquals('true', (string) $array[0]);
        $this->assertEquals('false', (string) $array[1]);
    }

    public function testDynamicArrayBooleans()
    {
        $array = $this->getDynamicField('d_a_b');
        $this->assertCount(2, $array);

        $this->assertEquals('true', (string) $array[0]);
        $this->assertEquals('false', (string) $array[1]);
    }

    public function testStaticMultiDimensionArrayBooleans()
    {
        $array = $this->getStaticField('s_ma_b');
        $this->assertCount(2, $array);
        $this->assertCount(2, $array[0]);
        $this->assertCount(2, $array[1]);

        $this->assertEquals('true', (string) $array[0][0]);
        $this->assertEquals('false', (string) $array[0][1]);

        $this->assertEquals('false', (string) $array[1][0]);
        $this->assertEquals('true', (string) $array[1][1]);
    }

    public function testDynamicMultiDimensionArrayBooleans()
    {
        $array = $this->getDynamicField('d_ma_b');
        $this->assertCount(2, $array);
        $this->assertCount(2, $array[0]);
        $this->assertCount(2, $array[1]);

        $this->assertEquals('true', (string) $array[0][0]);
        $this->assertEquals('false', (string) $array[0][1]);

        $this->assertEquals('false', (string) $array[1][0]);
        $this->assertEquals('true', (string) $array[1][1]);
    }
}

{'repo_name': 'php-java/php-java', 'stars': '312', 'repo_language': 'PHP', 'file_name': 'AssertFields.php', 'mime_type': 'text/x-php', 'hash': -6392275494485761232, 'source_dataset': 'data'}


#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Exercise 11.14 from Kane 1985."""

from __future__ import division
from sympy import cos, expand, radsimp, solve, sqrt, symbols, trigsimp
from sympy.physics.mechanics import ReferenceFrame, RigidBody, Point
from sympy.physics.mechanics import dot, dynamicsymbols, inertia, msprint
from util import generalized_active_forces, generalized_inertia_forces
from util import partial_velocities

q1, q2, q3 = dynamicsymbols('q1:4')
q2d, q3d = dynamicsymbols('q2 q3', level=1)
u1, u2, u3 = dynamicsymbols('u1:4')
u_prime, R, M, g, e, f, theta = symbols('u\' R, M, g, e, f, theta')
a, b, mA, mB, IA, J, K, t = symbols('a b mA mB IA J K t')
IA22, IA23, IA33 = symbols('IA22 IA23 IA33')
Q1, Q2, Q3 = symbols('Q1, Q2 Q3')
F3 = symbols('F3')

# reference frames
F = ReferenceFrame('F')
P = F.orientnew('P', 'axis', [-theta, F.y])
A = P.orientnew('A', 'axis', [q1, P.x])
A.set_ang_vel(F, u1*A.x + u3*A.z)
B = A.orientnew('B', 'axis', [q2, A.z])
C = A.orientnew('C', 'axis', [q3, A.z])

# points D, S*, Q on frame A and their velocities
pD = Point('D')
pD.set_vel(A, 0)
# u3 will not change v_D_F since wheels are still assumed to roll without slip.
pD.set_vel(F, u2 * A.y)

pS_star = pD.locatenew('S*', e*A.y)
pQ = pD.locatenew('Q', f*A.y - R*A.x)
for p in [pS_star, pQ]:
    p.set_vel(A, 0)
    p.v2pt_theory(pD, F, A)

# masscenters of bodies A, B, C
pA_star = pD.locatenew('A*', a*A.y)
pB_star = pD.locatenew('B*', b*A.z)
pC_star = pD.locatenew('C*', -b*A.z)
for p in [pA_star, pB_star, pC_star]:
    p.set_vel(A, 0)
    p.v2pt_theory(pD, F, A)

# points of B, C touching the plane P
pB_hat = pB_star.locatenew('B^', -R*A.x)
pC_hat = pC_star.locatenew('C^', -R*A.x)
pB_hat.set_vel(B, 0)
pC_hat.set_vel(C, 0)
pB_hat.v2pt_theory(pB_star, F, B)
pC_hat.v2pt_theory(pC_star, F, C)

# the velocities of B^, C^ are zero since B, C are assumed to roll without slip
#kde = [dot(p.vel(F), b) for b in A for p in [pB_hat, pC_hat]]
kde = [dot(p.vel(F), A.y) for p in [pB_hat, pC_hat]]
kde_map = solve(kde, [q2d, q3d])
# need to add q2'', q3'' terms manually since subs does not replace
# Derivative(q(t), t, t) with Derivative(Derivative(q(t), t))
for k, v in kde_map.items():
    kde_map[k.diff(t)] = v.diff(t)

# inertias of bodies A, B, C
# IA22, IA23, IA33 are not specified in the problem statement, but are
# necessary to define an inertia object. Although the values of
# IA22, IA23, IA33 are not known in terms of the variables given in the
# problem statement, they do not appear in the general inertia terms.
inertia_A = inertia(A, IA, IA22, IA33, 0, IA23, 0)
inertia_B = inertia(B, K, K, J)
inertia_C = inertia(C, K, K, J)

# define the rigid bodies A, B, C
rbA = RigidBody('rbA', pA_star, A, mA, (inertia_A, pA_star))
rbB = RigidBody('rbB', pB_star, B, mB, (inertia_B, pB_star))
rbC = RigidBody('rbC', pC_star, C, mB, (inertia_C, pC_star))
bodies = [rbA, rbB, rbC]

# forces, torques
forces = [(pS_star, -M*g*F.x), (pQ, Q1*A.x + Q2*A.y + Q3*A.z)]
torques = []

# collect all significant points/frames of the system
system = [y for x in bodies for y in [x.masscenter, x.frame]]
system +=  [x[0] for x in forces + torques]

# partial velocities
partials = partial_velocities(system, [u1, u2, u3], F,
                              kde_map, express_frame=A)

# Fr, Fr*
Fr, _ = generalized_active_forces(partials, forces + torques, uaux=[u3])
Fr_star, _ = generalized_inertia_forces(partials, bodies, kde_map, uaux=[u3])

friction = -u_prime*Q1*(pQ.vel(F).normalize().express(A)).subs(u3, 0)
Q_map = dict(zip([Q2, Q3], [dot(friction, x) for x in [A.y, A.z]]))
Q_map[Q1] = trigsimp(solve(F3 - Fr[-1].subs(Q_map), Q1)[0])

#F3 + F3* = 0
Q_map[Q1] = Q_map[Q1].subs(F3, -Fr_star[2])
print('Q1 = {0}'.format(msprint(Q_map[Q1])))

Q1_expected = e*M*g*cos(theta)/(f - u_prime*R*u2/sqrt(u2**2 + f**2*u1**2))
assert expand(radsimp(Q_map[Q1] - Q1_expected)) == 0

{'repo_name': 'pydy/pydy', 'stars': '209', 'repo_language': 'Python', 'file_name': 'test_ode_function_generator.py', 'mime_type': 'text/x-python', 'hash': -3916080727498647861, 'source_dataset': 'data'}


<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
    <asmv3:windowsSettings
         xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>

{'repo_name': 'vcmi/vcmi', 'stars': '1919', 'repo_language': 'C++', 'file_name': 'CVCMIServer.cpp', 'mime_type': 'text/x-c++', 'hash': 6113794303884583205, 'source_dataset': 'data'}


# --
# Copyright (C) 2001-2020 OTRS AG, https://otrs.com/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --

use strict;
use warnings;
use utf8;

use vars (qw($Self));

# get needed objects
my $CustomerCompanyObject = $Kernel::OM->Get('Kernel::System::CustomerCompany');
my $TicketObject          = $Kernel::OM->Get('Kernel::System::Ticket');

# get helper object
$Kernel::OM->ObjectParamAdd(
    'Kernel::System::UnitTest::Helper' => {
        RestoreDatabase  => 1,
        UseTmpArticleDir => 1,
    },
);
my $Helper = $Kernel::OM->Get('Kernel::System::UnitTest::Helper');

my @CustomerCompanyIDs;
for my $Item ( 1 .. 3 ) {
    my $CustomerCompany = 'CustomerCompany' . $Helper->GetRandomID();
    push @CustomerCompanyIDs, $CustomerCompany;
    my $CustomerCompanyID = $CustomerCompanyObject->CustomerCompanyAdd(
        CustomerID             => $CustomerCompany,
        CustomerCompanyName    => "$CustomerCompany-Name",
        CustomerCompanyStreet  => '5201 Blue Lagoon Drive',
        CustomerCompanyZIP     => '33126',
        CustomerCompanyCity    => 'Miami',
        CustomerCompanyCountry => 'USA',
        CustomerCompanyURL     => 'http://www.example.org',
        CustomerCompanyComment => 'some comment',
        ValidID                => 1,
        UserID                 => 1,
    );
    $Self->True(
        $CustomerCompanyID,
        "Created company $CustomerCompany with id $CustomerCompanyID",
    );
}

my %CustomerIDTickets;
for my $CustomerID (@CustomerCompanyIDs) {
    for ( 1 .. 3 ) {

        # create a new ticket
        my $TicketID = $TicketObject->TicketCreate(
            Title        => 'My ticket created by Agent A',
            Queue        => 'Raw',
            Lock         => 'unlock',
            Priority     => '3 normal',
            State        => 'open',
            CustomerUser => 'customer@example.com',
            CustomerID   => $CustomerID,
            OwnerID      => 1,
            UserID       => 1,
        );

        $Self->True(
            $TicketID,
            "Ticket created for test - $CustomerID - $TicketID",
        );

        push @{ $CustomerIDTickets{$CustomerID} }, $TicketID;

    }
}

for my $CustomerID (@CustomerCompanyIDs) {
    my @ReturnedTicketIDs = $TicketObject->TicketSearch(
        Result     => 'ARRAY',
        CustomerID => $CustomerID,
        UserID     => 1,
        OrderBy    => ['Up'],
        SortBy     => ['TicketNumber'],
    );
    $Self->IsDeeply(
        \@ReturnedTicketIDs,
        $CustomerIDTickets{$CustomerID},
        'test',
    );

    my $Update = $CustomerCompanyObject->CustomerCompanyUpdate(
        CustomerCompanyID      => $CustomerID,
        CustomerID             => $CustomerID . ' - updated',
        CustomerCompanyName    => $CustomerID . '- updated Inc',
        CustomerCompanyStreet  => 'Some Street',
        CustomerCompanyZIP     => '12345',
        CustomerCompanyCity    => 'Some city',
        CustomerCompanyCountry => 'USA',
        CustomerCompanyURL     => 'http://updated.example.com',
        CustomerCompanyComment => 'some comment updated',
        ValidID                => 1,
        UserID                 => 1,
    );

    $Self->True(
        $Update,
        "Updated $CustomerID",
    );

    @ReturnedTicketIDs = $TicketObject->TicketSearch(
        Result     => 'ARRAY',
        CustomerID => "$CustomerID - updated",
        UserID     => 1,
        OrderBy    => ['Up'],
        SortBy     => ['TicketNumber'],
    );
    $Self->IsDeeply(
        \@ReturnedTicketIDs,
        $CustomerIDTickets{$CustomerID},
        'test',
    );

}

# cleanup is done by RestoreDatabase.

1;

{'repo_name': 'OTRS/otrs', 'stars': '708', 'repo_language': 'Perl', 'file_name': 'README', 'mime_type': 'text/plain', 'hash': -876267283240448626, 'source_dataset': 'data'}


Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AStyle Dll", "AStyle Dll\AStyle Dll.vcxproj", "{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|x64 = Debug|x64
		Debug|x86 = Debug|x86
		Release|x64 = Release|x64
		Release|x86 = Release|x86
		Static|x64 = Static|x64
		Static|x86 = Static|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}.Debug|x64.ActiveCfg = Debug|x64
		{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}.Debug|x64.Build.0 = Debug|x64
		{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}.Debug|x86.ActiveCfg = Debug|Win32
		{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}.Debug|x86.Build.0 = Debug|Win32
		{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}.Release|x64.ActiveCfg = Release|x64
		{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}.Release|x64.Build.0 = Release|x64
		{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}.Release|x86.ActiveCfg = Release|Win32
		{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}.Release|x86.Build.0 = Release|Win32
		{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}.Static|x64.ActiveCfg = Static|x64
		{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}.Static|x64.Build.0 = Static|x64
		{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}.Static|x86.ActiveCfg = Static|Win32
		{8ECC1E60-2E56-4ACD-96D0-D7F7B11BCEBF}.Static|x86.Build.0 = Static|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

{'repo_name': 'eranif/codelite', 'stars': '1380', 'repo_language': 'C++', 'file_name': 'wx-config.project', 'mime_type': 'text/xml', 'hash': -1420805922213008065, 'source_dataset': 'data'}